From 11526456c8135c62fd5c3be614493d14b8f0aa96 Mon Sep 17 00:00:00 2001 From: brendanjbond Date: Thu, 5 Dec 2024 11:06:16 -0600 Subject: [PATCH 01/13] apply create-config to repo (install dependencies and create files) --- .eslintignore | 10 -- .eslintrc.js | 17 --- .prettierignore | 7 ++ .prettierrc | 4 + eslint.config.mjs | 21 ++++ package.json | 6 +- yarn.lock | 280 +++++++++++++++++++++++++++++----------------- 7 files changed, 217 insertions(+), 128 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 6575178e0a..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,10 +0,0 @@ -node_modules -lib -dist -app -test -types -*.spec.js -*.unit.js -_site -docs diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 52e6c54d63..0000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - "env": { - "browser": true, - "es2021": true, - "node": true - }, - "extends": ["eslint:recommended", "plugin:jsdoc/recommended-typescript-flavor"], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": ["jsdoc"], - "rules": { - "no-prototype-builtins": "off", - "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], - } -} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000..dff1ef906b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +/node_modules/ +/dist/ +/build/ +/lib/ +/artifacts/ +/coverage/ +.git/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..554f2a3baa --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "printWidth": 100 +} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..d130152b90 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,21 @@ +import globals from 'globals'; +import pluginJs from '@eslint/js'; +import mochaPlugin from 'eslint-plugin-mocha'; + +export default [ + { files: ['**/*.{js,mjs,cjs}'] }, + { + languageOptions: { globals: { ...globals.browser } }, + }, + pluginJs.configs.recommended, + mochaPlugin.configs.flat.recommended, + { + rules: { + 'no-prototype-builtins': 'off', + 'no-unused-vars': [ + 'error', + { ignoreRestSiblings: true, argsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^ignore' }, + ], + }, + }, +]; diff --git a/package.json b/package.json index a6656d7916..e945da38f5 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "vanilla-picker": "^2.12.3" }, "devDependencies": { + "@eslint/js": "^9.16.0", "@typescript-eslint/eslint-plugin": "^7.9.0", "@typescript-eslint/parser": "^7.9.0", "ace-builds": "1.34.2", @@ -128,12 +129,14 @@ "chance": "^1.1.9", "ejs-loader": "^0.5.0", "escape-string-regexp": "^5.0.0", - "eslint": "^8.57.0", + "eslint": "^9.16.0", "eslint-plugin-jsdoc": "^48.2.5", + "eslint-plugin-mocha": "^10.5.0", "fetch-mock": "^9.11.0", "file-loader": "^6.2.0", "flatpickr": "^4.6.13", "font-awesome": "^4.7.0", + "globals": "^15.13.0", "gulp": "^4.0.2", "gulp-clean": "^0.4.0", "gulp-clean-css": "^4.3.0", @@ -159,6 +162,7 @@ "nyc": "^17.0.0", "power-assert": "^1.6.1", "pre-commit": "^1.2.2", + "prettier": "^3.4.2", "pretty": "^2.0.0", "pygments-css": "^1.0.0", "raw-loader": "^4.0.2", diff --git a/yarn.lock b/yarn.lock index a600f82a4e..8db3491fba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -342,30 +342,63 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0": version "4.10.1" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== + dependencies: + "@eslint/object-schema" "^2.1.5" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.9.0": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" + integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.16.0", "@eslint/js@^9.16.0": + version "9.16.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4" + integrity sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg== + +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== + +"@eslint/plugin-kit@^0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" + integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== + dependencies: + levn "^0.4.1" "@formio/bootstrap@3.0.0-dev.98.17ba6ea": version "3.0.0-dev.98.17ba6ea" @@ -408,24 +441,33 @@ resolved "https://registry.npmjs.org/@formio/vanilla-text-mask/-/vanilla-text-mask-5.1.1-formio.1.tgz#f53fc7f4cb37c6ae38f2857488055e781e5adba9" integrity sha512-rYBlvIPMNUd6sAaduOaiIwI4vfTAjHDRonko2qJn2RP1O//TQ7rcFIPYVYePJZ4OtOpwHiHAvAIh79McphZotQ== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -516,7 +558,7 @@ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -647,12 +689,17 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/expect@^1.20.4": version "1.20.4" resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/json-schema@*", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -758,11 +805,6 @@ "@typescript-eslint/types" "7.12.0" eslint-visitor-keys "^3.4.3" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" @@ -980,11 +1022,16 @@ acorn@^6.0.1, acorn@^6.0.4: resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.0.4, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.0.4, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -2135,7 +2182,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2144,6 +2191,15 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.5: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crossvent@1.5.5: version "1.5.5" resolved "https://registry.yarnpkg.com/crossvent/-/crossvent-1.5.5.tgz#ad20878e4921e9be73d9d6976f8b2ecd0f71a0b1" @@ -2424,13 +2480,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-autoscroller@^2.3.4: version "2.3.4" resolved "https://registry.npmjs.org/dom-autoscroller/-/dom-autoscroller-2.3.4.tgz#1ed25cbde2bdf3bf3eb762937089b20ecef190bd" @@ -2878,6 +2927,15 @@ eslint-plugin-jsdoc@^48.2.5: semver "^7.6.2" spdx-expression-parse "^4.0.0" +eslint-plugin-mocha@^10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz#0aca8d709e7cddef566e0dc252f6b02e307a2b7e" + integrity sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw== + dependencies: + eslint-utils "^3.0.0" + globals "^13.24.0" + rambda "^7.4.0" + eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -2886,62 +2944,75 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.57.0: - version "8.57.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^9.16.0: + version "9.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.16.0.tgz#66832e66258922ac0a626f803a9273e37747f2a6" + integrity sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.9.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.16.0" + "@eslint/plugin-kit" "^0.2.3" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.5" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" esniff@^2.0.1: version "2.0.1" @@ -2953,14 +3024,14 @@ esniff@^2.0.1: event-emitter "^0.3.5" type "^2.7.2" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^8.9.0" + acorn "^8.14.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^4.2.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -2974,7 +3045,7 @@ espurify@^1.6.0: dependencies: core-js "^2.0.0" -esquery@^1.4.2, esquery@^1.5.0: +esquery@^1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -3237,12 +3308,12 @@ fetch-ponyfill@^7.1.0: dependencies: node-fetch "~2.6.1" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" file-loader@^6.2.0: version "6.2.0" @@ -3379,14 +3450,13 @@ flagged-respawn@^1.0.0: resolved "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flat@^5.0.2: version "5.0.2" @@ -3762,13 +3832,23 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: +globals@^13.24.0: version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.13.0: + version "15.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.13.0.tgz#bbec719d69aafef188ecd67954aae76a696010fc" + integrity sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g== + globalthis@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -4476,11 +4556,6 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -5030,9 +5105,9 @@ kew@^0.7.0: resolved "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" integrity sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ== -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -5444,7 +5519,7 @@ minimatch@9.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6303,6 +6378,11 @@ preserve@^0.2.0: resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== +prettier@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== + pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -6437,6 +6517,11 @@ quill@^2.0.2: parchment "^3.0.0" quill-delta "^5.1.0" +rambda@^7.4.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" + integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== + randomatic@^3.0.0: version "3.1.1" resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" @@ -7545,11 +7630,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - textextensions@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz#03530d5287b86773c08b77458589148870cc71d3" From 0597375601ccddd2a1d5524b88479368c4f65227 Mon Sep 17 00:00:00 2001 From: brendanjbond Date: Thu, 5 Dec 2024 11:27:19 -0600 Subject: [PATCH 02/13] fix linting errors --- eslint.config.mjs | 2 +- src/Embed.js | 2 +- src/Form.js | 2 +- src/FormBuilder.js | 2 +- src/PDF.js | 2 +- src/PDFBuilder.js | 2 +- src/PDFBuilder.spec.js | 4 +- src/Webform.js | 14 +- src/WebformBuilder.js | 4 +- src/Wizard.spec.js | 10 +- src/components/Components.js | 8 +- .../_classes/component/Component.js | 10 +- .../editForm/Component.edit.addons.js | 4 +- .../editForm/Component.edit.conditional.js | 4 +- .../component/editForm/Component.edit.data.js | 4 +- .../editForm/Component.edit.display.js | 4 +- .../editForm/Component.edit.logic.js | 4 +- .../editForm/Component.edit.validation.js | 8 +- .../_classes/component/editForm/utils.js | 8 +- .../_classes/component/editForm/utils.spec.js | 8 +- src/components/_classes/list/ListComponent.js | 6 +- src/components/alert/Alert.js | 2 +- src/components/button/Button.js | 6 +- src/components/currency/Currency.js | 4 +- src/components/datetime/DateTime.js | 4 +- src/components/editgrid/EditGrid.unit.js | 125 +++++++++--------- src/components/file/File.js | 12 +- src/components/form/Form.js | 6 +- .../form/editForm/Form.edit.data.js | 4 +- .../form/editForm/Form.edit.display.js | 2 +- .../panel/editForm/Panel.edit.conditional.js | 4 +- src/components/recaptcha/ReCaptcha.js | 2 +- src/components/select/Select.js | 8 +- src/components/signature/Signature.js | 2 +- src/components/textarea/TextArea.js | 2 +- .../textfield/TextField.builder.spec.js | 35 ++--- src/pdf.image.js | 2 +- src/providers/storage/s3.unit.js | 16 +-- src/providers/storage/url.js | 2 +- src/translations/en.js | 12 +- src/utils/conditionOperators/IsEqualTo.js | 5 +- src/utils/jsonlogic/operators.spec.js | 82 ++++++++---- src/utils/utils.js | 8 +- src/widgets/CalendarWidget.js | 6 +- 44 files changed, 245 insertions(+), 218 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index d130152b90..8b58ed9603 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -5,7 +5,7 @@ import mochaPlugin from 'eslint-plugin-mocha'; export default [ { files: ['**/*.{js,mjs,cjs}'] }, { - languageOptions: { globals: { ...globals.browser } }, + languageOptions: { globals: { ...globals.browser, global: 'writable' } }, }, pluginJs.configs.recommended, mochaPlugin.configs.flat.recommended, diff --git a/src/Embed.js b/src/Embed.js index a7237321da..501ba186b2 100644 --- a/src/Embed.js +++ b/src/Embed.js @@ -256,7 +256,7 @@ export class Formio { }])); } - // eslint-disable-next-line max-statements + static async init(element, options = {}, builder = false) { Formio.cdn = new CDN(Formio.config.cdn, Formio.config.cdnUrls || {}); Formio.config.libs = Formio.config.libs || { diff --git a/src/Form.js b/src/Form.js index 15c09c1671..3f6f5e7a2a 100644 --- a/src/Form.js +++ b/src/Form.js @@ -217,7 +217,7 @@ export default class Form extends Element { return new Displays.displays[display](this.element, this.options); } else { - // eslint-disable-next-line new-cap + return new Displays.displays['webform'](this.element, this.options); } } diff --git a/src/FormBuilder.js b/src/FormBuilder.js index 8595037f21..dd7624c8e2 100644 --- a/src/FormBuilder.js +++ b/src/FormBuilder.js @@ -48,7 +48,7 @@ export default class FormBuilder extends Form { return new Builders.builders[display](this.element, this.options); } else { - // eslint-disable-next-line new-cap + return new Builders.builders['webform'](this.element, this.options); } } diff --git a/src/PDF.js b/src/PDF.js index 9e6700d293..a5e2fd2f5b 100644 --- a/src/PDF.js +++ b/src/PDF.js @@ -320,7 +320,7 @@ if (typeof window !== 'undefined') { try { eventData = JSON.parse(event.data); } - catch (err) { + catch (ignoreErr) { eventData = null; } diff --git a/src/PDFBuilder.js b/src/PDFBuilder.js index c195cdbe66..b6f26ef102 100644 --- a/src/PDFBuilder.js +++ b/src/PDFBuilder.js @@ -455,7 +455,7 @@ export default class PDFBuilder extends WebformBuilder { // If there hasn't been a drop event on the dropzone, we're done if (!this.dropEvent) { // a 'drop' event may not be emited in the chrome browser when using a Mac, therefore an additional check has been added - // eslint-disable-next-line no-undef + if (!this.dropEmitted && (getBrowserInfo().chrome || getBrowserInfo().edge) && globalThis.navigator.userAgentData.platform === 'macOS' && iframeRect.left < e.clientX && iframeRect.top < e.clientY ) { this.dropEvent = e; this.dropEvent.dataTransfer.effectAllowed = 'all'; diff --git a/src/PDFBuilder.spec.js b/src/PDFBuilder.spec.js index d0ebe9c599..8dfa4e7272 100644 --- a/src/PDFBuilder.spec.js +++ b/src/PDFBuilder.spec.js @@ -1,7 +1,7 @@ import FormBuilder from './FormBuilder'; -describe('Formio PDF Form Builder tests', () => { - it('Should emit change event when component position changed', (done) => { +describe('Formio PDF Form Builder tests', function() { + it('Should emit change event when component position changed', function(done) { const form = { 'type': 'form', 'components': [ diff --git a/src/Webform.js b/src/Webform.js index ba65bd5079..9d84f2ee9a 100644 --- a/src/Webform.js +++ b/src/Webform.js @@ -328,7 +328,7 @@ export default class Webform extends NestedDataComponent { this.root = this; this.localRoot = this; } - /* eslint-enable max-statements */ + get language() { return this.options.language; @@ -606,7 +606,7 @@ export default class Webform extends NestedDataComponent { }); this.loader.appendChild(spinner); } - /* eslint-disable max-depth */ + if (this.loader) { try { if (loading) { @@ -614,11 +614,11 @@ export default class Webform extends NestedDataComponent { } else { this.removeChildFrom(this.loader, this.wrapper); } - } catch (err) { + } catch (ignoreErr) { // ingore } } - /* eslint-enable max-depth */ + } } @@ -1183,7 +1183,7 @@ export default class Webform extends NestedDataComponent { } this.removeChild(this.alert); this.alert = null; - } catch (err) { + } catch (ignoreErr) { // ignore } } @@ -1246,7 +1246,7 @@ export default class Webform extends NestedDataComponent { * @param {object} error - An optional additional error to display along with the component errors. * @returns {*} */ - /* eslint-disable no-unused-vars */ + /** * * @param {Array} errors - An array of errors to display. @@ -1343,7 +1343,7 @@ export default class Webform extends NestedDataComponent { return errors; } - /* eslint-enable no-unused-vars */ + /** * Called when the submission has completed, or if the submission needs to be sent to an external library. diff --git a/src/WebformBuilder.js b/src/WebformBuilder.js index 6a280b9291..58100cb9db 100644 --- a/src/WebformBuilder.js +++ b/src/WebformBuilder.js @@ -18,7 +18,7 @@ if (typeof window !== 'undefined' && typeof window.global === 'undefined') { import dragula from 'dragula'; export default class WebformBuilder extends Component { - // eslint-disable-next-line max-statements + constructor() { let element, options; if (arguments[0] instanceof HTMLElement || arguments[1]) { @@ -887,7 +887,7 @@ export default class WebformBuilder extends Component { return path; } - /* eslint-disable max-statements */ + onDrop(element, target, source, sibling) { if (!target) { return; diff --git a/src/Wizard.spec.js b/src/Wizard.spec.js index 80a37cc6a7..ab8c91b6be 100644 --- a/src/Wizard.spec.js +++ b/src/Wizard.spec.js @@ -4,9 +4,9 @@ import { expect } from 'chai'; import WizardTests from '../test/wizards'; import Wizard from './Wizard'; -describe('Wizard Component', () => { - describe('getPreviousPage', () => { - it('should return previous page number or zero', () => { +describe('Wizard Component', function() { + describe('getPreviousPage', function() { + it('should return previous page number or zero', function() { const { getPreviousPage } = Wizard.prototype; expect(getPreviousPage.call({ page: 3 })).to.equal(2); expect(getPreviousPage.call({ page: 9 })).to.equal(8); @@ -17,10 +17,10 @@ describe('Wizard Component', () => { }); }); -describe('WizardRenderer tests', () => { +describe('WizardRenderer tests', function() { each(WizardTests, (wizardTest) => { each(wizardTest.tests, (wizardTestTest, title) => { - it(title, (done) => { + it(title, function(done) { const wizardElement = document.createElement('div'); const wizard = new Wizard(wizardElement); wizard.setForm(wizardTest.form).then(() => { diff --git a/src/components/Components.js b/src/components/Components.js index 47cc8b4e94..6767d08a54 100644 --- a/src/components/Components.js +++ b/src/components/Components.js @@ -92,19 +92,19 @@ export default class Components { comp = new Components.components[component.type](component, options, data); } else if (component.arrayTree) { - // eslint-disable-next-line new-cap + comp = new Components.components['datagrid'](component, options, data); } else if (component.tree) { - // eslint-disable-next-line new-cap + comp = new Components.components['nesteddata'](component, options, data); } else if (Array.isArray(component.components)) { - // eslint-disable-next-line new-cap + comp = new Components.components['nested'](component, options, data); } else if (options && options.server) { - // eslint-disable-next-line new-cap + comp = new Components.components['hidden'](component, options, data); } else { diff --git a/src/components/_classes/component/Component.js b/src/components/_classes/component/Component.js index 1f5f374733..1470cff6d4 100644 --- a/src/components/_classes/component/Component.js +++ b/src/components/_classes/component/Component.js @@ -236,7 +236,7 @@ export default class Component extends Element { * @param {object} options - The options for this component. * @param {object} data - The global data submission object this component will belong. */ - /* eslint-disable max-statements */ + constructor(component, options, data) { super(Object.assign({ renderMode: 'form', @@ -476,7 +476,7 @@ export default class Component extends Element { this.init(); } } - /* eslint-enable max-statements */ + get componentsMap() { if (this.localRoot?.childComponentsMap) { @@ -3153,7 +3153,7 @@ export default class Component extends Element { }, 'value'); } - /* eslint-disable max-statements */ + calculateComponentValue(data, flags, row) { // Skip value calculation for the component if we don't have entire form data set or in builder mode if (this.builderMode || _.isUndefined(_.get(this, 'root.data'))) { @@ -3259,7 +3259,7 @@ export default class Component extends Element { } return false; } - /* eslint-enable max-statements */ + /** * Performs calculations in this component plus any child components. @@ -3617,7 +3617,7 @@ export default class Component extends Element { }); } - // eslint-disable-next-line max-statements + setCustomValidity(messages, dirty, external) { const inputRefs = this.isInputComponent ? this.refs.input || [] : null; diff --git a/src/components/_classes/component/editForm/Component.edit.addons.js b/src/components/_classes/component/editForm/Component.edit.addons.js index 7d63552572..744bc6a44b 100644 --- a/src/components/_classes/component/editForm/Component.edit.addons.js +++ b/src/components/_classes/component/editForm/Component.edit.addons.js @@ -11,12 +11,12 @@ export default [ key: 'addons', label: 'Addons', templates: { - // eslint-disable-next-line quotes + header: `
{{ t(components[0].label) }}
Settings
`, - // eslint-disable-next-line quotes + row: `
{{ row.name.label }} diff --git a/src/components/_classes/component/editForm/Component.edit.conditional.js b/src/components/_classes/component/editForm/Component.edit.conditional.js index 920963df7c..a03eafb9ff 100644 --- a/src/components/_classes/component/editForm/Component.edit.conditional.js +++ b/src/components/_classes/component/editForm/Component.edit.conditional.js @@ -1,6 +1,6 @@ import EditFormUtils from './utils'; import { getContextComponents } from '../../../../utils/utils'; -/* eslint-disable quotes, max-len */ + export default [ { type: 'panel', @@ -50,4 +50,4 @@ export default [ '

Click here for an example

' ) ]; -/* eslint-enable quotes, max-len */ + diff --git a/src/components/_classes/component/editForm/Component.edit.data.js b/src/components/_classes/component/editForm/Component.edit.data.js index ed2790d01a..529c19b4f0 100644 --- a/src/components/_classes/component/editForm/Component.edit.data.js +++ b/src/components/_classes/component/editForm/Component.edit.data.js @@ -1,5 +1,5 @@ import EditFormUtils from './utils'; -/* eslint-disable max-len */ + export default [ { weight: 0, @@ -160,4 +160,4 @@ export default [ tooltip: 'When checked, this will allow the user to manually override the calculated value.' }, ]; -/* eslint-enable max-len */ + diff --git a/src/components/_classes/component/editForm/Component.edit.display.js b/src/components/_classes/component/editForm/Component.edit.display.js index a872a053aa..fee318a7b9 100644 --- a/src/components/_classes/component/editForm/Component.edit.display.js +++ b/src/components/_classes/component/editForm/Component.edit.display.js @@ -1,4 +1,4 @@ -/* eslint-disable max-len */ + export default [ { weight: 0, @@ -196,4 +196,4 @@ export default [ input: true } ]; -/* eslint-enable max-len */ + diff --git a/src/components/_classes/component/editForm/Component.edit.logic.js b/src/components/_classes/component/editForm/Component.edit.logic.js index 22c10c3dc1..7cc25caf6d 100644 --- a/src/components/_classes/component/editForm/Component.edit.logic.js +++ b/src/components/_classes/component/editForm/Component.edit.logic.js @@ -1,7 +1,7 @@ import EditFormUtils from './utils'; import { getContextComponents } from '../../../../utils/utils'; -/* eslint-disable quotes, max-len */ + export default [ { weight: 0, @@ -410,4 +410,4 @@ export default [ ], }, ]; -/* eslint-enable quotes, max-len */ + diff --git a/src/components/_classes/component/editForm/Component.edit.validation.js b/src/components/_classes/component/editForm/Component.edit.validation.js index 369f02ffd8..d4f54af5d4 100644 --- a/src/components/_classes/component/editForm/Component.edit.validation.js +++ b/src/components/_classes/component/editForm/Component.edit.validation.js @@ -1,7 +1,7 @@ import EditFormUtils from './utils'; import { Evaluator } from '../../../../utils/Evaluator'; -/* eslint-disable quotes, max-len */ + export default [ { weight: 10, @@ -121,7 +121,7 @@ export default [ { type: 'htmlelement', tag: 'div', - /* eslint-disable prefer-template */ + content: '

Execute custom logic using JSONLogic.

' + '
Example:
' + '
' + JSON.stringify({
@@ -131,7 +131,7 @@ export default [
               "Your name must be 'Bob'!"
             ]
           }, null, 2) + '
' - /* eslint-enable prefer-template */ + }, { type: 'textarea', @@ -210,4 +210,4 @@ export default [ ] } ]; -/* eslint-enable quotes, max-len */ + diff --git a/src/components/_classes/component/editForm/utils.js b/src/components/_classes/component/editForm/utils.js index 8de29b8a81..ef0b4763dd 100644 --- a/src/components/_classes/component/editForm/utils.js +++ b/src/components/_classes/component/editForm/utils.js @@ -40,7 +40,7 @@ const EditFormUtils = { return { type: 'htmlelement', tag: 'div', - /* eslint-disable prefer-template */ + content: '

The following variables are available in all scripts.

' + '' + additional + @@ -56,7 +56,7 @@ const EditFormUtils = { '' + '' + '
utilsAn instance of the FormioUtils object.
utilAn alias for "utils".

' - /* eslint-enable prefer-template */ + }; }, javaScriptValue(title, property, propertyJSON, weight, exampleHTML, exampleJSON, additionalParams = '', excludeJSONLogic) { @@ -99,11 +99,11 @@ const EditFormUtils = { { type: 'htmlelement', tag: 'div', - /* eslint-disable prefer-template */ + content: '

Execute custom logic using JSONLogic.

' + '

Full Lodash support is provided using an "_" before each operation, such as {"_sum": {var: "data.a"}}

' + exampleJSON - /* eslint-enable prefer-template */ + }, { type: 'textarea', diff --git a/src/components/_classes/component/editForm/utils.spec.js b/src/components/_classes/component/editForm/utils.spec.js index 2ae526fd57..a21cc288ae 100644 --- a/src/components/_classes/component/editForm/utils.spec.js +++ b/src/components/_classes/component/editForm/utils.spec.js @@ -3,8 +3,8 @@ import _ from 'lodash'; import utils from './utils'; describe('Edit Form Utils', function() { - describe('unifyComponents', () => { - it('should merge all objects with the same key', () => { + describe('unifyComponents', function() { + it('should merge all objects with the same key', function() { const components = [ { key: 'a', label: 1, input: true }, { key: 'a', one: 1, two: 2 }, @@ -17,7 +17,7 @@ describe('Edit Form Utils', function() { ]); }); - it('should not merge objects with "skipMerge" flag', () => { + it('should not merge objects with "skipMerge" flag', function() { const components = [ { key: 'a', label: 1 }, { key: 'a', label: 2, skipMerge: true }, @@ -33,7 +33,7 @@ describe('Edit Form Utils', function() { ]); }); - it('should override with "override" flag', () => { + it('should override with "override" flag', function() { const components = [ { key: 'a', label: 1, ok: true }, { key: 'a', label: 2, overrideEditForm: true } diff --git a/src/components/_classes/list/ListComponent.js b/src/components/_classes/list/ListComponent.js index 1c3ac97779..258b7cb009 100644 --- a/src/components/_classes/list/ListComponent.js +++ b/src/components/_classes/list/ListComponent.js @@ -159,7 +159,7 @@ export default class ListComponent extends Field { console.warn(`Unable to load resources for ${this.key}`); } - /* eslint-disable max-statements */ + updateItems(searchInput, forceUpdate) { if (!this.component.data) { console.warn(`Select component ${this.key} does not have data configuration.`); @@ -197,7 +197,7 @@ export default class ListComponent extends Field { try { this.loadItems(resourceUrl, searchInput, this.requestHeaders); } - catch (err) { + catch (ignoreErr) { console.warn(`Unable to load resources for ${this.key}`); } } @@ -291,5 +291,5 @@ export default class ListComponent extends Field { } } } - /* eslint-enable max-statements */ + } diff --git a/src/components/alert/Alert.js b/src/components/alert/Alert.js index e41e4c3725..669bb7f3d4 100644 --- a/src/components/alert/Alert.js +++ b/src/components/alert/Alert.js @@ -146,7 +146,7 @@ export default class Alert { this.parentComponent.removeChildFrom(this.alert, this.container); this.alert = null; } - catch (err) { + catch (ignoreErr) { // ignore } } diff --git a/src/components/button/Button.js b/src/components/button/Button.js index f213ffd799..cb18ecd0ce 100644 --- a/src/components/button/Button.js +++ b/src/components/button/Button.js @@ -292,7 +292,7 @@ export default class ButtonComponent extends Field { this.attachButton(); return superAttach; } - /* eslint-enable max-statements */ + detach(element) { if (element && this.refs.button) { @@ -403,7 +403,7 @@ export default class ButtonComponent extends Field { return; } - /*eslint-disable camelcase */ + let params = { response_type: 'code', client_id: settings.clientId, @@ -418,7 +418,7 @@ export default class ButtonComponent extends Field { params.code_challenge_method = 'S256'; } - /*eslint-enable camelcase */ + // Needs for the correct redirection URI for the OpenID const originalRedirectUri = params.redirect_uri; diff --git a/src/components/currency/Currency.js b/src/components/currency/Currency.js index dce69bbde5..e80791187f 100644 --- a/src/components/currency/Currency.js +++ b/src/components/currency/Currency.js @@ -138,7 +138,7 @@ export default class CurrencyComponent extends NumberComponent { getValueAsString(value, options) { const stringValue = super.getValueAsString(value, options); - // eslint-disable-next-line eqeqeq + if (value || value == '0') { if (Array.isArray(value)) { return value.map((val) => this.addZerosAndFormatValue(super.getValueAsString(val, options))).join(', '); @@ -176,7 +176,7 @@ export default class CurrencyComponent extends NumberComponent { value ='0'; } } - catch (err) { + catch (ignoreErr) { // If value doesn't have a replace method, continue on as before. } } diff --git a/src/components/datetime/DateTime.js b/src/components/datetime/DateTime.js index 05d222bfc9..0a8aad3776 100644 --- a/src/components/datetime/DateTime.js +++ b/src/components/datetime/DateTime.js @@ -115,7 +115,7 @@ export default class DateTimeComponent extends Input { } } - /* eslint-disable camelcase */ + this.component.widget = { type: 'calendar', timezone, @@ -139,7 +139,7 @@ export default class DateTimeComponent extends Input { maxDate: _.get(this.component, 'datePicker.maxDate'), ...customOptions, }; - /* eslint-enable camelcase */ + } get defaultSchema() { diff --git a/src/components/editgrid/EditGrid.unit.js b/src/components/editgrid/EditGrid.unit.js index e2b0d551e7..c34523270d 100644 --- a/src/components/editgrid/EditGrid.unit.js +++ b/src/components/editgrid/EditGrid.unit.js @@ -34,9 +34,9 @@ import { displayAsModalEditGrid } from '../../../test/formtest'; import { Formio } from '../../Formio'; import { fastCloneDeep } from '@formio/core'; -describe('EditGrid Component', () => { +describe('EditGrid Component', function() { - it('Should set correct values in dataMap inside editGrid and allow aditing them', (done) => { + it('Should set correct values in dataMap inside editGrid and allow aditing them', function(done) { Harness.testCreate(EditGridComponent, comp4).then((component) => { component.setValue([{ dataMap: { key111: '111' } }]); @@ -60,7 +60,7 @@ describe('EditGrid Component', () => { }); }); - it('Should set correct values after reset', (done) => { + it('Should set correct values after reset', function(done) { Harness.testCreate(EditGridComponent, comp5) .then((component) => { assert.equal(component.components.length, 0); @@ -77,7 +77,7 @@ describe('EditGrid Component', () => { }); }); - it('Should display saved values if there are more then 1 nested components', (done) => { + it('Should display saved values if there are more then 1 nested components', function(done) { Harness.testCreate(EditGridComponent, comp3).then((component) => { component.setValue([{ container: { number: 55555 } }, { container: { number: 666666 } }]); @@ -92,7 +92,7 @@ describe('EditGrid Component', () => { }); }); - it('Should build an empty edit grid component', () => { + it('Should build an empty edit grid component', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testInnerHtml(component, 'li.list-group-header div.row div:nth-child(1)', 'Field 1'); Harness.testInnerHtml(component, 'li.list-group-header div.row div:nth-child(2)', 'Field 2'); @@ -107,7 +107,7 @@ describe('EditGrid Component', () => { }); }); - it('Should build an edit grid component', () => { + it('Should build an edit grid component', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testInnerHtml(component, 'li.list-group-header div.row div:nth-child(1)', 'Field 1'); Harness.testInnerHtml(component, 'li.list-group-header div.row div:nth-child(2)', 'Field 2'); @@ -137,7 +137,7 @@ describe('EditGrid Component', () => { }); }); - it('Should add a row when add another is clicked', () => { + it('Should add a row when add another is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testElements(component, 'li.list-group-item', 1); Harness.testInnerHtml(component, 'li.list-group-header div.row div:nth-child(3)', '0'); @@ -151,7 +151,7 @@ describe('EditGrid Component', () => { }); }); - it('Should save a new row when save is clicked', () => { + it('Should save a new row when save is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { component.pristine = false; Harness.testSetGet(component, [ @@ -180,7 +180,7 @@ describe('EditGrid Component', () => { }); }); - it('Should cancel add a row when cancel is clicked', () => { + it('Should cancel add a row when cancel is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -207,7 +207,7 @@ describe('EditGrid Component', () => { }); }); - it('Should delete a row when delete is clicked', () => { + it('Should delete a row when delete is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -234,7 +234,7 @@ describe('EditGrid Component', () => { }); }); - it('Should edit a row when edit is clicked', () => { + it('Should edit a row when edit is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -255,7 +255,7 @@ describe('EditGrid Component', () => { }); }); - it('Should save a row when save is clicked', () => { + it('Should save a row when save is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -278,7 +278,7 @@ describe('EditGrid Component', () => { }); }); - it('Should cancel edit row when cancel is clicked', () => { + it('Should cancel edit row when cancel is clicked', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -302,7 +302,7 @@ describe('EditGrid Component', () => { }); // TODO: find out if this is deprecated in the new (3.x and above) versions of the renderer, if so ditch this test - it('Should show error messages for existing data in rows', () => { + it('Should show error messages for existing data in rows', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -324,7 +324,7 @@ describe('EditGrid Component', () => { }); }); - it('Should not allow saving when errors exist', () => { + it('Should not allow saving when errors exist', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.clickElement(component, 'button.btn-primary'); Harness.clickElement(component, 'div.editgrid-actions button.btn-primary'); @@ -350,7 +350,7 @@ describe('EditGrid Component', () => { }); }); - it('Should not allow saving when rows are open', () => { + it('Should not allow saving when rows are open', function() { return Harness.testCreate(EditGridComponent, comp1).then((component) => { Harness.testSetGet(component, [ { @@ -373,7 +373,7 @@ describe('EditGrid Component', () => { }); }); - it('Should not allow to go to the next page if row is not saved', (done) => { + it('Should not allow to go to the next page if row is not saved', function(done) { const form = _.cloneDeep(comp16); const element = document.createElement('div'); Formio.createForm(element, form).then((form) => { @@ -396,7 +396,7 @@ describe('EditGrid Component', () => { }).catch(done); }) - it('Should disable components when in read only', () => { + it('Should disable components when in read only', function() { return Harness.testCreate(EditGridComponent, comp1, { readOnly: true }).then((component) => { Harness.testSetGet(component, [ { @@ -415,8 +415,8 @@ describe('EditGrid Component', () => { }); }); - describe('Display As Modal', () => { - it('Should show add error classes to invalid components', (done) => { + describe('Display As Modal', function() { + it('Should show add error classes to invalid components', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(displayAsModalEditGrid).then(() => { @@ -442,7 +442,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should set alert with validation errors on save and update them', (done) => { + it('Should set alert with validation errors on save and update them', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(ModalEditGrid).then(() => { @@ -483,7 +483,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Confirmation dialog', (done) => { + it('Confirmation dialog', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(comp6).then(() => { @@ -512,7 +512,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Confirmation dialog shouldn\'t occure if no values within the row are changed', (done) => { + it('Confirmation dialog shouldn\'t occure if no values within the row are changed', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(comp6).then(() => { @@ -532,7 +532,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should not produce many components in Edit view when minLength validation set', done => { + it('Should not produce many components in Edit view when minLength validation set', function(done) { const formElement = document.createElement('div'); Formio.createForm(formElement, comp15, { attachMode:'builder' } ) .then(form => { @@ -547,7 +547,7 @@ describe('EditGrid Component', () => { .catch(done); }); - it('Should close row when Display as Modal checked', (done) => { + it('Should close row when Display as Modal checked', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(comp14).then(() => { @@ -568,8 +568,8 @@ describe('EditGrid Component', () => { }); }); - describe('Draft Rows', () => { - it('Check saving rows as draft', (done) => { + describe('Draft Rows', function() { + it('Check saving rows as draft', function(done) { Harness.testCreate(EditGridComponent, comp5).then((component) => { component.addRow(); Harness.clickElement(component, '[ref="editgrid-editGrid1-saveRow"]'); @@ -581,7 +581,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should not show row errors alerts if drafts enabled in modal-edit EditGrid', (done) => { + it('Should not show row errors alerts if drafts enabled in modal-edit EditGrid', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); ModalEditGrid.components[0].rowDrafts = true; @@ -631,7 +631,7 @@ describe('EditGrid Component', () => { }); }); - it('Should keep fields valid inside NestedForms if drafts are enabled', (done) => { + it('Should keep fields valid inside NestedForms if drafts are enabled', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); ModalEditGrid.components[0].rowDrafts = true; @@ -687,7 +687,7 @@ describe('EditGrid Component', () => { }); }); - it('Should keep fields valid inside NestedForms if drafts are enabled', (done) => { + it('Should keep fields valid inside NestedForms if drafts are enabled', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); ModalEditGrid.components[0].rowDrafts = true; @@ -803,7 +803,7 @@ describe('EditGrid Component', () => { // }); }); - it('Test simple conditions based on the EditGrid\'s child\'s value and default values when adding rows', (done) => { + it('Test simple conditions based on the EditGrid\'s child\'s value and default values when adding rows', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm({ display: 'form', components: [comp7], type: 'form' }).then(() => { @@ -818,7 +818,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Test clearOnHide inside EditGrid', (done) => { + it('Test clearOnHide inside EditGrid', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm({ display: 'form', components: [comp7], type: 'form' }).then(() => { @@ -852,7 +852,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Test refreshing inside EditGrid', (done) => { + it('Test refreshing inside EditGrid', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm({ display: 'form', components: [comp8], type: 'form' }).then(() => { @@ -874,7 +874,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should display summary with values only for components that are visible at least in one row', (done) => { + it('Should display summary with values only for components that are visible at least in one row', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(comp9).then(() => { @@ -943,7 +943,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should add component to the header only if it is visible in saved row', (done) => { + it('Should add component to the header only if it is visible in saved row', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); form.setForm(comp9).then(() => { @@ -997,7 +997,7 @@ describe('EditGrid Component', () => { }).catch(done); }).timeout(3000); - it('Should add/save/cancel/delete/edit rows', (done) => { + it('Should add/save/cancel/delete/edit rows', function(done) { const form = _.cloneDeep(comp10); const element = document.createElement('div'); @@ -1077,7 +1077,7 @@ describe('EditGrid Component', () => { }).catch(done); }).timeout(3000); - it('Should open first row when empty and allow saving openned row', (done) => { + it('Should open first row when empty and allow saving openned row', function(done) { const form = _.cloneDeep(comp10); const element = document.createElement('div'); form.components[0].openWhenEmpty = true; @@ -1115,7 +1115,7 @@ describe('EditGrid Component', () => { }).catch(done); }).timeout(3000); - it('Should disable adding/removing rows', (done) => { + it('Should disable adding/removing rows', function(done) { const form = _.cloneDeep(comp10); const element = document.createElement('div'); form.components[0].disableAddingRemovingRows = true; @@ -1137,7 +1137,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should show conditional eddRow btn if condition is met', (done) => { + it('Should show conditional eddRow btn if condition is met', function(done) { const form = _.cloneDeep(comp10); const element = document.createElement('div'); form.components[0].conditionalAddButton = 'show = data.number11 === 5'; @@ -1171,7 +1171,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should use custom text for save/cancel/add btns', (done) => { + it('Should use custom text for save/cancel/add btns', function(done) { const form = _.cloneDeep(comp10); const element = document.createElement('div'); form.components[0].addAnother = 'add custom'; @@ -1194,7 +1194,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should render headers when openWhenEmpry is enabled', (done) => { + it('Should render headers when openWhenEmpry is enabled', function(done) { const form = _.cloneDeep(comp11); const element = document.createElement('div'); @@ -1211,7 +1211,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should show validation when saving a row with required conditional filed inside container', (done) => { + it('Should show validation when saving a row with required conditional filed inside container', function(done) { const form = _.cloneDeep(comp12); const element = document.createElement('div'); @@ -1250,7 +1250,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should submit a form with a submission in a draft-state without validation errors', (done) => { + it('Should submit a form with a submission in a draft-state without validation errors', function(done) { const form = _.cloneDeep(comp13); const element = document.createElement('div'); Formio.createForm(element, form).then(form => { @@ -1273,7 +1273,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should keep value for conditional editGrid on setValue when server option is provided', (done) => { + it('Should keep value for conditional editGrid on setValue when server option is provided', function(done) { const element = document.createElement('div'); Formio.createForm(element, formsWithEditGridAndConditions.form1, { server: true }).then(form => { @@ -1297,7 +1297,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should set value for conditional editGrid inside editGrid on event when form is not pristine ', (done) => { + it('Should set value for conditional editGrid inside editGrid on event when form is not pristine ', function(done) { const element = document.createElement('div'); Formio.createForm(element, formsWithEditGridAndConditions.form2).then(form => { @@ -1319,7 +1319,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should keep value for conditional editGrid in tabs on setValue when server option is provided', (done) => { + it('Should keep value for conditional editGrid in tabs on setValue when server option is provided', function(done) { const element = document.createElement('div'); Formio.createForm(element, formsWithEditGridAndConditions.form3, { server: true }).then(form => { @@ -1356,7 +1356,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should calculate editGrid value when calculateOnServer is enabled and server option is passed', (done) => { + it('Should calculate editGrid value when calculateOnServer is enabled and server option is passed', function(done) { const element = document.createElement('div'); Formio.createForm(element, formsWithEditGridAndConditions.form4, { server: true }).then(form => { @@ -1367,7 +1367,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should keep value for conditional editGrid deeply nested in panels and containers on setValue when server option is provided', (done) => { + it('Should keep value for conditional editGrid deeply nested in panels and containers on setValue when server option is provided', function(done) { const element = document.createElement('div'); Formio.createForm(element, formsWithEditGridAndConditions.form5, { server: true }).then(form => { @@ -1398,7 +1398,7 @@ describe('EditGrid Component', () => { }).catch(done); }); - it('Should calculate editGrid value when condition is met in advanced logic', (done) => { + it('Should calculate editGrid value when condition is met in advanced logic', function(done) { const element = document.createElement('div'); Formio.createForm(element, formsWithEditGridAndConditions.form6).then(form => { @@ -1415,8 +1415,8 @@ describe('EditGrid Component', () => { }); }); -describe('EditGrid Open when Empty', () => { - it('Should be opened when shown conditionally', (done) => { +describe('EditGrid Open when Empty', function() { + it('Should be opened when shown conditionally', function(done) { const formElement = document.createElement('div'); Formio.createForm(formElement, withOpenWhenEmptyAndConditions) .then((form) => { @@ -1461,7 +1461,7 @@ describe('EditGrid Open when Empty', () => { .catch(done); }); - it('Should create new row with empty data and no defaults', (done) => { + it('Should create new row with empty data and no defaults', function(done) { const formElement = document.createElement('div'); Formio.createForm(formElement, compOpenWhenEmpty, { noDefaults: true }) .then((form) => { @@ -1476,7 +1476,7 @@ describe('EditGrid Open when Empty', () => { .catch(done); }); - it('Should always add a first row', (done) => { + it('Should always add a first row', function(done) { const formElement = document.createElement('div'); Formio.createForm(formElement, compOpenWhenEmpty) .then((form) => { @@ -1524,7 +1524,7 @@ describe('EditGrid Open when Empty', () => { .catch(done); }); - it('Should restore focus on the proper component after change event', (done) => { + it('Should restore focus on the proper component after change event', function(done) { const formElement = document.createElement('div'); Formio.createForm(formElement, compWithCustomDefaultValue) .then((form) => { @@ -1551,7 +1551,7 @@ describe('EditGrid Open when Empty', () => { .catch(done); }); - it('Should submit form with empty rows when submit button is pressed and no rows are saved', (done) => { + it('Should submit form with empty rows when submit button is pressed and no rows are saved', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); @@ -1570,7 +1570,7 @@ describe('EditGrid Open when Empty', () => { }).catch(done); }); - it('Should not submit form if any row inputs are set as required', (done) => { + it('Should not submit form if any row inputs are set as required', function(done) { const formElement = document.createElement('div'); const form = new Webform(formElement); @@ -1594,9 +1594,10 @@ describe('EditGrid Open when Empty', () => { }); }); -describe('EditGrid Fired Events', () => { +describe('EditGrid Fired Events', function() { const eventParams = ['row', 'component', 'instance'] - it('Should fire editGridEditRow event on the row edit button click', (done) => { + + it('Should fire editGridEditRow event on the row edit button click', function(done) { const formElement = document.createElement('div'); let eventsCount = 0; Formio.createForm(formElement, compTestEvents) @@ -1634,7 +1635,7 @@ describe('EditGrid Fired Events', () => { .catch(done); }); - it('Should fire editGridOpenModal event on the row edit button click when modal is enabled', (done) => { + it('Should fire editGridOpenModal event on the row edit button click when modal is enabled', function(done) { const formElement = document.createElement('div'); let eventsCount = 0; const testForm = fastCloneDeep(compTestEvents); @@ -1674,7 +1675,7 @@ describe('EditGrid Fired Events', () => { .catch(done); }); - it('Should fire editGridOpenModal event when adding new row and modal is enabled', (done) => { + it('Should fire editGridOpenModal event when adding new row and modal is enabled', function(done) { const formElement = document.createElement('div'); let eventsCount = 0; const testForm = fastCloneDeep(compTestEvents); @@ -1702,7 +1703,7 @@ describe('EditGrid Fired Events', () => { .catch(done); }); - it('Should prepare correct email table template with nested layout components', (done) => { + it('Should prepare correct email table template with nested layout components', function(done) { const formElement = document.createElement('div'); const testForm = fastCloneDeep(comp17); Formio.createForm(formElement, testForm) @@ -1736,7 +1737,7 @@ describe('EditGrid Fired Events', () => { .catch(done); }); - it('Should not show validation errors when inside component has validateOn: submit', (done) => { + it('Should not show validation errors when inside component has validateOn: submit', function(done) { Formio.createForm(document.createElement('div'), comp18).then((form) => { const editGrid = form.getComponent('editGrid'); // Open Edit Grid first row for editing diff --git a/src/components/file/File.js b/src/components/file/File.js index 2dce0e4332..de6d344b0c 100644 --- a/src/components/file/File.js +++ b/src/components/file/File.js @@ -580,14 +580,14 @@ export default class FileComponent extends Field { return superAttach; } - /* eslint-disable max-len */ + fileSize(a, b, c, d, e) { return `${(b = Math, c = b.log, d = 1024, e = c(a) / c(d) | 0, a / b.pow(d, e)).toFixed(2)} ${e ? `${'kMGTPEZY'[--e]}B` : 'Bytes'}`; } - /* eslint-enable max-len */ - /* eslint-disable max-depth */ + + globStringToRegex(str) { str = str.replace(/\s/g, ''); @@ -627,7 +627,7 @@ export default class FileComponent extends Field { return { regexp, excludes }; } - /* eslint-enable max-depth */ + translateScalars(str) { if (typeof str === 'string') { @@ -853,7 +853,7 @@ export default class FileComponent extends Field { const fileProcessorHandler = fileProcessor(this.fileService, this.root.options.fileProcessor); processedFile = await fileProcessorHandler(file, this.component.properties); } - catch (err) { + catch (ignoreErr) { this.fileDropHidden = false; return { status: 'error', @@ -1131,7 +1131,7 @@ export default class FileComponent extends Field { this.triggerChange(); return Promise.resolve(); } - catch (err) { + catch (ignoreErr) { return Promise.reject(); } finally { diff --git a/src/components/form/Form.js b/src/components/form/Form.js index f402414fb2..c94bada94a 100644 --- a/src/components/form/Form.js +++ b/src/components/form/Form.js @@ -1,4 +1,4 @@ -/* eslint-disable max-statements */ + import _ from 'lodash'; import Component from '../_classes/component/Component'; import ComponentModal from '../_classes/componentModal/ComponentModal'; @@ -165,7 +165,7 @@ export default class FormComponent extends Component { } } - /* eslint-disable max-statements */ + getSubOptions(options = {}) { options.events = this.createEmitter(); @@ -235,7 +235,7 @@ export default class FormComponent extends Component { } return options; } - /* eslint-enable max-statements */ + render() { if (this.builderMode) { diff --git a/src/components/form/editForm/Form.edit.data.js b/src/components/form/editForm/Form.edit.data.js index 3b4110ebeb..fd428e9427 100644 --- a/src/components/form/editForm/Form.edit.data.js +++ b/src/components/form/editForm/Form.edit.data.js @@ -1,5 +1,5 @@ import EditFormUtils from '../../_classes/component/editForm/utils'; -/* eslint-disable max-len */ + export default [ EditFormUtils.javaScriptValue('Custom Default Value', 'customDefaultValue', 'customDefaultValue', 120, '

Example:

value = data.firstName + " " + data.lastName;

', @@ -19,4 +19,4 @@ export default [ input: true }, ]; -/* eslint-enable max-len */ + diff --git a/src/components/form/editForm/Form.edit.display.js b/src/components/form/editForm/Form.edit.display.js index a913d73847..b01a3138de 100644 --- a/src/components/form/editForm/Form.edit.display.js +++ b/src/components/form/editForm/Form.edit.display.js @@ -24,4 +24,4 @@ export default [ ignore: true }, ]; -/* eslint-enable max-len */ + diff --git a/src/components/panel/editForm/Panel.edit.conditional.js b/src/components/panel/editForm/Panel.edit.conditional.js index 14455dfbb8..f32c3c885a 100644 --- a/src/components/panel/editForm/Panel.edit.conditional.js +++ b/src/components/panel/editForm/Panel.edit.conditional.js @@ -3,7 +3,7 @@ import _isEqual from 'lodash/isEqual'; import _omit from 'lodash/omit'; import _difference from 'lodash/difference'; import _keys from 'lodash/keys'; -/* eslint-disable quotes, max-len */ + const title = 'Advanced Next Page'; const jsonProp = 'nextPage'; const jsProp = 'nextPage'; @@ -46,4 +46,4 @@ export default [ } } ]; -/* eslint-enable quotes, max-len */ + diff --git a/src/components/recaptcha/ReCaptcha.js b/src/components/recaptcha/ReCaptcha.js index 865c325ced..66ce6ed793 100644 --- a/src/components/recaptcha/ReCaptcha.js +++ b/src/components/recaptcha/ReCaptcha.js @@ -102,7 +102,7 @@ export default class ReCaptchaComponent extends Component { } }); } - catch (err) { + catch (ignoreErr) { this.loading = false; } } diff --git a/src/components/select/Select.js b/src/components/select/Select.js index 068b2dd29e..814454c664 100644 --- a/src/components/select/Select.js +++ b/src/components/select/Select.js @@ -415,7 +415,7 @@ export default class SelectComponent extends ListComponent { this.serverCount = this.downloadedResources.length; } - /* eslint-disable max-statements */ + setItems(items, fromSearch) { this.selectItems = items; // If the items is a string, then parse as JSON. @@ -572,7 +572,7 @@ export default class SelectComponent extends ListComponent { return this.getSingleItemValueForHTMLMode(value); } - /* eslint-enable max-statements */ + get defaultValue() { let defaultValue = super.defaultValue; @@ -942,7 +942,7 @@ export default class SelectComponent extends ListComponent { }; } - /* eslint-disable max-statements */ + attach(element) { const superAttach = super.attach(element); this.loadRefs(element, { @@ -1223,7 +1223,7 @@ export default class SelectComponent extends ListComponent { } } - /* eslint-enable max-statements */ + update() { if (this.component.dataSrc === 'custom') { this.updateCustomItems(); diff --git a/src/components/signature/Signature.js b/src/components/signature/Signature.js index 000fd3a39f..866b38d89c 100644 --- a/src/components/signature/Signature.js +++ b/src/components/signature/Signature.js @@ -262,7 +262,7 @@ export default class SignatureComponent extends Input { this.setValue(this.dataValue); return superAttach; } - /* eslint-enable max-statements */ + detach() { if (this.observer) { diff --git a/src/components/textarea/TextArea.js b/src/components/textarea/TextArea.js index 82204f9236..d426cd61cb 100644 --- a/src/components/textarea/TextArea.js +++ b/src/components/textarea/TextArea.js @@ -573,7 +573,7 @@ export default class TextAreaComponent extends TextFieldComponent { try { value = JSON.parse(value); } - catch (err) { + catch (ignoreErr) { // console.warn(err); } } diff --git a/src/components/textfield/TextField.builder.spec.js b/src/components/textfield/TextField.builder.spec.js index 757b40db91..1436a840cb 100644 --- a/src/components/textfield/TextField.builder.spec.js +++ b/src/components/textfield/TextField.builder.spec.js @@ -2,10 +2,10 @@ import Harness from '../../../test/harness'; import EventEmitter from '../../EventEmitter'; import assert from 'power-assert'; -describe('TextField Builder', () => { +describe('TextField Builder', function() { let builder = null; - before((done) => { + before(function(done) { // Incrise Events limit for this tests set Harness.builderBefore(done, { editForm: { @@ -13,11 +13,12 @@ describe('TextField Builder', () => { } }); }); - after(() => { + + after(function() { Harness.builderAfter(); }); - it('Should create a new textfield component', () => { + it('Should create a new textfield component', function() { builder = Harness.buildComponent('textfield'); return builder.editForm.formReady.then(() => { // Make sure default preview is correct. @@ -28,7 +29,7 @@ describe('TextField Builder', () => { }); }); - it('Should allow you to change the label', (done) => { + it('Should allow you to change the label', function(done) { Harness.setComponentProperty('label', 'Text Field', 'First Name', (preview) => { assert(preview.match(/label.*input/), 'Label must be on top.'); assert(preview.indexOf('') !== -1, 'Must have a label'); @@ -36,7 +37,7 @@ describe('TextField Builder', () => { }); }); - it('Should allow you to hide/show the label', (done) => { + it('Should allow you to hide/show the label', function(done) { Harness.setComponentProperty('hideLabel', false, true, (preview) => { assert(preview.indexOf('
- - diff --git a/app/examples/hosted.md b/app/examples/hosted.md index fcd98c4772..58a8cfeb99 100644 --- a/app/examples/hosted.md +++ b/app/examples/hosted.md @@ -4,26 +4,31 @@ layout: vtabs section: examples weight: 10 --- -Every form within [Form.io](https://form.io) can be rendered within this library using the Embed URL of that form. You can then provide the ```src``` parameter of the Form renderer to show the form within your page. + +Every form within [Form.io](https://form.io) can be rendered within this library using the Embed URL of that form. You can then provide the `src` parameter of the Form renderer to show the form within your page. ```html - - + +
``` ```js -Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example').then(function(form) { - - // Default the submission. - form.submission = { - data: { - firstName: 'Joe', - lastName: 'Smith' - } - }; -}); +Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example').then( + function (form) { + // Default the submission. + form.submission = { + data: { + firstName: 'Joe', + lastName: 'Smith', + }, + }; + }, +); ```

Result

@@ -42,13 +47,14 @@ Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/e console.log('Rendered!'); }); - form.on('change', function(value) { - console.log(value); - }); +form.on('change', function(value) { +console.log(value); +}); - form.on('submit', function(submission) { - console.log(submission); - }); +form.on('submit', function(submission) { +console.log(submission); +}); }); +
diff --git a/app/examples/htmlview.md b/app/examples/htmlview.md index 03c7149eaa..0d744ef60f 100644 --- a/app/examples/htmlview.md +++ b/app/examples/htmlview.md @@ -4,21 +4,29 @@ layout: vtabs section: examples weight: 12 --- + Not only can you view a submission as a disabled filled out webform, but you can also provide the **renderMode** option, to view the submission as a HTML view. ```html - - + +
``` ```js -Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/wizard/submission/5a542c9e2a40bf0001e0f8a9', { - readOnly: true, - renderMode: 'html' -}); +Formio.createForm( + document.getElementById('formio'), + 'https://examples.form.io/wizard/submission/5a542c9e2a40bf0001e0f8a9', + { + readOnly: true, + renderMode: 'html', + }, +); ```

Result

@@ -37,13 +45,13 @@ Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/w ```js var formio = new Formio('https://examples.form.io/wizard/submission/5a542c9e2a40bf0001e0f8a9'); -formio.loadForm().then(function(form) { +formio.loadForm().then(function (form) { form.display = 'form'; Formio.createForm(document.getElementById('formio-full'), form, { readOnly: true, - renderMode: 'html' - }).then(function(instance) { - formio.loadSubmission().then(function(submission) { + renderMode: 'html', + }).then(function (instance) { + formio.loadSubmission().then(function (submission) { instance.submission = submission; }); }); diff --git a/app/examples/index.md b/app/examples/index.md index ee894b45a5..7227e57ca2 100644 --- a/app/examples/index.md +++ b/app/examples/index.md @@ -4,11 +4,15 @@ layout: vtabs section: examples weight: 0 --- + You can create a form with the simple JSON schema as follows. ```html - - + +
``` @@ -23,7 +27,7 @@ Formio.createForm(document.getElementById('formio'), { placeholder: 'Enter your first name.', input: true, tooltip: 'Enter your First Name', - description: 'Enter your First Name' + description: 'Enter your First Name', }, { type: 'textfield', @@ -32,47 +36,47 @@ Formio.createForm(document.getElementById('formio'), { placeholder: 'Enter your last name', input: true, tooltip: 'Enter your Last Name', - description: 'Enter your Last Name' + description: 'Enter your Last Name', }, { - type: "select", - label: "Favorite Things", - key: "favoriteThings", - placeholder: "These are a few of your favorite things...", + type: 'select', + label: 'Favorite Things', + key: 'favoriteThings', + placeholder: 'These are a few of your favorite things...', data: { values: [ { - value: "raindropsOnRoses", - label: "Raindrops on roses" + value: 'raindropsOnRoses', + label: 'Raindrops on roses', }, { - value: "whiskersOnKittens", - label: "Whiskers on Kittens" + value: 'whiskersOnKittens', + label: 'Whiskers on Kittens', }, { - value: "brightCopperKettles", - label: "Bright Copper Kettles" + value: 'brightCopperKettles', + label: 'Bright Copper Kettles', }, { - value: "warmWoolenMittens", - label: "Warm Woolen Mittens" - } - ] + value: 'warmWoolenMittens', + label: 'Warm Woolen Mittens', + }, + ], }, - dataSrc: "values", - template: "{% raw %}{{ item.label }}{% endraw %}", + dataSrc: 'values', + template: '{% raw %}{{ item.label }}{% endraw %}', multiple: true, - input: true + input: true, }, { type: 'button', action: 'submit', label: 'Submit', - theme: 'primary' - } - ] -}).then(function(form) { - form.on('submit', function(submission) { + theme: 'primary', + }, + ], +}).then(function (form) { + form.on('submit', function (submission) { console.log(submission); }); }); diff --git a/app/examples/jsfiddle.md b/app/examples/jsfiddle.md index 9da43f00a5..329cd5bb42 100644 --- a/app/examples/jsfiddle.md +++ b/app/examples/jsfiddle.md @@ -4,6 +4,7 @@ layout: vtabs section: examples weight: 1 --- + You can use JSFiddle as a sandbox to play around with this renderer. diff --git a/app/examples/json.md b/app/examples/json.md index 8be0c1934d..e5d46456d1 100644 --- a/app/examples/json.md +++ b/app/examples/json.md @@ -4,11 +4,15 @@ layout: vtabs section: examples weight: 30 --- + All forms that are rendered within this framework are JSON powered forms. ```html - - + +
``` @@ -361,5 +365,3 @@ Formio.createForm(document.getElementById('formio'), { - - diff --git a/app/examples/kitchen.md b/app/examples/kitchen.md index c47cfbb1d8..9bffe4cb82 100644 --- a/app/examples/kitchen.md +++ b/app/examples/kitchen.md @@ -4,6 +4,7 @@ layout: vtabs section: examples weight: 400 --- + Here is a large form which includes all fields with many different configurations (the kitchen sink).
diff --git a/app/examples/language.md b/app/examples/language.md index 5c33bc4a7f..df0825702e 100644 --- a/app/examples/language.md +++ b/app/examples/language.md @@ -4,12 +4,16 @@ layout: vtabs section: examples weight: 301 --- + With Form.io, you can provide multiple languages for the forms that are rendered within your application. This is done like the following. ```html - - + +
@@ -241,4 +245,3 @@ Formio.createForm(document.getElementById('formio'), {
- diff --git a/app/examples/lazyloading.md b/app/examples/lazyloading.md index 4d80bad4e5..b91e3df112 100644 --- a/app/examples/lazyloading.md +++ b/app/examples/lazyloading.md @@ -5,13 +5,14 @@ section: examples noFormio: true weight: 31 --- -Using the formio.embed.js file, you can also lazy load the Javascript and CSS resources required for creating a form. This allows you to embed a form within your application without adding much size to the page load, and then once the page is loaded, a loader is shown where the form will be rendered while it is downloading the renderer resources needed to render the form. You can still use the ```Formio.createForm``` method, just like you do for the "formio.form.min.js" file, but instead you would just include the formio.embed.js file which will lazy load the form into place. + +Using the formio.embed.js file, you can also lazy load the Javascript and CSS resources required for creating a form. This allows you to embed a form within your application without adding much size to the page load, and then once the page is loaded, a loader is shown where the form will be rendered while it is downloading the renderer resources needed to render the form. You can still use the `Formio.createForm` method, just like you do for the "formio.form.min.js" file, but instead you would just include the formio.embed.js file which will lazy load the form into place. ```html
``` diff --git a/app/examples/material.md b/app/examples/material.md index d1cf5813eb..0742c71130 100644 --- a/app/examples/material.md +++ b/app/examples/material.md @@ -6,11 +6,18 @@ weight: 100 template: materia disabled: true --- + You can combine these forms with the amazing [Bootswatch](https://bootswatch.com) templating system to create amazing looking forms. Check out this one which uses the Materia design. ```html - - + + ``` diff --git a/app/examples/noeval.md b/app/examples/noeval.md index e41fe60585..98ca834ad6 100644 --- a/app/examples/noeval.md +++ b/app/examples/noeval.md @@ -4,12 +4,13 @@ layout: vtabs section: examples weight: 221 --- + By default, this renderer allows the compilation and execution of JavaScript (eval) through the following features. - - - Custom Conditionals - - Custom Validation - - Custom Templates (like with EditGrid) - + +- Custom Conditionals +- Custom Validation +- Custom Templates (like with EditGrid) + For some implementations, the need to turn off "eval" is a requirement. This can be done, at the expense of the features outlined above, using the following code. ```js @@ -22,93 +23,93 @@ This will force the builder to not show the configurations for these elements as FormioUtils.Evaluator.noeval = true; Formio.createForm(document.getElementById('formio'), { components: [ - { - label: 'Children', - key: 'children', - type: 'editgrid', - input: true, - components: [ - { - label: 'First Name', - key: 'firstName', - type: 'textfield', - input: true + { + label: 'Children', + key: 'children', + type: 'editgrid', + input: true, + components: [ + { + label: 'First Name', + key: 'firstName', + type: 'textfield', + input: true, + }, + { + label: 'Last Name', + key: 'lastName', + type: 'textfield', + input: true, + }, + { + label: 'Gender', + key: 'gender', + type: 'select', + input: true, + data: { + values: [ + { + value: 'male', + label: 'Male', + }, + { + value: 'female', + label: 'Female', + }, + { + value: 'other', + label: 'Other', + }, + ], }, - { - label: 'Last Name', - key: 'lastName', - type: 'textfield', - input: true + dataSrc: 'values', + template: '{% raw %}{{ item.label }}{% endraw %}', + }, + { + type: 'checkbox', + label: 'Dependant', + key: 'dependant', + inputType: 'checkbox', + input: true, + }, + { + label: 'Birthdate', + key: 'birthdate', + type: 'datetime', + input: true, + format: 'yyyy-MM-dd hh:mm a', + enableDate: true, + enableTime: true, + defaultDate: '', + datepickerMode: 'day', + datePicker: { + showWeeks: true, + startingDay: 0, + initDate: '', + minMode: 'day', + maxMode: 'year', + yearRows: 4, + yearColumns: 5, + datepickerMode: 'day', }, - { - label: 'Gender', - key: 'gender', - type: 'select', - input: true, - data: { - values: [ - { - value: 'male', - label: 'Male' - }, - { - value: 'female', - label: 'Female' - }, - { - value: 'other', - label: 'Other' - } - ] - }, - dataSrc: 'values', - template: '{% raw %}{{ item.label }}{% endraw %}' + timePicker: { + hourStep: 1, + minuteStep: 1, + showMeridian: true, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, }, - { - type: 'checkbox', - label: 'Dependant', - key: 'dependant', - inputType: 'checkbox', - input: true + conditional: { + eq: 'true', + when: 'dependant', + show: 'true', }, - { - label: 'Birthdate', - key: 'birthdate', - type: 'datetime', - input: true, - format: 'yyyy-MM-dd hh:mm a', - enableDate: true, - enableTime: true, - defaultDate: '', - datepickerMode: 'day', - datePicker: { - showWeeks: true, - startingDay: 0, - initDate: '', - minMode: 'day', - maxMode: 'year', - yearRows: 4, - yearColumns: 5, - datepickerMode: 'day' - }, - timePicker: { - hourStep: 1, - minuteStep: 1, - showMeridian: true, - readonlyInput: false, - mousewheel: true, - arrowkeys: true - }, - "conditional": { - "eq": "true", - "when": "dependant", - "show": "true" - } - } - ] - } - ] -}).then(function(form) { + }, + ], + }, + ], +}).then(function (form) { // Provide a default submission. form.submission = { data: { @@ -118,20 +119,20 @@ Formio.createForm(document.getElementById('formio'), { lastName: 'Smith', gender: 'male', dependant: true, - birthdate: '1982-05-18' + birthdate: '1982-05-18', }, { firstName: 'Mary', lastName: 'Smith', gender: 'female', dependant: false, - birthdate: '1979-02-17' - } - ] - } + birthdate: '1979-02-17', + }, + ], + }, }; }); -```` +```

Result

diff --git a/app/examples/pdf.md b/app/examples/pdf.md index b87684a8c3..2e2644764a 100644 --- a/app/examples/pdf.md +++ b/app/examples/pdf.md @@ -4,6 +4,7 @@ layout: vtabs section: examples weight: 18 --- + ```html
@@ -11,7 +12,7 @@ weight: 18 ```js Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/w4', { - zoom: '-20' + zoom: '-20', }); ``` diff --git a/app/examples/recaptcha.md b/app/examples/recaptcha.md index dcc13754d2..1ff4acf92d 100644 --- a/app/examples/recaptcha.md +++ b/app/examples/recaptcha.md @@ -16,62 +16,63 @@ To test this example, click the 'Submit' button and you will see Submission JSON ```js Formio.setProjectUrl('https://examples.test-form.io'); const formJSON = { - 'components': [ + components: [ { - 'label': 'Test', - 'action': 'event', - 'type': 'button', - 'key': 'test', - 'event': 'test' + label: 'Test', + action: 'event', + type: 'button', + key: 'test', + event: 'test', }, { - 'eventType': 'buttonClick', - 'type': 'recaptcha', - 'key': 'reCaptcha', - 'label': 'reCAPTCHA', - 'buttonKey': 'test' + eventType: 'buttonClick', + type: 'recaptcha', + key: 'reCaptcha', + label: 'reCAPTCHA', + buttonKey: 'test', }, { - 'eventType': 'formLoad', - 'type': 'recaptcha', - 'key': 'reCaptcha2', - 'label': 'reCAPTCHA' + eventType: 'formLoad', + type: 'recaptcha', + key: 'reCaptcha2', + label: 'reCAPTCHA', }, { - 'type': 'button', - 'label': 'Submit', - 'key': 'submit', - 'action': 'submit' - } + type: 'button', + label: 'Submit', + key: 'submit', + action: 'submit', + }, ], - 'name': 'testRecaptchaForm', - 'settings': { - 'recaptcha': { - 'isEnabled': 'true', - 'siteKey': '6Ldc54MUAAAAAP4KjayrT1InduuvCnXvNZUpZpQj' - } - } + name: 'testRecaptchaForm', + settings: { + recaptcha: { + isEnabled: 'true', + siteKey: '6Ldc54MUAAAAAP4KjayrT1InduuvCnXvNZUpZpQj', + }, + }, }; -Formio.createForm(document.getElementById('formio'), formJSON).then(function(form) { +Formio.createForm(document.getElementById('formio'), formJSON).then(function (form) { // Provide a default submission. form.submission = { - data: { - } + data: {}, }; - form.on('submit', function(submission){ + form.on('submit', function (submission) { console.log(submission); var jsonElement = document.getElementById('formio-submission-json'); jsonElement.innerHTML = JSON.stringify(submission, null, 4); - }) + }); }); -```` +``` ### Rendered form +
-### Submission +### Submission +

 
diff --git a/app/examples/savedraft.md b/app/examples/savedraft.md index 8456280e0c..f0fcafee42 100644 --- a/app/examples/savedraft.md +++ b/app/examples/savedraft.md @@ -4,34 +4,34 @@ layout: vtabs section: examples weight: 30 --- + Within the Form.io renderer, you can also enable a Save as Draft feature which will save a submission in "draft" mode either periodically (every 5 seconds), or manually, as the user is filling out the form. This system will also "restore" a draft submission if the user leaves the page, and then comes back in a later session. A common term used to describe this process is "save and return" capability. This feature works along with our authentication system to attach a "draft" submission to a user who has been authenticated, to periodically store the draft of that submission as that user is using the form. -In order to enable this feature, you simply need to use the ```saveDraft``` parameter when you are rendering the form. +In order to enable this feature, you simply need to use the `saveDraft` parameter when you are rendering the form. ```js Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example', { - saveDraft: true + saveDraft: true, }); ``` This will then trigger the drafts to start periodically every 5 seconds once a user is established through the use of common Form.io authentication modules, such as the [one provided within Angular](https://github.com/formio/angular-formio/wiki/User-Authentication). -It is not possible to have Anonymous draft submissions because the platform does not know whom to associate the "draft" against. There must be a user and they must be authenticated. - +It is not possible to have Anonymous draft submissions because the platform does not know whom to associate the "draft" against. There must be a user and they must be authenticated. ```js // Create a new form with saveDraft enabled. Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example', { - saveDraft: true + saveDraft: true, }); // Set the "owner" field for the draft submissions to the following user. Formio.setUser({ - _id: '123' -}) + _id: '123', +}); ``` **Note:** This will only work if you do NOT explicitly set the form submission as follows. @@ -39,31 +39,32 @@ Formio.setUser({ ```js // This won't work.... Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example', { - saveDraft: true -}).then(function(form) { + saveDraft: true, +}).then(function (form) { // Explicitly setting the form submission will stop the "draft" mode. form.submission = { data: { firstName: 'Joe', - lastName: 'Smith' - } + lastName: 'Smith', + }, }; }); ``` - #### Timing configuration -You can also configure how regular the "save draft" is triggered using the ```saveDraftThrottle``` parameter. This defaults to 5 seconds, and is defined in milliseconds. + +You can also configure how regular the "save draft" is triggered using the `saveDraftThrottle` parameter. This defaults to 5 seconds, and is defined in milliseconds. ```js // Save a draft every 10 seconds. Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example', { saveDraft: true, - saveDraftThrottle: 10000 + saveDraftThrottle: 10000, }); ``` ## Manual Draft Submissions + You can also enable draft submissions to occur manually through the use of our Button component, configured with the Action of "Save State" and the "State" option configured as "draft". Then when this button is pressed, it will save the submission in "draft" mode. ```js @@ -74,29 +75,29 @@ Formio.createForm(document.getElementById('formio'), { type: 'textfield', key: 'firstName', label: 'First Name', - input: true + input: true, }, { type: 'textfield', key: 'lastName', label: 'Last Name', - input: true + input: true, }, { type: 'button', action: 'submit', key: 'submit', - label: 'Save Submission' + label: 'Save Submission', }, { type: 'button', action: 'saveState', state: 'draft', key: 'saveDraft', - label: 'Save as Draft' - } - ] -}).then(function(form) { + label: 'Save as Draft', + }, + ], +}).then(function (form) { // Set the url so that it knows where to submit the data to. form.url = 'https://examples.form.io/example'; form.nosubmit = false; diff --git a/app/examples/select.md b/app/examples/select.md index a2788b142a..24e4606785 100644 --- a/app/examples/select.md +++ b/app/examples/select.md @@ -4,8 +4,9 @@ layout: vtabs section: examples weight: 200 --- + Form.io incorporates the amazing [Choices.js](https://github.com/jshjohnson/Choices) library to be used as a Select control, -but also has the ability to render raw HTML select dropdowns. Below are some examples of different configurations for +but also has the ability to render raw HTML select dropdowns. Below are some examples of different configurations for Select dropdowns.
``` ```js -Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/wizard/submission/5a542c9e2a40bf0001e0f8a9', { - readOnly: true -}); +Formio.createForm( + document.getElementById('formio'), + 'https://examples.form.io/wizard/submission/5a542c9e2a40bf0001e0f8a9', + { + readOnly: true, + }, +); ```

Result

diff --git a/app/examples/thanyou.md b/app/examples/thanyou.md index c2f8904f04..3ff9c12161 100644 --- a/app/examples/thanyou.md +++ b/app/examples/thanyou.md @@ -4,23 +4,28 @@ layout: vtabs section: examples weight: 14 --- + You can respond to a submission event and change the page of the browser to a thank you page. This can be either another page of your website or can use your framework's routing system if you are using a framework. ```html - - + +
``` ```js -Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example') - .then(function(form) { +Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example').then( + function (form) { // What to do when the submit begins. - form.on('submitDone', function(submission) { + form.on('submitDone', function (submission) { window.location = '/app/thanks.html'; }); - }); + }, +); ```

Result

diff --git a/app/examples/wizard.md b/app/examples/wizard.md index 7dbe3277a4..7d60213601 100644 --- a/app/examples/wizard.md +++ b/app/examples/wizard.md @@ -4,7 +4,8 @@ layout: vtabs section: examples weight: 20 --- -In addition to rendering forms, this library can also be used to render complex wizard workflows. + +In addition to rendering forms, this library can also be used to render complex wizard workflows. Wizards work by taking the root **Panel** components within a normal flat form, and turning those panels into separate pages that can be added to a workflow. You can also provide conditional logic @@ -12,7 +13,7 @@ on those panel components so that the pages are conditionally shown based on wha the wizard flow. The determination on whether a form is a wizard or not is based on the **display** property on the form schema like so. - + ```js { "title": "My Wizard", @@ -42,22 +43,26 @@ The determination on whether a form is a wizard or not is based on the **display You can create a new wizard just like you can a normal form. ```html - - + +
``` ```js -Formio.createForm(document.getElementById('wizard'), 'https://examples.form.io/wizard') - .then(function(wizard) { - wizard.on('nextPage', function(page) { +Formio.createForm(document.getElementById('wizard'), 'https://examples.form.io/wizard').then( + function (wizard) { + wizard.on('nextPage', function (page) { console.log(page); }); - wizard.on('submit', function(submission) { + wizard.on('submit', function (submission) { console.log(submission); }); - }); + }, +); ``` ```html @@ -82,32 +87,32 @@ Formio.createForm(document.getElementById('wizard'), 'https://examples.form.io/w
You can also add options when creating a form, the following options are supported: - * breadcrumbSettings.clickable: true (default) determines if the breadcrumb bar is clickable or not - * buttonSettings.show*(Previous, Next, Cancel): true (default) determines if the button is shown or not + +- breadcrumbSettings.clickable: true (default) determines if the breadcrumb bar is clickable or not +- buttonSettings.show\*(Previous, Next, Cancel): true (default) determines if the button is shown or not ```html - - + +
``` ```js -Formio.createForm( - document.getElementById('wizardWithOptions'), - 'https://examples.form.io/wizard', - { - breadcrumbSettings: {clickable:false}, - buttonSettings: {showCancel: false} - }) - .then(function(wizard) { - wizard.on('nextPage', function(page) { - console.log(page); - }); - wizard.on('submit', function(submission) { - console.log(submission); - }); +Formio.createForm(document.getElementById('wizardWithOptions'), 'https://examples.form.io/wizard', { + breadcrumbSettings: { clickable: false }, + buttonSettings: { showCancel: false }, +}).then(function (wizard) { + wizard.on('nextPage', function (page) { + console.log(page); + }); + wizard.on('submit', function (submission) { + console.log(submission); }); +}); ``` ```html @@ -115,6 +120,7 @@ Formio.createForm( ``` ### Result +
diff --git a/app/sdk.md b/app/sdk.md index e07554341e..39372d8a89 100644 --- a/app/sdk.md +++ b/app/sdk.md @@ -2,4 +2,5 @@ layout: default section: sdk --- + diff --git a/app/syntax.css b/app/syntax.css index a5f3d4c3fb..c03bfecdf6 100644 --- a/app/syntax.css +++ b/app/syntax.css @@ -1,58 +1,185 @@ -.highlight .hll { background-color: #ffffcc } -.highlight .c { color: #aaaaaa; font-style: italic } /* Comment */ -.highlight .err { color: #F00000; background-color: #F0A0A0 } /* Error */ -.highlight .k { color: #0000aa } /* Keyword */ -.highlight .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #4c8317 } /* Comment.Preproc */ -.highlight .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #0000aa; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #aa0000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #aa0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00aa00 } /* Generic.Inserted */ -.highlight .go { color: #888888 } /* Generic.Output */ -.highlight .gp { color: #555555 } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #aa0000 } /* Generic.Traceback */ -.highlight .kc { color: #0000aa } /* Keyword.Constant */ -.highlight .kd { color: #0000aa } /* Keyword.Declaration */ -.highlight .kn { color: #0000aa } /* Keyword.Namespace */ -.highlight .kp { color: #0000aa } /* Keyword.Pseudo */ -.highlight .kr { color: #0000aa } /* Keyword.Reserved */ -.highlight .kt { color: #00aaaa } /* Keyword.Type */ -.highlight .m { color: #009999 } /* Literal.Number */ -.highlight .s { color: #aa5500 } /* Literal.String */ -.highlight .na { color: #1e90ff } /* Name.Attribute */ -.highlight .nb { color: #00aaaa } /* Name.Builtin */ -.highlight .nc { color: #00aa00; text-decoration: underline } /* Name.Class */ -.highlight .no { color: #aa0000 } /* Name.Constant */ -.highlight .nd { color: #888888 } /* Name.Decorator */ -.highlight .ni { color: #800000; font-weight: bold } /* Name.Entity */ -.highlight .nf { color: #00aa00 } /* Name.Function */ -.highlight .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */ -.highlight .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #aa0000 } /* Name.Variable */ -.highlight .ow { color: #0000aa } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #009999 } /* Literal.Number.Float */ -.highlight .mh { color: #009999 } /* Literal.Number.Hex */ -.highlight .mi { color: #009999 } /* Literal.Number.Integer */ -.highlight .mo { color: #009999 } /* Literal.Number.Oct */ -.highlight .sb { color: #aa5500 } /* Literal.String.Backtick */ -.highlight .sc { color: #aa5500 } /* Literal.String.Char */ -.highlight .sd { color: #aa5500 } /* Literal.String.Doc */ -.highlight .s2 { color: #aa5500 } /* Literal.String.Double */ -.highlight .se { color: #aa5500 } /* Literal.String.Escape */ -.highlight .sh { color: #aa5500 } /* Literal.String.Heredoc */ -.highlight .si { color: #aa5500 } /* Literal.String.Interpol */ -.highlight .sx { color: #aa5500 } /* Literal.String.Other */ -.highlight .sr { color: #009999 } /* Literal.String.Regex */ -.highlight .s1 { color: #aa5500 } /* Literal.String.Single */ -.highlight .ss { color: #0000aa } /* Literal.String.Symbol */ -.highlight .bp { color: #00aaaa } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #aa0000 } /* Name.Variable.Class */ -.highlight .vg { color: #aa0000 } /* Name.Variable.Global */ -.highlight .vi { color: #aa0000 } /* Name.Variable.Instance */ -.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ +.highlight .hll { + background-color: #ffffcc; +} +.highlight .c { + color: #aaaaaa; + font-style: italic; +} /* Comment */ +.highlight .err { + color: #f00000; + background-color: #f0a0a0; +} /* Error */ +.highlight .k { + color: #0000aa; +} /* Keyword */ +.highlight .cm { + color: #aaaaaa; + font-style: italic; +} /* Comment.Multiline */ +.highlight .cp { + color: #4c8317; +} /* Comment.Preproc */ +.highlight .c1 { + color: #aaaaaa; + font-style: italic; +} /* Comment.Single */ +.highlight .cs { + color: #0000aa; + font-style: italic; +} /* Comment.Special */ +.highlight .gd { + color: #aa0000; +} /* Generic.Deleted */ +.highlight .ge { + font-style: italic; +} /* Generic.Emph */ +.highlight .gr { + color: #aa0000; +} /* Generic.Error */ +.highlight .gh { + color: #000080; + font-weight: bold; +} /* Generic.Heading */ +.highlight .gi { + color: #00aa00; +} /* Generic.Inserted */ +.highlight .go { + color: #888888; +} /* Generic.Output */ +.highlight .gp { + color: #555555; +} /* Generic.Prompt */ +.highlight .gs { + font-weight: bold; +} /* Generic.Strong */ +.highlight .gu { + color: #800080; + font-weight: bold; +} /* Generic.Subheading */ +.highlight .gt { + color: #aa0000; +} /* Generic.Traceback */ +.highlight .kc { + color: #0000aa; +} /* Keyword.Constant */ +.highlight .kd { + color: #0000aa; +} /* Keyword.Declaration */ +.highlight .kn { + color: #0000aa; +} /* Keyword.Namespace */ +.highlight .kp { + color: #0000aa; +} /* Keyword.Pseudo */ +.highlight .kr { + color: #0000aa; +} /* Keyword.Reserved */ +.highlight .kt { + color: #00aaaa; +} /* Keyword.Type */ +.highlight .m { + color: #009999; +} /* Literal.Number */ +.highlight .s { + color: #aa5500; +} /* Literal.String */ +.highlight .na { + color: #1e90ff; +} /* Name.Attribute */ +.highlight .nb { + color: #00aaaa; +} /* Name.Builtin */ +.highlight .nc { + color: #00aa00; + text-decoration: underline; +} /* Name.Class */ +.highlight .no { + color: #aa0000; +} /* Name.Constant */ +.highlight .nd { + color: #888888; +} /* Name.Decorator */ +.highlight .ni { + color: #800000; + font-weight: bold; +} /* Name.Entity */ +.highlight .nf { + color: #00aa00; +} /* Name.Function */ +.highlight .nn { + color: #00aaaa; + text-decoration: underline; +} /* Name.Namespace */ +.highlight .nt { + color: #1e90ff; + font-weight: bold; +} /* Name.Tag */ +.highlight .nv { + color: #aa0000; +} /* Name.Variable */ +.highlight .ow { + color: #0000aa; +} /* Operator.Word */ +.highlight .w { + color: #bbbbbb; +} /* Text.Whitespace */ +.highlight .mf { + color: #009999; +} /* Literal.Number.Float */ +.highlight .mh { + color: #009999; +} /* Literal.Number.Hex */ +.highlight .mi { + color: #009999; +} /* Literal.Number.Integer */ +.highlight .mo { + color: #009999; +} /* Literal.Number.Oct */ +.highlight .sb { + color: #aa5500; +} /* Literal.String.Backtick */ +.highlight .sc { + color: #aa5500; +} /* Literal.String.Char */ +.highlight .sd { + color: #aa5500; +} /* Literal.String.Doc */ +.highlight .s2 { + color: #aa5500; +} /* Literal.String.Double */ +.highlight .se { + color: #aa5500; +} /* Literal.String.Escape */ +.highlight .sh { + color: #aa5500; +} /* Literal.String.Heredoc */ +.highlight .si { + color: #aa5500; +} /* Literal.String.Interpol */ +.highlight .sx { + color: #aa5500; +} /* Literal.String.Other */ +.highlight .sr { + color: #009999; +} /* Literal.String.Regex */ +.highlight .s1 { + color: #aa5500; +} /* Literal.String.Single */ +.highlight .ss { + color: #0000aa; +} /* Literal.String.Symbol */ +.highlight .bp { + color: #00aaaa; +} /* Name.Builtin.Pseudo */ +.highlight .vc { + color: #aa0000; +} /* Name.Variable.Class */ +.highlight .vg { + color: #aa0000; +} /* Name.Variable.Global */ +.highlight .vi { + color: #aa0000; +} /* Name.Variable.Instance */ +.highlight .il { + color: #009999; +} /* Literal.Number.Integer.Long */ diff --git a/app/thanks.md b/app/thanks.md index 695376f7b3..875e964c6c 100644 --- a/app/thanks.md +++ b/app/thanks.md @@ -2,6 +2,7 @@ title: Thank You layout: vtabs --- + ### Thank You!
diff --git a/embed.d.ts b/embed.d.ts index 8c77385763..18ce1dba5c 100644 --- a/embed.d.ts +++ b/embed.d.ts @@ -1 +1 @@ -export * from './lib/cjs/InlineEmbed'; \ No newline at end of file +export * from './lib/cjs/InlineEmbed'; diff --git a/form.d.ts b/form.d.ts index c2117baa56..85f4a1b93b 100644 --- a/form.d.ts +++ b/form.d.ts @@ -1 +1 @@ -export * from './lib/cjs/formio.form'; \ No newline at end of file +export * from './lib/cjs/formio.form'; diff --git a/gulpfile.js b/gulpfile.js index d63ff34c5b..9b1f8eec8c 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -25,16 +25,27 @@ gulp.task('builder-fonts', function builderFonts() { // Generate styles const compileStyles = (styles, file) => { const sassFilter = filter('**/*.scss', { restore: true }); - return gulp.src(styles) + return gulp + .src(styles) .pipe(sassFilter) .pipe(sass().on('error', sass.logError)) .pipe(sassFilter.restore) .pipe(concat(`${file}.css`)) .pipe(replace(/\.\.\/\.\.\/icons\/\/?/g, 'icons/')) - - .pipe(replace('icons/cross.svg', `'data:image/svg+xml;charset=utf8,%3Csvg width="21" height="21" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="%23FFF" fill-rule="evenodd"%3E%3Cpath d="M2.592.044l18.364 18.364-2.548 2.548L.044 2.592z"/%3E%3Cpath d="M0 18.364L18.364 0l2.548 2.548L2.548 20.912z"/%3E%3C/g%3E%3C/svg%3E'`)) - .pipe(replace('icons/cross-inverse.svg', `'data:image/svg+xml;charset=utf8,%3Csvg width="21" height="21" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="%23000" fill-rule="evenodd"%3E%3Cpath d="M2.592.044l18.364 18.364-2.548 2.548L.044 2.592z"/%3E%3Cpath d="M0 18.364L18.364 0l2.548 2.548L2.548 20.912z"/%3E%3C/g%3E%3C/svg%3E'`)) - + + .pipe( + replace( + 'icons/cross.svg', + `'data:image/svg+xml;charset=utf8,%3Csvg width="21" height="21" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="%23FFF" fill-rule="evenodd"%3E%3Cpath d="M2.592.044l18.364 18.364-2.548 2.548L.044 2.592z"/%3E%3Cpath d="M0 18.364L18.364 0l2.548 2.548L2.548 20.912z"/%3E%3C/g%3E%3C/svg%3E'`, + ), + ) + .pipe( + replace( + 'icons/cross-inverse.svg', + `'data:image/svg+xml;charset=utf8,%3Csvg width="21" height="21" viewBox="0 0 21 21" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="%23000" fill-rule="evenodd"%3E%3Cpath d="M2.592.044l18.364 18.364-2.548 2.548L.044 2.592z"/%3E%3Cpath d="M0 18.364L18.364 0l2.548 2.548L2.548 20.912z"/%3E%3C/g%3E%3C/svg%3E'`, + ), + ) + .pipe(replace(/\.\.\/fonts\/\/?/g, 'fonts/')) .pipe(gulp.dest('dist')) .pipe(rename(`${file}.min.css`)) @@ -42,65 +53,78 @@ const compileStyles = (styles, file) => { .pipe(gulp.dest('dist')); }; gulp.task('styles-embed', function embedStyles() { - return compileStyles([ - './src/sass/formio.embed.scss' - ], 'formio.embed'); + return compileStyles(['./src/sass/formio.embed.scss'], 'formio.embed'); }); gulp.task('styles-form', function formStyles() { - return compileStyles([ - './node_modules/@formio/choices.js/public/assets/styles/choices.css', - './node_modules/tippy.js/dist/tippy.css', - './node_modules/dialog-polyfill/dialog-polyfill.css', - './src/sass/formio.form.scss' - ], 'formio.form'); + return compileStyles( + [ + './node_modules/@formio/choices.js/public/assets/styles/choices.css', + './node_modules/tippy.js/dist/tippy.css', + './node_modules/dialog-polyfill/dialog-polyfill.css', + './src/sass/formio.form.scss', + ], + 'formio.form', + ); }); gulp.task('styles-builder', function builderStyles() { - return compileStyles([ - './node_modules/@formio/choices.js/public/assets/styles/choices.css', - './node_modules/tippy.js/dist/tippy.css', - './node_modules/dialog-polyfill/dialog-polyfill.css', - './node_modules/dragula/dist/dragula.css', - './src/sass/formio.form.scss', - './src/sass/formio.form.builder.scss' - ], 'formio.builder'); + return compileStyles( + [ + './node_modules/@formio/choices.js/public/assets/styles/choices.css', + './node_modules/tippy.js/dist/tippy.css', + './node_modules/dialog-polyfill/dialog-polyfill.css', + './node_modules/dragula/dist/dragula.css', + './src/sass/formio.form.scss', + './src/sass/formio.form.builder.scss', + ], + 'formio.builder', + ); }); -gulp.task('styles-full', gulp.series('builder-fonts', function fullStyles() { - return compileStyles([ - './node_modules/@formio/choices.js/public/assets/styles/choices.css', - './node_modules/tippy.js/dist/tippy.css', - './node_modules/dialog-polyfill/dialog-polyfill.css', - './node_modules/dragula/dist/dragula.css', - './node_modules/bootstrap-icons/font/bootstrap-icons.css', - './src/sass/formio.form.scss', - './src/sass/formio.form.builder.scss' - ], 'formio.full'); -})); +gulp.task( + 'styles-full', + gulp.series('builder-fonts', function fullStyles() { + return compileStyles( + [ + './node_modules/@formio/choices.js/public/assets/styles/choices.css', + './node_modules/tippy.js/dist/tippy.css', + './node_modules/dialog-polyfill/dialog-polyfill.css', + './node_modules/dragula/dist/dragula.css', + './node_modules/bootstrap-icons/font/bootstrap-icons.css', + './src/sass/formio.form.scss', + './src/sass/formio.form.builder.scss', + ], + 'formio.full', + ); + }), +); -gulp.task('clean:embed-css', () => gulp.src('./dist/formio.embed.css', { read: false, allowEmpty: true }).pipe(clean())); -gulp.task('embed-css', () => gulp.src('./dist/formio.embed.min.css').pipe(rename('formio.embed.css')).pipe(gulp.dest('./dist'))); -gulp.task('clean:embed-js', () => gulp.src('./dist/formio.embed.js', { read: false, allowEmpty: true }).pipe(clean())); -gulp.task('embed-js', () => gulp.src('./dist/formio.embed.min.js').pipe(rename('formio.embed.js')).pipe(gulp.dest('./dist'))); +gulp.task('clean:embed-css', () => + gulp.src('./dist/formio.embed.css', { read: false, allowEmpty: true }).pipe(clean()), +); +gulp.task('embed-css', () => + gulp + .src('./dist/formio.embed.min.css') + .pipe(rename('formio.embed.css')) + .pipe(gulp.dest('./dist')), +); +gulp.task('clean:embed-js', () => + gulp.src('./dist/formio.embed.js', { read: false, allowEmpty: true }).pipe(clean()), +); +gulp.task('embed-js', () => + gulp.src('./dist/formio.embed.min.js').pipe(rename('formio.embed.js')).pipe(gulp.dest('./dist')), +); // Copy over the moment-timezones to the resource folder. -gulp.task('timezones', () => gulp.src('./node_modules/moment-timezone/data/packed/latest.json').pipe(gulp.dest('./resources'))); +gulp.task('timezones', () => + gulp.src('./node_modules/moment-timezone/data/packed/latest.json').pipe(gulp.dest('./resources')), +); // Create a new build. -gulp.task('build', gulp.series( - gulp.parallel( - 'timezones' - ), - gulp.parallel( - 'styles-embed', - 'styles-form', - 'styles-builder', - 'styles-full' - ), - gulp.parallel( - 'clean:embed-css', - 'clean:embed-js' +gulp.task( + 'build', + gulp.series( + gulp.parallel('timezones'), + gulp.parallel('styles-embed', 'styles-form', 'styles-builder', 'styles-full'), + gulp.parallel('clean:embed-css', 'clean:embed-js'), + gulp.parallel('embed-css', 'embed-js'), ), - gulp.parallel( - 'embed-css', - 'embed-js' - ) -)); +); diff --git a/index.md b/index.md index db17919020..0577a8d5a4 100644 --- a/index.md +++ b/index.md @@ -3,6 +3,7 @@ title: Home layout: default section: home --- +
@@ -21,12 +22,19 @@ section: home
### Simple Example + ```html - - - + + + @@ -39,7 +47,9 @@ section: home ``` ### Application Import + Or you can import this within your own application as follows. + ``` npm install --save @formio/js ``` @@ -50,6 +60,7 @@ Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/e ``` ### Result +
diff --git a/libpackage.js b/libpackage.js index 974dfd1827..fca73064bb 100644 --- a/libpackage.js +++ b/libpackage.js @@ -1,8 +1,14 @@ const fs = require('fs'); const path = require('path'); -fs.writeFileSync(path.join(__dirname, 'lib', 'cjs', 'package.json'), `{ +fs.writeFileSync( + path.join(__dirname, 'lib', 'cjs', 'package.json'), + `{ "type": "commonjs" -}`); -fs.writeFileSync(path.join(__dirname, 'lib', 'mjs', 'package.json'), `{ +}`, +); +fs.writeFileSync( + path.join(__dirname, 'lib', 'mjs', 'package.json'), + `{ "type": "module" -}`); \ No newline at end of file +}`, +); diff --git a/package.json b/package.json index be6742fa3e..d16717bd5c 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "tag": "VERSION=$(yarn version);git add -A; git commit -m \"Build $Version\";git push origin master;git tag v$VERSION;git push origin --tags;", "dopublish": "npm run build && npm run tag && npm publish", "lint": "eslint --fix", + "format": "prettier --write .", "serve": "jekyll serve --config _config.yml,_config.dev.yml", "test": "nyc --reporter=lcov --reporter=text --reporter=text-summary mocha test/unit/*.unit.js", "show-coverage": "open coverage/lcov-report/index.html" diff --git a/resources/latest.json b/resources/latest.json index 9f600179fd..b033d2f072 100644 --- a/resources/latest.json +++ b/resources/latest.json @@ -1,852 +1,852 @@ { - "version": "2024a", - "zones": [ - "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5", - "Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5", - "Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5", - "Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6", - "Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4", - "Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5", - "Africa/Cairo|LMT EET EEST|-25.9 -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBC5.9 1AQM5.9 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0|15e6", - "Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5", - "Africa/Ceuta|LMT WET WEST CET CEST|l.g 0 -10 -10 -20|0121212121212121212121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2M0M0 GdX0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|85e3", - "Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4", - "Africa/Johannesburg|LMT SAST SAST SAST|-1Q -1u -20 -30|0123232|-39EpQ qTcm 1Ajdu 1cL0 1cN0 1cL0|84e5", - "Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|", - "Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5", - "Africa/Monrovia|LMT MMT MMT GMT|H.8 H.8 I.u 0|0123|-3ygng.Q 1usM0 28G01.m|11e5", - "Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5", - "Africa/Sao_Tome|LMT LMT GMT WAT|-q.U A.J 0 -10|01232|-3tooq.U 18aoq.U 4i6N0 2q00|", - "Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5", - "Africa/Tunis|LMT PMT CET CEST|-E.I -9.l -10 -20|01232323232323232323232323232323232|-3zO0E.I 1cBAv.n 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5", - "Africa/Windhoek|LMT +0130 SAST SAST CAT WAT|-18.o -1u -20 -30 -20 -10|012324545454545454545454545454545454545454545454545454|-39Ep8.o qTbC.o 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4", - "America/Adak|LMT LMT NST NWT NPT BST BDT AHST HST HDT|-cd.m bK.C b0 a0 a0 b0 a0 a0 a0 90|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVzf.p 1EX1d.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326", - "America/Anchorage|LMT LMT AST AWT APT AHST AHDT YST AKST AKDT|-e0.o 9X.A a0 90 90 a0 90 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVxs.n 1EX20.o 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4", - "America/Puerto_Rico|LMT AST AWT APT|4o.p 40 30 30|01231|-2Qi7z.z 1IUbz.z 7XT0 iu0|24e5", - "America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4", - "America/Argentina/Buenos_Aires|LMT CMT -04 -03 -02|3R.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343434343|-331U6.c 125cn pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|", - "America/Argentina/Catamarca|LMT CMT -04 -03 -02|4n.8 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243432343|-331TA.Q 125bR.E pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", - "America/Argentina/Cordoba|LMT CMT -04 -03 -02|4g.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243434343|-331TH.c 125c0 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|", - "America/Argentina/Jujuy|LMT CMT -04 -03 -02|4l.c 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232434343|-331TC.M 125bT.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|", - "America/Argentina/La_Rioja|LMT CMT -04 -03 -02|4r.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tw.A 125bN.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", - "America/Argentina/Mendoza|LMT CMT -04 -03 -02|4z.g 4g.M 40 30 20|012323232323232323232323232323232323232323234343423232432343|-331To.I 125bF.w pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|", - "America/Argentina/Rio_Gallegos|LMT CMT -04 -03 -02|4A.Q 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tn.8 125bD.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", - "America/Argentina/Salta|LMT CMT -04 -03 -02|4l.E 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342434343|-331TC.k 125bT.8 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|", - "America/Argentina/San_Juan|LMT CMT -04 -03 -02|4y.4 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tp.U 125bG.I pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|", - "America/Argentina/San_Luis|LMT CMT -04 -03 -02|4p.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232323432323|-331Ty.A 125bP.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|", - "America/Argentina/Tucuman|LMT CMT -04 -03 -02|4k.Q 4g.M 40 30 20|01232323232323232323232323232323232323232323434343424343234343|-331TD.8 125bT.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|", - "America/Argentina/Ushuaia|LMT CMT -04 -03 -02|4x.c 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tq.M 125bH.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|", - "America/Asuncion|LMT AMT -04 -03|3O.E 3O.E 40 30|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-3eLw9.k 1FGo0 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0|28e5", - "America/Panama|LMT CMT EST|5i.8 5j.A 50|012|-3eLuF.Q Iy01.s|15e5", - "America/Bahia_Banderas|LMT MST CST MDT PST CDT|71 70 60 60 80 50|0121312141313131313131313131313131313152525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3", - "America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5", - "America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4", - "America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5", - "America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3", - "America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2", - "America/Bogota|LMT BMT -05 -04|4U.g 4U.g 50 40|01232|-3sTv3.I 1eIo0 38yo3.I 1PX0|90e5", - "America/Boise|LMT PST PDT MST MWT MPT MDT|7I.N 80 70 70 60 60 60|01212134536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-3tFE0 1nEe0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4", - "America/Cambridge_Bay|-00 MST MWT MPT MDT CST CDT EST|0 70 60 60 60 60 50 50|012314141414141414141414141414141414141414141414141414141414567541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-21Jc0 RO90 8x20 ix0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2", - "America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4", - "America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4", - "America/Caracas|LMT CMT -0430 -04|4r.I 4r.E 4u 40|012323|-3eLvw.g ROnX.U 28KM2.k 1IwOu kqo0|29e5", - "America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3", - "America/Chicago|LMT CST CDT EST CWT CPT|5O.A 60 50 50 50 50|012121212121212121212121212121212121213121212121214512121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5", - "America/Chihuahua|LMT MST CST MDT CDT|74.k 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4", - "America/Ciudad_Juarez|LMT MST CST MDT CDT|75.U 70 60 60 50|01213124242313131313131313131313131313131313131313131313131321313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Costa_Rica|LMT SJMT CST CDT|5A.d 5A.d 60 50|01232323232|-3eLun.L 1fyo0 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5", - "America/Phoenix|LMT MST MDT MWT|7s.i 70 60 60|012121313121|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5", - "America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4", - "America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8", - "America/Dawson_Creek|LMT PST PDT PWT PPT MST|80.U 80 70 70 70 70|01213412121212121212121212121212121212121212121212121212125|-3tofX.4 1nspX.4 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3", - "America/Dawson|LMT YST YDT YWT YPT YDDT PST PDT MST|9h.E 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeG.k GWpG.k 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2", - "America/Denver|LMT MST MDT MWT MPT|6X.U 70 60 60 60|012121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFF0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5", - "America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5", - "America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5", - "America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3", - "America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5", - "America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 4Q00 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5", - "America/Fort_Nelson|LMT PST PDT PWT PPT MST|8a.L 80 70 70 70 70|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121215|-3tofN.d 1nspN.d 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2", - "America/Fort_Wayne|LMT CST CDT CWT CPT EST EDT|5I.C 60 50 50 50 50 40|0121212134121212121212121212151565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5", - "America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3", - "America/Godthab|LMT -03 -02 -01|3q.U 30 20 10|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3", - "America/Goose_Bay|LMT NST NDT NST NDT NWT NPT AST ADT ADDT|41.E 3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|0121343434343434356343434343434343434343434343434343434343437878787878787878787878787878787878787878787879787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-3tojW.k 1nspt.c 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2", - "America/Grand_Turk|LMT KMT EST EDT AST|4I.w 57.a 50 40 40|01232323232323232323232323232323232323232323232323232323232323232323232323243232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLvf.s RK0m.C 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2", - "America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5", - "America/Guayaquil|LMT QMT -05 -04|5j.k 5e 50 40|01232|-3eLuE.E 1DNzS.E 2uILK rz0|27e5", - "America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4", - "America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4", - "America/Havana|LMT HMT CST CDT|5t.s 5t.A 50 40|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLuu.w 1qx00.8 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5", - "America/Hermosillo|LMT MST CST MDT PST|7n.Q 70 60 60 80|0121312141313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4", - "America/Indiana/Knox|LMT CST CDT CWT CPT EST|5K.u 60 50 50 50 50|01212134121212121212121212121212121212151212121212121212121212121212121212121212121212121252121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Indiana/Marengo|LMT CST CDT CWT CPT EST EDT|5J.n 60 50 50 50 50 40|01212134121212121212121215656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Indiana/Petersburg|LMT CST CDT CWT CPT EST EDT|5N.7 60 50 50 50 50 40|012121341212121212121212121215121212121212121212121252125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Indiana/Tell_City|LMT CST CDT CWT CPT EST EDT|5L.3 60 50 50 50 50 40|012121341212121212121212121512165652121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Indiana/Vevay|LMT CST CDT CWT CPT EST EDT|5E.g 60 50 50 50 50 40|0121213415656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Indiana/Vincennes|LMT CST CDT CWT CPT EST EDT|5O.7 60 50 50 50 50 40|012121341212121212121212121212121565652125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Indiana/Winamac|LMT CST CDT CWT CPT EST EDT|5K.p 60 50 50 50 50 40|012121341212121212121212121212121212121565652165656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Inuvik|-00 PST PDT MDT MST|0 80 70 60 70|01212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-FnA0 L3K0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2", - "America/Iqaluit|-00 EWT EPT EST EDT CST CDT|0 40 40 50 40 60 50|0123434343434343434343434343434343434343434343434343434343456343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-16K00 7nX0 iv0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2", - "America/Jamaica|LMT KMT EST EDT|57.a 57.a 50 40|01232323232323232323232|-3eLuQ.O RK00 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4", - "America/Juneau|LMT LMT PST PWT PPT PDT YDT YST AKST AKDT|-f2.j 8V.F 80 70 70 70 80 90 90 80|0123425252525252525252525252625252578989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVwq.s 1EX12.j 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3", - "America/Kentucky/Louisville|LMT CST CDT CWT CPT EST EDT|5H.2 60 50 50 50 50 40|01212121213412121212121212121212121212565656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Kentucky/Monticello|LMT CST CDT CWT CPT EST EDT|5D.o 60 50 50 50 50 40|01212134121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/La_Paz|LMT CMT BST -04|4w.A 4w.A 3w.A 40|0123|-3eLvr.o 1FIo0 13b0|19e5", - "America/Lima|LMT LMT -05 -04|58.c 58.A 50 40|01232323232323232|-3eLuP.M JcM0.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6", - "America/Los_Angeles|LMT PST PDT PWT PPT|7Q.W 80 70 70 70|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFE0 1nEe0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6", - "America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4", - "America/Managua|LMT MMT CST EST CDT|5J.8 5J.c 60 50 50|01232424232324242|-3eLue.Q 1Mhc0.4 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5", - "America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5", - "America/Martinique|LMT FFMT AST ADT|44.k 44.k 40 30|01232|-3eLvT.E PTA0 2LPbT.E 19X0|39e4", - "America/Matamoros|LMT CST CDT|6u 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4", - "America/Mazatlan|LMT MST CST MDT PST|75.E 70 60 60 80|0121312141313131313131313131313131313131313131313131313131313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4", - "America/Menominee|LMT CST CDT CWT CPT EST|5O.r 60 50 50 50 50|012121341212152121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3pdG9.x 1jce9.x 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2", - "America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5", - "America/Metlakatla|LMT LMT PST PWT PPT PDT AKST AKDT|-fd.G 8K.i 80 70 70 70 90 80|0123425252525252525252525252525252526767672676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwf.5 1EX1d.G 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2", - "America/Mexico_City|LMT MST CST MDT CDT CWT|6A.A 70 60 60 50 50|012131242425242424242424242424242424242424242424242424242424242424242|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6", - "America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mxUf.k 2LHcf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2", - "America/Moncton|LMT EST AST ADT AWT APT|4j.8 50 40 30 30 30|0123232323232323232323245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3txvE.Q J4ME.Q CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3", - "America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5", - "America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5", - "America/Toronto|LMT EST EDT EWT EPT|5h.w 50 40 40 40|012121212121212121212121212121212121212121212123412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-32B6G.s UFdG.s 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1qL0 11B0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5", - "America/New_York|LMT EST EDT EWT EPT|4U.2 50 40 40 40|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFH0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6", - "America/Nome|LMT LMT NST NWT NPT BST BDT YST AKST AKDT|-cW.m b1.C b0 a0 a0 b0 a0 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVyu.p 1EX1W.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2", - "America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2", - "America/North_Dakota/Beulah|LMT MST MDT MWT MPT CST CDT|6L.7 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/North_Dakota/Center|LMT MST MDT MWT MPT CST CDT|6J.c 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/North_Dakota/New_Salem|LMT MST MDT MWT MPT CST CDT|6J.D 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "America/Ojinaga|LMT MST CST MDT CDT|6V.E 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3", - "America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4", - "America/Port-au-Prince|LMT PPMT EST EDT|4N.k 4N 50 40|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLva.E 15RLX.E 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5", - "America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4", - "America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4", - "America/Punta_Arenas|LMT SMT -05 -04 -03|4H.E 4G.J 50 40 30|01213132323232323232343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvg.k MJbX.5 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|", - "America/Winnipeg|LMT CST CDT CWT CPT|6s.A 60 50 50 50|0121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3kLtv.o 1a3bv.o WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4", - "America/Rankin_Inlet|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-vDc0 Bjk0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2", - "America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5", - "America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4", - "America/Resolute|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-SnA0 103I0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229", - "America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4", - "America/Santiago|LMT SMT -05 -04 -03|4G.J 4G.J 50 40 30|0121313232323232323432343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvh.f MJc0 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 hX0 1q10 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5", - "America/Santo_Domingo|LMT SDMT EST EDT -0430 AST|4D.A 4E 50 40 4u 40|012324242424242525|-3eLvk.o 1Jic0.o 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5", - "America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6", - "America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|012132323232323232323232323232323232323232323232323232323232323232323232323232323232323232121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|452", - "America/Sitka|LMT LMT PST PWT PPT PDT YST AKST AKDT|-eW.L 91.d 80 70 70 70 90 90 80|0123425252525252525252525252525252567878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-48Pzs.L 1jVwu 1EX0W.L 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2", - "America/St_Johns|LMT NST NDT NST NDT NWT NPT NDDT|3u.Q 3u.Q 2u.Q 3u 2u 2u 2u 1u|012121212121212121212121212121212121213434343434343435634343434343434343434343434343434343434343434343434343434343434343434343434343434343437343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tokt.8 1l020 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4", - "America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3", - "America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5", - "America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656", - "America/Vancouver|LMT PST PDT PWT PPT|8c.s 80 70 70 70|01213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tofL.w 1nspL.w 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5", - "America/Whitehorse|LMT YST YDT YWT YPT YDDT PST PDT MST|90.c 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeX.M GWpX.M 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 LA0 ytd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3", - "America/Yakutat|LMT LMT YST YWT YPT YDT AKST AKDT|-eF.5 9i.T 90 80 80 80 90 80|0123425252525252525252525252525252526767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwL.G 1EX1F.5 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642", - "Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121212121212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10", - "Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70", - "Pacific/Port_Moresby|LMT PMMT +10|-9M.E -9M.w -a0|012|-3D8VM.E AvA0.8|25e4", - "Antarctica/Macquarie|-00 AEST AEDT|0 -a0 -b0|0121012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2OPc0 Fb40 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|1", - "Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60", - "Pacific/Auckland|LMT NZMT NZST NZST NZDT|-bD.4 -bu -cu -c0 -d0|012131313131313131313131313134343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-46jLD.4 2nEO9.4 Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5", - "Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40", - "Antarctica/Rothera|-00 -03|0 30|01|gOo0|130", - "Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5", - "Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40", - "Antarctica/Vostok|-00 +07 +05|0 -70 -50|01012|-tjA0 1rWh0 1Nj0 1aTv0|25", - "Europe/Berlin|LMT CET CEST CEMT|-R.s -10 -20 -30|012121212121212321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36RcR.s UbWR.s 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e5", - "Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|0123232323232323232323212323232323232323232323232321|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5", - "Asia/Amman|LMT EET EEST +03|-2n.I -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5", - "Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3", - "Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4", - "Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4", - "Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4", - "Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|", - "Asia/Baghdad|LMT BMT +03 +04|-2V.E -2V.A -30 -40|0123232323232323232323232323232323232323232323232323232|-3eLCV.E 18ao0.4 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5", - "Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4", - "Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5", - "Asia/Bangkok|LMT BMT +07|-6G.4 -6G.4 -70|012|-3D8SG.4 1C000|15e6", - "Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|", - "Asia/Beirut|LMT EET EEST|-2m -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3D8Om 1BWom 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5", - "Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4", - "Asia/Brunei|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|42e4", - "Asia/Kolkata|LMT HMT MMT IST +0630|-5R.s -5R.k -5l.a -5u -6u|01234343|-4Fg5R.s BKo0.8 1rDcw.a 1r2LP.a 1un0 HB0 7zX0|15e6", - "Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4", - "Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3", - "Asia/Shanghai|LMT CST CDT|-85.H -80 -90|012121212121212121212121212121|-2M0U5.H Iuo5.H 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6", - "Asia/Colombo|LMT MMT +0530 +06 +0630|-5j.o -5j.w -5u -60 -6u|012342432|-3D8Rj.o 13inX.Q 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5", - "Asia/Dhaka|LMT HMT +0630 +0530 +06 +07|-61.E -5R.k -6u -5u -60 -70|01232454|-3eLG1.E 26008.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6", - "Asia/Damascus|LMT EET EEST +03|-2p.c -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5", - "Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4", - "Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5", - "Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4", - "Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", - "Asia/Gaza|LMT EET EEST IST IDT|-2h.Q -20 -30 -20 -30|0121212121212121212121212121212121234343434343434343434343434343431212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCh.Q 1Azeh.Q MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|18e5", - "Asia/Hebron|LMT EET EEST IST IDT|-2k.n -20 -30 -20 -30|012121212121212121212121212121212123434343434343434343434343434343121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCk.n 1Azek.n MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|25e4", - "Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.u -76.u -70 -80 -90|0123423232|-2yC76.u bK00 1h7b6.u 5lz0 18o0 3Oq0 k5c0 aVX0 BAM0|90e5", - "Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5", - "Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3", - "Asia/Irkutsk|LMT IMT +07 +08 +09|-6V.5 -6V.5 -70 -80 -90|012343434343434343434343234343434343434343434343434343434343434343|-3D8SV.5 1Bxc0 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4", - "Europe/Istanbul|LMT IMT EET EEST +03 +04|-1T.Q -1U.U -20 -30 -30 -40|01232323232323232323232323232323232323232323232345423232323232323232323232323232323232323232323232323232323232323234|-3D8NT.Q 1ePXW.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6", - "Asia/Jakarta|LMT BMT +0720 +0730 +09 +08 WIB|-77.c -77.c -7k -7u -90 -80 -70|012343536|-49jH7.c 2hiLL.c luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6", - "Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4", - "Asia/Jerusalem|LMT JMT IST IDT IDDT|-2k.S -2k.E -20 -30 -40|012323232323232432323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8Ok.S 1wvA0.e SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4", - "Asia/Kabul|LMT +04 +0430|-4A.M -40 -4u|012|-3eLEA.M 2dTcA.M|46e5", - "Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4", - "Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6", - "Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5", - "Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5", - "Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2", - "Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5", - "Asia/Kuala_Lumpur|LMT SMT +07 +0720 +0730 +09 +08|-6T.p -6T.p -70 -7k -7u -90 -80|01234546|-2M0ST.p aIM0 17anT.p l5XE 17bO 8Fyu 1so10|71e5", - "Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4", - "Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3", - "Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5", - "Asia/Manila|LMT LMT PST PDT JST|fU -84 -80 -90 -90|01232423232|-54m84 2clc0 1vfc4 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6", - "Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|32e4", - "Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4", - "Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5", - "Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5", - "Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4", - "Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4", - "Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5", - "Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|", - "Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4", - "Asia/Rangoon|LMT RMT +0630 +09|-6o.L -6o.L -6u -90|01232|-3D8So.L 1BnA0 SmnS.L 7j9u|48e5", - "Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4", - "Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4", - "Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6", - "Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2", - "Asia/Taipei|LMT CST JST CDT|-86 -80 -90 -90|012131313131313131313131313131313131313131|-30bk6 1FDc6 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5", - "Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5", - "Asia/Tbilisi|LMT TBMT +03 +04 +05|-2X.b -2X.b -30 -40 -50|01234343434343434343434323232343434343434343434323|-3D8OX.b 1LUM0 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5", - "Asia/Tehran|LMT TMT +0330 +0430 +04 +05|-3p.I -3p.I -3u -4u -40 -50|012345423232323232323232323232323232323232323232323232323232323232323232|-2btDp.I Llc0 1FHaT.I 1pc0 120u Rc0 XA0 Wou JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6", - "Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3", - "Asia/Tokyo|LMT JST JDT|-9i.X -90 -a0|0121212121|-3jE90 2qSo0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6", - "Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5", - "Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5", - "Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2", - "Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4", - "Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4", - "Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5", - "Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5", - "Atlantic/Azores|LMT HMT -02 -01 +00 WET|1G.E 1S.w 20 10 0 0|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232343434343434343434343434343434345434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tomh.k 18aoh.k aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4", - "Atlantic/Bermuda|LMT BMT BST AST ADT|4j.i 4j.i 3j.i 40 30|0121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3eLvE.G 16mo0 1bb0 1i10 11X0 ru30 thbE.G 1PX0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3", - "Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4", - "Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4", - "Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|49e3", - "Atlantic/Madeira|LMT FMT -01 +00 +01 WET WEST|17.A 17.A 10 0 -10 0 -10|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tomQ.o 18anQ.o aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e4", - "Atlantic/South_Georgia|LMT -02|2q.8 20|01|-3eLxx.Q|30", - "Atlantic/Stanley|LMT SMT -04 -03 -02|3P.o 3P.o 40 30 20|0123232323232323434323232323232323232323232323232323232323232323232323|-3eLw8.A S200 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2", - "Australia/Sydney|LMT AEST AEDT|-a4.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oW4.Q RlC4.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5", - "Australia/Adelaide|LMT ACST ACST ACDT|-9e.k -90 -9u -au|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-32oVe.k ak0e.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5", - "Australia/Brisbane|LMT AEST AEDT|-ac.8 -a0 -b0|012121212121212121|-32Bmc.8 Ry2c.8 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5", - "Australia/Broken_Hill|LMT AEST ACST ACST ACDT|-9p.M -a0 -90 -9u -au|0123434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-32oVp.M 3Lzp.M 6wp0 H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|18e3", - "Australia/Hobart|LMT AEST AEDT|-9N.g -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-3109N.g Pk1N.g 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|21e4", - "Australia/Darwin|LMT ACST ACST ACDT|-8H.k -90 -9u -au|01232323232|-32oUH.k ajXH.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4", - "Australia/Eucla|LMT +0845 +0945|-8z.s -8J -9J|01212121212121212121|-30nIz.s PkpO.s xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368", - "Australia/Lord_Howe|LMT AEST +1030 +1130 +11|-aA.k -a0 -au -bu -b0|01232323232424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-32oWA.k 3tzAA.k 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347", - "Australia/Lindeman|LMT AEST AEDT|-9T.U -a0 -b0|0121212121212121212121|-32BlT.U Ry1T.U xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10", - "Australia/Melbourne|LMT AEST AEDT|-9D.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oVD.Q RlBD.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|39e5", - "Australia/Perth|LMT AWST AWDT|-7H.o -80 -90|01212121212121212121|-30nHH.o PkpH.o xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5", - "CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", - "Pacific/Easter|LMT EMT -07 -06 -05|7h.s 7h.s 70 60 50|0123232323232323232323232323234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLsG.w 1HRc0 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2", - "CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", - "Europe/Dublin|LMT DMT IST GMT BST IST|p.l p.l -y.D 0 -10 -10|012343434343435353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353|-3BHby.D 1ra20 Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", - "EST|EST|50|0||", - "EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "Etc/GMT-0|GMT|0|0||", - "Etc/GMT-1|+01|-10|0||", - "Etc/GMT-10|+10|-a0|0||", - "Etc/GMT-11|+11|-b0|0||", - "Etc/GMT-12|+12|-c0|0||", - "Etc/GMT-13|+13|-d0|0||", - "Etc/GMT-14|+14|-e0|0||", - "Etc/GMT-2|+02|-20|0||", - "Etc/GMT-3|+03|-30|0||", - "Etc/GMT-4|+04|-40|0||", - "Etc/GMT-5|+05|-50|0||", - "Etc/GMT-6|+06|-60|0||", - "Etc/GMT-7|+07|-70|0||", - "Etc/GMT-8|+08|-80|0||", - "Etc/GMT-9|+09|-90|0||", - "Etc/GMT+1|-01|10|0||", - "Etc/GMT+10|-10|a0|0||", - "Etc/GMT+11|-11|b0|0||", - "Etc/GMT+12|-12|c0|0||", - "Etc/GMT+2|-02|20|0||", - "Etc/GMT+3|-03|30|0||", - "Etc/GMT+4|-04|40|0||", - "Etc/GMT+5|-05|50|0||", - "Etc/GMT+6|-06|60|0||", - "Etc/GMT+7|-07|70|0||", - "Etc/GMT+8|-08|80|0||", - "Etc/GMT+9|-09|90|0||", - "Etc/UTC|UTC|0|0||", - "Europe/Brussels|LMT BMT WET CET CEST WEST|-h.u -h.u 0 -10 -20 -10|012343434325252525252525252525252525252525252525252525434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8Mh.u u1Ah.u SO00 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|21e5", - "Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|79e3", - "Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5", - "Europe/Athens|LMT AMT EET EEST CEST CET|-1y.Q -1y.Q -20 -30 -20 -10|0123234545232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-30SNy.Q OMM1 CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5", - "Europe/London|LMT GMT BST BDST|1.f 0 -10 -20|01212121212121212121212121212121212121212121212121232323232321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-4VgnW.J 2KHdW.J Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6", - "Europe/Belgrade|LMT CET CEST|-1m -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3topm 2juLm 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", - "Europe/Prague|LMT PMT CET CEST GMT|-V.I -V.I -10 -20 0|0123232323232323232423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4QbAV.I 1FDc0 XPaV.I 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|13e5", - "Europe/Bucharest|LMT BMT EET EEST|-1I.o -1I.o -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3awpI.o 1AU00 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|19e5", - "Europe/Budapest|LMT CET CEST|-1g.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3cK1g.k 124Lg.k 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5", - "Europe/Zurich|LMT BMT CET CEST|-y.8 -t.K -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4HyMy.8 1Dw04.m 1SfAt.K 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|38e4", - "Europe/Chisinau|LMT CMT BMT EET EEST CEST CET MSK MSD|-1T.k -1T -1I.o -20 -30 -20 -10 -30 -40|0123434343434343434345656578787878787878787878434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8NT.k 1wNA0.k wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4", - "Europe/Gibraltar|LMT GMT BST BDST CET CEST|l.o 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123232323232121232121212121212121212145454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-3BHbC.A 1ra1C.A Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|30e3", - "Europe/Helsinki|LMT HMT EET EEST|-1D.N -1D.N -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3H0ND.N 1Iu00 OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", - "Europe/Kaliningrad|LMT CET CEST EET EEST MSK MSD +03|-1m -10 -20 -20 -30 -30 -40 -30|012121212121212343565656565656565654343434343434343434343434343434343434343434373|-36Rdm UbXm 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4", - "Europe/Kiev|LMT KMT EET MSK CEST CET MSD EEST|-22.4 -22.4 -20 -30 -20 -10 -40 -30|01234545363636363636363636367272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-3D8O2.4 1LUM0 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|34e5", - "Europe/Kirov|LMT +03 +04 +05 MSD MSK MSK|-3i.M -30 -40 -50 -40 -30 -40|0123232323232323232454524545454545454545454545454545454545454565|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4", - "Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5", - "Europe/Madrid|LMT WET WEST WEMT CET CEST|e.I 0 -10 -20 -10 -20|0121212121212121212321454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2M0M0 G5z0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|62e5", - "Europe/Malta|LMT CET CEST|-W.4 -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-35rcW.4 SXzW.4 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4", - "Europe/Minsk|LMT MMT EET MSK CEST CET MSD EEST +03|-1O.g -1O -20 -30 -20 -10 -40 -30 -30|012345454363636363636363636372727272727272727272727272727272727272728|-3D8NO.g 1LUM0.g eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5", - "Europe/Paris|LMT PMT WET WEST CEST CET WEMT|-9.l -9.l 0 -10 -20 -10 -20|01232323232323232323232323232323232323232323232323234545463654545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-3bQ09.l MDA0 cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6", - "Europe/Moscow|LMT MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|01232434565756865656565656565656565698656565656565656565656565656565656565656a6|-3D8Ou.h 1sQM0 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6", - "Europe/Riga|LMT RMT LST EET MSK CEST CET MSD EEST|-1A.y -1A.y -2A.y -20 -30 -20 -10 -40 -30|0121213456565647474747474747474838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383|-3D8NA.y 1xde0 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|64e4", - "Europe/Rome|LMT RMT CET CEST|-N.U -N.U -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4aU0N.U 15snN.U T000 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|39e5", - "Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5", - "Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|", - "Europe/Simferopol|LMT SMT EET MSK CEST CET MSD EEST MSK|-2g.o -2g -20 -30 -20 -10 -40 -30 -40|0123454543636363636363636363272727636363727272727272727272727272727272727283|-3D8Og.o 1LUM0.o eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4", - "Europe/Sofia|LMT IMT EET CET CEST EEST|-1x.g -1U.U -20 -10 -20 -30|0123434325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-3D8Nx.g AiLA.k 1UFeU.U WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", - "Europe/Tallinn|LMT TMT CET CEST EET MSK MSD EEST|-1D -1D -10 -20 -20 -30 -40 -30|0123214532323565656565656565657474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474|-3D8ND 1wI00 teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e4", - "Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4", - "Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5", - "Europe/Vienna|LMT CET CEST|-15.l -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36Rd5.l UbX5.l 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5", - "Europe/Vilnius|LMT WMT KMT CET EET MSK CEST MSD EEST|-1F.g -1o -1z.A -10 -20 -30 -20 -40 -30|0123435636365757575757575757584848484848484848463648484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484|-3D8NF.g 1u5Ah.g 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4", - "Europe/Volgograd|LMT +03 +04 +05 MSD MSK MSK|-2V.E -30 -40 -50 -40 -30 -40|012323232323232324545452454545454545454545454545454545454545456525|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5", - "Europe/Warsaw|LMT WMT CET CEST EET EEST|-1o -1o -10 -20 -20 -30|0123232345423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8No 1qDA0 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5", - "HST|HST|a0|0||", - "Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2", - "Indian/Maldives|LMT MMT +05|-4S -4S -50|012|-3D8QS 3eLA0|35e4", - "Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4", - "Pacific/Kwajalein|LMT +11 +10 +09 -12 +12|-b9.k -b0 -a0 -90 c0 -c0|0123145|-2M0X9.k 1rDA9.k akp0 6Up0 12ry0 Wan0|14e3", - "MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", - "MST|MST|70|0||", - "MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "Pacific/Chatham|LMT +1215 +1245 +1345|-cd.M -cf -cJ -dJ|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-46jMd.M 37RbW.M 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|600", - "Pacific/Apia|LMT LMT -1130 -11 -10 +14 +13|-cx.4 bq.U bu b0 a0 -e0 -d0|012343456565656565656565656|-38Fox.4 J1A0 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3", - "Pacific/Bougainville|LMT PMMT +10 +09 +11|-am.g -9M.w -a0 -90 -b0|012324|-3D8Wm.g AvAx.I 1TCLM.w 7CN0 2MQp0|18e4", - "Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3", - "Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1", - "Pacific/Fakaofo|LMT -11 +13|bo.U b0 -d0|012|-2M0Az.4 4ufXz.4|483", - "Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|012121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4", - "Pacific/Tarawa|LMT +12|-bw.4 -c0|01|-2M0Xw.4|29e3", - "Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3", - "Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125", - "Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4", - "Pacific/Guam|LMT LMT GST +09 GDT ChST|el -9D -a0 -90 -b0 -a0|0123242424242424242425|-54m9D 2glc0 1DFbD 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4", - "Pacific/Honolulu|LMT HST HDT HWT HPT HST|av.q au 9u 9u 9u a0|01213415|-3061s.y 1uMdW.y 8x0 lef0 8wWu iAu 46p0|37e4", - "Pacific/Kiritimati|LMT -1040 -10 +14|at.k aE a0 -e0|0123|-2M0Bu.E 3bIMa.E B7Xk|51e2", - "Pacific/Kosrae|LMT LMT +11 +09 +10 +12|d8.4 -aP.U -b0 -90 -a0 -c0|0123243252|-54maP.U 2glc0 xsnP.U axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2", - "Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2", - "Pacific/Pago_Pago|LMT LMT SST|-cB.c bm.M b0|012|-38FoB.c J1A0|37e2", - "Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3", - "Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2", - "Pacific/Norfolk|LMT +1112 +1130 +1230 +11 +12|-bb.Q -bc -bu -cu -b0 -c0|0123245454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2M0Xb.Q 21ILX.Q W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4", - "Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3", - "Pacific/Palau|LMT LMT +09|f2.4 -8V.U -90|012|-54m8V.U 2glc0|21e3", - "Pacific/Pitcairn|LMT -0830 -08|8E.k 8u 80|012|-2M0Dj.E 3UVXN.E|56", - "Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3", - "Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4", - "Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3", - "PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", - "WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|" - ], - "links": [ - "Africa/Abidjan|Africa/Accra", - "Africa/Abidjan|Africa/Bamako", - "Africa/Abidjan|Africa/Banjul", - "Africa/Abidjan|Africa/Conakry", - "Africa/Abidjan|Africa/Dakar", - "Africa/Abidjan|Africa/Freetown", - "Africa/Abidjan|Africa/Lome", - "Africa/Abidjan|Africa/Nouakchott", - "Africa/Abidjan|Africa/Ouagadougou", - "Africa/Abidjan|Africa/Timbuktu", - "Africa/Abidjan|Atlantic/Reykjavik", - "Africa/Abidjan|Atlantic/St_Helena", - "Africa/Abidjan|Iceland", - "Africa/Cairo|Egypt", - "Africa/Johannesburg|Africa/Maseru", - "Africa/Johannesburg|Africa/Mbabane", - "Africa/Lagos|Africa/Bangui", - "Africa/Lagos|Africa/Brazzaville", - "Africa/Lagos|Africa/Douala", - "Africa/Lagos|Africa/Kinshasa", - "Africa/Lagos|Africa/Libreville", - "Africa/Lagos|Africa/Luanda", - "Africa/Lagos|Africa/Malabo", - "Africa/Lagos|Africa/Niamey", - "Africa/Lagos|Africa/Porto-Novo", - "Africa/Maputo|Africa/Blantyre", - "Africa/Maputo|Africa/Bujumbura", - "Africa/Maputo|Africa/Gaborone", - "Africa/Maputo|Africa/Harare", - "Africa/Maputo|Africa/Kigali", - "Africa/Maputo|Africa/Lubumbashi", - "Africa/Maputo|Africa/Lusaka", - "Africa/Nairobi|Africa/Addis_Ababa", - "Africa/Nairobi|Africa/Asmara", - "Africa/Nairobi|Africa/Asmera", - "Africa/Nairobi|Africa/Dar_es_Salaam", - "Africa/Nairobi|Africa/Djibouti", - "Africa/Nairobi|Africa/Kampala", - "Africa/Nairobi|Africa/Mogadishu", - "Africa/Nairobi|Indian/Antananarivo", - "Africa/Nairobi|Indian/Comoro", - "Africa/Nairobi|Indian/Mayotte", - "Africa/Tripoli|Libya", - "America/Adak|America/Atka", - "America/Adak|US/Aleutian", - "America/Anchorage|US/Alaska", - "America/Argentina/Buenos_Aires|America/Buenos_Aires", - "America/Argentina/Catamarca|America/Argentina/ComodRivadavia", - "America/Argentina/Catamarca|America/Catamarca", - "America/Argentina/Cordoba|America/Cordoba", - "America/Argentina/Cordoba|America/Rosario", - "America/Argentina/Jujuy|America/Jujuy", - "America/Argentina/Mendoza|America/Mendoza", - "America/Chicago|US/Central", - "America/Denver|America/Shiprock", - "America/Denver|Navajo", - "America/Denver|US/Mountain", - "America/Detroit|US/Michigan", - "America/Edmonton|America/Yellowknife", - "America/Edmonton|Canada/Mountain", - "America/Fort_Wayne|America/Indiana/Indianapolis", - "America/Fort_Wayne|America/Indianapolis", - "America/Fort_Wayne|US/East-Indiana", - "America/Godthab|America/Nuuk", - "America/Halifax|Canada/Atlantic", - "America/Havana|Cuba", - "America/Indiana/Knox|America/Knox_IN", - "America/Indiana/Knox|US/Indiana-Starke", - "America/Iqaluit|America/Pangnirtung", - "America/Jamaica|Jamaica", - "America/Kentucky/Louisville|America/Louisville", - "America/Los_Angeles|US/Pacific", - "America/Manaus|Brazil/West", - "America/Mazatlan|Mexico/BajaSur", - "America/Mexico_City|Mexico/General", - "America/New_York|US/Eastern", - "America/Noronha|Brazil/DeNoronha", - "America/Panama|America/Atikokan", - "America/Panama|America/Cayman", - "America/Panama|America/Coral_Harbour", - "America/Phoenix|America/Creston", - "America/Phoenix|US/Arizona", - "America/Puerto_Rico|America/Anguilla", - "America/Puerto_Rico|America/Antigua", - "America/Puerto_Rico|America/Aruba", - "America/Puerto_Rico|America/Blanc-Sablon", - "America/Puerto_Rico|America/Curacao", - "America/Puerto_Rico|America/Dominica", - "America/Puerto_Rico|America/Grenada", - "America/Puerto_Rico|America/Guadeloupe", - "America/Puerto_Rico|America/Kralendijk", - "America/Puerto_Rico|America/Lower_Princes", - "America/Puerto_Rico|America/Marigot", - "America/Puerto_Rico|America/Montserrat", - "America/Puerto_Rico|America/Port_of_Spain", - "America/Puerto_Rico|America/St_Barthelemy", - "America/Puerto_Rico|America/St_Kitts", - "America/Puerto_Rico|America/St_Lucia", - "America/Puerto_Rico|America/St_Thomas", - "America/Puerto_Rico|America/St_Vincent", - "America/Puerto_Rico|America/Tortola", - "America/Puerto_Rico|America/Virgin", - "America/Regina|Canada/Saskatchewan", - "America/Rio_Branco|America/Porto_Acre", - "America/Rio_Branco|Brazil/Acre", - "America/Santiago|Chile/Continental", - "America/Sao_Paulo|Brazil/East", - "America/St_Johns|Canada/Newfoundland", - "America/Tijuana|America/Ensenada", - "America/Tijuana|America/Santa_Isabel", - "America/Tijuana|Mexico/BajaNorte", - "America/Toronto|America/Montreal", - "America/Toronto|America/Nassau", - "America/Toronto|America/Nipigon", - "America/Toronto|America/Thunder_Bay", - "America/Toronto|Canada/Eastern", - "America/Vancouver|Canada/Pacific", - "America/Whitehorse|Canada/Yukon", - "America/Winnipeg|America/Rainy_River", - "America/Winnipeg|Canada/Central", - "Asia/Ashgabat|Asia/Ashkhabad", - "Asia/Bangkok|Asia/Phnom_Penh", - "Asia/Bangkok|Asia/Vientiane", - "Asia/Bangkok|Indian/Christmas", - "Asia/Brunei|Asia/Kuching", - "Asia/Dhaka|Asia/Dacca", - "Asia/Dubai|Asia/Muscat", - "Asia/Dubai|Indian/Mahe", - "Asia/Dubai|Indian/Reunion", - "Asia/Ho_Chi_Minh|Asia/Saigon", - "Asia/Hong_Kong|Hongkong", - "Asia/Jerusalem|Asia/Tel_Aviv", - "Asia/Jerusalem|Israel", - "Asia/Kathmandu|Asia/Katmandu", - "Asia/Kolkata|Asia/Calcutta", - "Asia/Kuala_Lumpur|Asia/Singapore", - "Asia/Kuala_Lumpur|Singapore", - "Asia/Macau|Asia/Macao", - "Asia/Makassar|Asia/Ujung_Pandang", - "Asia/Nicosia|Europe/Nicosia", - "Asia/Qatar|Asia/Bahrain", - "Asia/Rangoon|Asia/Yangon", - "Asia/Rangoon|Indian/Cocos", - "Asia/Riyadh|Antarctica/Syowa", - "Asia/Riyadh|Asia/Aden", - "Asia/Riyadh|Asia/Kuwait", - "Asia/Seoul|ROK", - "Asia/Shanghai|Asia/Chongqing", - "Asia/Shanghai|Asia/Chungking", - "Asia/Shanghai|Asia/Harbin", - "Asia/Shanghai|PRC", - "Asia/Taipei|ROC", - "Asia/Tehran|Iran", - "Asia/Thimphu|Asia/Thimbu", - "Asia/Tokyo|Japan", - "Asia/Ulaanbaatar|Asia/Ulan_Bator", - "Asia/Urumqi|Asia/Kashgar", - "Atlantic/Faroe|Atlantic/Faeroe", - "Australia/Adelaide|Australia/South", - "Australia/Brisbane|Australia/Queensland", - "Australia/Broken_Hill|Australia/Yancowinna", - "Australia/Darwin|Australia/North", - "Australia/Hobart|Australia/Currie", - "Australia/Hobart|Australia/Tasmania", - "Australia/Lord_Howe|Australia/LHI", - "Australia/Melbourne|Australia/Victoria", - "Australia/Perth|Australia/West", - "Australia/Sydney|Australia/ACT", - "Australia/Sydney|Australia/Canberra", - "Australia/Sydney|Australia/NSW", - "Etc/GMT-0|Etc/GMT", - "Etc/GMT-0|Etc/GMT+0", - "Etc/GMT-0|Etc/GMT0", - "Etc/GMT-0|Etc/Greenwich", - "Etc/GMT-0|GMT", - "Etc/GMT-0|GMT+0", - "Etc/GMT-0|GMT-0", - "Etc/GMT-0|GMT0", - "Etc/GMT-0|Greenwich", - "Etc/UTC|Etc/UCT", - "Etc/UTC|Etc/Universal", - "Etc/UTC|Etc/Zulu", - "Etc/UTC|UCT", - "Etc/UTC|UTC", - "Etc/UTC|Universal", - "Etc/UTC|Zulu", - "Europe/Belgrade|Europe/Ljubljana", - "Europe/Belgrade|Europe/Podgorica", - "Europe/Belgrade|Europe/Sarajevo", - "Europe/Belgrade|Europe/Skopje", - "Europe/Belgrade|Europe/Zagreb", - "Europe/Berlin|Arctic/Longyearbyen", - "Europe/Berlin|Atlantic/Jan_Mayen", - "Europe/Berlin|Europe/Copenhagen", - "Europe/Berlin|Europe/Oslo", - "Europe/Berlin|Europe/Stockholm", - "Europe/Brussels|Europe/Amsterdam", - "Europe/Brussels|Europe/Luxembourg", - "Europe/Chisinau|Europe/Tiraspol", - "Europe/Dublin|Eire", - "Europe/Helsinki|Europe/Mariehamn", - "Europe/Istanbul|Asia/Istanbul", - "Europe/Istanbul|Turkey", - "Europe/Kiev|Europe/Kyiv", - "Europe/Kiev|Europe/Uzhgorod", - "Europe/Kiev|Europe/Zaporozhye", - "Europe/Lisbon|Portugal", - "Europe/London|Europe/Belfast", - "Europe/London|Europe/Guernsey", - "Europe/London|Europe/Isle_of_Man", - "Europe/London|Europe/Jersey", - "Europe/London|GB", - "Europe/London|GB-Eire", - "Europe/Moscow|W-SU", - "Europe/Paris|Europe/Monaco", - "Europe/Prague|Europe/Bratislava", - "Europe/Rome|Europe/San_Marino", - "Europe/Rome|Europe/Vatican", - "Europe/Warsaw|Poland", - "Europe/Zurich|Europe/Busingen", - "Europe/Zurich|Europe/Vaduz", - "Indian/Maldives|Indian/Kerguelen", - "Pacific/Auckland|Antarctica/McMurdo", - "Pacific/Auckland|Antarctica/South_Pole", - "Pacific/Auckland|NZ", - "Pacific/Chatham|NZ-CHAT", - "Pacific/Easter|Chile/EasterIsland", - "Pacific/Enderbury|Pacific/Kanton", - "Pacific/Guadalcanal|Pacific/Pohnpei", - "Pacific/Guadalcanal|Pacific/Ponape", - "Pacific/Guam|Pacific/Saipan", - "Pacific/Honolulu|Pacific/Johnston", - "Pacific/Honolulu|US/Hawaii", - "Pacific/Kwajalein|Kwajalein", - "Pacific/Pago_Pago|Pacific/Midway", - "Pacific/Pago_Pago|Pacific/Samoa", - "Pacific/Pago_Pago|US/Samoa", - "Pacific/Port_Moresby|Antarctica/DumontDUrville", - "Pacific/Port_Moresby|Pacific/Chuuk", - "Pacific/Port_Moresby|Pacific/Truk", - "Pacific/Port_Moresby|Pacific/Yap", - "Pacific/Tarawa|Pacific/Funafuti", - "Pacific/Tarawa|Pacific/Majuro", - "Pacific/Tarawa|Pacific/Wake", - "Pacific/Tarawa|Pacific/Wallis" - ], - "countries": [ - "AD|Europe/Andorra", - "AE|Asia/Dubai", - "AF|Asia/Kabul", - "AG|America/Puerto_Rico America/Antigua", - "AI|America/Puerto_Rico America/Anguilla", - "AL|Europe/Tirane", - "AM|Asia/Yerevan", - "AO|Africa/Lagos Africa/Luanda", - "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa", - "AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia", - "AS|Pacific/Pago_Pago", - "AT|Europe/Vienna", - "AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla", - "AW|America/Puerto_Rico America/Aruba", - "AX|Europe/Helsinki Europe/Mariehamn", - "AZ|Asia/Baku", - "BA|Europe/Belgrade Europe/Sarajevo", - "BB|America/Barbados", - "BD|Asia/Dhaka", - "BE|Europe/Brussels", - "BF|Africa/Abidjan Africa/Ouagadougou", - "BG|Europe/Sofia", - "BH|Asia/Qatar Asia/Bahrain", - "BI|Africa/Maputo Africa/Bujumbura", - "BJ|Africa/Lagos Africa/Porto-Novo", - "BL|America/Puerto_Rico America/St_Barthelemy", - "BM|Atlantic/Bermuda", - "BN|Asia/Kuching Asia/Brunei", - "BO|America/La_Paz", - "BQ|America/Puerto_Rico America/Kralendijk", - "BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco", - "BS|America/Toronto America/Nassau", - "BT|Asia/Thimphu", - "BW|Africa/Maputo Africa/Gaborone", - "BY|Europe/Minsk", - "BZ|America/Belize", - "CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston", - "CC|Asia/Yangon Indian/Cocos", - "CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi", - "CF|Africa/Lagos Africa/Bangui", - "CG|Africa/Lagos Africa/Brazzaville", - "CH|Europe/Zurich", - "CI|Africa/Abidjan", - "CK|Pacific/Rarotonga", - "CL|America/Santiago America/Punta_Arenas Pacific/Easter", - "CM|Africa/Lagos Africa/Douala", - "CN|Asia/Shanghai Asia/Urumqi", - "CO|America/Bogota", - "CR|America/Costa_Rica", - "CU|America/Havana", - "CV|Atlantic/Cape_Verde", - "CW|America/Puerto_Rico America/Curacao", - "CX|Asia/Bangkok Indian/Christmas", - "CY|Asia/Nicosia Asia/Famagusta", - "CZ|Europe/Prague", - "DE|Europe/Zurich Europe/Berlin Europe/Busingen", - "DJ|Africa/Nairobi Africa/Djibouti", - "DK|Europe/Berlin Europe/Copenhagen", - "DM|America/Puerto_Rico America/Dominica", - "DO|America/Santo_Domingo", - "DZ|Africa/Algiers", - "EC|America/Guayaquil Pacific/Galapagos", - "EE|Europe/Tallinn", - "EG|Africa/Cairo", - "EH|Africa/El_Aaiun", - "ER|Africa/Nairobi Africa/Asmara", - "ES|Europe/Madrid Africa/Ceuta Atlantic/Canary", - "ET|Africa/Nairobi Africa/Addis_Ababa", - "FI|Europe/Helsinki", - "FJ|Pacific/Fiji", - "FK|Atlantic/Stanley", - "FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei", - "FO|Atlantic/Faroe", - "FR|Europe/Paris", - "GA|Africa/Lagos Africa/Libreville", - "GB|Europe/London", - "GD|America/Puerto_Rico America/Grenada", - "GE|Asia/Tbilisi", - "GF|America/Cayenne", - "GG|Europe/London Europe/Guernsey", - "GH|Africa/Abidjan Africa/Accra", - "GI|Europe/Gibraltar", - "GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule", - "GM|Africa/Abidjan Africa/Banjul", - "GN|Africa/Abidjan Africa/Conakry", - "GP|America/Puerto_Rico America/Guadeloupe", - "GQ|Africa/Lagos Africa/Malabo", - "GR|Europe/Athens", - "GS|Atlantic/South_Georgia", - "GT|America/Guatemala", - "GU|Pacific/Guam", - "GW|Africa/Bissau", - "GY|America/Guyana", - "HK|Asia/Hong_Kong", - "HN|America/Tegucigalpa", - "HR|Europe/Belgrade Europe/Zagreb", - "HT|America/Port-au-Prince", - "HU|Europe/Budapest", - "ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura", - "IE|Europe/Dublin", - "IL|Asia/Jerusalem", - "IM|Europe/London Europe/Isle_of_Man", - "IN|Asia/Kolkata", - "IO|Indian/Chagos", - "IQ|Asia/Baghdad", - "IR|Asia/Tehran", - "IS|Africa/Abidjan Atlantic/Reykjavik", - "IT|Europe/Rome", - "JE|Europe/London Europe/Jersey", - "JM|America/Jamaica", - "JO|Asia/Amman", - "JP|Asia/Tokyo", - "KE|Africa/Nairobi", - "KG|Asia/Bishkek", - "KH|Asia/Bangkok Asia/Phnom_Penh", - "KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati", - "KM|Africa/Nairobi Indian/Comoro", - "KN|America/Puerto_Rico America/St_Kitts", - "KP|Asia/Pyongyang", - "KR|Asia/Seoul", - "KW|Asia/Riyadh Asia/Kuwait", - "KY|America/Panama America/Cayman", - "KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral", - "LA|Asia/Bangkok Asia/Vientiane", - "LB|Asia/Beirut", - "LC|America/Puerto_Rico America/St_Lucia", - "LI|Europe/Zurich Europe/Vaduz", - "LK|Asia/Colombo", - "LR|Africa/Monrovia", - "LS|Africa/Johannesburg Africa/Maseru", - "LT|Europe/Vilnius", - "LU|Europe/Brussels Europe/Luxembourg", - "LV|Europe/Riga", - "LY|Africa/Tripoli", - "MA|Africa/Casablanca", - "MC|Europe/Paris Europe/Monaco", - "MD|Europe/Chisinau", - "ME|Europe/Belgrade Europe/Podgorica", - "MF|America/Puerto_Rico America/Marigot", - "MG|Africa/Nairobi Indian/Antananarivo", - "MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro", - "MK|Europe/Belgrade Europe/Skopje", - "ML|Africa/Abidjan Africa/Bamako", - "MM|Asia/Yangon", - "MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan", - "MO|Asia/Macau", - "MP|Pacific/Guam Pacific/Saipan", - "MQ|America/Martinique", - "MR|Africa/Abidjan Africa/Nouakchott", - "MS|America/Puerto_Rico America/Montserrat", - "MT|Europe/Malta", - "MU|Indian/Mauritius", - "MV|Indian/Maldives", - "MW|Africa/Maputo Africa/Blantyre", - "MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana", - "MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur", - "MZ|Africa/Maputo", - "NA|Africa/Windhoek", - "NC|Pacific/Noumea", - "NE|Africa/Lagos Africa/Niamey", - "NF|Pacific/Norfolk", - "NG|Africa/Lagos", - "NI|America/Managua", - "NL|Europe/Brussels Europe/Amsterdam", - "NO|Europe/Berlin Europe/Oslo", - "NP|Asia/Kathmandu", - "NR|Pacific/Nauru", - "NU|Pacific/Niue", - "NZ|Pacific/Auckland Pacific/Chatham", - "OM|Asia/Dubai Asia/Muscat", - "PA|America/Panama", - "PE|America/Lima", - "PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier", - "PG|Pacific/Port_Moresby Pacific/Bougainville", - "PH|Asia/Manila", - "PK|Asia/Karachi", - "PL|Europe/Warsaw", - "PM|America/Miquelon", - "PN|Pacific/Pitcairn", - "PR|America/Puerto_Rico", - "PS|Asia/Gaza Asia/Hebron", - "PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores", - "PW|Pacific/Palau", - "PY|America/Asuncion", - "QA|Asia/Qatar", - "RE|Asia/Dubai Indian/Reunion", - "RO|Europe/Bucharest", - "RS|Europe/Belgrade", - "RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr", - "RW|Africa/Maputo Africa/Kigali", - "SA|Asia/Riyadh", - "SB|Pacific/Guadalcanal", - "SC|Asia/Dubai Indian/Mahe", - "SD|Africa/Khartoum", - "SE|Europe/Berlin Europe/Stockholm", - "SG|Asia/Singapore", - "SH|Africa/Abidjan Atlantic/St_Helena", - "SI|Europe/Belgrade Europe/Ljubljana", - "SJ|Europe/Berlin Arctic/Longyearbyen", - "SK|Europe/Prague Europe/Bratislava", - "SL|Africa/Abidjan Africa/Freetown", - "SM|Europe/Rome Europe/San_Marino", - "SN|Africa/Abidjan Africa/Dakar", - "SO|Africa/Nairobi Africa/Mogadishu", - "SR|America/Paramaribo", - "SS|Africa/Juba", - "ST|Africa/Sao_Tome", - "SV|America/El_Salvador", - "SX|America/Puerto_Rico America/Lower_Princes", - "SY|Asia/Damascus", - "SZ|Africa/Johannesburg Africa/Mbabane", - "TC|America/Grand_Turk", - "TD|Africa/Ndjamena", - "TF|Asia/Dubai Indian/Maldives Indian/Kerguelen", - "TG|Africa/Abidjan Africa/Lome", - "TH|Asia/Bangkok", - "TJ|Asia/Dushanbe", - "TK|Pacific/Fakaofo", - "TL|Asia/Dili", - "TM|Asia/Ashgabat", - "TN|Africa/Tunis", - "TO|Pacific/Tongatapu", - "TR|Europe/Istanbul", - "TT|America/Puerto_Rico America/Port_of_Spain", - "TV|Pacific/Tarawa Pacific/Funafuti", - "TW|Asia/Taipei", - "TZ|Africa/Nairobi Africa/Dar_es_Salaam", - "UA|Europe/Simferopol Europe/Kyiv", - "UG|Africa/Nairobi Africa/Kampala", - "UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake", - "US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu", - "UY|America/Montevideo", - "UZ|Asia/Samarkand Asia/Tashkent", - "VA|Europe/Rome Europe/Vatican", - "VC|America/Puerto_Rico America/St_Vincent", - "VE|America/Caracas", - "VG|America/Puerto_Rico America/Tortola", - "VI|America/Puerto_Rico America/St_Thomas", - "VN|Asia/Bangkok Asia/Ho_Chi_Minh", - "VU|Pacific/Efate", - "WF|Pacific/Tarawa Pacific/Wallis", - "WS|Pacific/Apia", - "YE|Asia/Riyadh Asia/Aden", - "YT|Africa/Nairobi Indian/Mayotte", - "ZA|Africa/Johannesburg", - "ZM|Africa/Maputo Africa/Lusaka", - "ZW|Africa/Maputo Africa/Harare" - ] -} \ No newline at end of file + "version": "2024a", + "zones": [ + "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5", + "Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5", + "Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5", + "Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6", + "Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4", + "Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5", + "Africa/Cairo|LMT EET EEST|-25.9 -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBC5.9 1AQM5.9 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0|15e6", + "Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5", + "Africa/Ceuta|LMT WET WEST CET CEST|l.g 0 -10 -10 -20|0121212121212121212121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2M0M0 GdX0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|85e3", + "Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4", + "Africa/Johannesburg|LMT SAST SAST SAST|-1Q -1u -20 -30|0123232|-39EpQ qTcm 1Ajdu 1cL0 1cN0 1cL0|84e5", + "Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|", + "Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5", + "Africa/Monrovia|LMT MMT MMT GMT|H.8 H.8 I.u 0|0123|-3ygng.Q 1usM0 28G01.m|11e5", + "Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5", + "Africa/Sao_Tome|LMT LMT GMT WAT|-q.U A.J 0 -10|01232|-3tooq.U 18aoq.U 4i6N0 2q00|", + "Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5", + "Africa/Tunis|LMT PMT CET CEST|-E.I -9.l -10 -20|01232323232323232323232323232323232|-3zO0E.I 1cBAv.n 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5", + "Africa/Windhoek|LMT +0130 SAST SAST CAT WAT|-18.o -1u -20 -30 -20 -10|012324545454545454545454545454545454545454545454545454|-39Ep8.o qTbC.o 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4", + "America/Adak|LMT LMT NST NWT NPT BST BDT AHST HST HDT|-cd.m bK.C b0 a0 a0 b0 a0 a0 a0 90|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVzf.p 1EX1d.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326", + "America/Anchorage|LMT LMT AST AWT APT AHST AHDT YST AKST AKDT|-e0.o 9X.A a0 90 90 a0 90 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVxs.n 1EX20.o 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4", + "America/Puerto_Rico|LMT AST AWT APT|4o.p 40 30 30|01231|-2Qi7z.z 1IUbz.z 7XT0 iu0|24e5", + "America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4", + "America/Argentina/Buenos_Aires|LMT CMT -04 -03 -02|3R.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343434343|-331U6.c 125cn pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|", + "America/Argentina/Catamarca|LMT CMT -04 -03 -02|4n.8 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243432343|-331TA.Q 125bR.E pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", + "America/Argentina/Cordoba|LMT CMT -04 -03 -02|4g.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243434343|-331TH.c 125c0 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|", + "America/Argentina/Jujuy|LMT CMT -04 -03 -02|4l.c 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232434343|-331TC.M 125bT.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|", + "America/Argentina/La_Rioja|LMT CMT -04 -03 -02|4r.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tw.A 125bN.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", + "America/Argentina/Mendoza|LMT CMT -04 -03 -02|4z.g 4g.M 40 30 20|012323232323232323232323232323232323232323234343423232432343|-331To.I 125bF.w pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|", + "America/Argentina/Rio_Gallegos|LMT CMT -04 -03 -02|4A.Q 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tn.8 125bD.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", + "America/Argentina/Salta|LMT CMT -04 -03 -02|4l.E 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342434343|-331TC.k 125bT.8 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|", + "America/Argentina/San_Juan|LMT CMT -04 -03 -02|4y.4 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tp.U 125bG.I pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|", + "America/Argentina/San_Luis|LMT CMT -04 -03 -02|4p.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232323432323|-331Ty.A 125bP.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|", + "America/Argentina/Tucuman|LMT CMT -04 -03 -02|4k.Q 4g.M 40 30 20|01232323232323232323232323232323232323232323434343424343234343|-331TD.8 125bT.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|", + "America/Argentina/Ushuaia|LMT CMT -04 -03 -02|4x.c 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tq.M 125bH.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|", + "America/Asuncion|LMT AMT -04 -03|3O.E 3O.E 40 30|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-3eLw9.k 1FGo0 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0|28e5", + "America/Panama|LMT CMT EST|5i.8 5j.A 50|012|-3eLuF.Q Iy01.s|15e5", + "America/Bahia_Banderas|LMT MST CST MDT PST CDT|71 70 60 60 80 50|0121312141313131313131313131313131313152525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3", + "America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5", + "America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4", + "America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5", + "America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3", + "America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2", + "America/Bogota|LMT BMT -05 -04|4U.g 4U.g 50 40|01232|-3sTv3.I 1eIo0 38yo3.I 1PX0|90e5", + "America/Boise|LMT PST PDT MST MWT MPT MDT|7I.N 80 70 70 60 60 60|01212134536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-3tFE0 1nEe0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4", + "America/Cambridge_Bay|-00 MST MWT MPT MDT CST CDT EST|0 70 60 60 60 60 50 50|012314141414141414141414141414141414141414141414141414141414567541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-21Jc0 RO90 8x20 ix0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2", + "America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4", + "America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4", + "America/Caracas|LMT CMT -0430 -04|4r.I 4r.E 4u 40|012323|-3eLvw.g ROnX.U 28KM2.k 1IwOu kqo0|29e5", + "America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3", + "America/Chicago|LMT CST CDT EST CWT CPT|5O.A 60 50 50 50 50|012121212121212121212121212121212121213121212121214512121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5", + "America/Chihuahua|LMT MST CST MDT CDT|74.k 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4", + "America/Ciudad_Juarez|LMT MST CST MDT CDT|75.U 70 60 60 50|01213124242313131313131313131313131313131313131313131313131321313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Costa_Rica|LMT SJMT CST CDT|5A.d 5A.d 60 50|01232323232|-3eLun.L 1fyo0 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5", + "America/Phoenix|LMT MST MDT MWT|7s.i 70 60 60|012121313121|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5", + "America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4", + "America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8", + "America/Dawson_Creek|LMT PST PDT PWT PPT MST|80.U 80 70 70 70 70|01213412121212121212121212121212121212121212121212121212125|-3tofX.4 1nspX.4 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3", + "America/Dawson|LMT YST YDT YWT YPT YDDT PST PDT MST|9h.E 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeG.k GWpG.k 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2", + "America/Denver|LMT MST MDT MWT MPT|6X.U 70 60 60 60|012121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFF0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5", + "America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5", + "America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5", + "America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3", + "America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5", + "America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 4Q00 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5", + "America/Fort_Nelson|LMT PST PDT PWT PPT MST|8a.L 80 70 70 70 70|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121215|-3tofN.d 1nspN.d 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2", + "America/Fort_Wayne|LMT CST CDT CWT CPT EST EDT|5I.C 60 50 50 50 50 40|0121212134121212121212121212151565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5", + "America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3", + "America/Godthab|LMT -03 -02 -01|3q.U 30 20 10|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3", + "America/Goose_Bay|LMT NST NDT NST NDT NWT NPT AST ADT ADDT|41.E 3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|0121343434343434356343434343434343434343434343434343434343437878787878787878787878787878787878787878787879787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-3tojW.k 1nspt.c 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2", + "America/Grand_Turk|LMT KMT EST EDT AST|4I.w 57.a 50 40 40|01232323232323232323232323232323232323232323232323232323232323232323232323243232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLvf.s RK0m.C 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2", + "America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5", + "America/Guayaquil|LMT QMT -05 -04|5j.k 5e 50 40|01232|-3eLuE.E 1DNzS.E 2uILK rz0|27e5", + "America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4", + "America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4", + "America/Havana|LMT HMT CST CDT|5t.s 5t.A 50 40|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLuu.w 1qx00.8 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5", + "America/Hermosillo|LMT MST CST MDT PST|7n.Q 70 60 60 80|0121312141313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4", + "America/Indiana/Knox|LMT CST CDT CWT CPT EST|5K.u 60 50 50 50 50|01212134121212121212121212121212121212151212121212121212121212121212121212121212121212121252121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Marengo|LMT CST CDT CWT CPT EST EDT|5J.n 60 50 50 50 50 40|01212134121212121212121215656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Petersburg|LMT CST CDT CWT CPT EST EDT|5N.7 60 50 50 50 50 40|012121341212121212121212121215121212121212121212121252125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Tell_City|LMT CST CDT CWT CPT EST EDT|5L.3 60 50 50 50 50 40|012121341212121212121212121512165652121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Vevay|LMT CST CDT CWT CPT EST EDT|5E.g 60 50 50 50 50 40|0121213415656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Vincennes|LMT CST CDT CWT CPT EST EDT|5O.7 60 50 50 50 50 40|012121341212121212121212121212121565652125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Winamac|LMT CST CDT CWT CPT EST EDT|5K.p 60 50 50 50 50 40|012121341212121212121212121212121212121565652165656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Inuvik|-00 PST PDT MDT MST|0 80 70 60 70|01212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-FnA0 L3K0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2", + "America/Iqaluit|-00 EWT EPT EST EDT CST CDT|0 40 40 50 40 60 50|0123434343434343434343434343434343434343434343434343434343456343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-16K00 7nX0 iv0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2", + "America/Jamaica|LMT KMT EST EDT|57.a 57.a 50 40|01232323232323232323232|-3eLuQ.O RK00 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4", + "America/Juneau|LMT LMT PST PWT PPT PDT YDT YST AKST AKDT|-f2.j 8V.F 80 70 70 70 80 90 90 80|0123425252525252525252525252625252578989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVwq.s 1EX12.j 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3", + "America/Kentucky/Louisville|LMT CST CDT CWT CPT EST EDT|5H.2 60 50 50 50 50 40|01212121213412121212121212121212121212565656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Kentucky/Monticello|LMT CST CDT CWT CPT EST EDT|5D.o 60 50 50 50 50 40|01212134121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/La_Paz|LMT CMT BST -04|4w.A 4w.A 3w.A 40|0123|-3eLvr.o 1FIo0 13b0|19e5", + "America/Lima|LMT LMT -05 -04|58.c 58.A 50 40|01232323232323232|-3eLuP.M JcM0.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6", + "America/Los_Angeles|LMT PST PDT PWT PPT|7Q.W 80 70 70 70|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFE0 1nEe0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6", + "America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4", + "America/Managua|LMT MMT CST EST CDT|5J.8 5J.c 60 50 50|01232424232324242|-3eLue.Q 1Mhc0.4 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5", + "America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5", + "America/Martinique|LMT FFMT AST ADT|44.k 44.k 40 30|01232|-3eLvT.E PTA0 2LPbT.E 19X0|39e4", + "America/Matamoros|LMT CST CDT|6u 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4", + "America/Mazatlan|LMT MST CST MDT PST|75.E 70 60 60 80|0121312141313131313131313131313131313131313131313131313131313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4", + "America/Menominee|LMT CST CDT CWT CPT EST|5O.r 60 50 50 50 50|012121341212152121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3pdG9.x 1jce9.x 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2", + "America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5", + "America/Metlakatla|LMT LMT PST PWT PPT PDT AKST AKDT|-fd.G 8K.i 80 70 70 70 90 80|0123425252525252525252525252525252526767672676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwf.5 1EX1d.G 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2", + "America/Mexico_City|LMT MST CST MDT CDT CWT|6A.A 70 60 60 50 50|012131242425242424242424242424242424242424242424242424242424242424242|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6", + "America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mxUf.k 2LHcf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2", + "America/Moncton|LMT EST AST ADT AWT APT|4j.8 50 40 30 30 30|0123232323232323232323245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3txvE.Q J4ME.Q CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3", + "America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5", + "America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5", + "America/Toronto|LMT EST EDT EWT EPT|5h.w 50 40 40 40|012121212121212121212121212121212121212121212123412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-32B6G.s UFdG.s 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1qL0 11B0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5", + "America/New_York|LMT EST EDT EWT EPT|4U.2 50 40 40 40|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFH0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6", + "America/Nome|LMT LMT NST NWT NPT BST BDT YST AKST AKDT|-cW.m b1.C b0 a0 a0 b0 a0 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVyu.p 1EX1W.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2", + "America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2", + "America/North_Dakota/Beulah|LMT MST MDT MWT MPT CST CDT|6L.7 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/North_Dakota/Center|LMT MST MDT MWT MPT CST CDT|6J.c 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/North_Dakota/New_Salem|LMT MST MDT MWT MPT CST CDT|6J.D 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Ojinaga|LMT MST CST MDT CDT|6V.E 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3", + "America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4", + "America/Port-au-Prince|LMT PPMT EST EDT|4N.k 4N 50 40|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLva.E 15RLX.E 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5", + "America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4", + "America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4", + "America/Punta_Arenas|LMT SMT -05 -04 -03|4H.E 4G.J 50 40 30|01213132323232323232343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvg.k MJbX.5 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|", + "America/Winnipeg|LMT CST CDT CWT CPT|6s.A 60 50 50 50|0121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3kLtv.o 1a3bv.o WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4", + "America/Rankin_Inlet|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-vDc0 Bjk0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2", + "America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5", + "America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4", + "America/Resolute|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-SnA0 103I0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229", + "America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4", + "America/Santiago|LMT SMT -05 -04 -03|4G.J 4G.J 50 40 30|0121313232323232323432343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvh.f MJc0 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 hX0 1q10 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5", + "America/Santo_Domingo|LMT SDMT EST EDT -0430 AST|4D.A 4E 50 40 4u 40|012324242424242525|-3eLvk.o 1Jic0.o 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5", + "America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6", + "America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|012132323232323232323232323232323232323232323232323232323232323232323232323232323232323232121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|452", + "America/Sitka|LMT LMT PST PWT PPT PDT YST AKST AKDT|-eW.L 91.d 80 70 70 70 90 90 80|0123425252525252525252525252525252567878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-48Pzs.L 1jVwu 1EX0W.L 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2", + "America/St_Johns|LMT NST NDT NST NDT NWT NPT NDDT|3u.Q 3u.Q 2u.Q 3u 2u 2u 2u 1u|012121212121212121212121212121212121213434343434343435634343434343434343434343434343434343434343434343434343434343434343434343434343434343437343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tokt.8 1l020 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4", + "America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3", + "America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5", + "America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656", + "America/Vancouver|LMT PST PDT PWT PPT|8c.s 80 70 70 70|01213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tofL.w 1nspL.w 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5", + "America/Whitehorse|LMT YST YDT YWT YPT YDDT PST PDT MST|90.c 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeX.M GWpX.M 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 LA0 ytd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3", + "America/Yakutat|LMT LMT YST YWT YPT YDT AKST AKDT|-eF.5 9i.T 90 80 80 80 90 80|0123425252525252525252525252525252526767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwL.G 1EX1F.5 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642", + "Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121212121212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10", + "Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70", + "Pacific/Port_Moresby|LMT PMMT +10|-9M.E -9M.w -a0|012|-3D8VM.E AvA0.8|25e4", + "Antarctica/Macquarie|-00 AEST AEDT|0 -a0 -b0|0121012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2OPc0 Fb40 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|1", + "Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60", + "Pacific/Auckland|LMT NZMT NZST NZST NZDT|-bD.4 -bu -cu -c0 -d0|012131313131313131313131313134343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-46jLD.4 2nEO9.4 Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5", + "Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40", + "Antarctica/Rothera|-00 -03|0 30|01|gOo0|130", + "Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5", + "Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40", + "Antarctica/Vostok|-00 +07 +05|0 -70 -50|01012|-tjA0 1rWh0 1Nj0 1aTv0|25", + "Europe/Berlin|LMT CET CEST CEMT|-R.s -10 -20 -30|012121212121212321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36RcR.s UbWR.s 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e5", + "Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|0123232323232323232323212323232323232323232323232321|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5", + "Asia/Amman|LMT EET EEST +03|-2n.I -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5", + "Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3", + "Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4", + "Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4", + "Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4", + "Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|", + "Asia/Baghdad|LMT BMT +03 +04|-2V.E -2V.A -30 -40|0123232323232323232323232323232323232323232323232323232|-3eLCV.E 18ao0.4 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5", + "Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4", + "Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5", + "Asia/Bangkok|LMT BMT +07|-6G.4 -6G.4 -70|012|-3D8SG.4 1C000|15e6", + "Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|", + "Asia/Beirut|LMT EET EEST|-2m -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3D8Om 1BWom 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5", + "Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4", + "Asia/Brunei|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|42e4", + "Asia/Kolkata|LMT HMT MMT IST +0630|-5R.s -5R.k -5l.a -5u -6u|01234343|-4Fg5R.s BKo0.8 1rDcw.a 1r2LP.a 1un0 HB0 7zX0|15e6", + "Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4", + "Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3", + "Asia/Shanghai|LMT CST CDT|-85.H -80 -90|012121212121212121212121212121|-2M0U5.H Iuo5.H 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6", + "Asia/Colombo|LMT MMT +0530 +06 +0630|-5j.o -5j.w -5u -60 -6u|012342432|-3D8Rj.o 13inX.Q 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5", + "Asia/Dhaka|LMT HMT +0630 +0530 +06 +07|-61.E -5R.k -6u -5u -60 -70|01232454|-3eLG1.E 26008.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6", + "Asia/Damascus|LMT EET EEST +03|-2p.c -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5", + "Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4", + "Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5", + "Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4", + "Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "Asia/Gaza|LMT EET EEST IST IDT|-2h.Q -20 -30 -20 -30|0121212121212121212121212121212121234343434343434343434343434343431212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCh.Q 1Azeh.Q MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|18e5", + "Asia/Hebron|LMT EET EEST IST IDT|-2k.n -20 -30 -20 -30|012121212121212121212121212121212123434343434343434343434343434343121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCk.n 1Azek.n MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|25e4", + "Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.u -76.u -70 -80 -90|0123423232|-2yC76.u bK00 1h7b6.u 5lz0 18o0 3Oq0 k5c0 aVX0 BAM0|90e5", + "Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5", + "Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3", + "Asia/Irkutsk|LMT IMT +07 +08 +09|-6V.5 -6V.5 -70 -80 -90|012343434343434343434343234343434343434343434343434343434343434343|-3D8SV.5 1Bxc0 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4", + "Europe/Istanbul|LMT IMT EET EEST +03 +04|-1T.Q -1U.U -20 -30 -30 -40|01232323232323232323232323232323232323232323232345423232323232323232323232323232323232323232323232323232323232323234|-3D8NT.Q 1ePXW.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6", + "Asia/Jakarta|LMT BMT +0720 +0730 +09 +08 WIB|-77.c -77.c -7k -7u -90 -80 -70|012343536|-49jH7.c 2hiLL.c luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6", + "Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4", + "Asia/Jerusalem|LMT JMT IST IDT IDDT|-2k.S -2k.E -20 -30 -40|012323232323232432323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8Ok.S 1wvA0.e SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4", + "Asia/Kabul|LMT +04 +0430|-4A.M -40 -4u|012|-3eLEA.M 2dTcA.M|46e5", + "Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4", + "Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6", + "Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5", + "Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5", + "Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2", + "Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5", + "Asia/Kuala_Lumpur|LMT SMT +07 +0720 +0730 +09 +08|-6T.p -6T.p -70 -7k -7u -90 -80|01234546|-2M0ST.p aIM0 17anT.p l5XE 17bO 8Fyu 1so10|71e5", + "Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4", + "Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3", + "Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5", + "Asia/Manila|LMT LMT PST PDT JST|fU -84 -80 -90 -90|01232423232|-54m84 2clc0 1vfc4 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6", + "Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|32e4", + "Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4", + "Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5", + "Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5", + "Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4", + "Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4", + "Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5", + "Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|", + "Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4", + "Asia/Rangoon|LMT RMT +0630 +09|-6o.L -6o.L -6u -90|01232|-3D8So.L 1BnA0 SmnS.L 7j9u|48e5", + "Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4", + "Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4", + "Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6", + "Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2", + "Asia/Taipei|LMT CST JST CDT|-86 -80 -90 -90|012131313131313131313131313131313131313131|-30bk6 1FDc6 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5", + "Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5", + "Asia/Tbilisi|LMT TBMT +03 +04 +05|-2X.b -2X.b -30 -40 -50|01234343434343434343434323232343434343434343434323|-3D8OX.b 1LUM0 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5", + "Asia/Tehran|LMT TMT +0330 +0430 +04 +05|-3p.I -3p.I -3u -4u -40 -50|012345423232323232323232323232323232323232323232323232323232323232323232|-2btDp.I Llc0 1FHaT.I 1pc0 120u Rc0 XA0 Wou JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6", + "Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3", + "Asia/Tokyo|LMT JST JDT|-9i.X -90 -a0|0121212121|-3jE90 2qSo0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6", + "Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5", + "Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5", + "Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2", + "Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4", + "Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4", + "Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5", + "Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5", + "Atlantic/Azores|LMT HMT -02 -01 +00 WET|1G.E 1S.w 20 10 0 0|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232343434343434343434343434343434345434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tomh.k 18aoh.k aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4", + "Atlantic/Bermuda|LMT BMT BST AST ADT|4j.i 4j.i 3j.i 40 30|0121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3eLvE.G 16mo0 1bb0 1i10 11X0 ru30 thbE.G 1PX0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3", + "Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4", + "Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4", + "Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|49e3", + "Atlantic/Madeira|LMT FMT -01 +00 +01 WET WEST|17.A 17.A 10 0 -10 0 -10|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tomQ.o 18anQ.o aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e4", + "Atlantic/South_Georgia|LMT -02|2q.8 20|01|-3eLxx.Q|30", + "Atlantic/Stanley|LMT SMT -04 -03 -02|3P.o 3P.o 40 30 20|0123232323232323434323232323232323232323232323232323232323232323232323|-3eLw8.A S200 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2", + "Australia/Sydney|LMT AEST AEDT|-a4.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oW4.Q RlC4.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5", + "Australia/Adelaide|LMT ACST ACST ACDT|-9e.k -90 -9u -au|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-32oVe.k ak0e.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5", + "Australia/Brisbane|LMT AEST AEDT|-ac.8 -a0 -b0|012121212121212121|-32Bmc.8 Ry2c.8 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5", + "Australia/Broken_Hill|LMT AEST ACST ACST ACDT|-9p.M -a0 -90 -9u -au|0123434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-32oVp.M 3Lzp.M 6wp0 H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|18e3", + "Australia/Hobart|LMT AEST AEDT|-9N.g -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-3109N.g Pk1N.g 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|21e4", + "Australia/Darwin|LMT ACST ACST ACDT|-8H.k -90 -9u -au|01232323232|-32oUH.k ajXH.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4", + "Australia/Eucla|LMT +0845 +0945|-8z.s -8J -9J|01212121212121212121|-30nIz.s PkpO.s xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368", + "Australia/Lord_Howe|LMT AEST +1030 +1130 +11|-aA.k -a0 -au -bu -b0|01232323232424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-32oWA.k 3tzAA.k 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347", + "Australia/Lindeman|LMT AEST AEDT|-9T.U -a0 -b0|0121212121212121212121|-32BlT.U Ry1T.U xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10", + "Australia/Melbourne|LMT AEST AEDT|-9D.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oVD.Q RlBD.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|39e5", + "Australia/Perth|LMT AWST AWDT|-7H.o -80 -90|01212121212121212121|-30nHH.o PkpH.o xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5", + "CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "Pacific/Easter|LMT EMT -07 -06 -05|7h.s 7h.s 70 60 50|0123232323232323232323232323234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLsG.w 1HRc0 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2", + "CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "Europe/Dublin|LMT DMT IST GMT BST IST|p.l p.l -y.D 0 -10 -10|012343434343435353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353|-3BHby.D 1ra20 Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "EST|EST|50|0||", + "EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "Etc/GMT-0|GMT|0|0||", + "Etc/GMT-1|+01|-10|0||", + "Etc/GMT-10|+10|-a0|0||", + "Etc/GMT-11|+11|-b0|0||", + "Etc/GMT-12|+12|-c0|0||", + "Etc/GMT-13|+13|-d0|0||", + "Etc/GMT-14|+14|-e0|0||", + "Etc/GMT-2|+02|-20|0||", + "Etc/GMT-3|+03|-30|0||", + "Etc/GMT-4|+04|-40|0||", + "Etc/GMT-5|+05|-50|0||", + "Etc/GMT-6|+06|-60|0||", + "Etc/GMT-7|+07|-70|0||", + "Etc/GMT-8|+08|-80|0||", + "Etc/GMT-9|+09|-90|0||", + "Etc/GMT+1|-01|10|0||", + "Etc/GMT+10|-10|a0|0||", + "Etc/GMT+11|-11|b0|0||", + "Etc/GMT+12|-12|c0|0||", + "Etc/GMT+2|-02|20|0||", + "Etc/GMT+3|-03|30|0||", + "Etc/GMT+4|-04|40|0||", + "Etc/GMT+5|-05|50|0||", + "Etc/GMT+6|-06|60|0||", + "Etc/GMT+7|-07|70|0||", + "Etc/GMT+8|-08|80|0||", + "Etc/GMT+9|-09|90|0||", + "Etc/UTC|UTC|0|0||", + "Europe/Brussels|LMT BMT WET CET CEST WEST|-h.u -h.u 0 -10 -20 -10|012343434325252525252525252525252525252525252525252525434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8Mh.u u1Ah.u SO00 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|21e5", + "Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|79e3", + "Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5", + "Europe/Athens|LMT AMT EET EEST CEST CET|-1y.Q -1y.Q -20 -30 -20 -10|0123234545232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-30SNy.Q OMM1 CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5", + "Europe/London|LMT GMT BST BDST|1.f 0 -10 -20|01212121212121212121212121212121212121212121212121232323232321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-4VgnW.J 2KHdW.J Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6", + "Europe/Belgrade|LMT CET CEST|-1m -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3topm 2juLm 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "Europe/Prague|LMT PMT CET CEST GMT|-V.I -V.I -10 -20 0|0123232323232323232423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4QbAV.I 1FDc0 XPaV.I 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|13e5", + "Europe/Bucharest|LMT BMT EET EEST|-1I.o -1I.o -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3awpI.o 1AU00 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|19e5", + "Europe/Budapest|LMT CET CEST|-1g.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3cK1g.k 124Lg.k 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5", + "Europe/Zurich|LMT BMT CET CEST|-y.8 -t.K -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4HyMy.8 1Dw04.m 1SfAt.K 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|38e4", + "Europe/Chisinau|LMT CMT BMT EET EEST CEST CET MSK MSD|-1T.k -1T -1I.o -20 -30 -20 -10 -30 -40|0123434343434343434345656578787878787878787878434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8NT.k 1wNA0.k wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4", + "Europe/Gibraltar|LMT GMT BST BDST CET CEST|l.o 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123232323232121232121212121212121212145454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-3BHbC.A 1ra1C.A Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|30e3", + "Europe/Helsinki|LMT HMT EET EEST|-1D.N -1D.N -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3H0ND.N 1Iu00 OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "Europe/Kaliningrad|LMT CET CEST EET EEST MSK MSD +03|-1m -10 -20 -20 -30 -30 -40 -30|012121212121212343565656565656565654343434343434343434343434343434343434343434373|-36Rdm UbXm 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4", + "Europe/Kiev|LMT KMT EET MSK CEST CET MSD EEST|-22.4 -22.4 -20 -30 -20 -10 -40 -30|01234545363636363636363636367272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-3D8O2.4 1LUM0 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|34e5", + "Europe/Kirov|LMT +03 +04 +05 MSD MSK MSK|-3i.M -30 -40 -50 -40 -30 -40|0123232323232323232454524545454545454545454545454545454545454565|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4", + "Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5", + "Europe/Madrid|LMT WET WEST WEMT CET CEST|e.I 0 -10 -20 -10 -20|0121212121212121212321454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2M0M0 G5z0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|62e5", + "Europe/Malta|LMT CET CEST|-W.4 -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-35rcW.4 SXzW.4 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4", + "Europe/Minsk|LMT MMT EET MSK CEST CET MSD EEST +03|-1O.g -1O -20 -30 -20 -10 -40 -30 -30|012345454363636363636363636372727272727272727272727272727272727272728|-3D8NO.g 1LUM0.g eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5", + "Europe/Paris|LMT PMT WET WEST CEST CET WEMT|-9.l -9.l 0 -10 -20 -10 -20|01232323232323232323232323232323232323232323232323234545463654545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-3bQ09.l MDA0 cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6", + "Europe/Moscow|LMT MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|01232434565756865656565656565656565698656565656565656565656565656565656565656a6|-3D8Ou.h 1sQM0 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6", + "Europe/Riga|LMT RMT LST EET MSK CEST CET MSD EEST|-1A.y -1A.y -2A.y -20 -30 -20 -10 -40 -30|0121213456565647474747474747474838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383|-3D8NA.y 1xde0 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|64e4", + "Europe/Rome|LMT RMT CET CEST|-N.U -N.U -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4aU0N.U 15snN.U T000 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|39e5", + "Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5", + "Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|", + "Europe/Simferopol|LMT SMT EET MSK CEST CET MSD EEST MSK|-2g.o -2g -20 -30 -20 -10 -40 -30 -40|0123454543636363636363636363272727636363727272727272727272727272727272727283|-3D8Og.o 1LUM0.o eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4", + "Europe/Sofia|LMT IMT EET CET CEST EEST|-1x.g -1U.U -20 -10 -20 -30|0123434325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-3D8Nx.g AiLA.k 1UFeU.U WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "Europe/Tallinn|LMT TMT CET CEST EET MSK MSD EEST|-1D -1D -10 -20 -20 -30 -40 -30|0123214532323565656565656565657474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474|-3D8ND 1wI00 teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e4", + "Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4", + "Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5", + "Europe/Vienna|LMT CET CEST|-15.l -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36Rd5.l UbX5.l 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5", + "Europe/Vilnius|LMT WMT KMT CET EET MSK CEST MSD EEST|-1F.g -1o -1z.A -10 -20 -30 -20 -40 -30|0123435636365757575757575757584848484848484848463648484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484|-3D8NF.g 1u5Ah.g 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4", + "Europe/Volgograd|LMT +03 +04 +05 MSD MSK MSK|-2V.E -30 -40 -50 -40 -30 -40|012323232323232324545452454545454545454545454545454545454545456525|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5", + "Europe/Warsaw|LMT WMT CET CEST EET EEST|-1o -1o -10 -20 -20 -30|0123232345423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8No 1qDA0 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5", + "HST|HST|a0|0||", + "Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2", + "Indian/Maldives|LMT MMT +05|-4S -4S -50|012|-3D8QS 3eLA0|35e4", + "Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4", + "Pacific/Kwajalein|LMT +11 +10 +09 -12 +12|-b9.k -b0 -a0 -90 c0 -c0|0123145|-2M0X9.k 1rDA9.k akp0 6Up0 12ry0 Wan0|14e3", + "MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "MST|MST|70|0||", + "MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "Pacific/Chatham|LMT +1215 +1245 +1345|-cd.M -cf -cJ -dJ|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-46jMd.M 37RbW.M 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|600", + "Pacific/Apia|LMT LMT -1130 -11 -10 +14 +13|-cx.4 bq.U bu b0 a0 -e0 -d0|012343456565656565656565656|-38Fox.4 J1A0 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3", + "Pacific/Bougainville|LMT PMMT +10 +09 +11|-am.g -9M.w -a0 -90 -b0|012324|-3D8Wm.g AvAx.I 1TCLM.w 7CN0 2MQp0|18e4", + "Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3", + "Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1", + "Pacific/Fakaofo|LMT -11 +13|bo.U b0 -d0|012|-2M0Az.4 4ufXz.4|483", + "Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|012121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4", + "Pacific/Tarawa|LMT +12|-bw.4 -c0|01|-2M0Xw.4|29e3", + "Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3", + "Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125", + "Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4", + "Pacific/Guam|LMT LMT GST +09 GDT ChST|el -9D -a0 -90 -b0 -a0|0123242424242424242425|-54m9D 2glc0 1DFbD 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4", + "Pacific/Honolulu|LMT HST HDT HWT HPT HST|av.q au 9u 9u 9u a0|01213415|-3061s.y 1uMdW.y 8x0 lef0 8wWu iAu 46p0|37e4", + "Pacific/Kiritimati|LMT -1040 -10 +14|at.k aE a0 -e0|0123|-2M0Bu.E 3bIMa.E B7Xk|51e2", + "Pacific/Kosrae|LMT LMT +11 +09 +10 +12|d8.4 -aP.U -b0 -90 -a0 -c0|0123243252|-54maP.U 2glc0 xsnP.U axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2", + "Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2", + "Pacific/Pago_Pago|LMT LMT SST|-cB.c bm.M b0|012|-38FoB.c J1A0|37e2", + "Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3", + "Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2", + "Pacific/Norfolk|LMT +1112 +1130 +1230 +11 +12|-bb.Q -bc -bu -cu -b0 -c0|0123245454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2M0Xb.Q 21ILX.Q W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4", + "Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3", + "Pacific/Palau|LMT LMT +09|f2.4 -8V.U -90|012|-54m8V.U 2glc0|21e3", + "Pacific/Pitcairn|LMT -0830 -08|8E.k 8u 80|012|-2M0Dj.E 3UVXN.E|56", + "Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3", + "Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4", + "Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3", + "PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|" + ], + "links": [ + "Africa/Abidjan|Africa/Accra", + "Africa/Abidjan|Africa/Bamako", + "Africa/Abidjan|Africa/Banjul", + "Africa/Abidjan|Africa/Conakry", + "Africa/Abidjan|Africa/Dakar", + "Africa/Abidjan|Africa/Freetown", + "Africa/Abidjan|Africa/Lome", + "Africa/Abidjan|Africa/Nouakchott", + "Africa/Abidjan|Africa/Ouagadougou", + "Africa/Abidjan|Africa/Timbuktu", + "Africa/Abidjan|Atlantic/Reykjavik", + "Africa/Abidjan|Atlantic/St_Helena", + "Africa/Abidjan|Iceland", + "Africa/Cairo|Egypt", + "Africa/Johannesburg|Africa/Maseru", + "Africa/Johannesburg|Africa/Mbabane", + "Africa/Lagos|Africa/Bangui", + "Africa/Lagos|Africa/Brazzaville", + "Africa/Lagos|Africa/Douala", + "Africa/Lagos|Africa/Kinshasa", + "Africa/Lagos|Africa/Libreville", + "Africa/Lagos|Africa/Luanda", + "Africa/Lagos|Africa/Malabo", + "Africa/Lagos|Africa/Niamey", + "Africa/Lagos|Africa/Porto-Novo", + "Africa/Maputo|Africa/Blantyre", + "Africa/Maputo|Africa/Bujumbura", + "Africa/Maputo|Africa/Gaborone", + "Africa/Maputo|Africa/Harare", + "Africa/Maputo|Africa/Kigali", + "Africa/Maputo|Africa/Lubumbashi", + "Africa/Maputo|Africa/Lusaka", + "Africa/Nairobi|Africa/Addis_Ababa", + "Africa/Nairobi|Africa/Asmara", + "Africa/Nairobi|Africa/Asmera", + "Africa/Nairobi|Africa/Dar_es_Salaam", + "Africa/Nairobi|Africa/Djibouti", + "Africa/Nairobi|Africa/Kampala", + "Africa/Nairobi|Africa/Mogadishu", + "Africa/Nairobi|Indian/Antananarivo", + "Africa/Nairobi|Indian/Comoro", + "Africa/Nairobi|Indian/Mayotte", + "Africa/Tripoli|Libya", + "America/Adak|America/Atka", + "America/Adak|US/Aleutian", + "America/Anchorage|US/Alaska", + "America/Argentina/Buenos_Aires|America/Buenos_Aires", + "America/Argentina/Catamarca|America/Argentina/ComodRivadavia", + "America/Argentina/Catamarca|America/Catamarca", + "America/Argentina/Cordoba|America/Cordoba", + "America/Argentina/Cordoba|America/Rosario", + "America/Argentina/Jujuy|America/Jujuy", + "America/Argentina/Mendoza|America/Mendoza", + "America/Chicago|US/Central", + "America/Denver|America/Shiprock", + "America/Denver|Navajo", + "America/Denver|US/Mountain", + "America/Detroit|US/Michigan", + "America/Edmonton|America/Yellowknife", + "America/Edmonton|Canada/Mountain", + "America/Fort_Wayne|America/Indiana/Indianapolis", + "America/Fort_Wayne|America/Indianapolis", + "America/Fort_Wayne|US/East-Indiana", + "America/Godthab|America/Nuuk", + "America/Halifax|Canada/Atlantic", + "America/Havana|Cuba", + "America/Indiana/Knox|America/Knox_IN", + "America/Indiana/Knox|US/Indiana-Starke", + "America/Iqaluit|America/Pangnirtung", + "America/Jamaica|Jamaica", + "America/Kentucky/Louisville|America/Louisville", + "America/Los_Angeles|US/Pacific", + "America/Manaus|Brazil/West", + "America/Mazatlan|Mexico/BajaSur", + "America/Mexico_City|Mexico/General", + "America/New_York|US/Eastern", + "America/Noronha|Brazil/DeNoronha", + "America/Panama|America/Atikokan", + "America/Panama|America/Cayman", + "America/Panama|America/Coral_Harbour", + "America/Phoenix|America/Creston", + "America/Phoenix|US/Arizona", + "America/Puerto_Rico|America/Anguilla", + "America/Puerto_Rico|America/Antigua", + "America/Puerto_Rico|America/Aruba", + "America/Puerto_Rico|America/Blanc-Sablon", + "America/Puerto_Rico|America/Curacao", + "America/Puerto_Rico|America/Dominica", + "America/Puerto_Rico|America/Grenada", + "America/Puerto_Rico|America/Guadeloupe", + "America/Puerto_Rico|America/Kralendijk", + "America/Puerto_Rico|America/Lower_Princes", + "America/Puerto_Rico|America/Marigot", + "America/Puerto_Rico|America/Montserrat", + "America/Puerto_Rico|America/Port_of_Spain", + "America/Puerto_Rico|America/St_Barthelemy", + "America/Puerto_Rico|America/St_Kitts", + "America/Puerto_Rico|America/St_Lucia", + "America/Puerto_Rico|America/St_Thomas", + "America/Puerto_Rico|America/St_Vincent", + "America/Puerto_Rico|America/Tortola", + "America/Puerto_Rico|America/Virgin", + "America/Regina|Canada/Saskatchewan", + "America/Rio_Branco|America/Porto_Acre", + "America/Rio_Branco|Brazil/Acre", + "America/Santiago|Chile/Continental", + "America/Sao_Paulo|Brazil/East", + "America/St_Johns|Canada/Newfoundland", + "America/Tijuana|America/Ensenada", + "America/Tijuana|America/Santa_Isabel", + "America/Tijuana|Mexico/BajaNorte", + "America/Toronto|America/Montreal", + "America/Toronto|America/Nassau", + "America/Toronto|America/Nipigon", + "America/Toronto|America/Thunder_Bay", + "America/Toronto|Canada/Eastern", + "America/Vancouver|Canada/Pacific", + "America/Whitehorse|Canada/Yukon", + "America/Winnipeg|America/Rainy_River", + "America/Winnipeg|Canada/Central", + "Asia/Ashgabat|Asia/Ashkhabad", + "Asia/Bangkok|Asia/Phnom_Penh", + "Asia/Bangkok|Asia/Vientiane", + "Asia/Bangkok|Indian/Christmas", + "Asia/Brunei|Asia/Kuching", + "Asia/Dhaka|Asia/Dacca", + "Asia/Dubai|Asia/Muscat", + "Asia/Dubai|Indian/Mahe", + "Asia/Dubai|Indian/Reunion", + "Asia/Ho_Chi_Minh|Asia/Saigon", + "Asia/Hong_Kong|Hongkong", + "Asia/Jerusalem|Asia/Tel_Aviv", + "Asia/Jerusalem|Israel", + "Asia/Kathmandu|Asia/Katmandu", + "Asia/Kolkata|Asia/Calcutta", + "Asia/Kuala_Lumpur|Asia/Singapore", + "Asia/Kuala_Lumpur|Singapore", + "Asia/Macau|Asia/Macao", + "Asia/Makassar|Asia/Ujung_Pandang", + "Asia/Nicosia|Europe/Nicosia", + "Asia/Qatar|Asia/Bahrain", + "Asia/Rangoon|Asia/Yangon", + "Asia/Rangoon|Indian/Cocos", + "Asia/Riyadh|Antarctica/Syowa", + "Asia/Riyadh|Asia/Aden", + "Asia/Riyadh|Asia/Kuwait", + "Asia/Seoul|ROK", + "Asia/Shanghai|Asia/Chongqing", + "Asia/Shanghai|Asia/Chungking", + "Asia/Shanghai|Asia/Harbin", + "Asia/Shanghai|PRC", + "Asia/Taipei|ROC", + "Asia/Tehran|Iran", + "Asia/Thimphu|Asia/Thimbu", + "Asia/Tokyo|Japan", + "Asia/Ulaanbaatar|Asia/Ulan_Bator", + "Asia/Urumqi|Asia/Kashgar", + "Atlantic/Faroe|Atlantic/Faeroe", + "Australia/Adelaide|Australia/South", + "Australia/Brisbane|Australia/Queensland", + "Australia/Broken_Hill|Australia/Yancowinna", + "Australia/Darwin|Australia/North", + "Australia/Hobart|Australia/Currie", + "Australia/Hobart|Australia/Tasmania", + "Australia/Lord_Howe|Australia/LHI", + "Australia/Melbourne|Australia/Victoria", + "Australia/Perth|Australia/West", + "Australia/Sydney|Australia/ACT", + "Australia/Sydney|Australia/Canberra", + "Australia/Sydney|Australia/NSW", + "Etc/GMT-0|Etc/GMT", + "Etc/GMT-0|Etc/GMT+0", + "Etc/GMT-0|Etc/GMT0", + "Etc/GMT-0|Etc/Greenwich", + "Etc/GMT-0|GMT", + "Etc/GMT-0|GMT+0", + "Etc/GMT-0|GMT-0", + "Etc/GMT-0|GMT0", + "Etc/GMT-0|Greenwich", + "Etc/UTC|Etc/UCT", + "Etc/UTC|Etc/Universal", + "Etc/UTC|Etc/Zulu", + "Etc/UTC|UCT", + "Etc/UTC|UTC", + "Etc/UTC|Universal", + "Etc/UTC|Zulu", + "Europe/Belgrade|Europe/Ljubljana", + "Europe/Belgrade|Europe/Podgorica", + "Europe/Belgrade|Europe/Sarajevo", + "Europe/Belgrade|Europe/Skopje", + "Europe/Belgrade|Europe/Zagreb", + "Europe/Berlin|Arctic/Longyearbyen", + "Europe/Berlin|Atlantic/Jan_Mayen", + "Europe/Berlin|Europe/Copenhagen", + "Europe/Berlin|Europe/Oslo", + "Europe/Berlin|Europe/Stockholm", + "Europe/Brussels|Europe/Amsterdam", + "Europe/Brussels|Europe/Luxembourg", + "Europe/Chisinau|Europe/Tiraspol", + "Europe/Dublin|Eire", + "Europe/Helsinki|Europe/Mariehamn", + "Europe/Istanbul|Asia/Istanbul", + "Europe/Istanbul|Turkey", + "Europe/Kiev|Europe/Kyiv", + "Europe/Kiev|Europe/Uzhgorod", + "Europe/Kiev|Europe/Zaporozhye", + "Europe/Lisbon|Portugal", + "Europe/London|Europe/Belfast", + "Europe/London|Europe/Guernsey", + "Europe/London|Europe/Isle_of_Man", + "Europe/London|Europe/Jersey", + "Europe/London|GB", + "Europe/London|GB-Eire", + "Europe/Moscow|W-SU", + "Europe/Paris|Europe/Monaco", + "Europe/Prague|Europe/Bratislava", + "Europe/Rome|Europe/San_Marino", + "Europe/Rome|Europe/Vatican", + "Europe/Warsaw|Poland", + "Europe/Zurich|Europe/Busingen", + "Europe/Zurich|Europe/Vaduz", + "Indian/Maldives|Indian/Kerguelen", + "Pacific/Auckland|Antarctica/McMurdo", + "Pacific/Auckland|Antarctica/South_Pole", + "Pacific/Auckland|NZ", + "Pacific/Chatham|NZ-CHAT", + "Pacific/Easter|Chile/EasterIsland", + "Pacific/Enderbury|Pacific/Kanton", + "Pacific/Guadalcanal|Pacific/Pohnpei", + "Pacific/Guadalcanal|Pacific/Ponape", + "Pacific/Guam|Pacific/Saipan", + "Pacific/Honolulu|Pacific/Johnston", + "Pacific/Honolulu|US/Hawaii", + "Pacific/Kwajalein|Kwajalein", + "Pacific/Pago_Pago|Pacific/Midway", + "Pacific/Pago_Pago|Pacific/Samoa", + "Pacific/Pago_Pago|US/Samoa", + "Pacific/Port_Moresby|Antarctica/DumontDUrville", + "Pacific/Port_Moresby|Pacific/Chuuk", + "Pacific/Port_Moresby|Pacific/Truk", + "Pacific/Port_Moresby|Pacific/Yap", + "Pacific/Tarawa|Pacific/Funafuti", + "Pacific/Tarawa|Pacific/Majuro", + "Pacific/Tarawa|Pacific/Wake", + "Pacific/Tarawa|Pacific/Wallis" + ], + "countries": [ + "AD|Europe/Andorra", + "AE|Asia/Dubai", + "AF|Asia/Kabul", + "AG|America/Puerto_Rico America/Antigua", + "AI|America/Puerto_Rico America/Anguilla", + "AL|Europe/Tirane", + "AM|Asia/Yerevan", + "AO|Africa/Lagos Africa/Luanda", + "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa", + "AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia", + "AS|Pacific/Pago_Pago", + "AT|Europe/Vienna", + "AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla", + "AW|America/Puerto_Rico America/Aruba", + "AX|Europe/Helsinki Europe/Mariehamn", + "AZ|Asia/Baku", + "BA|Europe/Belgrade Europe/Sarajevo", + "BB|America/Barbados", + "BD|Asia/Dhaka", + "BE|Europe/Brussels", + "BF|Africa/Abidjan Africa/Ouagadougou", + "BG|Europe/Sofia", + "BH|Asia/Qatar Asia/Bahrain", + "BI|Africa/Maputo Africa/Bujumbura", + "BJ|Africa/Lagos Africa/Porto-Novo", + "BL|America/Puerto_Rico America/St_Barthelemy", + "BM|Atlantic/Bermuda", + "BN|Asia/Kuching Asia/Brunei", + "BO|America/La_Paz", + "BQ|America/Puerto_Rico America/Kralendijk", + "BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco", + "BS|America/Toronto America/Nassau", + "BT|Asia/Thimphu", + "BW|Africa/Maputo Africa/Gaborone", + "BY|Europe/Minsk", + "BZ|America/Belize", + "CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston", + "CC|Asia/Yangon Indian/Cocos", + "CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi", + "CF|Africa/Lagos Africa/Bangui", + "CG|Africa/Lagos Africa/Brazzaville", + "CH|Europe/Zurich", + "CI|Africa/Abidjan", + "CK|Pacific/Rarotonga", + "CL|America/Santiago America/Punta_Arenas Pacific/Easter", + "CM|Africa/Lagos Africa/Douala", + "CN|Asia/Shanghai Asia/Urumqi", + "CO|America/Bogota", + "CR|America/Costa_Rica", + "CU|America/Havana", + "CV|Atlantic/Cape_Verde", + "CW|America/Puerto_Rico America/Curacao", + "CX|Asia/Bangkok Indian/Christmas", + "CY|Asia/Nicosia Asia/Famagusta", + "CZ|Europe/Prague", + "DE|Europe/Zurich Europe/Berlin Europe/Busingen", + "DJ|Africa/Nairobi Africa/Djibouti", + "DK|Europe/Berlin Europe/Copenhagen", + "DM|America/Puerto_Rico America/Dominica", + "DO|America/Santo_Domingo", + "DZ|Africa/Algiers", + "EC|America/Guayaquil Pacific/Galapagos", + "EE|Europe/Tallinn", + "EG|Africa/Cairo", + "EH|Africa/El_Aaiun", + "ER|Africa/Nairobi Africa/Asmara", + "ES|Europe/Madrid Africa/Ceuta Atlantic/Canary", + "ET|Africa/Nairobi Africa/Addis_Ababa", + "FI|Europe/Helsinki", + "FJ|Pacific/Fiji", + "FK|Atlantic/Stanley", + "FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei", + "FO|Atlantic/Faroe", + "FR|Europe/Paris", + "GA|Africa/Lagos Africa/Libreville", + "GB|Europe/London", + "GD|America/Puerto_Rico America/Grenada", + "GE|Asia/Tbilisi", + "GF|America/Cayenne", + "GG|Europe/London Europe/Guernsey", + "GH|Africa/Abidjan Africa/Accra", + "GI|Europe/Gibraltar", + "GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule", + "GM|Africa/Abidjan Africa/Banjul", + "GN|Africa/Abidjan Africa/Conakry", + "GP|America/Puerto_Rico America/Guadeloupe", + "GQ|Africa/Lagos Africa/Malabo", + "GR|Europe/Athens", + "GS|Atlantic/South_Georgia", + "GT|America/Guatemala", + "GU|Pacific/Guam", + "GW|Africa/Bissau", + "GY|America/Guyana", + "HK|Asia/Hong_Kong", + "HN|America/Tegucigalpa", + "HR|Europe/Belgrade Europe/Zagreb", + "HT|America/Port-au-Prince", + "HU|Europe/Budapest", + "ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura", + "IE|Europe/Dublin", + "IL|Asia/Jerusalem", + "IM|Europe/London Europe/Isle_of_Man", + "IN|Asia/Kolkata", + "IO|Indian/Chagos", + "IQ|Asia/Baghdad", + "IR|Asia/Tehran", + "IS|Africa/Abidjan Atlantic/Reykjavik", + "IT|Europe/Rome", + "JE|Europe/London Europe/Jersey", + "JM|America/Jamaica", + "JO|Asia/Amman", + "JP|Asia/Tokyo", + "KE|Africa/Nairobi", + "KG|Asia/Bishkek", + "KH|Asia/Bangkok Asia/Phnom_Penh", + "KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati", + "KM|Africa/Nairobi Indian/Comoro", + "KN|America/Puerto_Rico America/St_Kitts", + "KP|Asia/Pyongyang", + "KR|Asia/Seoul", + "KW|Asia/Riyadh Asia/Kuwait", + "KY|America/Panama America/Cayman", + "KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral", + "LA|Asia/Bangkok Asia/Vientiane", + "LB|Asia/Beirut", + "LC|America/Puerto_Rico America/St_Lucia", + "LI|Europe/Zurich Europe/Vaduz", + "LK|Asia/Colombo", + "LR|Africa/Monrovia", + "LS|Africa/Johannesburg Africa/Maseru", + "LT|Europe/Vilnius", + "LU|Europe/Brussels Europe/Luxembourg", + "LV|Europe/Riga", + "LY|Africa/Tripoli", + "MA|Africa/Casablanca", + "MC|Europe/Paris Europe/Monaco", + "MD|Europe/Chisinau", + "ME|Europe/Belgrade Europe/Podgorica", + "MF|America/Puerto_Rico America/Marigot", + "MG|Africa/Nairobi Indian/Antananarivo", + "MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro", + "MK|Europe/Belgrade Europe/Skopje", + "ML|Africa/Abidjan Africa/Bamako", + "MM|Asia/Yangon", + "MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan", + "MO|Asia/Macau", + "MP|Pacific/Guam Pacific/Saipan", + "MQ|America/Martinique", + "MR|Africa/Abidjan Africa/Nouakchott", + "MS|America/Puerto_Rico America/Montserrat", + "MT|Europe/Malta", + "MU|Indian/Mauritius", + "MV|Indian/Maldives", + "MW|Africa/Maputo Africa/Blantyre", + "MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana", + "MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur", + "MZ|Africa/Maputo", + "NA|Africa/Windhoek", + "NC|Pacific/Noumea", + "NE|Africa/Lagos Africa/Niamey", + "NF|Pacific/Norfolk", + "NG|Africa/Lagos", + "NI|America/Managua", + "NL|Europe/Brussels Europe/Amsterdam", + "NO|Europe/Berlin Europe/Oslo", + "NP|Asia/Kathmandu", + "NR|Pacific/Nauru", + "NU|Pacific/Niue", + "NZ|Pacific/Auckland Pacific/Chatham", + "OM|Asia/Dubai Asia/Muscat", + "PA|America/Panama", + "PE|America/Lima", + "PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier", + "PG|Pacific/Port_Moresby Pacific/Bougainville", + "PH|Asia/Manila", + "PK|Asia/Karachi", + "PL|Europe/Warsaw", + "PM|America/Miquelon", + "PN|Pacific/Pitcairn", + "PR|America/Puerto_Rico", + "PS|Asia/Gaza Asia/Hebron", + "PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores", + "PW|Pacific/Palau", + "PY|America/Asuncion", + "QA|Asia/Qatar", + "RE|Asia/Dubai Indian/Reunion", + "RO|Europe/Bucharest", + "RS|Europe/Belgrade", + "RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr", + "RW|Africa/Maputo Africa/Kigali", + "SA|Asia/Riyadh", + "SB|Pacific/Guadalcanal", + "SC|Asia/Dubai Indian/Mahe", + "SD|Africa/Khartoum", + "SE|Europe/Berlin Europe/Stockholm", + "SG|Asia/Singapore", + "SH|Africa/Abidjan Atlantic/St_Helena", + "SI|Europe/Belgrade Europe/Ljubljana", + "SJ|Europe/Berlin Arctic/Longyearbyen", + "SK|Europe/Prague Europe/Bratislava", + "SL|Africa/Abidjan Africa/Freetown", + "SM|Europe/Rome Europe/San_Marino", + "SN|Africa/Abidjan Africa/Dakar", + "SO|Africa/Nairobi Africa/Mogadishu", + "SR|America/Paramaribo", + "SS|Africa/Juba", + "ST|Africa/Sao_Tome", + "SV|America/El_Salvador", + "SX|America/Puerto_Rico America/Lower_Princes", + "SY|Asia/Damascus", + "SZ|Africa/Johannesburg Africa/Mbabane", + "TC|America/Grand_Turk", + "TD|Africa/Ndjamena", + "TF|Asia/Dubai Indian/Maldives Indian/Kerguelen", + "TG|Africa/Abidjan Africa/Lome", + "TH|Asia/Bangkok", + "TJ|Asia/Dushanbe", + "TK|Pacific/Fakaofo", + "TL|Asia/Dili", + "TM|Asia/Ashgabat", + "TN|Africa/Tunis", + "TO|Pacific/Tongatapu", + "TR|Europe/Istanbul", + "TT|America/Puerto_Rico America/Port_of_Spain", + "TV|Pacific/Tarawa Pacific/Funafuti", + "TW|Asia/Taipei", + "TZ|Africa/Nairobi Africa/Dar_es_Salaam", + "UA|Europe/Simferopol Europe/Kyiv", + "UG|Africa/Nairobi Africa/Kampala", + "UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake", + "US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu", + "UY|America/Montevideo", + "UZ|Asia/Samarkand Asia/Tashkent", + "VA|Europe/Rome Europe/Vatican", + "VC|America/Puerto_Rico America/St_Vincent", + "VE|America/Caracas", + "VG|America/Puerto_Rico America/Tortola", + "VI|America/Puerto_Rico America/St_Thomas", + "VN|Asia/Bangkok Asia/Ho_Chi_Minh", + "VU|Pacific/Efate", + "WF|Pacific/Tarawa Pacific/Wallis", + "WS|Pacific/Apia", + "YE|Asia/Riyadh Asia/Aden", + "YT|Africa/Nairobi Indian/Mayotte", + "ZA|Africa/Johannesburg", + "ZM|Africa/Maputo Africa/Lusaka", + "ZW|Africa/Maputo Africa/Harare" + ] +} diff --git a/sdk.d.ts b/sdk.d.ts index 5343a42177..49afc2269e 100644 --- a/sdk.d.ts +++ b/sdk.d.ts @@ -1 +1 @@ -export * from './lib/cjs/Formio'; \ No newline at end of file +export * from './lib/cjs/Formio'; diff --git a/src/CDN.js b/src/CDN.js index 4d6aac72bf..c31cb84d17 100644 --- a/src/CDN.js +++ b/src/CDN.js @@ -8,23 +8,23 @@ class CDN { this.baseUrl = baseUrl || CDN.defaultCDN; this.overrides = overrides; this.libs = { - 'js': '', - 'ace': '1.4.12', - 'bootstrap': '5.3.3', - 'bootstrap4': '4.6.2', - 'bootstrap5': '5.3.3', - 'bootswatch': '5.3.3', + js: '', + ace: '1.4.12', + bootstrap: '5.3.3', + bootstrap4: '4.6.2', + bootstrap5: '5.3.3', + bootswatch: '5.3.3', 'bootstrap-icons': '1.11.1', - 'ckeditor': '19.0.0', - 'dragula': '3.7.3', - 'flatpickr': '4.6.13', + ckeditor: '19.0.0', + dragula: '3.7.3', + flatpickr: '4.6.13', 'font-awesome': '4.7.0', - 'grid': 'latest', + grid: 'latest', 'moment-timezone': 'latest', - 'quill': '2.0.0-dev.3', + quill: '2.0.0-dev.3', 'shortcut-buttons-flatpickr': '0.4.0', - 'uswds': '2.4.8', - 'core': '' + uswds: '2.4.8', + core: '', }; this.updateUrls(); } @@ -80,13 +80,11 @@ class CDN { if (lib in this.overrides) { if (typeof this.overrides[lib] === 'string') { this[lib] = this.buildUrl(this.overrides[lib], lib, this.libs[lib]); - } - else { + } else { const override = this.overrides[lib]; this[lib] = this.buildUrl(override.cdn, override.lib || '', override.version || ''); } - } - else { + } else { this[lib] = this.buildUrl(this.baseUrl, lib, this.libs[lib]); } } diff --git a/src/Element.js b/src/Element.js index f663ae9b44..9e13c7f657 100644 --- a/src/Element.js +++ b/src/Element.js @@ -15,14 +15,17 @@ export default class Element { * The options for this component. * @type {{}} */ - this.options = Object.assign({ - language: 'en', - highlightErrors: true, - componentErrorClass: 'formio-error-wrapper', - componentWarningClass: 'formio-warning-wrapper', - row: '', - namespace: 'formio' - }, options || {}); + this.options = Object.assign( + { + language: 'en', + highlightErrors: true, + componentErrorClass: 'formio-error-wrapper', + componentWarningClass: 'formio-warning-wrapper', + row: '', + namespace: 'formio', + }, + options || {}, + ); /** * The ID of this component. This value is auto-generated when the component is created, but @@ -47,14 +50,15 @@ export default class Element { * An instance of the EventEmitter class to handle the emitting and registration of events. * @type {EventEmitter} */ - this.events = (options && options.events) ? options.events : new EventEmitter(); + this.events = options && options.events ? options.events : new EventEmitter(); this.defaultMask = null; /** * Conditional to show or hide helplinks in editForm * @type {*|boolean} */ - this.helplinks = (this.options.helplinks === 'false') ? false : (this.options.helplinks || 'https://help.form.io'); + this.helplinks = + this.options.helplinks === 'false' ? false : this.options.helplinks || 'https://help.form.io'; } /** @@ -203,8 +207,7 @@ export default class Element { } if ('addEventListener' in obj) { obj.addEventListener(type, func, !!capture); - } - else if ('attachEvent' in obj) { + } else if ('attachEvent' in obj) { obj.attachEvent(`on${type}`, func); } @@ -226,10 +229,10 @@ export default class Element { this.eventHandlers.forEach((handler, index) => { if ( - (handler.id === this.id) - && obj.removeEventListener - && (handler.type === type) - && (!func || handler.func === func) + handler.id === this.id && + obj.removeEventListener && + handler.type === type && + (!func || handler.func === func) ) { obj.removeEventListener(type, handler.func); indexes.push(index); @@ -243,8 +246,13 @@ export default class Element { } removeEventListeners() { - this.eventHandlers.forEach(handler => { - if ((this.id === handler.id) && handler.type && handler.obj && handler.obj.removeEventListener) { + this.eventHandlers.forEach((handler) => { + if ( + this.id === handler.id && + handler.type && + handler.obj && + handler.obj.removeEventListener + ) { handler.obj.removeEventListener(handler.type, handler.func); } }); @@ -255,7 +263,7 @@ export default class Element { if (this.events) { _.each(this.events._events, (events, type) => { _.each(events, (listener) => { - if (listener && (this.id === listener.id) && (includeExternal || listener.internal)) { + if (listener && this.id === listener.id && (includeExternal || listener.internal)) { this.events.off(type, listener); } }); @@ -302,13 +310,11 @@ export default class Element { if (container.firstChild) { try { container.insertBefore(element, container.firstChild); - } - catch (err) { + } catch (err) { console.warn(err); container.appendChild(element); } - } - else { + } else { container.appendChild(element); } } @@ -326,8 +332,7 @@ export default class Element { if (container && container.contains(element)) { try { container.removeChild(element); - } - catch (err) { + } catch (err) { console.warn(err); } } @@ -366,11 +371,9 @@ export default class Element { appendChild(element, child) { if (Array.isArray(child)) { child.forEach((oneChild) => this.appendChild(element, oneChild)); - } - else if (child instanceof HTMLElement || child instanceof Text) { + } else if (child instanceof HTMLElement || child instanceof Text) { element.appendChild(child); - } - else if (child) { + } else if (child) { element.appendChild(this.text(child.toString())); } @@ -383,7 +386,7 @@ export default class Element { * @returns {string} - The placeholder that will exist within the input as they type. */ maskPlaceholder(mask) { - return mask.map((char) => (char instanceof RegExp) ? this.placeholderChar : char).join(''); + return mask.map((char) => (char instanceof RegExp ? this.placeholderChar : char)).join(''); } /** @@ -415,10 +418,9 @@ export default class Element { inputElement: input, mask, placeholderChar: this.placeholderChar, - shadowRoot: this.root ? this.root.shadowRoot : null + shadowRoot: this.root ? this.root.shadowRoot : null, }); - } - catch (e) { + } catch (e) { // Don't pass error up, to prevent form rejection. // Internal bug of vanilla-text-mask on iOS (`selectionEnd`); console.warn(e); @@ -439,7 +441,7 @@ export default class Element { * @returns {string} - The translated text. */ t(text, ...args) { - return this.i18next ? this.i18next.t(text, ...args): text; + return this.i18next ? this.i18next.t(text, ...args) : text; } /** @@ -465,8 +467,7 @@ export default class Element { if (key.indexOf('on') === 0) { // If this is an event, add a listener. this.addEventListener(element, key.substr(2).toLowerCase(), value); - } - else { + } else { // Otherwise it is just an attribute. element.setAttribute(key, value); } @@ -488,7 +489,7 @@ export default class Element { } // Allow templates to intercept. className = ` ${className} `; - return ((` ${element.className} `).replace(/[\n\t\r]/g, ' ').indexOf(className) > -1); + return ` ${element.className} `.replace(/[\n\t\r]/g, ' ').indexOf(className) > -1; } /** @@ -548,24 +549,29 @@ export default class Element { * @returns {*} - The evaluation context. */ evalContext(additional) { - return Object.assign({ - _, - utils: FormioUtils, - util: FormioUtils, - user: Formio.getUser(), - moment, - instance: this, - self: this, - token: Formio.getToken({ - decode: true - }), - options: this.options, - config: this.root && this.root.form && this.root.form.config - ? this.root.form.config - : this.options?.formConfig - ? this.options.formConfig - : {}, - }, additional, _.get(this.root, 'options.evalContext', {})); + return Object.assign( + { + _, + utils: FormioUtils, + util: FormioUtils, + user: Formio.getUser(), + moment, + instance: this, + self: this, + token: Formio.getToken({ + decode: true, + }), + options: this.options, + config: + this.root && this.root.form && this.root.form.config + ? this.root.form.config + : this.options?.formConfig + ? this.options.formConfig + : {}, + }, + additional, + _.get(this.root, 'options.evalContext', {}), + ); } /** @@ -576,14 +582,19 @@ export default class Element { * @returns {XML|string|*|void} - The interpolated string. */ interpolate(string, data, options = {}) { - if (typeof string !== 'function' && (this.component.content || this.component.html) - && !FormioUtils.Evaluator.templateSettings.interpolate.test(string)) { + if ( + typeof string !== 'function' && + (this.component.content || this.component.html) && + !FormioUtils.Evaluator.templateSettings.interpolate.test(string) + ) { string = FormioUtils.translateHTMLTemplate(String(string), (value) => this.t(value)); } if (this.component.filter === string && !this.options.building) { const evalContext = this.evalContext(data); - evalContext.data = _.mapValues(evalContext.data, (val) => _.isString(val) ? encodeURIComponent(val) : val); + evalContext.data = _.mapValues(evalContext.data, (val) => + _.isString(val) ? encodeURIComponent(val) : val, + ); return FormioUtils.interpolate(string, evalContext, options); } return FormioUtils.interpolate(string, this.evalContext(data), options); @@ -608,20 +619,17 @@ export default class Element { */ hook() { const name = arguments[0]; - if ( - this.options && - this.options.hooks && - this.options.hooks[name] - ) { + if (this.options && this.options.hooks && this.options.hooks[name]) { return this.options.hooks[name].apply(this, Array.prototype.slice.call(arguments, 1)); - } - else { + } else { // If this is an async hook instead of a sync. - const fn = (typeof arguments[arguments.length - 1] === 'function') ? arguments[arguments.length - 1] : null; + const fn = + typeof arguments[arguments.length - 1] === 'function' + ? arguments[arguments.length - 1] + : null; if (fn) { return fn(null, arguments[1]); - } - else { + } else { return arguments[1]; } } diff --git a/src/Embed.js b/src/Embed.js index 501ba186b2..538a4e18f4 100644 --- a/src/Embed.js +++ b/src/Embed.js @@ -1,522 +1,565 @@ import CDN from './CDN.js'; export class Formio { - static FormioClass = null; - static baseUrl; - static projectUrl; - static pathType; - static language; - static config = {}; - static cdn; - static modules = []; - static icons = ''; - static license = ''; - static formioReady = new Promise((ready, reject) => { - Formio._formioReady = ready; - Formio._formioReadyReject = reject; - }); - static version = 'FORMIO_VERSION'; - static setLicense(license, norecurse = false) { - Formio.license = license; - if (!norecurse && Formio.FormioClass) { - Formio.FormioClass.setLicense(license); - } + static FormioClass = null; + static baseUrl; + static projectUrl; + static pathType; + static language; + static config = {}; + static cdn; + static modules = []; + static icons = ''; + static license = ''; + static formioReady = new Promise((ready, reject) => { + Formio._formioReady = ready; + Formio._formioReadyReject = reject; + }); + static version = 'FORMIO_VERSION'; + static setLicense(license, norecurse = false) { + Formio.license = license; + if (!norecurse && Formio.FormioClass) { + Formio.FormioClass.setLicense(license); } + } - static setBaseUrl(url, norecurse = false) { - Formio.baseUrl = url; - if (!norecurse && Formio.FormioClass) { - Formio.FormioClass.setBaseUrl(url); - } + static setBaseUrl(url, norecurse = false) { + Formio.baseUrl = url; + if (!norecurse && Formio.FormioClass) { + Formio.FormioClass.setBaseUrl(url); } + } - static setApiUrl(url, norecurse = false) { - Formio.baseUrl = url; - if (!norecurse && Formio.FormioClass) { - Formio.FormioClass.setApiUrl(url); - } + static setApiUrl(url, norecurse = false) { + Formio.baseUrl = url; + if (!norecurse && Formio.FormioClass) { + Formio.FormioClass.setApiUrl(url); } + } - static setProjectUrl(url, norecurse = false) { - Formio.projectUrl = url; - if (!norecurse && Formio.FormioClass) { - Formio.FormioClass.setProjectUrl(url); - } + static setProjectUrl(url, norecurse = false) { + Formio.projectUrl = url; + if (!norecurse && Formio.FormioClass) { + Formio.FormioClass.setProjectUrl(url); } + } - static setAppUrl(url, norecurse = false) { - Formio.projectUrl = url; - if (!norecurse && Formio.FormioClass) { - Formio.FormioClass.setAppUrl(url); - } + static setAppUrl(url, norecurse = false) { + Formio.projectUrl = url; + if (!norecurse && Formio.FormioClass) { + Formio.FormioClass.setAppUrl(url); } + } - static setPathType(type, norecurse = false) { - Formio.pathType = type; - if (!norecurse && Formio.FormioClass) { - Formio.FormioClass.setPathType(type); - } + static setPathType(type, norecurse = false) { + Formio.pathType = type; + if (!norecurse && Formio.FormioClass) { + Formio.FormioClass.setPathType(type); } + } - static debug(...args) { - if (Formio.config.debug) { - console.log(...args); - } + static debug(...args) { + if (Formio.config.debug) { + console.log(...args); } + } - static clearCache() { - if (Formio.FormioClass) { - Formio.FormioClass.clearCache(); - } + static clearCache() { + if (Formio.FormioClass) { + Formio.FormioClass.clearCache(); } + } - static global(prop, flag = '') { - const globalValue = window[prop]; - if (flag && globalValue && !globalValue[flag]) { - return null; - } - Formio.debug(`Getting global ${prop}`, globalValue); - return globalValue; + static global(prop, flag = '') { + const globalValue = window[prop]; + if (flag && globalValue && !globalValue[flag]) { + return null; } - - static use(module) { - if (Formio.FormioClass && Formio.FormioClass.isRenderer) { - Formio.FormioClass.use(module); - } - else { - Formio.modules.push(module); - } + Formio.debug(`Getting global ${prop}`, globalValue); + return globalValue; + } + + static use(module) { + if (Formio.FormioClass && Formio.FormioClass.isRenderer) { + Formio.FormioClass.use(module); + } else { + Formio.modules.push(module); } + } - static createElement(type, attrs, children) { - const element = document.createElement(type); - if (!attrs) { - return element; - } - Object.keys(attrs).forEach(key => { - element.setAttribute(key, attrs[key]); - }); - (children || []).forEach(child => { - element.appendChild(Formio.createElement(child.tag, child.attrs, child.children)); - }); - return element; - } - - static async addScript(wrapper, src, name, flag = '') { - if (!src) { - return Promise.resolve(); - } - if (typeof src !== 'string' && src.length) { - return Promise.all(src.map(ref => Formio.addScript(wrapper, ref))); - } - if (name && Formio.global(name, flag)) { - Formio.debug(`${name} already loaded.`); - return Promise.resolve(Formio.global(name)); - } - Formio.debug('Adding Script', src); - try { - wrapper.appendChild(Formio.createElement('script', { - src - })); - } - catch (err) { - Formio.debug(err); - return Promise.resolve(); - } - if (!name) { - return Promise.resolve(); - } - return new Promise((resolve) => { - Formio.debug(`Waiting to load ${name}`); - const wait = setInterval(() => { - if (Formio.global(name, flag)) { - clearInterval(wait); - Formio.debug(`${name} loaded.`); - resolve(Formio.global(name)); - } - }, 100); - }); - } - - static async addStyles(wrapper, href) { - if (!href) { - return; - } - if (typeof href !== 'string' && href.length) { - href.forEach(ref => Formio.addStyles(wrapper, ref)); - return; - } - Formio.debug('Adding Styles', href); - wrapper.appendChild(Formio.createElement('link', { - rel: 'stylesheet', - href - })); + static createElement(type, attrs, children) { + const element = document.createElement(type); + if (!attrs) { + return element; } + Object.keys(attrs).forEach((key) => { + element.setAttribute(key, attrs[key]); + }); + (children || []).forEach((child) => { + element.appendChild(Formio.createElement(child.tag, child.attrs, child.children)); + }); + return element; + } - static async submitDone(instance, submission) { - Formio.debug('Submision Complete', submission); - if (Formio.config.submitDone) { - Formio.config.submitDone(submission, instance); - } - - const successMessage = (Formio.config.success || '').toString(); - if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) { - instance.element.innerHTML = ``; - } - let returnUrl = Formio.config.redirect; - - // Allow form based configuration for return url. - if ( - !returnUrl && - ( - instance._form && - instance._form.settings && - ( - instance._form.settings.returnUrl || - instance._form.settings.redirect - ) - ) - ) { - Formio.debug('Return url found in form configuration'); - returnUrl = instance._form.settings.returnUrl || instance._form.settings.redirect; - } + static async addScript(wrapper, src, name, flag = '') { + if (!src) { + return Promise.resolve(); + } + if (typeof src !== 'string' && src.length) { + return Promise.all(src.map((ref) => Formio.addScript(wrapper, ref))); + } + if (name && Formio.global(name, flag)) { + Formio.debug(`${name} already loaded.`); + return Promise.resolve(Formio.global(name)); + } + Formio.debug('Adding Script', src); + try { + wrapper.appendChild( + Formio.createElement('script', { + src, + }), + ); + } catch (err) { + Formio.debug(err); + return Promise.resolve(); + } + if (!name) { + return Promise.resolve(); + } + return new Promise((resolve) => { + Formio.debug(`Waiting to load ${name}`); + const wait = setInterval(() => { + if (Formio.global(name, flag)) { + clearInterval(wait); + Formio.debug(`${name} loaded.`); + resolve(Formio.global(name)); + } + }, 100); + }); + } - if (returnUrl) { - const formSrc = instance.formio ? instance.formio.formUrl : ''; - const hasQuery = !!returnUrl.match(/\?/); - const isOrigin = returnUrl.indexOf(location.origin) === 0; - returnUrl += hasQuery ? '&' : '?'; - returnUrl += `sub=${submission._id}`; - if (!isOrigin && formSrc) { - returnUrl += `&form=${encodeURIComponent(formSrc)}`; - } - Formio.debug('Return URL', returnUrl); - window.location.href = returnUrl; - if (isOrigin) { - window.location.reload(); - } - } + static async addStyles(wrapper, href) { + if (!href) { + return; + } + if (typeof href !== 'string' && href.length) { + href.forEach((ref) => Formio.addStyles(wrapper, ref)); + return; + } + Formio.debug('Adding Styles', href); + wrapper.appendChild( + Formio.createElement('link', { + rel: 'stylesheet', + href, + }), + ); + } + + static async submitDone(instance, submission) { + Formio.debug('Submision Complete', submission); + if (Formio.config.submitDone) { + Formio.config.submitDone(submission, instance); } - // Return the full script if the builder is being used. - static formioScript(script, builder) { - builder = builder || Formio.config.includeBuilder; - if (Formio.fullAdded || builder) { - Formio.fullAdded = true; - return script.replace('formio.form', 'formio.full'); - } - return script; + const successMessage = (Formio.config.success || '').toString(); + if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) { + instance.element.innerHTML = ``; + } + let returnUrl = Formio.config.redirect; + + // Allow form based configuration for return url. + if ( + !returnUrl && + instance._form && + instance._form.settings && + (instance._form.settings.returnUrl || instance._form.settings.redirect) + ) { + Formio.debug('Return url found in form configuration'); + returnUrl = instance._form.settings.returnUrl || instance._form.settings.redirect; } - static async addLibrary(libWrapper, lib, name) { - if (!lib) { - return; - } - if (lib.dependencies) { - for (let i = 0; i < lib.dependencies.length; i++) { - const libName = lib.dependencies[i]; - await Formio.addLibrary(libWrapper, Formio.config.libs[libName], libName); - } - } - if (lib.css) { - await Formio.addStyles((lib.global ? document.body : libWrapper), lib.css); - } - if (lib.js) { - const module = await Formio.addScript((lib.global ? document.body : libWrapper), lib.js, lib.use ? name : false); - if (lib.use) { - Formio.debug(`Using ${name}`); - const options = lib.options || {}; - if (!options.license && Formio.license) { - options.license = Formio.license; - } - Formio.use((typeof lib.use === 'function' ? lib.use(module) : module), options); - } - } - if (lib.globalStyle) { - const style = Formio.createElement('style'); - style.type = 'text/css'; - style.innerHTML = lib.globalStyle; - document.body.appendChild(style); - } + if (returnUrl) { + const formSrc = instance.formio ? instance.formio.formUrl : ''; + const hasQuery = !!returnUrl.match(/\?/); + const isOrigin = returnUrl.indexOf(location.origin) === 0; + returnUrl += hasQuery ? '&' : '?'; + returnUrl += `sub=${submission._id}`; + if (!isOrigin && formSrc) { + returnUrl += `&form=${encodeURIComponent(formSrc)}`; + } + Formio.debug('Return URL', returnUrl); + window.location.href = returnUrl; + if (isOrigin) { + window.location.reload(); + } + } + } + + // Return the full script if the builder is being used. + static formioScript(script, builder) { + builder = builder || Formio.config.includeBuilder; + if (Formio.fullAdded || builder) { + Formio.fullAdded = true; + return script.replace('formio.form', 'formio.full'); } + return script; + } - static async addLoader(wrapper) { - wrapper.appendChild(Formio.createElement('div', { - 'class': 'formio-loader' - }, [{ + static async addLibrary(libWrapper, lib, name) { + if (!lib) { + return; + } + if (lib.dependencies) { + for (let i = 0; i < lib.dependencies.length; i++) { + const libName = lib.dependencies[i]; + await Formio.addLibrary(libWrapper, Formio.config.libs[libName], libName); + } + } + if (lib.css) { + await Formio.addStyles(lib.global ? document.body : libWrapper, lib.css); + } + if (lib.js) { + const module = await Formio.addScript( + lib.global ? document.body : libWrapper, + lib.js, + lib.use ? name : false, + ); + if (lib.use) { + Formio.debug(`Using ${name}`); + const options = lib.options || {}; + if (!options.license && Formio.license) { + options.license = Formio.license; + } + Formio.use(typeof lib.use === 'function' ? lib.use(module) : module, options); + } + } + if (lib.globalStyle) { + const style = Formio.createElement('style'); + style.type = 'text/css'; + style.innerHTML = lib.globalStyle; + document.body.appendChild(style); + } + } + + static async addLoader(wrapper) { + wrapper.appendChild( + Formio.createElement( + 'div', + { + class: 'formio-loader', + }, + [ + { tag: 'div', attrs: { - class: 'loader-wrapper' + class: 'loader-wrapper', }, - children: [{ + children: [ + { tag: 'div', attrs: { - class: 'loader text-center' - } - }] - }])); - } - - - static async init(element, options = {}, builder = false) { - Formio.cdn = new CDN(Formio.config.cdn, Formio.config.cdnUrls || {}); - Formio.config.libs = Formio.config.libs || { - uswds: { - dependencies: ['fontawesome'], - js: `${Formio.cdn.uswds}/uswds.min.js`, - css: `${Formio.cdn.uswds}/uswds.min.css`, - use: true - }, - fontawesome: { - // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need - // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page. - css: `https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css`, - globalStyle: `@font-face { + class: 'loader text-center', + }, + }, + ], + }, + ], + ), + ); + } + + static async init(element, options = {}, builder = false) { + Formio.cdn = new CDN(Formio.config.cdn, Formio.config.cdnUrls || {}); + Formio.config.libs = Formio.config.libs || { + uswds: { + dependencies: ['fontawesome'], + js: `${Formio.cdn.uswds}/uswds.min.js`, + css: `${Formio.cdn.uswds}/uswds.min.css`, + use: true, + }, + fontawesome: { + // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need + // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page. + css: `https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css`, + globalStyle: `@font-face { font-family: 'FontAwesome'; src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0'); src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; - }` - }, - bootstrap4: { - dependencies: ['fontawesome'], - css: `${Formio.cdn.bootstrap4}/css/bootstrap.min.css` - }, - bootstrap: { - dependencies: ['bootstrap-icons'], - css: `${Formio.cdn.bootstrap}/css/bootstrap.min.css` - }, - 'bootstrap-icons': { - // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need - // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page. - css: 'https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.min.css', - globalStyle: `@font-face { + }`, + }, + bootstrap4: { + dependencies: ['fontawesome'], + css: `${Formio.cdn.bootstrap4}/css/bootstrap.min.css`, + }, + bootstrap: { + dependencies: ['bootstrap-icons'], + css: `${Formio.cdn.bootstrap}/css/bootstrap.min.css`, + }, + 'bootstrap-icons': { + // Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need + // to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page. + css: 'https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.min.css', + globalStyle: `@font-face { font-display: block; font-family: "bootstrap-icons"; src: url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"), url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff"); - }` - } - }; - // Add all bootswatch templates. - ['cerulean', 'cosmo', 'cyborg', 'darkly', 'flatly', 'journal', 'litera', 'lumen', 'lux', 'materia', 'minty', 'pulse', 'sandstone', 'simplex', 'sketchy', 'slate', 'solar', 'spacelab', 'superhero', 'united', 'yeti'].forEach((template) => { - Formio.config.libs[template] = { - dependencies: ['bootstrap-icons'], - css: `${Formio.cdn.bootswatch}/dist/${template}/bootstrap.min.css` - }; - }); - const id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`; - - // Create a new wrapper and add the element inside of a new wrapper. - let wrapper = Formio.createElement('div', { - 'id': `${id}-wrapper` - }); - element.parentNode.insertBefore(wrapper, element); - - // If we include the libraries, then we will attempt to run this in shadow dom. - const useShadowDom = Formio.config.includeLibs && !Formio.config.noshadow && (typeof wrapper.attachShadow === 'function'); - if (useShadowDom) { - wrapper = wrapper.attachShadow({ - mode: 'open' - }); - options.shadowRoot = wrapper; - } + }`, + }, + }; + // Add all bootswatch templates. + [ + 'cerulean', + 'cosmo', + 'cyborg', + 'darkly', + 'flatly', + 'journal', + 'litera', + 'lumen', + 'lux', + 'materia', + 'minty', + 'pulse', + 'sandstone', + 'simplex', + 'sketchy', + 'slate', + 'solar', + 'spacelab', + 'superhero', + 'united', + 'yeti', + ].forEach((template) => { + Formio.config.libs[template] = { + dependencies: ['bootstrap-icons'], + css: `${Formio.cdn.bootswatch}/dist/${template}/bootstrap.min.css`, + }; + }); + const id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`; - element.parentNode.removeChild(element); - wrapper.appendChild(element); - - // If this is inside of shadow dom, then we need to add the styles and scripts to the shadow dom. - const libWrapper = useShadowDom ? wrapper : document.body; - - // Load the renderer styles. - await Formio.addStyles(libWrapper, Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`); - - // Add a loader. - Formio.addLoader(wrapper); - - const formioSrc = Formio.config.full ? 'formio.full' : 'formio.form'; - const renderer = Formio.config.debug ? formioSrc : `${formioSrc}.min`; - Formio.FormioClass = await Formio.addScript( - libWrapper, - Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/${renderer}.js`, builder), - 'Formio', - builder ? 'isBuilder' : 'isRenderer' - ); - Formio.FormioClass.cdn = Formio.cdn; - Formio.FormioClass.setBaseUrl(options.baseUrl || Formio.baseUrl || Formio.config.base); - Formio.FormioClass.setProjectUrl(options.projectUrl || Formio.projectUrl || Formio.config.project); - Formio.FormioClass.language = Formio.language; - Formio.setLicense(Formio.license || Formio.config.license || false); - Formio.modules.forEach((module) => { - Formio.FormioClass.use(module); - }); - - if (Formio.icons) { - Formio.FormioClass.icons = Formio.icons; - } + // Create a new wrapper and add the element inside of a new wrapper. + let wrapper = Formio.createElement('div', { + id: `${id}-wrapper`, + }); + element.parentNode.insertBefore(wrapper, element); + + // If we include the libraries, then we will attempt to run this in shadow dom. + const useShadowDom = + Formio.config.includeLibs && + !Formio.config.noshadow && + typeof wrapper.attachShadow === 'function'; + if (useShadowDom) { + wrapper = wrapper.attachShadow({ + mode: 'open', + }); + options.shadowRoot = wrapper; + } - if (Formio.pathType) { - Formio.FormioClass.setPathType(Formio.pathType); - } + element.parentNode.removeChild(element); + wrapper.appendChild(element); + + // If this is inside of shadow dom, then we need to add the styles and scripts to the shadow dom. + const libWrapper = useShadowDom ? wrapper : document.body; + + // Load the renderer styles. + await Formio.addStyles( + libWrapper, + Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`, + ); + + // Add a loader. + Formio.addLoader(wrapper); + + const formioSrc = Formio.config.full ? 'formio.full' : 'formio.form'; + const renderer = Formio.config.debug ? formioSrc : `${formioSrc}.min`; + Formio.FormioClass = await Formio.addScript( + libWrapper, + Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/${renderer}.js`, builder), + 'Formio', + builder ? 'isBuilder' : 'isRenderer', + ); + Formio.FormioClass.cdn = Formio.cdn; + Formio.FormioClass.setBaseUrl(options.baseUrl || Formio.baseUrl || Formio.config.base); + Formio.FormioClass.setProjectUrl( + options.projectUrl || Formio.projectUrl || Formio.config.project, + ); + Formio.FormioClass.language = Formio.language; + Formio.setLicense(Formio.license || Formio.config.license || false); + Formio.modules.forEach((module) => { + Formio.FormioClass.use(module); + }); - // Add libraries if they wish to include the libs. - if (Formio.config.template && Formio.config.includeLibs) { - await Formio.addLibrary( - libWrapper, - Formio.config.libs[Formio.config.template], - Formio.config.template - ); - } + if (Formio.icons) { + Formio.FormioClass.icons = Formio.icons; + } - if (!Formio.config.libraries) { - Formio.config.libraries = Formio.config.modules || {}; - } + if (Formio.pathType) { + Formio.FormioClass.setPathType(Formio.pathType); + } - // Adding premium if it is provided via the config. - if (Formio.config.premium) { - Formio.config.libraries.premium = Formio.config.premium; - } + // Add libraries if they wish to include the libs. + if (Formio.config.template && Formio.config.includeLibs) { + await Formio.addLibrary( + libWrapper, + Formio.config.libs[Formio.config.template], + Formio.config.template, + ); + } - // Allow adding dynamic modules. - if (Formio.config.libraries) { - for (const name in Formio.config.libraries) { - const lib = Formio.config.libraries[name]; - lib.use = lib.use || true; - await Formio.addLibrary(libWrapper, lib, name); - } - } + if (!Formio.config.libraries) { + Formio.config.libraries = Formio.config.modules || {}; + } - await Formio.addStyles(libWrapper, Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/${renderer}.css`, builder)); - if (Formio.config.before) { - await Formio.config.before(Formio.FormioClass, element, Formio.config); - } - Formio.FormioClass.license = true; - Formio._formioReady(Formio.FormioClass); - return wrapper; + // Adding premium if it is provided via the config. + if (Formio.config.premium) { + Formio.config.libraries.premium = Formio.config.premium; } - // Called after an instance has been created. - static async afterCreate(instance, wrapper, readyEvent) { - const loader = wrapper.querySelector('.formio-loader'); - if (loader) { - wrapper.removeChild(loader); - } - Formio.FormioClass.events.emit(readyEvent, instance); - if (Formio.config.after) { - Formio.debug('Calling ready callback'); - Formio.config.after(instance, Formio.config); - } - return instance; + // Allow adding dynamic modules. + if (Formio.config.libraries) { + for (const name in Formio.config.libraries) { + const lib = Formio.config.libraries[name]; + lib.use = lib.use || true; + await Formio.addLibrary(libWrapper, lib, name); + } } - // Create a new form. - static async createForm(element, form, options = {}) { - if (Formio.FormioClass) { - return Formio.FormioClass.createForm(element, form, { - ...options, - ...{ noLoader: true } - }); - } - const wrapper = await Formio.init(element, options); - return Formio.FormioClass.createForm(element, form, { - ...options, - ...{ noLoader: true } - }).then((instance) => { - // Set the default submission data. - if (Formio.config.submission) { - Formio.debug('Setting submission', Formio.config.submission); - instance.submission = Formio.config.submission; - } - - // Call the after create method. - Formio.afterCreate(instance, wrapper, 'formEmbedded'); - return instance; - }); - } - - // Create a form builder. - static async builder(element, form, options = {}) { - if (Formio.FormioClass?.builder) { - return Formio.FormioClass.builder(element, form, options); - } - const wrapper = await Formio.init(element, options, true); - return Formio.FormioClass.builder(element, form, options).then((instance) => { - Formio.afterCreate(instance, wrapper, 'builderEmbedded'); - return instance; - }); - } - - // Create a report. - static Report = { - create: async(element, submission, options = {}) => { - if (Formio.FormioClass?.Report) { - return Formio.FormioClass.Report.create(element, submission, options); - } - const wrapper = await Formio.init(element, options, true); - return Formio.FormioClass.Report.create(element, submission, options).then((instance) => { - Formio.afterCreate(instance, wrapper, 'reportEmbedded'); - return instance; - }); - } - }; + await Formio.addStyles( + libWrapper, + Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/${renderer}.css`, builder), + ); + if (Formio.config.before) { + await Formio.config.before(Formio.FormioClass, element, Formio.config); + } + Formio.FormioClass.license = true; + Formio._formioReady(Formio.FormioClass); + return wrapper; + } + + // Called after an instance has been created. + static async afterCreate(instance, wrapper, readyEvent) { + const loader = wrapper.querySelector('.formio-loader'); + if (loader) { + wrapper.removeChild(loader); + } + Formio.FormioClass.events.emit(readyEvent, instance); + if (Formio.config.after) { + Formio.debug('Calling ready callback'); + Formio.config.after(instance, Formio.config); + } + return instance; + } + + // Create a new form. + static async createForm(element, form, options = {}) { + if (Formio.FormioClass) { + return Formio.FormioClass.createForm(element, form, { + ...options, + ...{ noLoader: true }, + }); + } + const wrapper = await Formio.init(element, options); + return Formio.FormioClass.createForm(element, form, { + ...options, + ...{ noLoader: true }, + }).then((instance) => { + // Set the default submission data. + if (Formio.config.submission) { + Formio.debug('Setting submission', Formio.config.submission); + instance.submission = Formio.config.submission; + } + + // Call the after create method. + Formio.afterCreate(instance, wrapper, 'formEmbedded'); + return instance; + }); + } + + // Create a form builder. + static async builder(element, form, options = {}) { + if (Formio.FormioClass?.builder) { + return Formio.FormioClass.builder(element, form, options); + } + const wrapper = await Formio.init(element, options, true); + return Formio.FormioClass.builder(element, form, options).then((instance) => { + Formio.afterCreate(instance, wrapper, 'builderEmbedded'); + return instance; + }); + } + + // Create a report. + static Report = { + create: async (element, submission, options = {}) => { + if (Formio.FormioClass?.Report) { + return Formio.FormioClass.Report.create(element, submission, options); + } + const wrapper = await Formio.init(element, options, true); + return Formio.FormioClass.Report.create(element, submission, options).then((instance) => { + Formio.afterCreate(instance, wrapper, 'reportEmbedded'); + return instance; + }); + }, + }; } CDN.defaultCDN = Formio.version.includes('rc') ? 'https://cdn.test-form.io' : 'https://cdn.form.io'; export class Form { - constructor(element, form, options) { - this.form = form; - this.element = element; - this.options = options || {}; - this.init(); - this.instance = { - proxy: true, - ready: this.ready, - destroy: () => {} - }; - } - - init() { - if (this.instance && !this.instance.proxy) { - this.instance.destroy(); - } - this.element.innerHTML = ''; - this.ready = this.create().then((instance) => { - this.instance = instance; - this.form = instance.form; - return instance; - }); - } + constructor(element, form, options) { + this.form = form; + this.element = element; + this.options = options || {}; + this.init(); + this.instance = { + proxy: true, + ready: this.ready, + destroy: () => {}, + }; + } - create() { - return Formio.createForm(this.element, this.form, this.options); + init() { + if (this.instance && !this.instance.proxy) { + this.instance.destroy(); } + this.element.innerHTML = ''; + this.ready = this.create().then((instance) => { + this.instance = instance; + this.form = instance.form; + return instance; + }); + } - setForm(form) { - this.form = form; - if (this.instance) { - this.instance.setForm(form); - } + create() { + return Formio.createForm(this.element, this.form, this.options); + } + + setForm(form) { + this.form = form; + if (this.instance) { + this.instance.setForm(form); } + } - setDisplay(display) { - if (this.instance.proxy) { - return this.ready; - } - this.form.display = display; - this.instance.destroy(); - this.ready = this.create().then((instance) => { - this.instance = instance; - this.setForm(this.form); - }); - return this.ready; + setDisplay(display) { + if (this.instance.proxy) { + return this.ready; } + this.form.display = display; + this.instance.destroy(); + this.ready = this.create().then((instance) => { + this.instance = instance; + this.setForm(this.form); + }); + return this.ready; + } } export class FormBuilder extends Form { - create() { - return Formio.builder(this.element, this.form, this.options); - } + create() { + return Formio.builder(this.element, this.form, this.options); + } } Formio.Form = Form; diff --git a/src/EventEmitter.js b/src/EventEmitter.js index fea504df48..985c3a20a5 100644 --- a/src/EventEmitter.js +++ b/src/EventEmitter.js @@ -6,12 +6,15 @@ export default class EventEmitter extends EventEmitter3 { super(); const overloadHandler = () => { - console.warn(`There were more than ${loadLimit} events emitted in ${eventsSafeInterval} ms. It might be caused by events' infinite loop`, this.id); + console.warn( + `There were more than ${loadLimit} events emitted in ${eventsSafeInterval} ms. It might be caused by events' infinite loop`, + this.id, + ); }; const dispatch = utils.observeOverload(overloadHandler, { limit: loadLimit, - delay: eventsSafeInterval + delay: eventsSafeInterval, }); this.emit = (...args) => { diff --git a/src/Form.js b/src/Form.js index 3f6f5e7a2a..df6b290329 100644 --- a/src/Form.js +++ b/src/Form.js @@ -10,90 +10,90 @@ export default class Form extends Element { * @typedef {(string | number | boolean | null | JSONArray | JSONObject)} JSON */ -/** - * Represents a JSON array. - * @typedef {Array} JSONArray - */ + /** + * Represents a JSON array. + * @typedef {Array} JSONArray + */ -/** - * Represents a JSON object. - * @typedef {{[key: string]: JSON}} JSONObject - */ + /** + * Represents a JSON object. + * @typedef {{[key: string]: JSON}} JSONObject + */ -/** - * @typedef {object} FormioHooks - * @property {Function} [beforeSubmit] - Called before a submission is made. - * @property {Function} [beforeCancel] - Called before a cancel is made. - * @property {Function} [beforeNext] - Called before the next page is navigated to. - * @property {Function} [beforePrev] - Called before the previous page is navigated to. - * @property {Function} [attachComponent] - Called when a component is attached. - * @property {Function} [setDataValue] - Called when a data value is set. - * @property {Function} [addComponents] - Called when components are added. - * @property {Function} [addComponent] - Called when a component is added. - * @property {Function} [customValidation] - Called when a custom validation is made. - * @property {Function} [attachWebform] - Called when a webform is attached. - */ + /** + * @typedef {object} FormioHooks + * @property {Function} [beforeSubmit] - Called before a submission is made. + * @property {Function} [beforeCancel] - Called before a cancel is made. + * @property {Function} [beforeNext] - Called before the next page is navigated to. + * @property {Function} [beforePrev] - Called before the previous page is navigated to. + * @property {Function} [attachComponent] - Called when a component is attached. + * @property {Function} [setDataValue] - Called when a data value is set. + * @property {Function} [addComponents] - Called when components are added. + * @property {Function} [addComponent] - Called when a component is added. + * @property {Function} [customValidation] - Called when a custom validation is made. + * @property {Function} [attachWebform] - Called when a webform is attached. + */ -/** - * @typedef {object} SanitizeConfig - * @property {string[]} [addAttr] - The html attributes to allow with sanitization. - * @property {string[]} [addTags] - The html tags to allow with sanitization. - * @property {string[]} [allowedAttrs] - The html attributes to allow with sanitization. - * @property {string[]} [allowedTags] - The html tags to allow with sanitization. - * @property {string[]} [allowedUriRegex] - The regex for allowed URIs. - * @property {string[]} [addUriSafeAttr] - The URI attributes to allow with sanitization. - */ + /** + * @typedef {object} SanitizeConfig + * @property {string[]} [addAttr] - The html attributes to allow with sanitization. + * @property {string[]} [addTags] - The html tags to allow with sanitization. + * @property {string[]} [allowedAttrs] - The html attributes to allow with sanitization. + * @property {string[]} [allowedTags] - The html tags to allow with sanitization. + * @property {string[]} [allowedUriRegex] - The regex for allowed URIs. + * @property {string[]} [addUriSafeAttr] - The URI attributes to allow with sanitization. + */ -/** - * @typedef {object} ButtonSettings - * @property {boolean} [showPrevious] - Show the previous button in wizard forms. - * @property {boolean} [showNext] - Show the next button in wizard forms. - * @property {boolean} [showCancel] - Show the cancel button in wizard forms. - * @property {boolean} [showSubmit] - Show the submit button in wizard forms. - */ + /** + * @typedef {object} ButtonSettings + * @property {boolean} [showPrevious] - Show the previous button in wizard forms. + * @property {boolean} [showNext] - Show the next button in wizard forms. + * @property {boolean} [showCancel] - Show the cancel button in wizard forms. + * @property {boolean} [showSubmit] - Show the submit button in wizard forms. + */ -/** - * @typedef {object} FormOptions - * @property {boolean} [saveDraft] - Enable the save draft feature. - * @property {number} [saveDraftThrottle] - The throttle for the save draft feature. - * @property {boolean} [readOnly] - Set this form to readOnly. - * @property {boolean} [noAlerts] - Disable the alerts dialog. - * @property {{[key: string]: string}} [i18n] - The translation file for this rendering. - * @property {string} [template] - Custom logic for creation of elements. - * @property {boolean} [noDefaults] - Exclude default values from the settings. - * @property {any} [fileService] - The file service for this form. - * @property {EventEmitter} [events] - The EventEmitter for this form. - * @property {string} [language] - The language to render this form in. - * @property {{[key: string]: string}} [i18next] - The i18next configuration for this form. - * @property {boolean} [viewAsHtml] - View the form as raw HTML. - * @property {'form' | 'html' | 'flat' | 'builder' | 'pdf'} [renderMode] - The render mode for this form. - * @property {boolean} [highlightErrors] - Highlight any errors on the form. - * @property {string} [componentErrorClass] - The error class for components. - * @property {any} [templates] - The templates for this form. - * @property {string} [iconset] - The iconset for this form. - * @property {import('@formio/core').Component[]} [components] - The components for this form. - * @property {{[key: string]: boolean}} [disabled] - Disabled components for this form. - * @property {boolean} [showHiddenFields] - Show hidden fields. - * @property {{[key: string]: boolean}} [hide] - Hidden components for this form. - * @property {{[key: string]: boolean}} [show] - Components to show for this form. - * @property {Formio} [formio] - The Formio instance for this form. - * @property {string} [decimalSeparator] - The decimal separator for this form. - * @property {string} [thousandsSeparator] - The thousands separator for this form. - * @property {FormioHooks} [hooks] - The hooks for this form. - * @property {boolean} [alwaysDirty] - Always be dirty. - * @property {boolean} [skipDraftRestore] - Skip restoring a draft. - * @property {'form' | 'wizard' | 'pdf'} [display] - The display for this form. - * @property {string} [cdnUrl] - The CDN url for this form. - * @property {boolean} [flatten] - Flatten the form. - * @property {boolean} [sanitize] - Sanitize the form. - * @property {SanitizeConfig} [sanitizeConfig] - The sanitize configuration for this form. - * @property {ButtonSettings} [buttonSettings] - The button settings for this form. - * @property {object} [breadcrumbSettings] - The breadcrumb settings for this form. - * @property {boolean} [allowPrevious] - Allow the previous button (for Wizard forms). - * @property {string[]} [wizardButtonOrder] - The order of the buttons (for Wizard forms). - * @property {boolean} [showCheckboxBackground] - Show the checkbox background. - * @property {number} [zoom] - The zoom for PDF forms. - */ + /** + * @typedef {object} FormOptions + * @property {boolean} [saveDraft] - Enable the save draft feature. + * @property {number} [saveDraftThrottle] - The throttle for the save draft feature. + * @property {boolean} [readOnly] - Set this form to readOnly. + * @property {boolean} [noAlerts] - Disable the alerts dialog. + * @property {{[key: string]: string}} [i18n] - The translation file for this rendering. + * @property {string} [template] - Custom logic for creation of elements. + * @property {boolean} [noDefaults] - Exclude default values from the settings. + * @property {any} [fileService] - The file service for this form. + * @property {EventEmitter} [events] - The EventEmitter for this form. + * @property {string} [language] - The language to render this form in. + * @property {{[key: string]: string}} [i18next] - The i18next configuration for this form. + * @property {boolean} [viewAsHtml] - View the form as raw HTML. + * @property {'form' | 'html' | 'flat' | 'builder' | 'pdf'} [renderMode] - The render mode for this form. + * @property {boolean} [highlightErrors] - Highlight any errors on the form. + * @property {string} [componentErrorClass] - The error class for components. + * @property {any} [templates] - The templates for this form. + * @property {string} [iconset] - The iconset for this form. + * @property {import('@formio/core').Component[]} [components] - The components for this form. + * @property {{[key: string]: boolean}} [disabled] - Disabled components for this form. + * @property {boolean} [showHiddenFields] - Show hidden fields. + * @property {{[key: string]: boolean}} [hide] - Hidden components for this form. + * @property {{[key: string]: boolean}} [show] - Components to show for this form. + * @property {Formio} [formio] - The Formio instance for this form. + * @property {string} [decimalSeparator] - The decimal separator for this form. + * @property {string} [thousandsSeparator] - The thousands separator for this form. + * @property {FormioHooks} [hooks] - The hooks for this form. + * @property {boolean} [alwaysDirty] - Always be dirty. + * @property {boolean} [skipDraftRestore] - Skip restoring a draft. + * @property {'form' | 'wizard' | 'pdf'} [display] - The display for this form. + * @property {string} [cdnUrl] - The CDN url for this form. + * @property {boolean} [flatten] - Flatten the form. + * @property {boolean} [sanitize] - Sanitize the form. + * @property {SanitizeConfig} [sanitizeConfig] - The sanitize configuration for this form. + * @property {ButtonSettings} [buttonSettings] - The button settings for this form. + * @property {object} [breadcrumbSettings] - The breadcrumb settings for this form. + * @property {boolean} [allowPrevious] - Allow the previous button (for Wizard forms). + * @property {string[]} [wizardButtonOrder] - The order of the buttons (for Wizard forms). + * @property {boolean} [showCheckboxBackground] - Show the checkbox background. + * @property {number} [zoom] - The zoom for PDF forms. + */ /** * Creates an easy to use interface for embedding webforms, pdfs, and wizards into your application. @@ -117,8 +117,7 @@ export default class Form extends Element { element = elementOrForm; form = formOrOptions; formOptions = options; - } - else { + } else { element = null; form = elementOrForm; formOptions = formOrOptions || {}; @@ -144,8 +143,7 @@ export default class Form extends Element { delete this.element.component; } this.element = element; - } - else { + } else { this.element = null; } this.options = formOptions; @@ -165,7 +163,7 @@ export default class Form extends Element { element.setAttribute(attr, attrs[attr]); } } - (children || []).forEach(child => { + (children || []).forEach((child) => { element.appendChild(this.createElement(child.tag, child.attrs, child.children)); }); return element; @@ -179,23 +177,30 @@ export default class Form extends Element { if (this.loader) { return; } - this.loader = this.createElement('div', { - 'class': 'formio-loader' - }, [{ - tag: 'div', - attrs: { - class: 'loader-wrapper' + this.loader = this.createElement( + 'div', + { + class: 'formio-loader', }, - children: [{ - tag: 'div', - attrs: { - class: 'loader text-center' - } - }] - }]); + [ + { + tag: 'div', + attrs: { + class: 'loader-wrapper', + }, + children: [ + { + tag: 'div', + attrs: { + class: 'loader text-center', + }, + }, + ], + }, + ], + ); this.element.appendChild(this.loader); - } - else if (this.loader) { + } else if (this.loader) { if (this.element.contains(this.loader)) { this.element.removeChild(this.loader); } @@ -215,9 +220,7 @@ export default class Form extends Element { this.display = display; if (Displays.displays[display]) { return new Displays.displays[display](this.element, this.options); - } - else { - + } else { return new Displays.displays['webform'](this.element, this.options); } } @@ -235,21 +238,21 @@ export default class Form extends Element { return { components: [ { - 'label': 'HTML', - 'tag': 'div', - 'className': 'error error-message alert alert-danger ui red message', - 'attrs': [ + label: 'HTML', + tag: 'div', + className: 'error error-message alert alert-danger ui red message', + attrs: [ { - 'attr': 'role', - 'value': 'alert' - } + attr: 'role', + value: 'alert', + }, ], - 'key': 'errorMessage', - 'type': 'htmlelement', - 'input': false, - 'content': typeof err === 'string' ? err : err.message, - } - ] + key: 'errorMessage', + type: 'htmlelement', + input: false, + content: typeof err === 'string' ? err : err.message, + }, + ], }; } @@ -269,7 +272,7 @@ export default class Form extends Element { const projectUrl = url.substring(0, index - 1); const urlParts = Formio.getUrlParts(projectUrl); // project url doesn't include subdirectories path - if (!urlParts || urlParts.filter(part => !!part).length < 4) { + if (!urlParts || urlParts.filter((part) => !!part).length < 4) { return options; } const baseUrl = `${urlParts[1]}${urlParts[2]}`; @@ -301,40 +304,42 @@ export default class Form extends Element { error = err; }) .then((submission) => { - return formio.loadForm() - // If the form returned an error, show it instead of the form. - .catch(err => { - error = err; - }) - .then((form) => { - // If the submission returned an error, show it instead of the form. - if (error) { - form = this.errorForm(error); - } - this.loading = false; - this.instance = this.instance || this.create(form.display); - - // If we're in builder mode, instance.setUrl is not a function, so just manually set the URL. - if (this.instance.setUrl) { - const options = this.getFormInitOptions(formParam, form); - this.instance.setUrl(formParam, options); - } else { - this.instance.url = formParam; - } - - this.instance.nosubmit = false; - this._form = this.instance.form = form; - if (submission) { - this.instance.submission = submission; - } - if (error) { - throw error; - } - return this.instance; - }); + return ( + formio + .loadForm() + // If the form returned an error, show it instead of the form. + .catch((err) => { + error = err; + }) + .then((form) => { + // If the submission returned an error, show it instead of the form. + if (error) { + form = this.errorForm(error); + } + this.loading = false; + this.instance = this.instance || this.create(form.display); + + // If we're in builder mode, instance.setUrl is not a function, so just manually set the URL. + if (this.instance.setUrl) { + const options = this.getFormInitOptions(formParam, form); + this.instance.setUrl(formParam, options); + } else { + this.instance.url = formParam; + } + + this.instance.nosubmit = false; + this._form = this.instance.form = form; + if (submission) { + this.instance.submission = submission; + } + if (error) { + throw error; + } + return this.instance; + }) + ); }); - } - else { + } else { this.instance = this.instance || this.create(formParam.display); this._form = this.instance.form = formParam; result = this.instance.ready; @@ -371,7 +376,7 @@ export default class Form extends Element { * @returns {Promise} - The form instance that was created after changing the display. */ setDisplay(display) { - if ((this.display === display) && this.instance) { + if (this.display === display && this.instance) { return Promise.resolve(this.instance); } @@ -447,14 +452,15 @@ export default class Form extends Element { } // Add temporary loader. - const template = (this.options && this.options.template) ? this.options.template : 'bootstrap'; + const template = this.options && this.options.template ? this.options.template : 'bootstrap'; const loader = templates[template].loader || templates.bootstrap.loader; this.setContent(this.element, loader.form); - return this.render().then(html => { - this.setContent(this.element, html); - return this.attach(this.element).then(() => this.instance); - }) + return this.render() + .then((html) => { + this.setContent(this.element, html); + return this.attach(this.element).then(() => this.instance); + }) .then((param) => { this.emit('build', param); return param; @@ -465,11 +471,10 @@ export default class Form extends Element { if (!this.instance) { return Promise.reject('Form not ready. Use form.ready promise'); } - return Promise.resolve(this.instance.render()) - .then((param) => { - this.emit('render', param); - return param; - }); + return Promise.resolve(this.instance.render()).then((param) => { + this.emit('render', param); + return param; + }); } attach(element) { @@ -480,11 +485,10 @@ export default class Form extends Element { delete this.element.component; } this.element = element; - return this.instance.attach(this.element) - .then((param) => { - this.emit('attach', param); - return param; - }); + return this.instance.attach(this.element).then((param) => { + this.emit('attach', param); + return param; + }); } teardown() { @@ -508,10 +512,9 @@ Formio.embedForm = (embed) => Form.embed(embed); * Formio.createForm(document.getElementById('formio'), 'https://examples.form.io/example'); */ Formio.createForm = (elementOrForm, formOrOptions, options) => { - return (new Form(elementOrForm, formOrOptions, options)).ready; + return new Form(elementOrForm, formOrOptions, options).ready; }; Formio.Form = Form; - -export { }; +export {}; diff --git a/src/FormBuilder.js b/src/FormBuilder.js index dd7624c8e2..72b0616aae 100644 --- a/src/FormBuilder.js +++ b/src/FormBuilder.js @@ -36,19 +36,21 @@ export default class FormBuilder extends Form { constructor(element, form, options) { form = form || {}; options = options || {}; - super(element, form, Object.assign( - options, - FormBuilder.options, - ((Formio.options && Formio.options.builder) ? Formio.options.builder : {}) - )); + super( + element, + form, + Object.assign( + options, + FormBuilder.options, + Formio.options && Formio.options.builder ? Formio.options.builder : {}, + ), + ); } create(display) { if (Builders.builders[display]) { return new Builders.builders[display](this.element, this.options); - } - else { - + } else { return new Builders.builders['webform'](this.element, this.options); } } @@ -62,7 +64,7 @@ export default class FormBuilder extends Form { * @returns {Promise} - When the form is instance is ready. */ Formio.builder = (element, form, options) => { - return (new FormBuilder(element, form, options)).ready; + return new FormBuilder(element, form, options).ready; }; Formio.FormBuilder = FormBuilder; diff --git a/src/Formio.js b/src/Formio.js index e4d7ff4d97..286854e4ab 100644 --- a/src/Formio.js +++ b/src/Formio.js @@ -5,104 +5,125 @@ import Providers from './providers'; FormioCore.cdn = new CDN(); FormioCore.Providers = Providers; FormioCore.version = 'FORMIO_VERSION'; -CDN.defaultCDN = FormioCore.version.includes('rc') ? 'https://cdn.test-form.io' : 'https://cdn.form.io'; +CDN.defaultCDN = FormioCore.version.includes('rc') + ? 'https://cdn.test-form.io' + : 'https://cdn.form.io'; const isNil = (val) => val === null || val === undefined; -FormioCore.prototype.uploadFile = function(storage, file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, uploadStartCallback, abortCallback, multipartOptions) { +FormioCore.prototype.uploadFile = function ( + storage, + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + uploadStartCallback, + abortCallback, + multipartOptions, +) { const requestArgs = { provider: storage, method: 'upload', file: file, fileName: fileName, - dir: dir + dir: dir, }; fileKey = fileKey || 'file'; - const request = FormioCore.pluginWait('preRequest', requestArgs) - .then(() => { - return FormioCore.pluginGet('fileRequest', requestArgs) - .then((result) => { - if (storage && isNil(result)) { - const Provider = Providers.getProvider('storage', storage); - if (Provider) { - const provider = new Provider(this); - if (uploadStartCallback) { - uploadStartCallback(); - } - return provider.uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback, multipartOptions); - } - else { - throw ('Storage provider not found'); - } + const request = FormioCore.pluginWait('preRequest', requestArgs).then(() => { + return FormioCore.pluginGet('fileRequest', requestArgs).then((result) => { + if (storage && isNil(result)) { + const Provider = Providers.getProvider('storage', storage); + if (Provider) { + const provider = new Provider(this); + if (uploadStartCallback) { + uploadStartCallback(); } - return result || { url: '' }; - }); + return provider.uploadFile( + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + abortCallback, + multipartOptions, + ); + } else { + throw 'Storage provider not found'; + } + } + return result || { url: '' }; }); + }); return FormioCore.pluginAlter('wrapFileRequestPromise', request, requestArgs); }; -FormioCore.prototype.downloadFile = function(file, options) { +FormioCore.prototype.downloadFile = function (file, options) { const requestArgs = { method: 'download', - file: file + file: file, }; - const request = FormioCore.pluginWait('preRequest', requestArgs) - .then(() => { - return FormioCore.pluginGet('fileRequest', requestArgs) - .then((result) => { - if (file.storage && isNil(result)) { - const Provider = Providers.getProvider('storage', file.storage); - if (Provider) { - const provider = new Provider(this); - return provider.downloadFile(file, options); - } - else { - throw ('Storage provider not found'); - } - } - return result || { url: '' }; - }); + const request = FormioCore.pluginWait('preRequest', requestArgs).then(() => { + return FormioCore.pluginGet('fileRequest', requestArgs).then((result) => { + if (file.storage && isNil(result)) { + const Provider = Providers.getProvider('storage', file.storage); + if (Provider) { + const provider = new Provider(this); + return provider.downloadFile(file, options); + } else { + throw 'Storage provider not found'; + } + } + return result || { url: '' }; }); + }); return FormioCore.pluginAlter('wrapFileRequestPromise', request, requestArgs); }; -FormioCore.prototype.deleteFile = function(file, options) { +FormioCore.prototype.deleteFile = function (file, options) { const requestArgs = { method: 'delete', - file: file + file: file, }; - const request = FormioCore.pluginWait('preRequest', requestArgs) - .then(() => { - return FormioCore.pluginGet('fileRequest', requestArgs) - .then((result) => { - if (file.storage && isNil(result)) { - const Provider = Providers.getProvider('storage', file.storage); - if (Provider) { - const provider = new Provider(this); - return provider.deleteFile(file, options); - } - else { - throw ('Storage provider not found'); - } - } - return result || { url: '' }; - }); + const request = FormioCore.pluginWait('preRequest', requestArgs).then(() => { + return FormioCore.pluginGet('fileRequest', requestArgs).then((result) => { + if (file.storage && isNil(result)) { + const Provider = Providers.getProvider('storage', file.storage); + if (Provider) { + const provider = new Provider(this); + return provider.deleteFile(file, options); + } else { + throw 'Storage provider not found'; + } + } + return result || { url: '' }; }); + }); return FormioCore.pluginAlter('wrapFileRequestPromise', request, requestArgs); }; // Esnure we proxy the following methods to the FormioEmbed class. -['setBaseUrl', 'setApiUrl', 'setAppUrl', 'setProjectUrl', 'setPathType', 'setLicense'].forEach((fn) => { - const baseFn = FormioCore[fn]; - FormioCore[fn] = function(arg) { - const retVal = FormioEmbed[fn](arg, true); - return baseFn ? baseFn.call(this, arg) : retVal; - }; -}); +['setBaseUrl', 'setApiUrl', 'setAppUrl', 'setProjectUrl', 'setPathType', 'setLicense'].forEach( + (fn) => { + const baseFn = FormioCore[fn]; + FormioCore[fn] = function (arg) { + const retVal = FormioEmbed[fn](arg, true); + return baseFn ? baseFn.call(this, arg) : retVal; + }; + }, +); // For reverse compatability. FormioCore.Promise = Promise; diff --git a/src/InlineEmbed.js b/src/InlineEmbed.js index 36524dd784..f4e3cb9065 100644 --- a/src/InlineEmbed.js +++ b/src/InlineEmbed.js @@ -4,116 +4,121 @@ import { Formio } from './Embed'; * @param {*} config - Configuration to configure how the inline embed is rendered. */ export function embed(config = {}) { - const scripts = document.getElementsByTagName('script'); - config = Object.assign({}, window.FormioConfig || {}, config); - let thisScript = null; - let i = scripts.length; - const scriptName = config.scriptName || 'formio.embed.'; - while (i--) { - if ( - scripts[i].src && (scripts[i].src.indexOf(scriptName) !== -1) - ) { - thisScript = scripts[i]; - break; - } + const scripts = document.getElementsByTagName('script'); + config = Object.assign({}, window.FormioConfig || {}, config); + let thisScript = null; + let i = scripts.length; + const scriptName = config.scriptName || 'formio.embed.'; + while (i--) { + if (scripts[i].src && scripts[i].src.indexOf(scriptName) !== -1) { + thisScript = scripts[i]; + break; } - if (thisScript) { - const query = {}; - const queryString = thisScript.src.replace(/^[^?]+\??/, ''); - queryString.replace(/\?/g, '&').split('&').forEach((item) => { - query[item.split('=')[0]] = item.split('=')[1] && decodeURIComponent(item.split('=')[1]); - }); + } + if (thisScript) { + const query = {}; + const queryString = thisScript.src.replace(/^[^?]+\??/, ''); + queryString + .replace(/\?/g, '&') + .split('&') + .forEach((item) => { + query[item.split('=')[0]] = item.split('=')[1] && decodeURIComponent(item.split('=')[1]); + }); - let scriptSrc = thisScript.src.replace(/^([^?]+).*/, '$1').split('/'); - scriptSrc.pop(); - let cdnSrc = ''; - if (['js', 'offline'].includes(scriptSrc[scriptSrc.length - 1])) { - scriptSrc.pop(); - scriptSrc = cdnSrc = scriptSrc.join('/'); - scriptSrc += '/js'; - } - else { - scriptSrc = scriptSrc.join('/'); - } - const debug = (query.debug === 'true' || query.debug === '1'); - const renderer = debug ? 'formio.form' : 'formio.form.min'; - Formio.config = Object.assign({ - script: query.script || (`${scriptSrc}/${renderer}.js`), - style: query.styles || (`${scriptSrc}/${renderer}.css`), - cdn: query.cdn || cdnSrc, - class: (query.class || 'formio-form-wrapper'), - src: query.src, - form: null, - submission: null, - project: query.project, - base: query.base || 'https://api.form.io', - submit: query.submit, - includeLibs: (query.libs === 'true' || query.libs === '1'), - noshadow: (query.shadow === 'false' || query.shadow === '0'), - template: query.template || 'bootstrap', - debug: debug, - config: {}, - redirect: (query.return || query.redirect), - embedCSS: (`${scriptSrc}/formio.embed.css`), - success: query.success || 'Thank you for your submission!', - before: null, - after: null - }, config); - if (Formio.config.alter) { - Formio.config.alter(Formio.config); - } - const form = (Formio.config.form || Formio.config.src); - if (form) { - Formio.debug('Embedding Configuration', config); + let scriptSrc = thisScript.src.replace(/^([^?]+).*/, '$1').split('/'); + scriptSrc.pop(); + let cdnSrc = ''; + if (['js', 'offline'].includes(scriptSrc[scriptSrc.length - 1])) { + scriptSrc.pop(); + scriptSrc = cdnSrc = scriptSrc.join('/'); + scriptSrc += '/js'; + } else { + scriptSrc = scriptSrc.join('/'); + } + const debug = query.debug === 'true' || query.debug === '1'; + const renderer = debug ? 'formio.form' : 'formio.form.min'; + Formio.config = Object.assign( + { + script: query.script || `${scriptSrc}/${renderer}.js`, + style: query.styles || `${scriptSrc}/${renderer}.css`, + cdn: query.cdn || cdnSrc, + class: query.class || 'formio-form-wrapper', + src: query.src, + form: null, + submission: null, + project: query.project, + base: query.base || 'https://api.form.io', + submit: query.submit, + includeLibs: query.libs === 'true' || query.libs === '1', + noshadow: query.shadow === 'false' || query.shadow === '0', + template: query.template || 'bootstrap', + debug: debug, + config: {}, + redirect: query.return || query.redirect, + embedCSS: `${scriptSrc}/formio.embed.css`, + success: query.success || 'Thank you for your submission!', + before: null, + after: null, + }, + config, + ); + if (Formio.config.alter) { + Formio.config.alter(Formio.config); + } + const form = Formio.config.form || Formio.config.src; + if (form) { + Formio.debug('Embedding Configuration', config); - // The id for this embedded form. - Formio.config.id = `formio-${Math.random().toString(36).substring(7)}`; - Formio.debug('Creating form element'); - const element = Formio.createElement('div', { - 'id': Formio.config.id, - class: Formio.config.class - }); - // insertAfter doesn't exist, but effect is identical. - thisScript.parentNode.insertBefore(element, thisScript.parentNode.firstElementChild.nextSibling); - Formio.createForm(element, form, Formio.config.config).then((instance) => { - if (Formio.config.submit) { - instance.nosubmit = true; - } + // The id for this embedded form. + Formio.config.id = `formio-${Math.random().toString(36).substring(7)}`; + Formio.debug('Creating form element'); + const element = Formio.createElement('div', { + id: Formio.config.id, + class: Formio.config.class, + }); + // insertAfter doesn't exist, but effect is identical. + thisScript.parentNode.insertBefore( + element, + thisScript.parentNode.firstElementChild.nextSibling, + ); + Formio.createForm(element, form, Formio.config.config).then((instance) => { + if (Formio.config.submit) { + instance.nosubmit = true; + } - // Trigger the submit done event. - instance.on('submitDone', (submission) => Formio.submitDone(instance, submission)); + // Trigger the submit done event. + instance.on('submitDone', (submission) => Formio.submitDone(instance, submission)); - // Configure a redirect. - instance.on('submit', (submission) => { - Formio.debug("on('submit')", submission); - if (Formio.config.submit) { - Formio.debug(`Sending submission to ${Formio.config.submit}`); - const headers = { - 'content-type': 'application/json' - }; - const token = Formio.FormioClass.getToken(); - if (token) { - headers['x-jwt-token'] = token; - } - Formio.FormioClass.fetch(Formio.config.submit, { - body: JSON.stringify(submission), - headers: headers, - method: 'POST', - mode: 'cors', - }) - .then(resp => resp.json()) - .then((submission) => { - Formio.submitDone(instance, submission); - }); - } - }); - }); - } - } - else { - // Show an error if the script cannot be found. - document.write('Could not locate the Embedded form.'); + // Configure a redirect. + instance.on('submit', (submission) => { + Formio.debug("on('submit')", submission); + if (Formio.config.submit) { + Formio.debug(`Sending submission to ${Formio.config.submit}`); + const headers = { + 'content-type': 'application/json', + }; + const token = Formio.FormioClass.getToken(); + if (token) { + headers['x-jwt-token'] = token; + } + Formio.FormioClass.fetch(Formio.config.submit, { + body: JSON.stringify(submission), + headers: headers, + method: 'POST', + mode: 'cors', + }) + .then((resp) => resp.json()) + .then((submission) => { + Formio.submitDone(instance, submission); + }); + } + }); + }); } + } else { + // Show an error if the script cannot be found. + document.write('Could not locate the Embedded form.'); + } } export { Formio }; diff --git a/src/PDF.js b/src/PDF.js index a5e2fd2f5b..e056428617 100644 --- a/src/PDF.js +++ b/src/PDF.js @@ -13,13 +13,23 @@ export default class PDF extends Webform { super.init(); // Handle an iframe submission. - this.on('iframe-submission', (submission) => this.setValue(submission, { - fromIframe: true - }), true); - - this.on('iframe-change', (submission) => this.setValue(submission, { - fromIframe: true - }), true); + this.on( + 'iframe-submission', + (submission) => + this.setValue(submission, { + fromIframe: true, + }), + true, + ); + + this.on( + 'iframe-change', + (submission) => + this.setValue(submission, { + fromIframe: true, + }), + true, + ); this.on('iframe-getIframePositions', (query) => { const iframe = document.getElementById(`iframe-${query.formId}`); @@ -30,10 +40,10 @@ export default class PDF extends Webform { data: { formId: query.formId, iframe: { - top: iframeBoundingClientRect.top + top: iframeBoundingClientRect.top, }, - scrollY: window.scrollY || window.pageYOffset - } + scrollY: window.scrollY || window.pageYOffset, + }, }); } }); @@ -52,13 +62,13 @@ export default class PDF extends Webform { label: 'Submit', key: 'submit', ref: 'button', - hidden: this.isSubmitButtonHidden() + hidden: this.isSubmitButtonHidden(), }); return this.renderTemplate('pdf', { submitButton: this.submitButton.render(), classes: 'formio-form-pdf', - children: this.renderComponents() + children: this.renderComponents(), }); } @@ -101,7 +111,7 @@ export default class PDF extends Webform { buttonMessage: 'single', zoomIn: 'single', zoomOut: 'single', - iframeContainer: 'single' + iframeContainer: 'single', }); this.submitButton.refs = { ...this.refs }; this.submitButton.attachButton(); @@ -117,7 +127,7 @@ export default class PDF extends Webform { src: this.getSrc(), id: `iframe-${this.id}`, seamless: true, - class: 'formio-iframe' + class: 'formio-iframe', }); this.iframeElement.formioContainer = this.component.components; @@ -133,7 +143,7 @@ export default class PDF extends Webform { this.postMessage({ name: 'form', data: this.form }); // Hide the submit button if the associated component is hidden - const submitButton = this.components.find(c => c.element === this.refs.button); + const submitButton = this.components.find((c) => c.element === this.refs.button); if (submitButton) { this.refs.button.classList.toggle('hidden', !submitButton.visible); } @@ -253,7 +263,11 @@ export default class PDF extends Webform { } this.iframeReady.then(() => { - if (this.iframeElement && this.iframeElement.contentWindow && !(message.name === 'form' && this.iframeFormSetUp)) { + if ( + this.iframeElement && + this.iframeElement.contentWindow && + !(message.name === 'form' && this.iframeFormSetUp) + ) { this.iframeElement.contentWindow.postMessage(JSON.stringify(message), '*'); this.iframeFormSetUp = message.name === 'form'; } @@ -299,10 +313,7 @@ export default class PDF extends Webform { isSubmitButtonHidden() { let hidden = false; eachComponent(this.component.components, (component) => { - if ( - (component.type === 'button') && - ((component.action === 'submit') || !component.action) - ) { + if (component.type === 'button' && (component.action === 'submit' || !component.action)) { hidden = component.hidden || false; } }); @@ -319,8 +330,7 @@ if (typeof window !== 'undefined') { let eventData = null; try { eventData = JSON.parse(event.data); - } - catch (ignoreErr) { + } catch (ignoreErr) { eventData = null; } diff --git a/src/PDFBuilder.js b/src/PDFBuilder.js index b6f26ef102..72cd98ec30 100644 --- a/src/PDFBuilder.js +++ b/src/PDFBuilder.js @@ -2,7 +2,7 @@ import _ from 'lodash'; import { Formio } from './Formio'; import WebformBuilder from './WebformBuilder'; -import { fastCloneDeep, getElementRect , getBrowserInfo } from './utils/utils'; +import { fastCloneDeep, getElementRect, getBrowserInfo } from './utils/utils'; import { eachComponent } from './utils/formUtils'; import BuilderUtils from './utils/builder'; import PDF from './PDF'; @@ -13,8 +13,7 @@ export default class PDFBuilder extends WebformBuilder { if (arguments[0] instanceof HTMLElement || arguments[1]) { element = arguments[0]; options = arguments[1]; - } - else { + } else { options = arguments[0]; } @@ -24,8 +23,7 @@ export default class PDFBuilder extends WebformBuilder { if (element) { super(element, options); - } - else { + } else { super(options); } @@ -52,15 +50,15 @@ export default class PDFBuilder extends WebformBuilder { datetime: true, file: true, htmlelement: true, - signrequestsignature: true - } + signrequestsignature: true, + }, }, basic: false, advanced: false, layout: false, data: false, premium: false, - resource: false + resource: false, }; } @@ -84,21 +82,23 @@ export default class PDFBuilder extends WebformBuilder { scrollEnabled: this.sideBarScroll, groupOrder: this.groupOrder, groupId: `builder-sidebar-${this.id}`, - groups: this.groupOrder.map((groupKey) => this.renderTemplate('builderSidebarGroup', { - group: this.groups[groupKey], - groupKey, - groupId: `builder-sidebar-${this.id}`, - subgroups: this.groups[groupKey].subgroups.map((group) => this.renderTemplate('builderSidebarGroup', { - group, - groupKey: group.key, - groupId: `group-container-${groupKey}`, - subgroups: [] - })), - })), + groups: this.groupOrder.map((groupKey) => + this.renderTemplate('builderSidebarGroup', { + group: this.groups[groupKey], + groupKey, + groupId: `builder-sidebar-${this.id}`, + subgroups: this.groups[groupKey].subgroups.map((group) => + this.renderTemplate('builderSidebarGroup', { + group, + groupKey: group.key, + groupId: `group-container-${groupKey}`, + subgroups: [], + }), + ), + }), + ), }), - form: this.hasPDF ? - this.webform.render() : - this.renderTemplate('pdfBuilderUpload', {}) + form: this.hasPDF ? this.webform.render() : this.renderTemplate('pdfBuilderUpload', {}), }); return result; @@ -108,13 +108,13 @@ export default class PDFBuilder extends WebformBuilder { // PDF Upload if (!this.hasPDF) { this.loadRefs(element, { - 'fileDrop': 'single', - 'fileBrowse': 'single', - 'hiddenFileInputElement': 'single', - 'uploadError': 'single', - 'uploadProgress': 'single', - 'uploadProgressWrapper': 'single', - 'dragDropText': 'single' + fileDrop: 'single', + fileBrowse: 'single', + hiddenFileInputElement: 'single', + uploadError: 'single', + uploadProgress: 'single', + uploadProgressWrapper: 'single', + dragDropText: 'single', }); this.addEventListener(this.refs['pdf-upload-button'], 'click', (event) => { event.preventDefault(); @@ -122,23 +122,24 @@ export default class PDFBuilder extends WebformBuilder { // Init the upload error. if (!this.projectUrl) { - this.setUploadError('Form options.projectUrl not set. Please set the "projectUrl" property of the options for this form or use Formio.setProjectUrl(). This setting is necessary to upload a pdf background.'); - } - else { + this.setUploadError( + 'Form options.projectUrl not set. Please set the "projectUrl" property of the options for this form or use Formio.setProjectUrl(). This setting is necessary to upload a pdf background.', + ); + } else { this.setUploadError(); } if (this.refs.fileDrop) { const element = this; - this.addEventListener(this.refs.fileDrop, 'dragover', function(event) { + this.addEventListener(this.refs.fileDrop, 'dragover', function (event) { this.className = 'fileSelector fileDragOver'; event.preventDefault(); }); - this.addEventListener(this.refs.fileDrop, 'dragleave', function(event) { + this.addEventListener(this.refs.fileDrop, 'dragleave', function (event) { this.className = 'fileSelector'; event.preventDefault(); }); - this.addEventListener(this.refs.fileDrop, 'drop', function(event) { + this.addEventListener(this.refs.fileDrop, 'drop', function (event) { this.className = 'fileSelector'; event.preventDefault(); element.upload(event.dataTransfer.files[0]); @@ -153,8 +154,7 @@ export default class PDFBuilder extends WebformBuilder { // a click event on it. if (typeof this.refs.hiddenFileInputElement.trigger === 'function') { this.refs.hiddenFileInputElement.trigger('click'); - } - else { + } else { this.refs.hiddenFileInputElement.click(); } }); @@ -176,7 +176,7 @@ export default class PDFBuilder extends WebformBuilder { this.loadRefs(this.element, { iframeDropzone: 'single', 'sidebar-container': 'multiple', - 'sidebar': 'single', + sidebar: 'single', }); this.afterAttach(); @@ -197,11 +197,15 @@ export default class PDFBuilder extends WebformBuilder { const sidebar = this.refs.sidebar; if (sidebar) { this.addClass(sidebar, 'disabled'); - this.webform.on('iframe-ready', () => { - this.pdfLoaded = true; - this.updateDragAndDrop(); - this.removeClass(sidebar, 'disabled'); - }, true); + this.webform.on( + 'iframe-ready', + () => { + this.pdfLoaded = true; + this.updateDragAndDrop(); + this.removeClass(sidebar, 'disabled'); + }, + true, + ); } } @@ -213,25 +217,35 @@ export default class PDFBuilder extends WebformBuilder { if (this.refs.uploadProgressWrapper) { this.refs.uploadProgressWrapper.style.display = 'inherit'; } - formio.uploadFile('url', file, file, '', (event) => { - if (this.refs.uploadProgress) { - const progress = Math.floor((event.loaded / event.total) * 100); - this.refs.uploadProgress.style.width = `${progress}%`; - if (progress > 98) { - this.refs.uploadProgress.innerHTML = this.t('Converting PDF. Please wait.'); - } - else { - this.refs.uploadProgress.innerHTML = `${this.t('Uploading')} ${progress}%`; - } - } - }, `${this.projectUrl}/upload`, {}, 'file') + formio + .uploadFile( + 'url', + file, + file, + '', + (event) => { + if (this.refs.uploadProgress) { + const progress = Math.floor((event.loaded / event.total) * 100); + this.refs.uploadProgress.style.width = `${progress}%`; + if (progress > 98) { + this.refs.uploadProgress.innerHTML = this.t('Converting PDF. Please wait.'); + } else { + this.refs.uploadProgress.innerHTML = `${this.t('Uploading')} ${progress}%`; + } + } + }, + `${this.projectUrl}/upload`, + {}, + 'file', + ) .then((result) => { let autoConversionComponentsAssigned = false; if (result.data.formfields?.components && result.data.formfields.components.length) { const formInitState = this.webform.form.components[0]?.key === 'submit'; - const wizardInitState = this.webform.form.components[0]?.key === 'page1' && - this.webform.form.components[0]?.components.length === 0; + const wizardInitState = + this.webform.form.components[0]?.key === 'page1' && + this.webform.form.components[0]?.components.length === 0; const emptyFormState = this.webform.form.components.length === 0; if (formInitState || wizardInitState || emptyFormState) { @@ -248,8 +262,11 @@ export default class PDFBuilder extends WebformBuilder { _.set(this.webform.form, 'settings.pdf', { id: result.data.file, - src: result.data.filesServer ? `${result.data.filesServer}${result.data.path}` : `${new URL(this.projectUrl).origin}/pdf-proxy${result.data.path}`, - nonFillableConversionUsed: autoConversionComponentsAssigned && result.data.formfields.nonFillableConversionUsed + src: result.data.filesServer + ? `${result.data.filesServer}${result.data.path}` + : `${new URL(this.projectUrl).origin}/pdf-proxy${result.data.path}`, + nonFillableConversionUsed: + autoConversionComponentsAssigned && result.data.formfields.nonFillableConversionUsed, }); this.emit('pdfUploaded', result.data); @@ -273,7 +290,10 @@ export default class PDFBuilder extends WebformBuilder { this.webform = new PDF(this.element, options); this.webform.on('attach', () => { // If the dropzone exists but has been removed in a PDF rebuild, reinstate it - if (this.refs.iframeDropzone && ![...this.refs.form.children].includes(this.refs.iframeDropzone)) { + if ( + this.refs.iframeDropzone && + ![...this.refs.form.children].includes(this.refs.iframeDropzone) + ) { this.prependTo(this.refs.iframeDropzone, this.refs.form); } }); @@ -296,17 +316,21 @@ export default class PDFBuilder extends WebformBuilder { getParentContainer(component) { let container = []; let originalComponent = null; - eachComponent(this.webform._form.components, (comp, path, components) => { - if (comp.id === component.component.id) { - container = components; - originalComponent = comp; - return true; - } - }, true); + eachComponent( + this.webform._form.components, + (comp, path, components) => { + if (comp.id === component.component.id) { + container = components; + originalComponent = comp; + return true; + } + }, + true, + ); return { formioComponent: component.parent, formioContainer: container, - originalComponent + originalComponent, }; } @@ -314,7 +338,7 @@ export default class PDFBuilder extends WebformBuilder { this.webform.off('iframe-elementUpdate'); this.webform.off('iframe-componentUpdate'); this.webform.off('iframe-componentClick'); - this.webform.on('iframe-elementUpdate', schema => { + this.webform.on('iframe-elementUpdate', (schema) => { const component = this.webform.getComponentById(schema.id); if (component && component.component) { const isNew = true; @@ -323,7 +347,7 @@ export default class PDFBuilder extends WebformBuilder { left: schema.left, top: schema.top, height: schema.height, - width: schema.width + width: schema.width, }; if (!this.options.noNewEdit && !component.component.noNewEdit) { @@ -334,7 +358,7 @@ export default class PDFBuilder extends WebformBuilder { return component; }); - this.webform.on('iframe-componentUpdate', schema => { + this.webform.on('iframe-componentUpdate', (schema) => { const component = this.webform.getComponentById(schema.id); if (component && component.component) { component.component.overlay = { @@ -342,7 +366,7 @@ export default class PDFBuilder extends WebformBuilder { left: schema.overlay.left, top: schema.overlay.top, height: schema.overlay.height, - width: schema.overlay.width + width: schema.overlay.width, }; this.emit('updateComponent', component.component); this.emit('change', this.form); @@ -350,12 +374,16 @@ export default class PDFBuilder extends WebformBuilder { return component; }); - this.webform.on('iframe-componentClick', schema => { - const component = this.webform.getComponentById(schema.id); - if (component) { - this.editComponent(component.component, this.getParentContainer(component)); - } - }, true); + this.webform.on( + 'iframe-componentClick', + (schema) => { + const component = this.webform.getComponentById(schema.id); + if (component) { + this.editComponent(component.component, this.getParentContainer(component)); + } + }, + true, + ); } // 8888888b. 888 d8b @@ -397,8 +425,8 @@ export default class PDFBuilder extends WebformBuilder { if (!this.refs['sidebar-container']) { return; } - this.refs['sidebar-container'].forEach(container => { - [...container.children].forEach(el => { + this.refs['sidebar-container'].forEach((container) => { + [...container.children].forEach((el) => { el.draggable = true; el.setAttribute('draggable', true); this.removeEventListener(el, 'dragstart'); @@ -418,8 +446,10 @@ export default class PDFBuilder extends WebformBuilder { } const iframeRect = getElementRect(this.webform.refs.iframeContainer); - this.refs.iframeDropzone.style.height = iframeRect && iframeRect.height ? `${iframeRect.height}px` : '1000px'; - this.refs.iframeDropzone.style.width = iframeRect && iframeRect.width ? `${iframeRect.width}px` : '100%'; + this.refs.iframeDropzone.style.height = + iframeRect && iframeRect.height ? `${iframeRect.height}px` : '1000px'; + this.refs.iframeDropzone.style.width = + iframeRect && iframeRect.width ? `${iframeRect.width}px` : '100%'; } onDragStart(e) { @@ -455,13 +485,18 @@ export default class PDFBuilder extends WebformBuilder { // If there hasn't been a drop event on the dropzone, we're done if (!this.dropEvent) { // a 'drop' event may not be emited in the chrome browser when using a Mac, therefore an additional check has been added - - if (!this.dropEmitted && (getBrowserInfo().chrome || getBrowserInfo().edge) && globalThis.navigator.userAgentData.platform === 'macOS' && iframeRect.left < e.clientX && iframeRect.top < e.clientY ) { + + if ( + !this.dropEmitted && + (getBrowserInfo().chrome || getBrowserInfo().edge) && + globalThis.navigator.userAgentData.platform === 'macOS' && + iframeRect.left < e.clientX && + iframeRect.top < e.clientY + ) { this.dropEvent = e; this.dropEvent.dataTransfer.effectAllowed = 'all'; this.dropEmitted = true; - } - else { + } else { return; } } @@ -482,16 +517,25 @@ export default class PDFBuilder extends WebformBuilder { this.webform._form.components.push(schema); schema.overlay = { - top: layerY ? (layerY - this.itemOffsetY + HEIGHT) : (e.clientY - iframeRect.top - (this.itemOffsetY - HEIGHT )*2), - left: layerX ? (layerX - this.itemOffsetX) : (e.clientX - iframeRect.left - this.itemOffsetX*2), + top: layerY + ? layerY - this.itemOffsetY + HEIGHT + : e.clientY - iframeRect.top - (this.itemOffsetY - HEIGHT) * 2, + left: layerX ? layerX - this.itemOffsetX : e.clientX - iframeRect.left - this.itemOffsetX * 2, width: WIDTH, - height: HEIGHT + height: HEIGHT, }; this.webform.addComponent(schema, {}, null, true); this.webform.postMessage({ name: 'addElement', data: schema }); - this.emit('addComponent', schema, this.webform, schema.key, this.webform.component.components.length, !this.options.noNewEdit && !schema.noNewEdit); + this.emit( + 'addComponent', + schema, + this.webform, + schema.key, + this.webform.component.components.length, + !this.options.noNewEdit && !schema.noNewEdit, + ); // Delete the stored drop event now that it's been handled this.dropEvent = null; @@ -523,7 +567,7 @@ export default class PDFBuilder extends WebformBuilder { data: { compId: comp.component.id, errorMessage: `API Key is not unique: ${comp.key}`, - } + }, }); } }); diff --git a/src/Webform.js b/src/Webform.js index 9d84f2ee9a..3eb720e141 100644 --- a/src/Webform.js +++ b/src/Webform.js @@ -1,24 +1,24 @@ -import _ from "lodash"; -import moment from "moment"; -import { compareVersions } from "compare-versions"; -import EventEmitter from "./EventEmitter"; -import i18nDefaults from "./i18n"; -import { Formio } from "./Formio"; -import Components from "./components/Components"; -import NestedDataComponent from "./components/_classes/nesteddata/NestedDataComponent"; +import _ from 'lodash'; +import moment from 'moment'; +import { compareVersions } from 'compare-versions'; +import EventEmitter from './EventEmitter'; +import i18nDefaults from './i18n'; +import { Formio } from './Formio'; +import Components from './components/Components'; +import NestedDataComponent from './components/_classes/nesteddata/NestedDataComponent'; import { - fastCloneDeep, - currentTimezone, - unescapeHTML, - getStringFromComponentPath, - convertStringToHTMLElement, - getArrayFromComponentPath, -} from "./utils/utils"; -import { eachComponent } from "./utils/formUtils"; + fastCloneDeep, + currentTimezone, + unescapeHTML, + getStringFromComponentPath, + convertStringToHTMLElement, + getArrayFromComponentPath, +} from './utils/utils'; +import { eachComponent } from './utils/formUtils'; // We need this here because dragula pulls in CustomEvent class that requires global to exist. if (typeof window !== 'undefined' && typeof window.global === 'undefined') { - window.global = window; + window.global = window; } // Initialize the available forms. @@ -33,10 +33,10 @@ Formio.registerComponent = Components.setComponent; * @returns {any} - The icon set. */ function getIconSet(icons) { - if (icons === "fontawesome") { - return "fa"; - } - return icons || ""; + if (icons === 'fontawesome') { + return 'fa'; + } + return icons || ''; } /** @@ -45,20 +45,20 @@ function getIconSet(icons) { * @returns {any} - The options. */ function getOptions(options) { - options = _.defaults(options, { - submitOnEnter: false, - iconset: getIconSet(options && options.icons ? options.icons : Formio.icons), - i18next: null, - saveDraft: false, - alwaysDirty: false, - saveDraftThrottle: 5000, - display: "form", - cdnUrl: Formio.cdn.baseUrl, - }); - if (!options.events) { - options.events = new EventEmitter(); - } - return options; + options = _.defaults(options, { + submitOnEnter: false, + iconset: getIconSet(options && options.icons ? options.icons : Formio.icons), + i18next: null, + saveDraft: false, + alwaysDirty: false, + saveDraftThrottle: 5000, + display: 'form', + cdnUrl: Formio.cdn.baseUrl, + }); + if (!options.events) { + options.events = new EventEmitter(); + } + return options; } /** @@ -153,1657 +153,1624 @@ function getOptions(options) { * @property {number} [zoom] - The zoom for PDF forms. */ export default class Webform extends NestedDataComponent { - /** - * @type {import('Form').FormOptions} - the options for this Webform. - */ - options; - - /** - * Creates a new Form instance. - * @param {HTMLElement | object | import('Form').FormOptions} [elementOrOptions] - The DOM element to render this form within or the options to create this form instance. - * @param {import('Form').FormOptions} [options] - The options to create a new form instance. - */ - constructor(elementOrOptions, options = undefined) { - let element, formOptions; - if (elementOrOptions instanceof HTMLElement || options) { - element = elementOrOptions; - formOptions = options || {}; - } else { - formOptions = elementOrOptions || {}; - } - super(null, getOptions(formOptions)); - - this.setElement(element); - - // Keep track of all available forms globally. - Formio.forms[this.id] = this; - - // Set the base url. - if (this.options.baseUrl) { - Formio.setBaseUrl(this.options.baseUrl); - } - - /** - * The type of this element. - * @type {string} - */ - this.type = "form"; - this._src = ""; - this._loading = false; - this._form = {}; - this.draftEnabled = false; - this.savingDraft = false; - if (this.options.saveDraftThrottle) { - this.triggerSaveDraft = _.throttle( - this.saveDraft.bind(this), - this.options.saveDraftThrottle - ); - } else { - this.triggerSaveDraft = this.saveDraft.bind(this); - } - - /** - * Determines if this form should submit the API on submit. - * @type {boolean} - */ - this.nosubmit = false; - - /** - * Determines if the form has tried to be submitted, error or not. - * @type {boolean} - */ - this.submitted = false; - - /** - * Determines if the form is being submitted at the moment. - * @type {boolean} - */ - this.submitting = false; - - /** - * The Formio instance for this form. - * @type {Formio} - */ - this.formio = null; - - /** - * The loader HTML element. - * @type {HTMLElement} - */ - this.loader = null; - - /** - * The alert HTML element - * @type {HTMLElement} - */ - this.alert = null; - - /** - * Promise that is triggered when the submission is done loading. - * @type {Promise} - */ - this.onSubmission = null; - - /** - * Determines if this submission is explicitly set. - * @type {boolean} - */ - this.submissionSet = false; - - /** - * Promise that executes when the form is ready and rendered. - * @type {Promise} - * @example - * import Webform from '@formio/js/Webform'; - * let form = new Webform(document.getElementById('formio')); - * form.formReady.then(() => { - * console.log('The form is ready!'); - * }); - * form.src = 'https://examples.form.io/example'; - */ - this.formReady = new Promise((resolve, reject) => { - /** - * Called when the formReady state of this form has been resolved. - * @type {Function} - */ - this.formReadyResolve = resolve; - - /** - * Called when this form could not load and is rejected. - * @type {Function} - */ - this.formReadyReject = reject; - }); - - /** - * Promise that executes when the submission is ready and rendered. - * @type {Promise} - * @example - * import Webform from '@formio/js/Webform'; - * let form = new Webform(document.getElementById('formio')); - * form.submissionReady.then(() => { - * console.log('The submission is ready!'); - * }); - * form.src = 'https://examples.form.io/example/submission/234234234234234243'; - */ - this.submissionReady = new Promise((resolve, reject) => { - /** - * Called when the formReady state of this form has been resolved. - * @type {Function} - */ - this.submissionReadyResolve = resolve; - - /** - * Called when this form could not load and is rejected. - * @type {Function} - */ - this.submissionReadyReject = reject; - }); - - this.shortcuts = []; - - // Set language after everything is established. - this.language = this.i18next.language; - - // See if we need to restore the draft from a user. - if (this.options.saveDraft) { - if (this.options.skipDraftRestore) { - this.draftEnabled = true; - this.savingDraft = false; - } - else { - this.formReady.then(() => { - const user = Formio.getUser(); - // Only restore a draft if the submission isn't explicitly set. - if (user && !this.submissionSet) { - this.restoreDraft(user._id); - } - }); - } - } - - this.component.clearOnHide = false; - - // Ensure the root is set to this component. - this.root = this; - this.localRoot = this; - } - - - get language() { - return this.options.language; - } - - get emptyValue() { - return null; - } - - componentContext() { - return this._data; - } - - /** - * Sets the language for this form. - * @param {string} lang - The language to use (e.g. 'en', 'sp', etc.) - */ - set language(lang) { - if (!this.i18next) { - return; - } - this.options.language = lang; - if (this.i18next.language === lang) { - return; - } - this.i18next.changeLanguage(lang, (err) => { - if (err) { - return; - } - this.rebuild(); - this.emit("languageChanged"); - }); - } - - get componentComponents() { - return this.form.components; - } + /** + * @type {import('Form').FormOptions} - the options for this Webform. + */ + options; - get shadowRoot() { - return this.options.shadowRoot; + /** + * Creates a new Form instance. + * @param {HTMLElement | object | import('Form').FormOptions} [elementOrOptions] - The DOM element to render this form within or the options to create this form instance. + * @param {import('Form').FormOptions} [options] - The options to create a new form instance. + */ + constructor(elementOrOptions, options = undefined) { + let element, formOptions; + if (elementOrOptions instanceof HTMLElement || options) { + element = elementOrOptions; + formOptions = options || {}; + } else { + formOptions = elementOrOptions || {}; } + super(null, getOptions(formOptions)); - /** - * Add a language for translations - * @param {string} code - The language code for the language being added. - * @param {object} lang - The language translations. - * @param {boolean} [active] - If this language should be set as the active language. - */ - addLanguage(code, lang, active = false) { - if (this.i18next) { - var translations = _.assign(fastCloneDeep(i18nDefaults.resources.en.translation), lang); - this.i18next.addResourceBundle(code, "translation", translations, true, true); - if (active) { - this.language = code; - } - } - } - - keyboardCatchableElement(element) { - if (element.nodeName === "TEXTAREA") { - return false; - } - - if (element.nodeName === "INPUT") { - return ["text", "email", "password"].indexOf(element.type) === -1; - } - - return true; - } - - executeShortcuts = (event) => { - const { target } = event; - if (!this.keyboardCatchableElement(target)) { - return; - } - - const ctrl = event.ctrlKey || event.metaKey; - const keyCode = event.keyCode; - let char = ""; - - if (65 <= keyCode && keyCode <= 90) { - char = String.fromCharCode(keyCode); - } else if (keyCode === 13) { - char = "Enter"; - } else if (keyCode === 27) { - char = "Esc"; - } - - _.each(this.shortcuts, (shortcut) => { - if (shortcut.ctrl && !ctrl) { - return; - } - - if (shortcut.shortcut === char) { - shortcut.element.click(); - event.preventDefault(); - } - }); - }; - - addShortcut(element, shortcut) { - if (!shortcut || !/^([A-Z]|Enter|Esc)$/i.test(shortcut)) { - return; - } + this.setElement(element); - shortcut = _.capitalize(shortcut); + // Keep track of all available forms globally. + Formio.forms[this.id] = this; - if (shortcut === "Enter" || shortcut === "Esc") { - // Restrict Enter and Esc only for buttons - if (element.tagName !== "BUTTON") { - return; - } - - this.shortcuts.push({ - shortcut, - element, - }); - } else { - this.shortcuts.push({ - ctrl: true, - shortcut, - element, - }); - } - } - - removeShortcut(element, shortcut) { - if (!shortcut || !/^([A-Z]|Enter|Esc)$/i.test(shortcut)) { - return; - } - - _.remove(this.shortcuts, { - shortcut, - element, - }); + // Set the base url. + if (this.options.baseUrl) { + Formio.setBaseUrl(this.options.baseUrl); } /** - * Get the embed source of the form. - * @returns {string} - The source of the form. + * The type of this element. + * @type {string} */ - get src() { - return this._src; + this.type = 'form'; + this._src = ''; + this._loading = false; + this._form = {}; + this.draftEnabled = false; + this.savingDraft = false; + if (this.options.saveDraftThrottle) { + this.triggerSaveDraft = _.throttle(this.saveDraft.bind(this), this.options.saveDraftThrottle); + } else { + this.triggerSaveDraft = this.saveDraft.bind(this); } /** - * Loads the submission if applicable. - * @returns {Promise} - The promise that is triggered when the submission is loaded. + * Determines if this form should submit the API on submit. + * @type {boolean} */ - loadSubmission() { - this.loadingSubmission = true; - if (this.formio.submissionId) { - this.onSubmission = this.formio - .loadSubmission() - .then( - (submission) => this.setSubmission(submission), - (err) => this.submissionReadyReject(err) - ) - .catch((err) => this.submissionReadyReject(err)); - } else { - this.submissionReadyResolve(); - } - return this.submissionReady; - } + this.nosubmit = false; /** - * Set the src of the form renderer. - * @param {string} value - The source value to set. - * @param {any} options - The options to set. - * @returns {Promise} - The promise that is triggered when the form is set. + * Determines if the form has tried to be submitted, error or not. + * @type {boolean} */ - setSrc(value, options) { - if (this.setUrl(value, options)) { - this.nosubmit = false; - return this.formio - .loadForm({ params: { live: 1 } }) - .then((form) => { - const setForm = this.setForm(form); - this.loadSubmission(); - return setForm; - }) - .catch((err) => { - console.warn(err); - this.formReadyReject(err); - }); - } - return Promise.resolve(); - } + this.submitted = false; /** - * Set the Form source, which is typically the Form.io embed URL. - * @param {string} value - The value of the form embed url. - * @example - * import Webform from '@formio/js/Webform'; - * let form = new Webform(document.getElementById('formio')); - * form.formReady.then(() => { - * console.log('The form is formReady!'); - * }); - * form.src = 'https://examples.form.io/example'; + * Determines if the form is being submitted at the moment. + * @type {boolean} */ - set src(value) { - this.setSrc(value); - } + this.submitting = false; /** - * Get the embed source of the form. - * @returns {string} - returns the source of the form. + * The Formio instance for this form. + * @type {Formio} */ - get url() { - return this._src; - } + this.formio = null; /** - * Sets the url of the form renderer. - * @param {string} value - The value to set the url to. - * @param {any} options - The options to set. - * @returns {boolean} - TRUE means the url was set, FALSE otherwise. + * The loader HTML element. + * @type {HTMLElement} */ - setUrl(value, options) { - if (!value || typeof value !== "string" || value === this._src) { - return false; - } - this._src = value; - this.nosubmit = true; - this.formio = this.options.formio = new Formio(value, options); - - if (this.type === "form") { - // Set the options source so this can be passed to other components. - this.options.src = value; - } - return true; - } + this.loader = null; /** - * Set the form source but don't initialize the form and submission from the url. - * @param {string} value - The value of the form embed url. + * The alert HTML element + * @type {HTMLElement} */ - set url(value) { - this.setUrl(value); - } + this.alert = null; /** - * Called when both the form and submission have been loaded. - * @returns {Promise} - The promise to trigger when both form and submission have loaded. + * Promise that is triggered when the submission is done loading. + * @type {Promise} */ - get ready() { - return this.formReady.then(() => { - return super.ready.then(() => { - return this.loadingSubmission ? this.submissionReady : true; - }); - }); - } + this.onSubmission = null; /** - * Returns if this form is loading. - * @returns {boolean} - TRUE means the form is loading, FALSE otherwise. + * Determines if this submission is explicitly set. + * @type {boolean} */ - get loading() { - return this._loading; - } + this.submissionSet = false; /** - * Set the loading state for this form, and also show the loader spinner. - * @param {boolean} loading - If this form should be "loading" or not. + * Promise that executes when the form is ready and rendered. + * @type {Promise} + * @example + * import Webform from '@formio/js/Webform'; + * let form = new Webform(document.getElementById('formio')); + * form.formReady.then(() => { + * console.log('The form is ready!'); + * }); + * form.src = 'https://examples.form.io/example'; */ - set loading(loading) { - if (this._loading !== loading) { - this._loading = loading; - if (!this.loader && loading) { - this.loader = this.ce("div", { - class: "loader-wrapper", - }); - const spinner = this.ce("div", { - class: "loader text-center", - }); - this.loader.appendChild(spinner); - } - - if (this.loader) { - try { - if (loading) { - this.prependTo(this.loader, this.wrapper); - } else { - this.removeChildFrom(this.loader, this.wrapper); - } - } catch (ignoreErr) { - // ingore - } - } - - } - } + this.formReady = new Promise((resolve, reject) => { + /** + * Called when the formReady state of this form has been resolved. + * @type {Function} + */ + this.formReadyResolve = resolve; + + /** + * Called when this form could not load and is rejected. + * @type {Function} + */ + this.formReadyReject = reject; + }); /** - * Sets the JSON schema for the form to be rendered. + * Promise that executes when the submission is ready and rendered. + * @type {Promise} * @example * import Webform from '@formio/js/Webform'; * let form = new Webform(document.getElementById('formio')); - * form.setForm({ - * components: [ - * { - * type: 'textfield', - * key: 'firstName', - * label: 'First Name', - * placeholder: 'Enter your first name.', - * input: true - * }, - * { - * type: 'textfield', - * key: 'lastName', - * label: 'Last Name', - * placeholder: 'Enter your last name', - * input: true - * }, - * { - * type: 'button', - * action: 'submit', - * label: 'Submit', - * theme: 'primary' - * } - * ] + * form.submissionReady.then(() => { + * console.log('The submission is ready!'); * }); - * @param {object} form - The JSON schema of the form @see https://examples.form.io/example for an example JSON schema. - * @param {any} flags - Any flags to apply when setting the form. - * @returns {Promise} - The promise that is triggered when the form is set. + * form.src = 'https://examples.form.io/example/submission/234234234234234243'; */ - setForm(form, flags = {}) { - const isFormAlreadySet = this._form && this._form.components?.length; - try { - // Do not set the form again if it has been already set - if (isFormAlreadySet && JSON.stringify(this._form) === JSON.stringify(form)) { - return Promise.resolve(); - } - - // Create the form. - this._form = flags?.keepAsReference ? form : _.cloneDeep(form); - - if (this.onSetForm) { - this.onSetForm(_.cloneDeep(this._form), form); - } - - if (this.parent?.component?.modalEdit) { - return Promise.resolve(); - } - } catch (err) { - console.warn(err); - // If provided form is not a valid JSON object, do not set it too - return Promise.resolve(); - } - - // Allow the form to provide component overrides. - if (form && form.settings && form.settings.components) { - this.options.components = form.settings.components; - } - - if (form && form.properties) { - this.options.properties = form.properties; - } - // Use the sanitize config from the form settings or the global sanitize config if it is not provided in the options - if (!this.options.sanitizeConfig && !this.builderMode) { - this.options.sanitizeConfig = - _.get(form, "settings.sanitizeConfig") || - _.get(form, "globalSettings.sanitizeConfig"); - } - - if ("schema" in form && compareVersions(form.schema, "1.x") > 0) { - this.ready.then(() => { - this.setAlert( - "alert alert-danger", - "Form schema is for a newer version, please upgrade your renderer. Some functionality may not work." - ); - }); - } + this.submissionReady = new Promise((resolve, reject) => { + /** + * Called when the formReady state of this form has been resolved. + * @type {Function} + */ + this.submissionReadyResolve = resolve; + + /** + * Called when this form could not load and is rejected. + * @type {Function} + */ + this.submissionReadyReject = reject; + }); - // See if they pass a module, and evaluate it if so. - if (form && form.module) { - let formModule = null; - if (typeof form.module === "string") { - try { - formModule = this.evaluate(`return ${form.module}`); - } catch (err) { - console.warn(err); - } - } else { - formModule = form.module; - } - if (formModule) { - Formio.use(formModule); + this.shortcuts = []; - // Since we got here after instantiation, we need to manually apply form options. - if (formModule.options && formModule.options.form) { - this.options = Object.assign(this.options, formModule.options.form); - } - } - } + // Set language after everything is established. + this.language = this.i18next.language; - this.initialized = false; - const rebuild = this.rebuild() || Promise.resolve(); - return rebuild.then(() => { - this.emit("formLoad", form); - this.triggerCaptcha(); - // Make sure to trigger onChange after a render event occurs to speed up form rendering. - setTimeout(() => { - this.onChange(flags); - this.formReadyResolve(); - }, 0); - - return this.formReady; + // See if we need to restore the draft from a user. + if (this.options.saveDraft) { + if (this.options.skipDraftRestore) { + this.draftEnabled = true; + this.savingDraft = false; + } else { + this.formReady.then(() => { + const user = Formio.getUser(); + // Only restore a draft if the submission isn't explicitly set. + if (user && !this.submissionSet) { + this.restoreDraft(user._id); + } }); - } + } + } + + this.component.clearOnHide = false; + + // Ensure the root is set to this component. + this.root = this; + this.localRoot = this; + } + + get language() { + return this.options.language; + } + + get emptyValue() { + return null; + } + + componentContext() { + return this._data; + } + + /** + * Sets the language for this form. + * @param {string} lang - The language to use (e.g. 'en', 'sp', etc.) + */ + set language(lang) { + if (!this.i18next) { + return; + } + this.options.language = lang; + if (this.i18next.language === lang) { + return; + } + this.i18next.changeLanguage(lang, (err) => { + if (err) { + return; + } + this.rebuild(); + this.emit('languageChanged'); + }); + } - /** - * Gets the form object. - * @returns {object} - The form JSON schema. - */ - get form() { - if (!this._form) { - this._form = { - components: [], - }; - } - return this._form; - } + get componentComponents() { + return this.form.components; + } - /** - * Sets the form value. - * @alias setForm - * @param {object} form - The form schema object. - */ - set form(form) { - this.setForm(form); - } + get shadowRoot() { + return this.options.shadowRoot; + } - /** - * Returns the submission object that was set within this form. - * @returns {object} - The submission object. - */ - get submission() { - return this.getValue(); + /** + * Add a language for translations + * @param {string} code - The language code for the language being added. + * @param {object} lang - The language translations. + * @param {boolean} [active] - If this language should be set as the active language. + */ + addLanguage(code, lang, active = false) { + if (this.i18next) { + var translations = _.assign(fastCloneDeep(i18nDefaults.resources.en.translation), lang); + this.i18next.addResourceBundle(code, 'translation', translations, true, true); + if (active) { + this.language = code; + } } + } - /** - * Sets the submission of a form. - * @example - * import Webform from '@formio/js/Webform'; - * let form = new Webform(document.getElementById('formio')); - * form.src = 'https://examples.form.io/example'; - * form.submission = {data: { - * firstName: 'Joe', - * lastName: 'Smith', - * email: 'joe@example.com' - * }}; - * @param {object} submission - The Form.io submission object. - */ - set submission(submission) { - this.setSubmission(submission); + keyboardCatchableElement(element) { + if (element.nodeName === 'TEXTAREA') { + return false; } - /** - * Sets the submission value - * @param {object|null|undefined} submission - The submission to set. - * @param {object|null|undefined} flags - Any flags to apply when setting the submission. - * @returns {void} - */ - onSetSubmission(submission, flags = {}) { - this.submissionSet = true; - this.triggerChange(flags); - this.emit('beforeSetSubmission', submission); - this.setValue(submission, flags); + if (element.nodeName === 'INPUT') { + return ['text', 'email', 'password'].indexOf(element.type) === -1; } - /** - * Sets a submission and returns the promise when it is ready. - * @param {any} submission - The submission to set. - * @param {any} flags - Any flags to apply when setting the submission. - * @returns {Promise} - The promise that is triggered when the submission is set. - */ - setSubmission(submission, flags = {}) { - flags = { - ...flags, - fromSubmission: _.has(flags, "fromSubmission") ? flags.fromSubmission : true, - }; - return (this.onSubmission = this.formReady - .then( - (resolveFlags) => { - if (resolveFlags) { - flags = { - ...flags, - ...resolveFlags, - }; - } - this.onSetSubmission(submission, flags); - return this.submissionReadyResolve(submission); - }, - (err) => this.submissionReadyReject(err) - ) - .catch((err) => this.submissionReadyReject(err))); - } + return true; + } - handleDraftError(errName, errDetails, restoreDraft) { - const errorMessage = _.trim(`${this.t(errName)} ${errDetails || ""}`); - console.warn(errorMessage); - this.emit( - restoreDraft ? "restoreDraftError" : "saveDraftError", - errDetails || errorMessage - ); + executeShortcuts = (event) => { + const { target } = event; + if (!this.keyboardCatchableElement(target)) { + return; } - saveDraft() { - if (!this.draftEnabled || this.parent?.component.reference === false) { - return; - } - if (!this.formio) { - this.handleDraftError("saveDraftInstanceError"); - return; - } - if (!Formio.getUser()) { - this.handleDraftError("saveDraftAuthError"); - return; - } - const draft = fastCloneDeep(this.submission); - draft.state = "draft"; - - if (!this.savingDraft && !this.submitting) { - this.emit("saveDraftBegin"); - this.savingDraft = true; - this.formio - .saveSubmission(draft) - .then((sub) => { - // Set id to submission to avoid creating new draft submission - this.submission._id = sub._id; - this.savingDraft = false; - this.emit("saveDraft", sub); - }) - .catch((err) => { - this.savingDraft = false; - this.handleDraftError("saveDraftError", err); - }); - } - } + const ctrl = event.ctrlKey || event.metaKey; + const keyCode = event.keyCode; + let char = ''; - /** - * Restores a draft submission based on the user who is authenticated. - * @param {string} userId - The user id where we need to restore the draft from. - */ - restoreDraft(userId) { - const formio = this.formio || this.options.formio; - if (!formio) { - this.handleDraftError("restoreDraftInstanceError", null, true); - return; - } - this.savingDraft = true; - formio - .loadSubmissions({ - params: { - state: 'draft', - owner: userId, - sort: '-created' - }, - }) - .then((submissions) => { - if (submissions.length > 0 && !this.options.skipDraftRestore) { - const draft = fastCloneDeep(submissions[0]); - return this.setSubmission(draft).then(() => { - this.draftEnabled = true; - this.savingDraft = false; - this.emit("restoreDraft", draft); - }); - } - // Enable drafts so that we can keep track of changes. - this.draftEnabled = true; - this.savingDraft = false; - this.emit("restoreDraft", null); - }) - .catch((err) => { - this.draftEnabled = true; - this.savingDraft = false; - this.handleDraftError("restoreDraftError", err, true); - }); + if (65 <= keyCode && keyCode <= 90) { + char = String.fromCharCode(keyCode); + } else if (keyCode === 13) { + char = 'Enter'; + } else if (keyCode === 27) { + char = 'Esc'; } - get schema() { - const schema = fastCloneDeep(_.omit(this._form, ["components"])); - schema.components = []; - this.eachComponent((component) => schema.components.push(component.schema)); - return schema; - } + _.each(this.shortcuts, (shortcut) => { + if (shortcut.ctrl && !ctrl) { + return; + } - mergeData(_this, _that) { - _.mergeWith(_this, _that, (thisValue, thatValue) => { - if ( - Array.isArray(thisValue) && - Array.isArray(thatValue) && - thisValue.length !== thatValue.length - ) { - return thatValue; - } - }); + if (shortcut.shortcut === char) { + shortcut.element.click(); + event.preventDefault(); + } + }); + }; + + addShortcut(element, shortcut) { + if (!shortcut || !/^([A-Z]|Enter|Esc)$/i.test(shortcut)) { + return; } - setValue(submission, flags = {}) { - if (!submission || !submission.data) { - submission = { - data: {}, - }; - } - // Metadata needs to be available before setValue - this._submission.metadata = submission.metadata ? _.cloneDeep(submission.metadata) : {}; - this.editing = !!submission._id; - - // Set the timezone in the options if available. - if ( - !this.options.submissionTimezone && - submission.metadata && - submission.metadata.timezone - ) { - this.options.submissionTimezone = submission.metadata.timezone; - } + shortcut = _.capitalize(shortcut); - const changed = super.setValue(submission.data, flags); - if (!flags.sanitize) { - this.mergeData(this.data, submission.data); - } + if (shortcut === 'Enter' || shortcut === 'Esc') { + // Restrict Enter and Esc only for buttons + if (element.tagName !== 'BUTTON') { + return; + } - submission.data = this.data; - this._submission = submission; - return changed; + this.shortcuts.push({ + shortcut, + element, + }); + } else { + this.shortcuts.push({ + ctrl: true, + shortcut, + element, + }); } + } - getValue() { - if (!this._submission.data) { - this._submission.data = {}; - } - if (this.viewOnly) { - return this._submission; - } - const submission = this._submission; - submission.data = this.data; - return this._submission; + removeShortcut(element, shortcut) { + if (!shortcut || !/^([A-Z]|Enter|Esc)$/i.test(shortcut)) { + return; } - /** - * Build the form. - * @returns {Promise} - The promise that is triggered when the form is built. - */ - init() { - if (this.options.submission) { - const submission = _.extend({}, this.options.submission); - this._submission = submission; - this._data = submission.data; - } else { - this._submission = this._submission || { data: {} }; - } - - // Remove any existing components. - if (this.components && this.components.length) { - this.destroyComponents(); - this.components = []; - } - - if (this.component) { - this.component.components = this.form ? this.form.components : []; - } else { - this.component = this.form; - } - this.component.type = "form"; - this.component.input = false; - - this.addComponents(); - this.on( - "submitButton", - (options) => { - this.submit(false, options).catch((e) => { - if (options?.instance) { - options.instance.loading = false; - } - return e !== false && e !== undefined && console.log(e); - }); - }, - true - ); - - this.on( - "checkValidity", - (data) => this.validate(data, { dirty: true, process: "change" }), - true - ); - this.on("requestUrl", (args) => this.submitUrl(args.url, args.headers), true); - this.on("resetForm", () => this.resetValue(), true); - this.on("deleteSubmission", () => this.deleteSubmission(), true); - this.on("refreshData", () => this.updateValue(), true); - - this.executeFormController(); - - return this.formReady; - } - - executeFormController() { - // If no controller value or - // hidden and set to clearOnHide (Don't calculate a value for a hidden field set to clear when hidden) - if ( - !this.form || - !this.form.controller || - ((!this.visible || this.component.hidden) && - this.component.clearOnHide && - !this.rootPristine) - ) { - return false; - } - - this.formReady.then(() => { - this.evaluate(this.form.controller, { - components: this.components, - instance: this, - }); + _.remove(this.shortcuts, { + shortcut, + element, + }); + } + + /** + * Get the embed source of the form. + * @returns {string} - The source of the form. + */ + get src() { + return this._src; + } + + /** + * Loads the submission if applicable. + * @returns {Promise} - The promise that is triggered when the submission is loaded. + */ + loadSubmission() { + this.loadingSubmission = true; + if (this.formio.submissionId) { + this.onSubmission = this.formio + .loadSubmission() + .then( + (submission) => this.setSubmission(submission), + (err) => this.submissionReadyReject(err), + ) + .catch((err) => this.submissionReadyReject(err)); + } else { + this.submissionReadyResolve(); + } + return this.submissionReady; + } + + /** + * Set the src of the form renderer. + * @param {string} value - The source value to set. + * @param {any} options - The options to set. + * @returns {Promise} - The promise that is triggered when the form is set. + */ + setSrc(value, options) { + if (this.setUrl(value, options)) { + this.nosubmit = false; + return this.formio + .loadForm({ params: { live: 1 } }) + .then((form) => { + const setForm = this.setForm(form); + this.loadSubmission(); + return setForm; + }) + .catch((err) => { + console.warn(err); + this.formReadyReject(err); }); } + return Promise.resolve(); + } + + /** + * Set the Form source, which is typically the Form.io embed URL. + * @param {string} value - The value of the form embed url. + * @example + * import Webform from '@formio/js/Webform'; + * let form = new Webform(document.getElementById('formio')); + * form.formReady.then(() => { + * console.log('The form is formReady!'); + * }); + * form.src = 'https://examples.form.io/example'; + */ + set src(value) { + this.setSrc(value); + } + + /** + * Get the embed source of the form. + * @returns {string} - returns the source of the form. + */ + get url() { + return this._src; + } + + /** + * Sets the url of the form renderer. + * @param {string} value - The value to set the url to. + * @param {any} options - The options to set. + * @returns {boolean} - TRUE means the url was set, FALSE otherwise. + */ + setUrl(value, options) { + if (!value || typeof value !== 'string' || value === this._src) { + return false; + } + this._src = value; + this.nosubmit = true; + this.formio = this.options.formio = new Formio(value, options); + + if (this.type === 'form') { + // Set the options source so this can be passed to other components. + this.options.src = value; + } + return true; + } + + /** + * Set the form source but don't initialize the form and submission from the url. + * @param {string} value - The value of the form embed url. + */ + set url(value) { + this.setUrl(value); + } + + /** + * Called when both the form and submission have been loaded. + * @returns {Promise} - The promise to trigger when both form and submission have loaded. + */ + get ready() { + return this.formReady.then(() => { + return super.ready.then(() => { + return this.loadingSubmission ? this.submissionReady : true; + }); + }); + } + + /** + * Returns if this form is loading. + * @returns {boolean} - TRUE means the form is loading, FALSE otherwise. + */ + get loading() { + return this._loading; + } + + /** + * Set the loading state for this form, and also show the loader spinner. + * @param {boolean} loading - If this form should be "loading" or not. + */ + set loading(loading) { + if (this._loading !== loading) { + this._loading = loading; + if (!this.loader && loading) { + this.loader = this.ce('div', { + class: 'loader-wrapper', + }); + const spinner = this.ce('div', { + class: 'loader text-center', + }); + this.loader.appendChild(spinner); + } - /** - * - */ - teardown() { - this.emit("formDelete", this.id); - delete Formio.forms[this.id]; - delete this.executeShortcuts; - delete this.triggerSaveDraft; - super.teardown(); - } - - destroy(all = false) { - this.off("submitButton"); - this.off("checkValidity"); - this.off("requestUrl"); - this.off("resetForm"); - this.off("deleteSubmission"); - this.off("refreshData"); - - return super.destroy(all); - } - - build(element) { - if (element || this.element) { - return this.ready.then(() => { - element = element || this.element; - super.build(element); - }); - } - return this.ready; - } + if (this.loader) { + try { + if (loading) { + this.prependTo(this.loader, this.wrapper); + } else { + this.removeChildFrom(this.loader, this.wrapper); + } + } catch (ignoreErr) { + // ingore + } + } + } + } + + /** + * Sets the JSON schema for the form to be rendered. + * @example + * import Webform from '@formio/js/Webform'; + * let form = new Webform(document.getElementById('formio')); + * form.setForm({ + * components: [ + * { + * type: 'textfield', + * key: 'firstName', + * label: 'First Name', + * placeholder: 'Enter your first name.', + * input: true + * }, + * { + * type: 'textfield', + * key: 'lastName', + * label: 'Last Name', + * placeholder: 'Enter your last name', + * input: true + * }, + * { + * type: 'button', + * action: 'submit', + * label: 'Submit', + * theme: 'primary' + * } + * ] + * }); + * @param {object} form - The JSON schema of the form @see https://examples.form.io/example for an example JSON schema. + * @param {any} flags - Any flags to apply when setting the form. + * @returns {Promise} - The promise that is triggered when the form is set. + */ + setForm(form, flags = {}) { + const isFormAlreadySet = this._form && this._form.components?.length; + try { + // Do not set the form again if it has been already set + if (isFormAlreadySet && JSON.stringify(this._form) === JSON.stringify(form)) { + return Promise.resolve(); + } - getClassName() { - let classes = "formio-form"; - if (this.options.readOnly) { - classes += " formio-read-only"; - } - return classes; - } + // Create the form. + this._form = flags?.keepAsReference ? form : _.cloneDeep(form); - render() { - return super.render( - this.renderTemplate("webform", { - classes: this.getClassName(), - children: this.renderComponents(), - }), - this.builderMode ? "builder" : "form", - true - ); - } + if (this.onSetForm) { + this.onSetForm(_.cloneDeep(this._form), form); + } - redraw() { - // Don't bother if we have not built yet. - if (!this.element) { - return Promise.resolve(); - } - this.clear(); - this.setContent(this.element, this.render()); - return this.attach(this.element); - } - - attach(element) { - this.setElement(element); - this.loadRefs(element, { webform: "single" }); - const childPromise = this.attachComponents(this.refs.webform); - this.addEventListener(document, "keydown", this.executeShortcuts); - this.currentForm = this; - this.hook("attachWebform", element, this); - return childPromise.then(() => { - this.emit("render", this.element); - - return this.setValue(this._submission, { - noUpdateEvent: true, - }); - }); + if (this.parent?.component?.modalEdit) { + return Promise.resolve(); + } + } catch (err) { + console.warn(err); + // If provided form is not a valid JSON object, do not set it too + return Promise.resolve(); } - hasRequiredFields() { - let result = false; - - eachComponent( - this.form.components, - (component) => { - if (component.validate.required) { - result = true; - return true; - } - }, - true - ); - - return result; + // Allow the form to provide component overrides. + if (form && form.settings && form.settings.components) { + this.options.components = form.settings.components; } - resetValue() { - _.each(this.getComponents(), (comp) => comp.resetValue()); - this.setPristine(true); - this.onChange({ resetValue: true }); + if (form && form.properties) { + this.options.properties = form.properties; } - - /** - * Sets a new alert to display in the error dialog of the form. - * @param {string} type - The type of alert to display. "danger", "success", "warning", etc. - * @param {string} message - The message to show in the alert. - * @param {object} options - The options for the alert. - */ - setAlert(type, message, options) { - if (!type && this.submitted) { - if (this.alert) { - if (this.refs.errorRef && this.refs.errorRef.length) { - this.refs.errorRef.forEach((el) => { - this.removeEventListener(el, "click"); - this.removeEventListener(el, "keypress"); - }); - } - this.removeChild(this.alert); - this.alert = null; - } - return; - } - if (this.options.noAlerts) { - if (!message) { - this.emit("error", false); - } - return; - } - if (this.alert) { - try { - if (this.refs.errorRef && this.refs.errorRef.length) { - this.refs.errorRef.forEach((el) => { - this.removeEventListener(el, "click"); - this.removeEventListener(el, "keypress"); - }); - } - this.removeChild(this.alert); - this.alert = null; - } catch (ignoreErr) { - // ignore - } - } - if (message) { - const attrs = { - class: (options && options.classes) || `alert alert-${type}`, - id: `error-list-${this.id}`, - }; - - const templateOptions = { - message: message instanceof HTMLElement ? message.outerHTML : message, - attrs: attrs, - type, - }; - - this.alert = convertStringToHTMLElement( - this.renderTemplate("alert", templateOptions), - `#${attrs.id}` - ); - } - if (!this.alert) { - return; - } - - this.loadRefs(this.alert, { errorRef: "multiple" }); - - if (this.refs.errorRef && this.refs.errorRef.length) { - this.refs.errorRef.forEach((el) => { - this.addEventListener(el, "click", (e) => { - const key = e.currentTarget.dataset.componentKey; - this.focusOnComponent(key); - }); - this.addEventListener(el, "keydown", (e) => { - if (e.keyCode === 13) { - e.preventDefault(); - const key = e.currentTarget.dataset.componentKey; - this.focusOnComponent(key); - } - }); - }); - } - this.prepend(this.alert); + // Use the sanitize config from the form settings or the global sanitize config if it is not provided in the options + if (!this.options.sanitizeConfig && !this.builderMode) { + this.options.sanitizeConfig = + _.get(form, 'settings.sanitizeConfig') || _.get(form, 'globalSettings.sanitizeConfig'); } - /** - * Focus on selected component. - * @param {string} key - The key of selected component. - */ - focusOnComponent(key) { - if (key) { - const component = this.getComponent(key); - if (component) { - component.focus(); - } - } + if ('schema' in form && compareVersions(form.schema, '1.x') > 0) { + this.ready.then(() => { + this.setAlert( + 'alert alert-danger', + 'Form schema is for a newer version, please upgrade your renderer. Some functionality may not work.', + ); + }); } - /** - * Show the errors of this form within the alert dialog. - * @param {object} error - An optional additional error to display along with the component errors. - * @returns {*} - */ - - /** - * - * @param {Array} errors - An array of errors to display. - * @param {boolean} triggerEvent - Whether or not to trigger the error event. - * @returns {void|Array} - The errors that were set. - */ - showErrors(errors, triggerEvent) { - this.loading = false; - if (!Array.isArray(errors)) { - errors = [errors]; - } - - if (Array.isArray(this.errors)) { - errors = _.union(errors, this.errors); + // See if they pass a module, and evaluate it if so. + if (form && form.module) { + let formModule = null; + if (typeof form.module === 'string') { + try { + formModule = this.evaluate(`return ${form.module}`); + } catch (err) { + console.warn(err); } + } else { + formModule = form.module; + } + if (formModule) { + Formio.use(formModule); - errors = errors.concat(this.customErrors).filter((err) => !!err); - - if (!errors.length) { - this.setAlert(false); - return; + // Since we got here after instantiation, we need to manually apply form options. + if (formModule.options && formModule.options.form) { + this.options = Object.assign(this.options, formModule.options.form); } + } + } - // Mark any components as invalid if in a custom message. - errors.forEach((err) => { - const { components = [] } = err; - if (err.component) { - components.push(err.component); - } - - if (err.path) { - components.push(err.path); - } - - components.forEach((path) => { - const originalPath = getStringFromComponentPath(path); - const component = this.getComponent(path, _.identity, originalPath); - - if (err.fromServer) { - if (component.serverErrors) { - component.serverErrors.push(err); - } else { - component.serverErrors = [err]; - } - } - const components = _.compact(Array.isArray(component) ? component : [component]); - - components.forEach((component) => component.setCustomValidity(err.message, true)); - }); - }); + this.initialized = false; + const rebuild = this.rebuild() || Promise.resolve(); + return rebuild.then(() => { + this.emit('formLoad', form); + this.triggerCaptcha(); + // Make sure to trigger onChange after a render event occurs to speed up form rendering. + setTimeout(() => { + this.onChange(flags); + this.formReadyResolve(); + }, 0); - const displayedErrors = []; - if (errors.length) { - errors = _.uniqBy(errors, (error) => [error.message, error.component?.id, error.context?.path].join()); - const createListItem = (message, index) => { - const err = errors[index]; - const messageFromIndex = !_.isUndefined(index) && errors && errors[index]; - const keyOrPath = - messageFromIndex?.formattedKeyOrPath || - messageFromIndex?.path || - messageFromIndex?.context?.path || - (err.context?.component && err.context?.component.key) || - (err.component && err.component.key) || - (err.fromServer && err.path); - - const formattedKeyOrPath = keyOrPath ? getStringFromComponentPath(keyOrPath) : ""; - if (typeof err !== "string" && !err.formattedKeyOrPath) { - err.formattedKeyOrPath = formattedKeyOrPath; - } - - return { - message: unescapeHTML(message), - keyOrPath: formattedKeyOrPath, - }; + return this.formReady; + }); + } + + /** + * Gets the form object. + * @returns {object} - The form JSON schema. + */ + get form() { + if (!this._form) { + this._form = { + components: [], + }; + } + return this._form; + } + + /** + * Sets the form value. + * @alias setForm + * @param {object} form - The form schema object. + */ + set form(form) { + this.setForm(form); + } + + /** + * Returns the submission object that was set within this form. + * @returns {object} - The submission object. + */ + get submission() { + return this.getValue(); + } + + /** + * Sets the submission of a form. + * @example + * import Webform from '@formio/js/Webform'; + * let form = new Webform(document.getElementById('formio')); + * form.src = 'https://examples.form.io/example'; + * form.submission = {data: { + * firstName: 'Joe', + * lastName: 'Smith', + * email: 'joe@example.com' + * }}; + * @param {object} submission - The Form.io submission object. + */ + set submission(submission) { + this.setSubmission(submission); + } + + /** + * Sets the submission value + * @param {object|null|undefined} submission - The submission to set. + * @param {object|null|undefined} flags - Any flags to apply when setting the submission. + * @returns {void} + */ + onSetSubmission(submission, flags = {}) { + this.submissionSet = true; + this.triggerChange(flags); + this.emit('beforeSetSubmission', submission); + this.setValue(submission, flags); + } + + /** + * Sets a submission and returns the promise when it is ready. + * @param {any} submission - The submission to set. + * @param {any} flags - Any flags to apply when setting the submission. + * @returns {Promise} - The promise that is triggered when the submission is set. + */ + setSubmission(submission, flags = {}) { + flags = { + ...flags, + fromSubmission: _.has(flags, 'fromSubmission') ? flags.fromSubmission : true, + }; + return (this.onSubmission = this.formReady + .then( + (resolveFlags) => { + if (resolveFlags) { + flags = { + ...flags, + ...resolveFlags, }; - - errors.forEach(({ message, context, fromServer, component }, index) => { - const text = - !component?.label || context?.hasLabel || fromServer - ? this.t("alertMessage", { message: this.t(message) }) - : this.t("alertMessageWithLabel", { - label: this.t(component?.label), - message: this.t(message), - }); - displayedErrors.push(createListItem(text, index)); - }); - } - - const errorsList = this.renderTemplate("errorsList", { errors: displayedErrors }); - this.root.setAlert("danger", errorsList); - if (triggerEvent) { - this.emit("error", errors); - } - - return errors; + } + this.onSetSubmission(submission, flags); + return this.submissionReadyResolve(submission); + }, + (err) => this.submissionReadyReject(err), + ) + .catch((err) => this.submissionReadyReject(err))); + } + + handleDraftError(errName, errDetails, restoreDraft) { + const errorMessage = _.trim(`${this.t(errName)} ${errDetails || ''}`); + console.warn(errorMessage); + this.emit(restoreDraft ? 'restoreDraftError' : 'saveDraftError', errDetails || errorMessage); + } + + saveDraft() { + if (!this.draftEnabled || this.parent?.component.reference === false) { + return; + } + if (!this.formio) { + this.handleDraftError('saveDraftInstanceError'); + return; + } + if (!Formio.getUser()) { + this.handleDraftError('saveDraftAuthError'); + return; + } + const draft = fastCloneDeep(this.submission); + draft.state = 'draft'; + + if (!this.savingDraft && !this.submitting) { + this.emit('saveDraftBegin'); + this.savingDraft = true; + this.formio + .saveSubmission(draft) + .then((sub) => { + // Set id to submission to avoid creating new draft submission + this.submission._id = sub._id; + this.savingDraft = false; + this.emit('saveDraft', sub); + }) + .catch((err) => { + this.savingDraft = false; + this.handleDraftError('saveDraftError', err); + }); } - - - /** - * Called when the submission has completed, or if the submission needs to be sent to an external library. - * @param {object} submission - The submission object. - * @param {boolean} saved - Whether or not this submission was saved to the server. - * @returns {object} - The submission object. - */ - onSubmit(submission, saved) { - this.loading = false; - this.submitting = false; - this.setPristine(true); - // We want to return the submitted submission and setValue will mutate the submission so cloneDeep it here. - this.setValue(fastCloneDeep(submission), { - noValidate: true, - noCheck: true, + } + + /** + * Restores a draft submission based on the user who is authenticated. + * @param {string} userId - The user id where we need to restore the draft from. + */ + restoreDraft(userId) { + const formio = this.formio || this.options.formio; + if (!formio) { + this.handleDraftError('restoreDraftInstanceError', null, true); + return; + } + this.savingDraft = true; + formio + .loadSubmissions({ + params: { + state: 'draft', + owner: userId, + sort: '-created', + }, + }) + .then((submissions) => { + if (submissions.length > 0 && !this.options.skipDraftRestore) { + const draft = fastCloneDeep(submissions[0]); + return this.setSubmission(draft).then(() => { + this.draftEnabled = true; + this.savingDraft = false; + this.emit('restoreDraft', draft); + }); + } + // Enable drafts so that we can keep track of changes. + this.draftEnabled = true; + this.savingDraft = false; + this.emit('restoreDraft', null); + }) + .catch((err) => { + this.draftEnabled = true; + this.savingDraft = false; + this.handleDraftError('restoreDraftError', err, true); + }); + } + + get schema() { + const schema = fastCloneDeep(_.omit(this._form, ['components'])); + schema.components = []; + this.eachComponent((component) => schema.components.push(component.schema)); + return schema; + } + + mergeData(_this, _that) { + _.mergeWith(_this, _that, (thisValue, thatValue) => { + if ( + Array.isArray(thisValue) && + Array.isArray(thatValue) && + thisValue.length !== thatValue.length + ) { + return thatValue; + } + }); + } + + setValue(submission, flags = {}) { + if (!submission || !submission.data) { + submission = { + data: {}, + }; + } + // Metadata needs to be available before setValue + this._submission.metadata = submission.metadata ? _.cloneDeep(submission.metadata) : {}; + this.editing = !!submission._id; + + // Set the timezone in the options if available. + if (!this.options.submissionTimezone && submission.metadata && submission.metadata.timezone) { + this.options.submissionTimezone = submission.metadata.timezone; + } + + const changed = super.setValue(submission.data, flags); + if (!flags.sanitize) { + this.mergeData(this.data, submission.data); + } + + submission.data = this.data; + this._submission = submission; + return changed; + } + + getValue() { + if (!this._submission.data) { + this._submission.data = {}; + } + if (this.viewOnly) { + return this._submission; + } + const submission = this._submission; + submission.data = this.data; + return this._submission; + } + + /** + * Build the form. + * @returns {Promise} - The promise that is triggered when the form is built. + */ + init() { + if (this.options.submission) { + const submission = _.extend({}, this.options.submission); + this._submission = submission; + this._data = submission.data; + } else { + this._submission = this._submission || { data: {} }; + } + + // Remove any existing components. + if (this.components && this.components.length) { + this.destroyComponents(); + this.components = []; + } + + if (this.component) { + this.component.components = this.form ? this.form.components : []; + } else { + this.component = this.form; + } + this.component.type = 'form'; + this.component.input = false; + + this.addComponents(); + this.on( + 'submitButton', + (options) => { + this.submit(false, options).catch((e) => { + if (options?.instance) { + options.instance.loading = false; + } + return e !== false && e !== undefined && console.log(e); }); - this.setAlert("success", `

${this.t("complete")}

`); - // Cancel triggered saveDraft to prevent overriding the submitted state - if (this.draftEnabled && this.triggerSaveDraft?.cancel) { - this.triggerSaveDraft.cancel(); - } - this.emit("submit", submission, saved); - if (saved) { - this.emit("submitDone", submission); + }, + true, + ); + + this.on( + 'checkValidity', + (data) => this.validate(data, { dirty: true, process: 'change' }), + true, + ); + this.on('requestUrl', (args) => this.submitUrl(args.url, args.headers), true); + this.on('resetForm', () => this.resetValue(), true); + this.on('deleteSubmission', () => this.deleteSubmission(), true); + this.on('refreshData', () => this.updateValue(), true); + + this.executeFormController(); + + return this.formReady; + } + + executeFormController() { + // If no controller value or + // hidden and set to clearOnHide (Don't calculate a value for a hidden field set to clear when hidden) + if ( + !this.form || + !this.form.controller || + ((!this.visible || this.component.hidden) && this.component.clearOnHide && !this.rootPristine) + ) { + return false; + } + + this.formReady.then(() => { + this.evaluate(this.form.controller, { + components: this.components, + instance: this, + }); + }); + } + + /** + * + */ + teardown() { + this.emit('formDelete', this.id); + delete Formio.forms[this.id]; + delete this.executeShortcuts; + delete this.triggerSaveDraft; + super.teardown(); + } + + destroy(all = false) { + this.off('submitButton'); + this.off('checkValidity'); + this.off('requestUrl'); + this.off('resetForm'); + this.off('deleteSubmission'); + this.off('refreshData'); + + return super.destroy(all); + } + + build(element) { + if (element || this.element) { + return this.ready.then(() => { + element = element || this.element; + super.build(element); + }); + } + return this.ready; + } + + getClassName() { + let classes = 'formio-form'; + if (this.options.readOnly) { + classes += ' formio-read-only'; + } + return classes; + } + + render() { + return super.render( + this.renderTemplate('webform', { + classes: this.getClassName(), + children: this.renderComponents(), + }), + this.builderMode ? 'builder' : 'form', + true, + ); + } + + redraw() { + // Don't bother if we have not built yet. + if (!this.element) { + return Promise.resolve(); + } + this.clear(); + this.setContent(this.element, this.render()); + return this.attach(this.element); + } + + attach(element) { + this.setElement(element); + this.loadRefs(element, { webform: 'single' }); + const childPromise = this.attachComponents(this.refs.webform); + this.addEventListener(document, 'keydown', this.executeShortcuts); + this.currentForm = this; + this.hook('attachWebform', element, this); + return childPromise.then(() => { + this.emit('render', this.element); + + return this.setValue(this._submission, { + noUpdateEvent: true, + }); + }); + } + + hasRequiredFields() { + let result = false; + + eachComponent( + this.form.components, + (component) => { + if (component.validate.required) { + result = true; + return true; + } + }, + true, + ); + + return result; + } + + resetValue() { + _.each(this.getComponents(), (comp) => comp.resetValue()); + this.setPristine(true); + this.onChange({ resetValue: true }); + } + + /** + * Sets a new alert to display in the error dialog of the form. + * @param {string} type - The type of alert to display. "danger", "success", "warning", etc. + * @param {string} message - The message to show in the alert. + * @param {object} options - The options for the alert. + */ + setAlert(type, message, options) { + if (!type && this.submitted) { + if (this.alert) { + if (this.refs.errorRef && this.refs.errorRef.length) { + this.refs.errorRef.forEach((el) => { + this.removeEventListener(el, 'click'); + this.removeEventListener(el, 'keypress'); + }); } - return submission; + this.removeChild(this.alert); + this.alert = null; + } + return; } - - normalizeError(error) { - if (error) { - if (typeof error === "object" && "details" in error) { - error = error.details; - } - - if (typeof error === "string") { - error = { message: error }; - } - } - - return error; + if (this.options.noAlerts) { + if (!message) { + this.emit('error', false); + } + return; } - - /** - * Called when an error occurs during the submission. - * @param {object} error - The error that occured. - * @returns {Array} errors - All errors. - */ - onSubmissionError(error) { - error = this.normalizeError(error); - - this.submitting = false; - this.setPristine(false); - this.emit("submitError", error || this.errors); - - // Allow for silent cancellations (no error message, no submit button error state) - if (error && error.silent) { - this.emit("change", { isValid: true }, { silent: true }); - return false; + if (this.alert) { + try { + if (this.refs.errorRef && this.refs.errorRef.length) { + this.refs.errorRef.forEach((el) => { + this.removeEventListener(el, 'click'); + this.removeEventListener(el, 'keypress'); + }); } + this.removeChild(this.alert); + this.alert = null; + } catch (ignoreErr) { + // ignore + } + } + if (message) { + const attrs = { + class: (options && options.classes) || `alert alert-${type}`, + id: `error-list-${this.id}`, + }; + + const templateOptions = { + message: message instanceof HTMLElement ? message.outerHTML : message, + attrs: attrs, + type, + }; + + this.alert = convertStringToHTMLElement( + this.renderTemplate('alert', templateOptions), + `#${attrs.id}`, + ); + } + if (!this.alert) { + return; + } + + this.loadRefs(this.alert, { errorRef: 'multiple' }); + + if (this.refs.errorRef && this.refs.errorRef.length) { + this.refs.errorRef.forEach((el) => { + this.addEventListener(el, 'click', (e) => { + const key = e.currentTarget.dataset.componentKey; + this.focusOnComponent(key); + }); + this.addEventListener(el, 'keydown', (e) => { + if (e.keyCode === 13) { + e.preventDefault(); + const key = e.currentTarget.dataset.componentKey; + this.focusOnComponent(key); + } + }); + }); + } + this.prepend(this.alert); + } + + /** + * Focus on selected component. + * @param {string} key - The key of selected component. + */ + focusOnComponent(key) { + if (key) { + const component = this.getComponent(key); + if (component) { + component.focus(); + } + } + } + + /** + * Show the errors of this form within the alert dialog. + * @param {object} error - An optional additional error to display along with the component errors. + * @returns {*} + */ + + /** + * + * @param {Array} errors - An array of errors to display. + * @param {boolean} triggerEvent - Whether or not to trigger the error event. + * @returns {void|Array} - The errors that were set. + */ + showErrors(errors, triggerEvent) { + this.loading = false; + if (!Array.isArray(errors)) { + errors = [errors]; + } + + if (Array.isArray(this.errors)) { + errors = _.union(errors, this.errors); + } + + errors = errors.concat(this.customErrors).filter((err) => !!err); + + if (!errors.length) { + this.setAlert(false); + return; + } + + // Mark any components as invalid if in a custom message. + errors.forEach((err) => { + const { components = [] } = err; + if (err.component) { + components.push(err.component); + } + + if (err.path) { + components.push(err.path); + } + + components.forEach((path) => { + const originalPath = getStringFromComponentPath(path); + const component = this.getComponent(path, _.identity, originalPath); + + if (err.fromServer) { + if (component.serverErrors) { + component.serverErrors.push(err); + } else { + component.serverErrors = [err]; + } + } + const components = _.compact(Array.isArray(component) ? component : [component]); + + components.forEach((component) => component.setCustomValidity(err.message, true)); + }); + }); - const errors = this.showErrors(error, true); + const displayedErrors = []; + if (errors.length) { + errors = _.uniqBy(errors, (error) => + [error.message, error.component?.id, error.context?.path].join(), + ); + const createListItem = (message, index) => { + const err = errors[index]; + const messageFromIndex = !_.isUndefined(index) && errors && errors[index]; + const keyOrPath = + messageFromIndex?.formattedKeyOrPath || + messageFromIndex?.path || + messageFromIndex?.context?.path || + (err.context?.component && err.context?.component.key) || + (err.component && err.component.key) || + (err.fromServer && err.path); + + const formattedKeyOrPath = keyOrPath ? getStringFromComponentPath(keyOrPath) : ''; + if (typeof err !== 'string' && !err.formattedKeyOrPath) { + err.formattedKeyOrPath = formattedKeyOrPath; + } + + return { + message: unescapeHTML(message), + keyOrPath: formattedKeyOrPath, + }; + }; + + errors.forEach(({ message, context, fromServer, component }, index) => { + const text = + !component?.label || context?.hasLabel || fromServer + ? this.t('alertMessage', { message: this.t(message) }) + : this.t('alertMessageWithLabel', { + label: this.t(component?.label), + message: this.t(message), + }); + displayedErrors.push(createListItem(text, index)); + }); + } + + const errorsList = this.renderTemplate('errorsList', { errors: displayedErrors }); + this.root.setAlert('danger', errorsList); + if (triggerEvent) { + this.emit('error', errors); + } + + return errors; + } + + /** + * Called when the submission has completed, or if the submission needs to be sent to an external library. + * @param {object} submission - The submission object. + * @param {boolean} saved - Whether or not this submission was saved to the server. + * @returns {object} - The submission object. + */ + onSubmit(submission, saved) { + this.loading = false; + this.submitting = false; + this.setPristine(true); + // We want to return the submitted submission and setValue will mutate the submission so cloneDeep it here. + this.setValue(fastCloneDeep(submission), { + noValidate: true, + noCheck: true, + }); + this.setAlert('success', `

${this.t('complete')}

`); + // Cancel triggered saveDraft to prevent overriding the submitted state + if (this.draftEnabled && this.triggerSaveDraft?.cancel) { + this.triggerSaveDraft.cancel(); + } + this.emit('submit', submission, saved); + if (saved) { + this.emit('submitDone', submission); + } + return submission; + } + + normalizeError(error) { + if (error) { + if (typeof error === 'object' && 'details' in error) { + error = error.details; + } + + if (typeof error === 'string') { + error = { message: error }; + } + } + + return error; + } + + /** + * Called when an error occurs during the submission. + * @param {object} error - The error that occured. + * @returns {Array} errors - All errors. + */ + onSubmissionError(error) { + error = this.normalizeError(error); + + this.submitting = false; + this.setPristine(false); + this.emit('submitError', error || this.errors); + + // Allow for silent cancellations (no error message, no submit button error state) + if (error && error.silent) { + this.emit('change', { isValid: true }, { silent: true }); + return false; + } + + const errors = this.showErrors(error, true); + + if (this.root && this.root.alert) { + this.scrollIntoView(this.root.alert); + } + + return errors; + } + + /** + * Trigger the change event for this form. + * @param {any} flags - The flags to set on this change event. + * @param {any} changed - The changed object which reflects the changes in the form. + * @param {boolean} modified - Whether or not the form has been modified. + * @param {any} changes - The changes that have occured in the form. + */ + onChange(flags, changed, modified, changes) { + flags = flags || {}; + let isChangeEventEmitted = false; + if (this.parent?.subForm === this) { + super.onChange({ ...flags, modified }, false); + } else { + super.onChange(flags, true); + } + const value = _.clone(this.submission); + flags.changed = value.changed = changed; + flags.changes = changes; + + if (modified && this.pristine) { + this.pristine = false; + } + + this.checkData(value.data, flags); + const shouldValidate = + !flags.noValidate || + flags.fromIframe || + (flags.fromSubmission && this.rootPristine && this.pristine && flags.changed); + const errors = shouldValidate + ? this.validate(value.data, { + ...flags, + noValidate: false, + process: 'change', + }) + : []; + value.isValid = (errors || []).filter((err) => !err.fromServer).length === 0; + + this.loading = false; + if (this.submitted) { + // show server errors while they are not cleaned/fixed + const nonComponentServerErrors = _.filter( + this.serverErrors || [], + (err) => !err.component && !err.path, + ); + this.showErrors(nonComponentServerErrors.length ? nonComponentServerErrors : errors); + } + + // See if we need to save the draft of the form. + if (modified && this.options.saveDraft) { + this.triggerSaveDraft(); + } + + if (!flags || !flags.noEmit) { + this.emit('change', value, flags, modified); + isChangeEventEmitted = true; + } + + // The form is initialized after the first change event occurs. + if (isChangeEventEmitted && !this.initialized) { + this.emit('initialized'); + this.initialized = true; + } + } + + /** + * Send a delete request to the server. + * @returns {Promise} - The promise that is triggered when the delete is complete. + */ + deleteSubmission() { + return this.formio.deleteSubmission().then(() => { + this.emit('submissionDeleted', this.submission); + this.resetValue(); + }); + } + + /** + * Cancels the submission. + * @param {boolean} noconfirm - Whether or not to confirm the cancellation. + * @alias reset + * @returns {boolean} - TRUE means the submission was cancelled, FALSE otherwise. + */ + cancel(noconfirm) { + const shouldReset = this.hook('beforeCancel', true); + if (shouldReset && (noconfirm || confirm(this.t('confirmCancel')))) { + this.resetValue(); + return true; + } else { + this.emit('cancelSubmit'); + return false; + } + } + + setMetadata(submission) { + // Add in metadata about client submitting the form + submission.metadata = submission.metadata || {}; + _.defaults(submission.metadata, { + timezone: _.get(this, '_submission.metadata.timezone', currentTimezone()), + offset: parseInt(_.get(this, '_submission.metadata.offset', moment().utcOffset()), 10), + origin: document.location.origin, + referrer: document.referrer, + browserName: navigator.appName, + userAgent: navigator.userAgent, + pathName: window.location.pathname, + onLine: navigator.onLine, + }); + } - if (this.root && this.root.alert) { - this.scrollIntoView(this.root.alert); - } + submitForm(options = {}) { + this.clearServerErrors(); - return errors; - } + return new Promise((resolve, reject) => { + // Read-only forms should never submit. + if (this.options.readOnly) { + return resolve({ + submission: this.submission, + saved: false, + }); + } - /** - * Trigger the change event for this form. - * @param {any} flags - The flags to set on this change event. - * @param {any} changed - The changed object which reflects the changes in the form. - * @param {boolean} modified - Whether or not the form has been modified. - * @param {any} changes - The changes that have occured in the form. - */ - onChange(flags, changed, modified, changes) { - flags = flags || {}; - let isChangeEventEmitted = false; - if (this.parent?.subForm === this) { - super.onChange({ ...flags, modified }, false); - } - else { - super.onChange(flags, true); - } - const value = _.clone(this.submission); - flags.changed = value.changed = changed; - flags.changes = changes; + const submission = fastCloneDeep(this.submission || {}); - if (modified && this.pristine) { - this.pristine = false; - } + this.setMetadata(submission); - this.checkData(value.data, flags); - const shouldValidate = - !flags.noValidate || - flags.fromIframe || - (flags.fromSubmission && this.rootPristine && this.pristine && flags.changed); - const errors = shouldValidate - ? this.validate(value.data, { - ...flags, - noValidate: false, - process: 'change' - }) - : []; - value.isValid = (errors || []).filter(err => !err.fromServer).length === 0; - - this.loading = false; - if (this.submitted) { - // show server errors while they are not cleaned/fixed - const nonComponentServerErrors = _.filter( - this.serverErrors || [], - (err) => !err.component && !err.path - ); - this.showErrors(nonComponentServerErrors.length ? nonComponentServerErrors : errors); - } + submission.state = options.state || submission.state || 'submitted'; - // See if we need to save the draft of the form. - if (modified && this.options.saveDraft) { - this.triggerSaveDraft(); + const isDraft = submission.state === 'draft'; + this.hook('beforeSubmit', { ...submission, component: options.component }, (err, data) => { + if (err) { + return reject(err); } - if (!flags || !flags.noEmit) { - this.emit("change", value, flags, modified); - isChangeEventEmitted = true; - } + submission._vnote = data && data._vnote ? data._vnote : ''; - // The form is initialized after the first change event occurs. - if (isChangeEventEmitted && !this.initialized) { - this.emit("initialized"); - this.initialized = true; + try { + if (!isDraft && !options.noValidate) { + if (!submission.data) { + return reject('Invalid Submission'); + } + const errors = this.validate(submission.data, { + dirty: true, + silentCheck: false, + process: 'submit', + }); + if ( + errors.length || + options.beforeSubmitResults?.some((result) => result.status === 'rejected') + ) { + return reject(errors); + } + } + } catch (err) { + console.error(err); } - } - /** - * Send a delete request to the server. - * @returns {Promise} - The promise that is triggered when the delete is complete. - */ - deleteSubmission() { - return this.formio.deleteSubmission().then(() => { - this.emit("submissionDeleted", this.submission); - this.resetValue(); + this.everyComponent((comp) => { + if (submission._vnote && comp.type === 'form' && comp.component.reference) { + _.get(submission.data, comp.path, {})._vnote = submission._vnote; + } + const { persistent } = comp.component; + if (persistent === 'client-only') { + _.unset(submission.data, comp.path); + } }); - } - /** - * Cancels the submission. - * @param {boolean} noconfirm - Whether or not to confirm the cancellation. - * @alias reset - * @returns {boolean} - TRUE means the submission was cancelled, FALSE otherwise. - */ - cancel(noconfirm) { - const shouldReset = this.hook("beforeCancel", true); - if (shouldReset && (noconfirm || confirm(this.t("confirmCancel")))) { - this.resetValue(); - return true; - } else { - this.emit("cancelSubmit"); - return false; - } - } - - setMetadata(submission) { - // Add in metadata about client submitting the form - submission.metadata = submission.metadata || {}; - _.defaults(submission.metadata, { - timezone: _.get(this, "_submission.metadata.timezone", currentTimezone()), - offset: parseInt(_.get(this, "_submission.metadata.offset", moment().utcOffset()), 10), - origin: document.location.origin, - referrer: document.referrer, - browserName: navigator.appName, - userAgent: navigator.userAgent, - pathName: window.location.pathname, - onLine: navigator.onLine, - }); - } - - submitForm(options = {}) { - this.clearServerErrors(); - - return new Promise((resolve, reject) => { - // Read-only forms should never submit. - if (this.options.readOnly) { - return resolve({ - submission: this.submission, - saved: false, - }); + this.hook('customValidation', { ...submission, component: options.component }, (err) => { + if (err) { + // If string is returned, cast to object. + if (typeof err === 'string') { + err = { + message: err, + }; } - const submission = fastCloneDeep(this.submission || {}); - - this.setMetadata(submission); - - submission.state = options.state || submission.state || "submitted"; - - const isDraft = submission.state === "draft"; - this.hook( - "beforeSubmit", - { ...submission, component: options.component }, - (err, data) => { - if (err) { - return reject(err); - } - - submission._vnote = data && data._vnote ? data._vnote : ""; - - try { - if (!isDraft && !options.noValidate) { - if (!submission.data) { - return reject("Invalid Submission"); - } - const errors = this.validate(submission.data, { - dirty: true, - silentCheck: false, - process: "submit", - }); - if ( - errors.length || - options.beforeSubmitResults?.some( - (result) => result.status === "rejected" - ) - ) { - return reject(errors); - } - } - } catch (err) { - console.error(err); - } - - this.everyComponent((comp) => { - if (submission._vnote && comp.type === "form" && comp.component.reference) { - _.get(submission.data, comp.path, {})._vnote = submission._vnote; - } - const { persistent } = comp.component; - if (persistent === "client-only") { - _.unset(submission.data, comp.path); - } - }); - - this.hook( - "customValidation", - { ...submission, component: options.component }, - (err) => { - if (err) { - // If string is returned, cast to object. - if (typeof err === "string") { - err = { - message: err, - }; - } - - // Ensure err is an array. - err = Array.isArray(err) ? err : [err]; - return reject(err); - } - - this.loading = true; - - // Use the form action to submit the form if available. - if (this._form && this._form.action) { - const method = - submission.data._id && - this._form.action.includes(submission.data._id) - ? "PUT" - : "POST"; - return Formio.makeStaticRequest( - this._form.action, - method, - submission, - this.formio ? this.formio.options : {} - ) - .then((result) => - resolve({ - submission: result, - saved: true, - }) - ) - .catch((error) => { - this.setServerErrors(error); - - return reject(error); - }); - } - - const submitFormio = this.formio; - if (this.nosubmit || !submitFormio) { - return resolve({ - submission, - saved: false, - }); - } - // If this is an actionUrl, then make sure to save the action and not the submission. - const submitMethod = submitFormio.actionUrl - ? "saveAction" - : "saveSubmission"; - submitFormio[submitMethod](submission) - .then((result) => - resolve({ - submission: result, - saved: true, - }) - ) - .catch((error) => { - this.setServerErrors(error); - - return reject(error); - }); - } - ); - } - ); - }); - } - - setServerErrors(error) { - if (error.details) { - this.serverErrors = error.details - .filter((err) => (err.level ? err.level === "error" : err)) - .map((err) => { - err.fromServer = true; - return err; - }); - } else if (typeof error === "string") { - this.serverErrors = [{ fromServer: true, level: "error", message: error }]; - } - } - - executeSubmit(options) { - this.submitted = true; - this.submitting = true; - return this.submitForm(options) - .then(({ submission, saved }) => this.onSubmit(submission, saved)) - .then((results) => { - this.submissionInProcess = false; - return results; - }) - .catch((err) => { - this.submissionInProcess = false; - return Promise.reject(this.onSubmissionError(err)); + // Ensure err is an array. + err = Array.isArray(err) ? err : [err]; + return reject(err); + } + + this.loading = true; + + // Use the form action to submit the form if available. + if (this._form && this._form.action) { + const method = + submission.data._id && this._form.action.includes(submission.data._id) + ? 'PUT' + : 'POST'; + return Formio.makeStaticRequest( + this._form.action, + method, + submission, + this.formio ? this.formio.options : {}, + ) + .then((result) => + resolve({ + submission: result, + saved: true, + }), + ) + .catch((error) => { + this.setServerErrors(error); + + return reject(error); + }); + } + + const submitFormio = this.formio; + if (this.nosubmit || !submitFormio) { + return resolve({ + submission, + saved: false, }); - } - - clearServerErrors() { - this.serverErrors?.forEach((error) => { - if (error.path) { - const pathArray = getArrayFromComponentPath(error.path); - const component = this.getComponent( - pathArray, - _.identity, - error.formattedKeyOrPath - ); - - if (component) { - component.serverErrors = []; - } - } - }); - this.serverErrors = []; - } - - /** - * Submits the form. - * @example - * import Webform from '@formio/js/Webform'; - * let form = new Webform(document.getElementById('formio')); - * form.src = 'https://examples.form.io/example'; - * form.submission = {data: { - * firstName: 'Joe', - * lastName: 'Smith', - * email: 'joe@example.com' - * }}; - * form.submit().then((submission) => { - * console.log(submission); - * }); - * @param {boolean} before - If this submission occured from the before handlers. - * @param {any} options - The options to use when submitting this form. - * @returns {Promise} - A promise when the form is done submitting. - */ - submit(before = false, options = {}) { - this.submissionInProcess = true; - if (!before) { - return this.beforeSubmit(options).then(() => this.executeSubmit(options)); - } else { - return this.executeSubmit(options); - } - } - - submitUrl(URL, headers) { - if (!URL) { - return console.warn("Missing URL argument"); - } - - const submission = this.submission || {}; - const API_URL = URL; - const settings = { - method: "POST", - headers: {}, - }; + } + // If this is an actionUrl, then make sure to save the action and not the submission. + const submitMethod = submitFormio.actionUrl ? 'saveAction' : 'saveSubmission'; + submitFormio[submitMethod](submission) + .then((result) => + resolve({ + submission: result, + saved: true, + }), + ) + .catch((error) => { + this.setServerErrors(error); - if (headers && headers.length > 0) { - headers.map((e) => { - if (e.header !== "" && e.value !== "") { - settings.headers[e.header] = this.interpolate(e.value, submission); - } + return reject(error); }); - } - if (API_URL && settings) { - Formio.makeStaticRequest(API_URL, settings.method, submission, { - headers: settings.headers, - }) - .then(() => { - this.emit("requestDone"); - this.setAlert("success", "

Success

"); - }) - .catch((e) => { - const message = `${e.statusText ? e.statusText : ""} ${e.status ? e.status : e}`; - this.emit("error", message); - console.error(message); - this.setAlert("danger", `

${message}

`); - return Promise.reject(this.onSubmissionError(e)); - }); - } else { - this.emit("error", "You should add a URL to this button."); - this.setAlert("warning", "You should add a URL to this button."); - return console.warn("You should add a URL to this button."); - } - } + }); + }); + }); + } + + setServerErrors(error) { + if (error.details) { + this.serverErrors = error.details + .filter((err) => (err.level ? err.level === 'error' : err)) + .map((err) => { + err.fromServer = true; + return err; + }); + } else if (typeof error === 'string') { + this.serverErrors = [{ fromServer: true, level: 'error', message: error }]; + } + } + + executeSubmit(options) { + this.submitted = true; + this.submitting = true; + return this.submitForm(options) + .then(({ submission, saved }) => this.onSubmit(submission, saved)) + .then((results) => { + this.submissionInProcess = false; + return results; + }) + .catch((err) => { + this.submissionInProcess = false; + return Promise.reject(this.onSubmissionError(err)); + }); + } + + clearServerErrors() { + this.serverErrors?.forEach((error) => { + if (error.path) { + const pathArray = getArrayFromComponentPath(error.path); + const component = this.getComponent(pathArray, _.identity, error.formattedKeyOrPath); + + if (component) { + component.serverErrors = []; + } + } + }); + this.serverErrors = []; + } + + /** + * Submits the form. + * @example + * import Webform from '@formio/js/Webform'; + * let form = new Webform(document.getElementById('formio')); + * form.src = 'https://examples.form.io/example'; + * form.submission = {data: { + * firstName: 'Joe', + * lastName: 'Smith', + * email: 'joe@example.com' + * }}; + * form.submit().then((submission) => { + * console.log(submission); + * }); + * @param {boolean} before - If this submission occured from the before handlers. + * @param {any} options - The options to use when submitting this form. + * @returns {Promise} - A promise when the form is done submitting. + */ + submit(before = false, options = {}) { + this.submissionInProcess = true; + if (!before) { + return this.beforeSubmit(options).then(() => this.executeSubmit(options)); + } else { + return this.executeSubmit(options); + } + } + + submitUrl(URL, headers) { + if (!URL) { + return console.warn('Missing URL argument'); + } + + const submission = this.submission || {}; + const API_URL = URL; + const settings = { + method: 'POST', + headers: {}, + }; - triggerCaptcha() { - if (!this || !this.components) { - return; - } - const captchaComponent = []; - eachComponent(this.components, (component) => { - if (/^(re)?captcha$/.test(component.type) && component.component.eventType === 'formLoad') { - captchaComponent.push(component); - } + if (headers && headers.length > 0) { + headers.map((e) => { + if (e.header !== '' && e.value !== '') { + settings.headers[e.header] = this.interpolate(e.value, submission); + } + }); + } + if (API_URL && settings) { + Formio.makeStaticRequest(API_URL, settings.method, submission, { + headers: settings.headers, + }) + .then(() => { + this.emit('requestDone'); + this.setAlert('success', '

Success

'); + }) + .catch((e) => { + const message = `${e.statusText ? e.statusText : ''} ${e.status ? e.status : e}`; + this.emit('error', message); + console.error(message); + this.setAlert('danger', `

${message}

`); + return Promise.reject(this.onSubmissionError(e)); }); + } else { + this.emit('error', 'You should add a URL to this button.'); + this.setAlert('warning', 'You should add a URL to this button.'); + return console.warn('You should add a URL to this button.'); + } + } + + triggerCaptcha() { + if (!this || !this.components) { + return; + } + const captchaComponent = []; + eachComponent(this.components, (component) => { + if (/^(re)?captcha$/.test(component.type) && component.component.eventType === 'formLoad') { + captchaComponent.push(component); + } + }); - if (captchaComponent.length > 0) { - captchaComponent[0].verify(`${this.form.name ? this.form.name : 'form'}Load`); - } + if (captchaComponent.length > 0) { + captchaComponent[0].verify(`${this.form.name ? this.form.name : 'form'}Load`); } + } - set nosubmit(value) { - this._nosubmit = !!value; - this.emit("nosubmit", this._nosubmit); - } + set nosubmit(value) { + this._nosubmit = !!value; + this.emit('nosubmit', this._nosubmit); + } - get nosubmit() { - return this._nosubmit || false; - } + get nosubmit() { + return this._nosubmit || false; + } - get conditions() { - return this.schema.settings?.conditions ?? []; - } + get conditions() { + return this.schema.settings?.conditions ?? []; + } - get variables() { - return this.schema.settings?.variables ?? []; - } + get variables() { + return this.schema.settings?.variables ?? []; + } } Webform.setBaseUrl = Formio.setBaseUrl; diff --git a/src/WebformBuilder.js b/src/WebformBuilder.js index 58100cb9db..a6158beee5 100644 --- a/src/WebformBuilder.js +++ b/src/WebformBuilder.js @@ -3,7 +3,12 @@ import Component from './components/_classes/component/Component'; import tippy from 'tippy.js'; import Components from './components/Components'; import { Formio } from './Formio'; -import { fastCloneDeep, bootstrapVersion, getArrayFromComponentPath, getStringFromComponentPath } from './utils/utils'; +import { + fastCloneDeep, + bootstrapVersion, + getArrayFromComponentPath, + getStringFromComponentPath, +} from './utils/utils'; import { eachComponent, getComponent } from './utils/formUtils'; import BuilderUtils from './utils/builder'; import _ from 'lodash'; @@ -18,14 +23,12 @@ if (typeof window !== 'undefined' && typeof window.global === 'undefined') { import dragula from 'dragula'; export default class WebformBuilder extends Component { - constructor() { let element, options; if (arguments[0] instanceof HTMLElement || arguments[1]) { element = arguments[0]; options = arguments[1]; - } - else { + } else { options = arguments[0]; } // Reset skipInit in case PDFBuilder has set it. @@ -64,18 +67,22 @@ export default class WebformBuilder extends Component { this.groups[group] = this.builder[group]; this.groups[group].components = this.groups[group].components || {}; this.groups[group].componentOrder = this.groups[group].componentOrder || []; - this.groups[group].subgroups = Object.keys(this.groups[group].groups || {}).map((groupKey) => { - this.groups[group].groups[groupKey].componentOrder = Object.keys(this.groups[group].groups[groupKey].components).map((key) => key); - return this.groups[group].groups[groupKey]; - }); + this.groups[group].subgroups = Object.keys(this.groups[group].groups || {}).map( + (groupKey) => { + this.groups[group].groups[groupKey].componentOrder = Object.keys( + this.groups[group].groups[groupKey].components, + ).map((key) => key); + return this.groups[group].groups[groupKey]; + }, + ); this.groupOrder.push(this.groups[group]); } } this.groupOrder = this.groupOrder - .filter(group => group && !group.ignore) + .filter((group) => group && !group.ignore) .sort((a, b) => a.weight - b.weight) - .map(group => group.key); + .map((group) => group.key); for (const type in Components.components) { const component = Components.components[type]; @@ -95,19 +102,14 @@ export default class WebformBuilder extends Component { for (const key in info.components) { const compKey = group === 'resource' ? `component-${key}` : key; let comp = info.components[compKey]; - if ( - comp === true && - Components.components[key] && - Components.components[key].builderInfo - ) { + if (comp === true && Components.components[key] && Components.components[key].builderInfo) { comp = Components.components[key].builderInfo; } if (comp && comp.schema) { this.schemas[key] = comp.schema; info.components[compKey] = comp; info.components[compKey].key = key; - } - else { + } else { // Do not include this component in the components array. delete info.components[compKey]; } @@ -121,12 +123,18 @@ export default class WebformBuilder extends Component { this.options.hooks.renderComponent = (html, { component, self }) => { if (self.type === 'form' && !self.key) { - const template = this.hook('renderComponentFormTemplate', html.replace('formio-component-form', '')); + const template = this.hook( + 'renderComponentFormTemplate', + html.replace('formio-component-form', ''), + ); // The main webform shouldn't have this class as it adds extra styles. return template; } - if (this.options.disabled && this.options.disabled.includes(self.key) || self.parent.noDragDrop) { + if ( + (this.options.disabled && this.options.disabled.includes(self.key)) || + self.parent.noDragDrop + ) { return html; } @@ -134,23 +142,27 @@ export default class WebformBuilder extends Component { html, disableBuilderActions: self?.component?.disableBuilderActions, childComponent: component, - design: self?.options?.design + design: self?.options?.design, }); }; this.options.hooks.renderComponents = (html, { components, self }) => { // if Datagrid and already has a component, don't make it droppable. - if (self.type === 'datagrid' && components.length > 0 || self.noDragDrop) { + if ((self.type === 'datagrid' && components.length > 0) || self.noDragDrop) { return html; } - if (!components || + if ( + !components || (!components.length && !components.nodrop) || - (self.type === 'form' && components.length <= 1 && (components.length === 0 || components[0].type === 'button')) + (self.type === 'form' && + components.length <= 1 && + (components.length === 0 || components[0].type === 'button')) ) { - html = this.renderTemplate('builderPlaceholder', { - position: 0 - }) + html; + html = + this.renderTemplate('builderPlaceholder', { + position: 0, + }) + html; } return this.renderTemplate('builderComponents', { key: self.key, @@ -182,7 +194,10 @@ export default class WebformBuilder extends Component { return element; } // Attach container and component to element for later reference. - const containerElement = element.querySelector(`[${this._referenceAttributeName}="${component.component.key}-container"]`) || element; + const containerElement = + element.querySelector( + `[${this._referenceAttributeName}="${component.component.key}-container"]`, + ) || element; containerElement.formioContainer = container; containerElement.formioComponent = component; @@ -192,7 +207,10 @@ export default class WebformBuilder extends Component { } // If this is an existing datagrid element, don't make it draggable. - if ((component.type === 'datagrid' || component.type === 'datamap') && components.length > 0) { + if ( + (component.type === 'datagrid' || component.type === 'datamap') && + components.length > 0 + ) { return element; } @@ -208,7 +226,11 @@ export default class WebformBuilder extends Component { const dataGridContainer = component.refs[`${component.key}-container`]; if (dataGridContainer) { - component.attachComponents(dataGridContainer.parentNode, [], component.component.components); + component.attachComponents( + dataGridContainer.parentNode, + [], + component.component.components, + ); } // Need to set up horizontal rearrangement of fields. }; @@ -221,61 +243,66 @@ export default class WebformBuilder extends Component { type: 'resource', limit: 1000000, select: '_id,title,name,components', - 'tags__ne': 'noBuilderResource' - } + tags__ne: 'noBuilderResource', + }, }; if (this.options && this.options.resourceTag) { query.params.tags = [this.options.resourceTag]; - } - else if (!this.options || !this.options.hasOwnProperty('resourceTag')) { + } else if (!this.options || !this.options.hasOwnProperty('resourceTag')) { query.params.tags = ['builder']; } const formio = new Formio(Formio.projectUrl); const isResourcesDisabled = this.options.builder && this.options.builder.resource === false; - formio.loadProject().then((project) => { - if (project && (_.get(project, 'settings.addConfigToForms', false) || _.get(project, 'addConfigToForms', false))) { - const config = project.config || {}; - this.options.formConfig = config; + formio + .loadProject() + .then((project) => { + if ( + project && + (_.get(project, 'settings.addConfigToForms', false) || + _.get(project, 'addConfigToForms', false)) + ) { + const config = project.config || {}; + this.options.formConfig = config; - const pathToFormConfig = 'webform._form.config'; - const webformConfig = _.get(this, pathToFormConfig); + const pathToFormConfig = 'webform._form.config'; + const webformConfig = _.get(this, pathToFormConfig); - if (this.webform && !webformConfig) { - _.set(this, pathToFormConfig, config); + if (this.webform && !webformConfig) { + _.set(this, pathToFormConfig, config); + } } - } - }).catch((err) => { - console.warn(`Could not load project settings: ${err.message || err}`); - }); + }) + .catch((err) => { + console.warn(`Could not load project settings: ${err.message || err}`); + }); if (!formio.noProject && !isResourcesDisabled && formio.formsUrl) { const resourceOptions = this.options.builder && this.options.builder.resource; - formio.loadForms(query) - .then((resources) => { - if (resources.length) { - this.builder.resource = { - title: resourceOptions ? resourceOptions.title : 'Existing Resource Fields', - key: 'resource', - weight: resourceOptions ? resourceOptions.weight : 50, - subgroups: [], - components: [], - componentOrder: [] - }; - this.groups.resource = { - title: resourceOptions ? resourceOptions.title : 'Existing Resource Fields', - key: 'resource', - weight: resourceOptions ? resourceOptions.weight : 50, - subgroups: [], - components: [], - componentOrder: [] - }; - if (!this.groupOrder.includes('resource')) { - this.groupOrder.push('resource'); - } - this.addExistingResourceFields(resources); + formio.loadForms(query).then((resources) => { + if (resources.length) { + this.builder.resource = { + title: resourceOptions ? resourceOptions.title : 'Existing Resource Fields', + key: 'resource', + weight: resourceOptions ? resourceOptions.weight : 50, + subgroups: [], + components: [], + componentOrder: [], + }; + this.groups.resource = { + title: resourceOptions ? resourceOptions.title : 'Existing Resource Fields', + key: 'resource', + weight: resourceOptions ? resourceOptions.weight : 50, + subgroups: [], + components: [], + componentOrder: [], + }; + if (!this.groupOrder.includes('resource')) { + this.groupOrder.push('resource'); } - }); + this.addExistingResourceFields(resources); + } + }); } // Notify components if they need to modify their render. @@ -303,42 +330,49 @@ export default class WebformBuilder extends Component { default: index === 0, }; - eachComponent(resource.components, (component) => { - if (component.type === 'button') return; - if ( - this.options && - this.options.resourceFilter && - (!component.tags || component.tags.indexOf(this.options.resourceFilter) === -1) - ) return; - - let componentName = component.label; - if (!componentName && component.key) { - componentName = _.upperFirst(component.key); - } + eachComponent( + resource.components, + (component) => { + if (component.type === 'button') return; + if ( + this.options && + this.options.resourceFilter && + (!component.tags || component.tags.indexOf(this.options.resourceFilter) === -1) + ) + return; + + let componentName = component.label; + if (!componentName && component.key) { + componentName = _.upperFirst(component.key); + } - subgroup.componentOrder.push(`component-${component.key}`); - subgroup.components[`component-${component.key}`] = _.merge( - fastCloneDeep(Components.components[component.type] - ? Components.components[component.type].builderInfo - : Components.components['unknown'].builderInfo), - { - key: component.key, - title: componentName, - group: 'resource', - subgroup: resourceKey, - }, - { - schema: { - ...component, - label: component.label, + subgroup.componentOrder.push(`component-${component.key}`); + subgroup.components[`component-${component.key}`] = _.merge( + fastCloneDeep( + Components.components[component.type] + ? Components.components[component.type].builderInfo + : Components.components['unknown'].builderInfo, + ), + { key: component.key, - lockKey: true, - source: (!this.options.noSource ? resource._id : undefined), - isNew: true - } - } - ); - }, true); + title: componentName, + group: 'resource', + subgroup: resourceKey, + }, + { + schema: { + ...component, + label: component.label, + key: component.key, + lockKey: true, + source: !this.options.noSource ? resource._id : undefined, + isNew: true, + }, + }, + ); + }, + true, + ); this.groups.resource.subgroups.push(subgroup); }); @@ -353,7 +387,7 @@ export default class WebformBuilder extends Component { placement: 'top', delay: [200, 0], zIndex: 10000, - content: title + content: title, }); } @@ -371,14 +405,15 @@ export default class WebformBuilder extends Component { moveComponent: 'single', copyComponent: 'single', pasteComponent: 'single', - editJson: 'single' + editJson: 'single', }); if (component.refs.copyComponent) { this.attachTooltip(component.refs.copyComponent, this.t('Copy')); component.addEventListener(component.refs.copyComponent, 'click', () => - this.copyComponent(component)); + this.copyComponent(component), + ); } if (component.refs.pasteComponent) { @@ -405,21 +440,26 @@ export default class WebformBuilder extends Component { this.attachTooltip(component.refs.editComponent, this.t('Edit')); component.addEventListener(component.refs.editComponent, 'click', () => - this.editComponent(component.schema, parent, false, false, component.component, { inDataGrid: component.isInDataGrid })); + this.editComponent(component.schema, parent, false, false, component.component, { + inDataGrid: component.isInDataGrid, + }), + ); } if (component.refs.editJson) { this.attachTooltip(component.refs.editJson, this.t('Edit JSON')); component.addEventListener(component.refs.editJson, 'click', () => - this.editComponent(component.schema, parent, false, true, component.component)); + this.editComponent(component.schema, parent, false, true, component.component), + ); } if (component.refs.removeComponent) { this.attachTooltip(component.refs.removeComponent, this.t('Remove')); component.addEventListener(component.refs.removeComponent, 'click', () => - this.removeComponent(component.schema, parent, component.component, component)); + this.removeComponent(component.schema, parent, component.component, component), + ); } return element; @@ -429,7 +469,7 @@ export default class WebformBuilder extends Component { this.webform = new Webform(this.element, options); if (this.element) { this.loadRefs(this.element, { - form: 'single' + form: 'single', }); if (this.refs.form) { this.webform.element = this.refs.form; @@ -455,20 +495,20 @@ export default class WebformBuilder extends Component { }, advanced: { title: 'Advanced', - weight: 10 + weight: 10, }, layout: { title: 'Layout', - weight: 20 + weight: 20, }, data: { title: 'Data', - weight: 30 + weight: 30, }, premium: { title: 'Premium', - weight: 40 - } + weight: 40, + }, }; } @@ -528,7 +568,13 @@ export default class WebformBuilder extends Component { } // Some components are their own namespace. - if (['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes(component.type) || component.tree || component.arrayTree) { + if ( + ['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes( + component.type, + ) || + component.tree || + component.arrayTree + ) { return component.key; } @@ -542,18 +588,22 @@ export default class WebformBuilder extends Component { scrollEnabled: this.sideBarScroll, groupOrder: this.groupOrder, groupId: `builder-sidebar-${this.id}`, - groups: this.groupOrder.map((groupKey) => this.renderTemplate('builderSidebarGroup', { - group: this.groups[groupKey], - groupKey, - groupId: `builder-sidebar-${this.id}`, - subgroups: this.groups[groupKey].subgroups.map((group) => this.renderTemplate('builderSidebarGroup', { - group, - groupKey: group.key, - groupId: `group-container-${groupKey}`, - subgroups: [] - })), - keyboardActionsEnabled: this.keyboardActionsEnabled, - })), + groups: this.groupOrder.map((groupKey) => + this.renderTemplate('builderSidebarGroup', { + group: this.groups[groupKey], + groupKey, + groupId: `builder-sidebar-${this.id}`, + subgroups: this.groups[groupKey].subgroups.map((group) => + this.renderTemplate('builderSidebarGroup', { + group, + groupKey: group.key, + groupId: `group-container-${groupKey}`, + subgroups: [], + }), + ), + keyboardActionsEnabled: this.keyboardActionsEnabled, + }), + ), }), form: this.webform.render(), }); @@ -570,7 +620,7 @@ export default class WebformBuilder extends Component { sidebar: 'single', 'sidebar-search': 'single', 'sidebar-groups': 'single', - 'container': 'multiple', + container: 'multiple', 'sidebar-anchor': 'multiple', 'sidebar-group': 'multiple', 'sidebar-container': 'multiple', @@ -602,8 +652,7 @@ export default class WebformBuilder extends Component { if (show) { group.classList.add(['show']); group.style.display = 'inherit'; - } - else { + } else { group.classList.remove(['show']); group.style.display = 'none'; } @@ -616,16 +665,28 @@ export default class WebformBuilder extends Component { // Click event this.refs['sidebar-anchor'].forEach((anchor, index) => { - this.addEventListener(anchor, 'click', () => { - const clickedParentId = getAttribute(anchor, 'parent').slice('#builder-sidebar-'.length); - const clickedId = getAttribute(anchor, 'target').slice('#group-'.length); - this.refs['sidebar-group'].forEach((group, groupIndex) => { - const openByDefault = getAttribute(group, 'default') === 'true'; - const groupId = group.getAttribute('id').slice('group-'.length); - const groupParent = getAttribute(group, 'parent').slice('#builder-sidebar-'.length); - hideShow(group, ((openByDefault && groupParent === clickedId) || groupId === clickedParentId || groupIndex === index)); - }); - }, true); + this.addEventListener( + anchor, + 'click', + () => { + const clickedParentId = getAttribute(anchor, 'parent').slice( + '#builder-sidebar-'.length, + ); + const clickedId = getAttribute(anchor, 'target').slice('#group-'.length); + this.refs['sidebar-group'].forEach((group, groupIndex) => { + const openByDefault = getAttribute(group, 'default') === 'true'; + const groupId = group.getAttribute('id').slice('group-'.length); + const groupParent = getAttribute(group, 'parent').slice('#builder-sidebar-'.length); + hideShow( + group, + (openByDefault && groupParent === clickedId) || + groupId === clickedParentId || + groupIndex === index, + ); + }); + }, + true, + ); }); } @@ -639,11 +700,13 @@ export default class WebformBuilder extends Component { }); } - this.addEventListener(this.refs['sidebar-search'], 'input', + this.addEventListener( + this.refs['sidebar-search'], + 'input', _.debounce((e) => { const searchString = e.target.value; this.searchFields(searchString); - }, 300) + }, 300), ); if (this.dragDropEnabled) { @@ -657,9 +720,9 @@ export default class WebformBuilder extends Component { margin: 20, maxSpeed: 6, scrollWhenOutside: true, - autoScroll: function() { + autoScroll: function () { return this.down && drake?.dragging; - } + }, }); return this.webform.attach(this.refs.form); @@ -702,33 +765,34 @@ export default class WebformBuilder extends Component { const filterGroupOrder = (groupOrder, searchValue) => { const result = _.cloneDeep(groupOrder); - return result.filter(key => filterGroupBy(this.groups[key], searchValue)); + return result.filter((key) => filterGroupBy(this.groups[key], searchValue)); }; const filterSubgroups = (groups, searchValue) => { const result = _.clone(groups); return result - .map(subgroup => filterGroupBy(subgroup, searchValue)) - .filter(subgroup => !_.isNull(subgroup)); + .map((subgroup) => filterGroupBy(subgroup, searchValue)) + .filter((subgroup) => !_.isNull(subgroup)); }; - const toTemplate = groupKey => { + const toTemplate = (groupKey) => { return { group: filterGroupBy(this.groups[groupKey], searchValue), groupKey, groupId: sidebar.id || sidebarGroups.id, - subgroups: filterSubgroups(this.groups[groupKey].subgroups, searchValue) - .map((group) => this.renderTemplate('builderSidebarGroup', { + subgroups: filterSubgroups(this.groups[groupKey].subgroups, searchValue).map((group) => + this.renderTemplate('builderSidebarGroup', { group, groupKey: group.key, groupId: `group-container-${groupKey}`, - subgroups: [] - })), + subgroups: [], + }), + ), }; }; sidebarGroups.innerHTML = filterGroupOrder(this.groupOrder, searchValue) - .map(groupKey => this.renderTemplate('builderSidebarGroup', toTemplate(groupKey))) + .map((groupKey) => this.renderTemplate('builderSidebarGroup', toTemplate(groupKey))) .join(''); this.loadRefs(this.element, { @@ -750,10 +814,10 @@ export default class WebformBuilder extends Component { const isResource = groupInfo.key.indexOf('resource-') === 0; if (components) { groupInfo.componentOrder = Object.keys(components) - .map(key => components[key]) - .filter(component => component && !component.ignore && !component.ignoreForForm) + .map((key) => components[key]) + .filter((component) => component && !component.ignore && !component.ignoreForForm) .sort((a, b) => a.weight - b.weight) - .map(component => isResource ? `component-${component.key}` : component.key); + .map((component) => (isResource ? `component-${component.key}` : component.key)); } } @@ -773,9 +837,11 @@ export default class WebformBuilder extends Component { this.dragula.destroy(); } - const containersArray = Array.prototype.slice.call(this.refs['sidebar-container']).filter(item => { - return item.id !== 'group-container-resource'; - }); + const containersArray = Array.prototype.slice + .call(this.refs['sidebar-container']) + .filter((item) => { + return item.id !== 'group-container-resource'; + }); if (!dragula) { return; @@ -785,8 +851,10 @@ export default class WebformBuilder extends Component { moves(el) { let moves = true; - const list = Array.from(el.classList).filter(item => item.indexOf('formio-component-') === 0); - list.forEach(item => { + const list = Array.from(el.classList).filter( + (item) => item.indexOf('formio-component-') === 0, + ); + list.forEach((item) => { const key = item.slice('formio-component-'.length); if (options.disabled && options.disabled.includes(key)) { moves = false; @@ -803,8 +871,10 @@ export default class WebformBuilder extends Component { }, accepts(el, target) { return !el.contains(target) && !target.classList.contains('no-drop'); - } - }).on('drop', (element, target, source, sibling) => this.onDrop(element, target, source, sibling)); + }, + }).on('drop', (element, target, source, sibling) => + this.onDrop(element, target, source, sibling), + ); } detach() { @@ -833,14 +903,13 @@ export default class WebformBuilder extends Component { // This is a new component else if (this.schemas.hasOwnProperty(key)) { info = fastCloneDeep(this.schemas[key]); - } - else if (this.groups.hasOwnProperty(group)) { + } else if (this.groups.hasOwnProperty(group)) { const groupComponents = this.groups[group].components; if (groupComponents.hasOwnProperty(key)) { info = fastCloneDeep(groupComponents[key].schema); } - } - else if (group === 'searchFields') {//Search components go into this group + } else if (group === 'searchFields') { + //Search components go into this group const resourceGroups = this.groups.resource.subgroups; for (let ix = 0; ix < resourceGroups.length; ix++) { const resourceGroup = resourceGroups[ix]; @@ -871,23 +940,30 @@ export default class WebformBuilder extends Component { let tabIndex = 0; switch (parent.type) { case 'table': - tableRowIndex = _.findIndex(parent.rows, row => row.some(column => column.components.some(comp => comp.key === component.key))); - tableColumnIndex = _.findIndex(parent.rows[tableRowIndex], (column => column.components.some(comp => comp.key === component.key))); + tableRowIndex = _.findIndex(parent.rows, (row) => + row.some((column) => column.components.some((comp) => comp.key === component.key)), + ); + tableColumnIndex = _.findIndex(parent.rows[tableRowIndex], (column) => + column.components.some((comp) => comp.key === component.key), + ); path = `rows[${tableRowIndex}][${tableColumnIndex}].components`; break; case 'columns': - columnIndex = _.findIndex(parent.columns, column => column.components.some(comp => comp.key === component.key)); + columnIndex = _.findIndex(parent.columns, (column) => + column.components.some((comp) => comp.key === component.key), + ); path = `columns[${columnIndex}].components`; break; case 'tabs': - tabIndex = _.findIndex(parent.components, tab => tab.components.some(comp => comp.key === component.key)); + tabIndex = _.findIndex(parent.components, (tab) => + tab.components.some((comp) => comp.key === component.key), + ); path = `components[${tabIndex}].components`; break; } return path; } - onDrop(element, target, source, sibling) { if (!target) { return; @@ -910,13 +986,13 @@ export default class WebformBuilder extends Component { info = this.getComponentInfo(type, group); } isNew = true; - } - else if (source.formioContainer) { + } else if (source.formioContainer) { index = _.findIndex(source.formioContainer, { key: element.formioComponent.component.key }); if (index !== -1) { // Grab and remove the component from the source container. info = source.formioContainer.splice( - _.findIndex(source.formioContainer, { key: element.formioComponent.component.key }), 1 + _.findIndex(source.formioContainer, { key: element.formioComponent.component.key }), + 1, ); // Since splice returns an array of one object, we need to destructure it. @@ -930,23 +1006,32 @@ export default class WebformBuilder extends Component { } // Show an error if siblings are disabled for a component and such a component already exists. - const compKey = (group === 'resource') ? `component-${key}` : key; + const compKey = group === 'resource' ? `component-${key}` : key; const draggableComponent = this.groups[group]?.components[compKey] || {}; if (draggableComponent.disableSiblings || draggableComponent.uniqueComponent) { let isCompAlreadyExists = false; - eachComponent(this.webform.components, (component) => { - if ( - (draggableComponent.disableSiblings && component.type === draggableComponent.schema.type) || - (draggableComponent.uniqueComponent && component.component.key === draggableComponent.schema.key) - ) { - isCompAlreadyExists = true; - return; - } - }, true); + eachComponent( + this.webform.components, + (component) => { + if ( + (draggableComponent.disableSiblings && + component.type === draggableComponent.schema.type) || + (draggableComponent.uniqueComponent && + component.component.key === draggableComponent.schema.key) + ) { + isCompAlreadyExists = true; + return; + } + }, + true, + ); if (isCompAlreadyExists) { this.webform.redraw(); - this.webform.setAlert('danger', `You cannot add more than one ${_.get(draggableComponent, draggableComponent.uniqueComponent ? 'title' : 'key')} component to one page.`); + this.webform.setAlert( + 'danger', + `You cannot add more than one ${_.get(draggableComponent, draggableComponent.uniqueComponent ? 'title' : 'key')} component to one page.`, + ); return; } } @@ -962,17 +1047,17 @@ export default class WebformBuilder extends Component { if (target.formioContainer) { if (sibling) { if (!sibling.getAttribute('data-noattach')) { - index = _.findIndex(target.formioContainer, { key: _.get(sibling, 'formioComponent.component.key') }); - index = (index === -1) ? 0 : index; - } - else { + index = _.findIndex(target.formioContainer, { + key: _.get(sibling, 'formioComponent.component.key'), + }); + index = index === -1 ? 0 : index; + } else { index = sibling.getAttribute('data-position'); } if (index !== -1) { target.formioContainer.splice(index, 0, info); } - } - else { + } else { target.formioContainer.push(info); } path = this.getComponentsPath(info, parent.component); @@ -988,7 +1073,12 @@ export default class WebformBuilder extends Component { const componentInDataGrid = parent.type === 'datagrid'; - if (isNew && !this.options.noNewEdit && !info.noNewEdit && !(this.options.design && info.type === 'reviewpage')) { + if ( + isNew && + !this.options.noNewEdit && + !info.noNewEdit && + !(this.options.design && info.type === 'reviewpage') + ) { this.editComponent(info, target, isNew, null, null, { inDataGrid: componentInDataGrid }); } @@ -997,18 +1087,15 @@ export default class WebformBuilder extends Component { if (target !== source) { if (source.formioContainer && source.contains(target)) { rebuild = source.formioComponent.rebuild(); - } - else if (target.contains(source)) { + } else if (target.contains(source)) { rebuild = target.formioComponent.rebuild(); - } - else { + } else { if (source.formioContainer) { rebuild = source.formioComponent.rebuild(); } rebuild = target.formioComponent.rebuild(); } - } - else { + } else { // If they are the same, only rebuild one. rebuild = target.formioComponent.rebuild(); } @@ -1018,7 +1105,14 @@ export default class WebformBuilder extends Component { } return rebuild.then(() => { - this.emit('addComponent', info, parent, path, index, isNew && !this.options.noNewEdit && !info.noNewEdit); + this.emit( + 'addComponent', + info, + parent, + path, + index, + isNew && !this.options.noNewEdit && !info.noNewEdit, + ); if (!isNew || this.options.noNewEdit || info.noNewEdit) { this.emit('change', this.form); } @@ -1034,7 +1128,8 @@ export default class WebformBuilder extends Component { this.options.properties = form.properties; } - let keyboardActionsEnabled = _.get(this.options, 'keyboardBuilder', false) || this.options.properties?.keyboardBuilder; + let keyboardActionsEnabled = + _.get(this.options, 'keyboardBuilder', false) || this.options.properties?.keyboardBuilder; if (typeof keyboardActionsEnabled === 'string') { keyboardActionsEnabled = keyboardActionsEnabled === 'true'; } @@ -1043,7 +1138,8 @@ export default class WebformBuilder extends Component { const { display, noAddSubmitButton, noDefaultSubmitButton } = this.options; const { _id, components } = form; - const isSubmitButton = ({ type, action }) => type === 'button' && (action === 'submit' || !action); + const isSubmitButton = ({ type, action }) => + type === 'button' && (action === 'submit' || !action); const hasSubmitButton = components.some(isSubmitButton); // Add submit button if form display was switched from wizard // Don't add if there is noAddSubmitButton flag passed, or the form has id, or the form has a submit button already @@ -1051,7 +1147,7 @@ export default class WebformBuilder extends Component { (display === 'wizard' && !hasSubmitButton) || (!noAddSubmitButton && !_id && !hasSubmitButton); - // Ensure there is at least a submit button. + // Ensure there is at least a submit button. if (!noDefaultSubmitButton && shouldAddSubmitButton) { form.components.push({ type: 'button', @@ -1061,13 +1157,14 @@ export default class WebformBuilder extends Component { block: false, action: 'submit', disableOnInvalid: true, - theme: 'primary' + theme: 'primary', }); } if (this.webform) { - const shouldRebuild = !this.webform.form.components || - (form.components.length !== this.webform.form.components.length); + const shouldRebuild = + !this.webform.form.components || + form.components.length !== this.webform.form.components.length; return this.webform.setForm(form, { keepAsReference: true }).then(() => { if (this.refs.form) { this.builderHeight = this.refs.form.offsetHeight; @@ -1085,7 +1182,7 @@ export default class WebformBuilder extends Component { //populate isEnabled for captcha form settings let isCaptchaEnabled = false; if (this.form.components) { - eachComponent(form.components, component => { + eachComponent(form.components, (component) => { if (isCaptchaEnabled) { return; } @@ -1096,8 +1193,7 @@ export default class WebformBuilder extends Component { }); if (isCaptchaEnabled) { _.set(form, 'settings.captcha.isEnabled', true); - } - else if (_.get(form, 'settings.captcha.isEnabled')) { + } else if (_.get(form, 'settings.captcha.isEnabled')) { _.set(form, 'settings.captcha.isEnabled', false); } } @@ -1108,15 +1204,15 @@ export default class WebformBuilder extends Component { return; } let remove = true; - const removingComponentsGroup = !component.skipRemoveConfirm && - ( - (Array.isArray(component.components) && component.components.length) || + const removingComponentsGroup = + !component.skipRemoveConfirm && + ((Array.isArray(component.components) && component.components.length) || (Array.isArray(component.rows) && component.rows.length) || - (Array.isArray(component.columns) && component.columns.length) - ); + (Array.isArray(component.columns) && component.columns.length)); if (this.options.alwaysConfirmComponentRemoval || removingComponentsGroup) { - const message = removingComponentsGroup ? 'Removing this component will also remove all of its children. Are you sure you want to do this?' + const message = removingComponentsGroup + ? 'Removing this component will also remove all of its children. Are you sure you want to do this?' : 'Are you sure you want to remove this component?'; remove = window.confirm(this.t(message)); } @@ -1128,16 +1224,14 @@ export default class WebformBuilder extends Component { const path = this.getComponentsPath(component, parent.formioComponent.component); if (parent.formioContainer) { parent.formioContainer.splice(index, 1); - } - else if (parent.formioComponent && parent.formioComponent.removeChildComponent) { + } else if (parent.formioComponent && parent.formioComponent.removeChildComponent) { parent.formioComponent.removeChildComponent(component); } if (component.input && componentInstance && parent.formioComponent) { const parentDefaultValue = _.get(parent.formioComponent, 'component.defaultValue', null); if (Array.isArray(parentDefaultValue)) { - parentDefaultValue.forEach(v => _.unset(v, componentInstance.key)); - } - else if (typeof parentDefaultValue === 'object') { + parentDefaultValue.forEach((v) => _.unset(v, componentInstance.key)); + } else if (typeof parentDefaultValue === 'object') { _.unset(parentDefaultValue, componentInstance.key); } } @@ -1162,27 +1256,35 @@ export default class WebformBuilder extends Component { } updateComponent(component, changed) { - const sanitizeConfig = _.get(this.webform, 'form.settings.sanitizeConfig') || _.get(this.webform, 'form.globalSettings.sanitizeConfig'); + const sanitizeConfig = + _.get(this.webform, 'form.settings.sanitizeConfig') || + _.get(this.webform, 'form.globalSettings.sanitizeConfig'); // Update the preview. if (this.preview) { this.preview.form = { - components: [_.omit({ ...component }, [ - 'hidden', - 'conditional', - 'calculateValue', - 'logic', - 'autofocus', - 'customConditional', - ])], + components: [ + _.omit({ ...component }, [ + 'hidden', + 'conditional', + 'calculateValue', + 'logic', + 'autofocus', + 'customConditional', + ]), + ], config: this.options.formConfig || {}, sanitizeConfig, }; const fieldsToRemoveDoubleQuotes = ['label', 'tooltip']; - this.preview.form.components.forEach(component => this.replaceDoubleQuotes(component, fieldsToRemoveDoubleQuotes)); + this.preview.form.components.forEach((component) => + this.replaceDoubleQuotes(component, fieldsToRemoveDoubleQuotes), + ); - const previewElement = this.componentEdit.querySelector(`[${this._referenceAttributeName}="preview"]`); + const previewElement = this.componentEdit.querySelector( + `[${this._referenceAttributeName}="preview"]`, + ); if (previewElement) { this.setContent(previewElement, this.preview.render(), null, sanitizeConfig); this.preview.attach(previewElement); @@ -1192,35 +1294,40 @@ export default class WebformBuilder extends Component { // Change the "default value" field to be reflective of this component. const defaultValueComponent = getComponent(this.editForm.components, 'defaultValue', true); if (defaultValueComponent && component.type !== 'hidden') { - const defaultChanged = changed && ( - (changed.component && changed.component.key === 'defaultValue') - || (changed.instance && defaultValueComponent.hasComponent && defaultValueComponent.hasComponent(changed.instance)) - ); + const defaultChanged = + changed && + ((changed.component && changed.component.key === 'defaultValue') || + (changed.instance && + defaultValueComponent.hasComponent && + defaultValueComponent.hasComponent(changed.instance))); if (!defaultChanged) { - _.assign(defaultValueComponent.component, _.omit({ ...component }, [ - 'key', - 'label', - 'labelPosition', - 'labelMargin', - 'labelWidth', - 'placeholder', - 'tooltip', - 'hidden', - 'autofocus', - 'validate', - 'disabled', - 'defaultValue', - 'customDefaultValue', - 'calculateValue', - 'conditional', - 'customConditional', - 'id', - 'logic', - 'fields.day.required', - 'fields.month.required', - 'fields.year.required', - ])); + _.assign( + defaultValueComponent.component, + _.omit({ ...component }, [ + 'key', + 'label', + 'labelPosition', + 'labelMargin', + 'labelWidth', + 'placeholder', + 'tooltip', + 'hidden', + 'autofocus', + 'validate', + 'disabled', + 'defaultValue', + 'customDefaultValue', + 'calculateValue', + 'conditional', + 'customConditional', + 'id', + 'logic', + 'fields.day.required', + 'fields.month.required', + 'fields.year.required', + ]), + ); const parentComponent = defaultValueComponent.parent; let tabIndex = -1; let index = -1; @@ -1238,7 +1345,11 @@ export default class WebformBuilder extends Component { if (tabIndex !== -1 && index !== -1 && changed && !_.isNil(changed.value)) { const sibling = parentComponent.tabs[tabIndex][index + 1]; parentComponent.removeComponent(defaultValueComponent); - const newComp = parentComponent.addComponent(defaultValueComponent.component, defaultValueComponent.data, sibling); + const newComp = parentComponent.addComponent( + defaultValueComponent.component, + defaultValueComponent.data, + sibling, + ); _.pull(newComp.validators, 'required'); parentComponent.tabs[tabIndex].splice(index, 1, newComp); newComp.checkValidity = () => true; @@ -1250,8 +1361,7 @@ export default class WebformBuilder extends Component { } } } - } - else { + } else { let dataPath = changed.instance._data.key; const path = getArrayFromComponentPath(changed.instance.path); @@ -1276,23 +1386,25 @@ export default class WebformBuilder extends Component { const repeatablePaths = []; const keys = new Map(); - eachComponent(this.form.components, (comp, path) => { - if (!comp.key) { - return; - } - - if (keys.has(comp.key)) { - if (keys.get(comp.key).includes(path)) { - repeatablePaths.push(path); + eachComponent( + this.form.components, + (comp, path) => { + if (!comp.key) { + return; } - else { - keys.set(comp.key, [...keys.get(comp.key), path]); + + if (keys.has(comp.key)) { + if (keys.get(comp.key).includes(path)) { + repeatablePaths.push(path); + } else { + keys.set(comp.key, [...keys.get(comp.key), path]); + } + } else { + keys.set(comp.key, [path]); } - } - else { - keys.set(comp.key, [path]); - } - }, true); + }, + true, + ); return repeatablePaths; } @@ -1325,7 +1437,9 @@ export default class WebformBuilder extends Component { const parentContainer = parent ? parent.formioContainer : this.container; const parentComponent = parent ? parent.formioComponent : this; this.dialog.close(); - const path = parentContainer ? this.getComponentsPath(component, parentComponent.component) : ''; + const path = parentContainer + ? this.getComponentsPath(component, parentComponent.component) + : ''; if (!original) { original = parent.formioContainer.find((comp) => comp.id === component.id); } @@ -1354,15 +1468,14 @@ export default class WebformBuilder extends Component { if (comp) { comp.component = submissionData; } - } - else if (isParentSaveChildMethod) { + } else if (isParentSaveChildMethod) { parent.formioComponent.saveChildComponent(submissionData); } const rebuild = parentComponent.rebuild() || Promise.resolve(); return rebuild.then(() => { parentComponent.resetValue(); - const schema = parentContainer ? parentContainer[index] : (comp ? comp.schema : []); + const schema = parentContainer ? parentContainer[index] : comp ? comp.schema : []; this.emitSaveComponentEvent( schema, originalComp, @@ -1370,7 +1483,7 @@ export default class WebformBuilder extends Component { path, index, isNew, - originalComponentSchema + originalComponentSchema, ); this.emit('change', this.form); this.highlightInvalidComponents(); @@ -1387,20 +1500,31 @@ export default class WebformBuilder extends Component { return Promise.resolve(); } - emitSaveComponentEvent(schema, originalComp, parentComponentSchema, path, index, isNew, originalComponentSchema) { - this.emit('saveComponent', + emitSaveComponentEvent( + schema, + originalComp, + parentComponentSchema, + path, + index, + isNew, + originalComponentSchema, + ) { + this.emit( + 'saveComponent', schema, originalComp, parentComponentSchema, path, index, isNew, - originalComponentSchema + originalComponentSchema, ); } attachEditComponentControls(component, parent, isNew, original, ComponentClass) { - const cancelButtons = this.componentEdit.querySelectorAll(`[${this._referenceAttributeName}="cancelButton"]`); + const cancelButtons = this.componentEdit.querySelectorAll( + `[${this._referenceAttributeName}="cancelButton"]`, + ); cancelButtons.forEach((cancelButton) => { this.editForm.addEventListener(cancelButton, 'click', (event) => { event.preventDefault(); @@ -1411,7 +1535,9 @@ export default class WebformBuilder extends Component { }); }); - const removeButtons = this.componentEdit.querySelectorAll(`[${this._referenceAttributeName}="removeButton"]`); + const removeButtons = this.componentEdit.querySelectorAll( + `[${this._referenceAttributeName}="removeButton"]`, + ); removeButtons.forEach((removeButton) => { this.editForm.addEventListener(removeButton, 'click', (event) => { event.preventDefault(); @@ -1424,12 +1550,14 @@ export default class WebformBuilder extends Component { }); }); - const saveButtons = this.componentEdit.querySelectorAll(`[${this._referenceAttributeName}="saveButton"]`); + const saveButtons = this.componentEdit.querySelectorAll( + `[${this._referenceAttributeName}="saveButton"]`, + ); saveButtons.forEach((saveButton) => { this.editForm.addEventListener(saveButton, 'click', (event) => { event.preventDefault(); const errors = this.editForm.validate(this.editForm.data, { - dirty: true + dirty: true, }); if (errors.length) { this.editForm.setPristine(false); @@ -1441,20 +1569,27 @@ export default class WebformBuilder extends Component { }); }); - const previewButtons = this.componentEdit.querySelectorAll(`[${this._referenceAttributeName}="previewButton"]`); + const previewButtons = this.componentEdit.querySelectorAll( + `[${this._referenceAttributeName}="previewButton"]`, + ); previewButtons.forEach((previewButton) => { this.editForm.addEventListener(previewButton, 'click', (event) => { event.preventDefault(); this.showPreview = !this.showPreview; this.editForm.detach(); - this.setContent(this.componentEdit, this.renderTemplate('builderEditForm', { - componentInfo: ComponentClass.builderInfo, - editForm: this.editForm.render(), - preview: this.preview ? this.preview.render() : false, - showPreview: this.showPreview, - helplinks: this.helplinks, - })); - this.editForm.attach(this.componentEdit.querySelector(`[${this._referenceAttributeName}="editForm"]`)); + this.setContent( + this.componentEdit, + this.renderTemplate('builderEditForm', { + componentInfo: ComponentClass.builderInfo, + editForm: this.editForm.render(), + preview: this.preview ? this.preview.render() : false, + showPreview: this.showPreview, + helplinks: this.helplinks, + }), + ); + this.editForm.attach( + this.componentEdit.querySelector(`[${this._referenceAttributeName}="editForm"]`), + ); this.updateComponent(this.editForm.submission.data ?? component); this.attachEditComponentControls(component, parent, isNew, original, ComponentClass); }); @@ -1493,39 +1628,40 @@ export default class WebformBuilder extends Component { this.hook('editComponentParentInstance', editFormOptions, parent); - this.editForm = new Webform( - { - ..._.omit(this.options, ['hooks', 'builder', 'events', 'attachMode', 'skipInit']), - language: this.options.language, - ...editFormOptions, - evalContext: { - ...(editFormOptions?.evalContext || this.options?.evalContext || {}), - buildingForm: this.form, - }, - } - ); + this.editForm = new Webform({ + ..._.omit(this.options, ['hooks', 'builder', 'events', 'attachMode', 'skipInit']), + language: this.options.language, + ...editFormOptions, + evalContext: { + ...(editFormOptions?.evalContext || this.options?.evalContext || {}), + buildingForm: this.form, + }, + }); this.hook('editFormProperties', parent); - this.editForm.form = (isJsonEdit && !isCustom) ? { - components: [ - { - type: 'textarea', - as: 'json', - editor: 'ace', - weight: 10, - input: true, - key: 'componentJson', - label: 'Component JSON', - tooltip: 'Edit the JSON for this component.' - }, - { - type: 'checkbox', - key: 'showFullSchema', - label: 'Full Schema' - } - ] - } : ComponentClass.editForm(_.cloneDeep(overrides)); + this.editForm.form = + isJsonEdit && !isCustom + ? { + components: [ + { + type: 'textarea', + as: 'json', + editor: 'ace', + weight: 10, + input: true, + key: 'componentJson', + label: 'Component JSON', + tooltip: 'Edit the JSON for this component.', + }, + { + type: 'checkbox', + key: 'showFullSchema', + label: 'Full Schema', + }, + ], + } + : ComponentClass.editForm(_.cloneDeep(overrides)); const instanceOptions = { inFormBuilder: true, }; @@ -1535,45 +1671,57 @@ export default class WebformBuilder extends Component { const instance = new ComponentClass(componentCopy, instanceOptions); const schema = this.hook('builderComponentSchema', component, instance); - this.editForm.submission = isJsonEdit ? { - data: { - componentJson: schema, - showFullSchema: this.options.showFullJsonSchema - }, - } : { - data: instance.component, - }; + this.editForm.submission = isJsonEdit + ? { + data: { + componentJson: schema, + showFullSchema: this.options.showFullJsonSchema, + }, + } + : { + data: instance.component, + }; if (this.preview) { this.preview.destroy(); } - if (!ComponentClass.builderInfo.hasOwnProperty('preview') || ComponentClass.builderInfo.preview) { - this.preview = new Webform(_.omit({ ...this.options, preview: true }, [ - 'hooks', - 'builder', - 'events', - 'attachMode', - 'calculateValue' - ])); + if ( + !ComponentClass.builderInfo.hasOwnProperty('preview') || + ComponentClass.builderInfo.preview + ) { + this.preview = new Webform( + _.omit({ ...this.options, preview: true }, [ + 'hooks', + 'builder', + 'events', + 'attachMode', + 'calculateValue', + ]), + ); this.hook('previewFormSettitngs', schema, isJsonEdit); } this.showPreview = ComponentClass.builderInfo.showPreview ?? true; - this.componentEdit = this.ce('div', { 'class': 'component-edit-container' }); - this.setContent(this.componentEdit, this.renderTemplate('builderEditForm', { - componentInfo: ComponentClass.builderInfo, - editForm: this.editForm.render(), - preview: this.preview ? this.preview.render() : false, - showPreview: this.showPreview, - helplinks: this.helplinks - })); + this.componentEdit = this.ce('div', { class: 'component-edit-container' }); + this.setContent( + this.componentEdit, + this.renderTemplate('builderEditForm', { + componentInfo: ComponentClass.builderInfo, + editForm: this.editForm.render(), + preview: this.preview ? this.preview.render() : false, + showPreview: this.showPreview, + helplinks: this.helplinks, + }), + ); this.dialog = this.createModal(this.componentEdit, _.get(this.options, 'dialogAttr', {})); // This is the attach step. - this.editForm.attach(this.componentEdit.querySelector(`[${this._referenceAttributeName}="editForm"]`)); + this.editForm.attach( + this.componentEdit.querySelector(`[${this._referenceAttributeName}="editForm"]`), + ); this.hook('editFormWrapper'); @@ -1586,21 +1734,20 @@ export default class WebformBuilder extends Component { this.editForm.submission = { data: { componentJson: value ? instance.component : component, - showFullSchema: value + showFullSchema: value, }, }; return; } // See if this is a manually modified key. Treat custom component keys as manually modified - if ((event.changed.component && (event.changed.component.key === 'key')) || isJsonEdit) { + if ((event.changed.component && event.changed.component.key === 'key') || isJsonEdit) { componentCopy.keyModified = true; } let isComponentLabelChanged = false; if (event.changed.instance) { isComponentLabelChanged = ['label', 'title'].includes(event.changed.instance.path); - } - else if (event.changed.component) { + } else if (event.changed.component) { isComponentLabelChanged = ['label', 'title'].includes(event.changed.component.key); } @@ -1608,7 +1755,7 @@ export default class WebformBuilder extends Component { // Ensure this component has a key. if (isNew) { if (!event.data.keyModified) { - this.editForm.everyComponent(component => { + this.editForm.everyComponent((component) => { if (component.key === 'key' && component.parent.component.key === 'tabs') { component.setValue(this.updateComponentKey(event.data)); return false; @@ -1619,7 +1766,9 @@ export default class WebformBuilder extends Component { if (this.form) { let formComponents = this.findNamespaceRoot(parent.formioComponent); // excluding component which key uniqueness is to be checked to prevent the comparing of the same keys - formComponents = formComponents.filter(comp => editFormOptions.editComponent.id !== comp.id); + formComponents = formComponents.filter( + (comp) => editFormOptions.editComponent.id !== comp.id, + ); // Set a unique key for this component. BuilderUtils.uniquify(formComponents, event.data); @@ -1630,7 +1779,11 @@ export default class WebformBuilder extends Component { // If the edit form has any nested form inside, we get a partial data (nested form's data) in the // event.data property let editFormData; - if (event.changed.instance && event.changed.instance.root && event.changed.instance.root.id !== this.editForm.id) { + if ( + event.changed.instance && + event.changed.instance.root && + event.changed.instance.root.id !== this.editForm.id + ) { editFormData = this.editForm.data; } @@ -1662,12 +1815,10 @@ export default class WebformBuilder extends Component { } updateComponentKey(data) { - return _.camelCase( - data.title || - data.label || - data.placeholder || - data.type - ).replace(/^[0-9]*/, ''); + return _.camelCase(data.title || data.label || data.placeholder || data.type).replace( + /^[0-9]*/, + '', + ); } moveComponent(component) { @@ -1722,7 +1873,8 @@ export default class WebformBuilder extends Component { if (index !== -1) { info = source.formioContainer.splice( - _.findIndex(source.formioContainer, { key: element.formioComponent.component.key }), 1 + _.findIndex(source.formioContainer, { key: element.formioComponent.component.key }), + 1, ); info = info[0]; source.removeChild(element); @@ -1730,20 +1882,18 @@ export default class WebformBuilder extends Component { } const len = source.formioComponent.components.length; - index = (index === -1) ? 0 : index + step; + index = index === -1 ? 0 : index + step; if (index === -1) { source.formioContainer.push(info); source.appendChild(element); - } - else if (index === len) { + } else if (index === len) { const key = source.formioContainer[0].key; index = _.findIndex(source.formioComponent.components, { key: key }); const firstElement = source.formioComponent.components[index].element; source.formioContainer.splice(0, 0, info); source.insertBefore(element, firstElement); - } - else if (index !== -1) { + } else if (index !== -1) { source.formioContainer.splice(index, 0, info); direction ? source.insertBefore(element, sibling) @@ -1781,8 +1931,7 @@ export default class WebformBuilder extends Component { if (firstComponent) { source.formioContainer.splice(0, 0, info); - } - else { + } else { source.formioContainer.push(info); } @@ -1830,13 +1979,20 @@ export default class WebformBuilder extends Component { index = parent.formioContainer.indexOf(component.component); path = this.getComponentsPath(schema, parent.formioComponent.component); parent.formioContainer.splice(index + 1, 0, schema); - } - else if (isParentSaveChildMethod) { + } else if (isParentSaveChildMethod) { parent.formioComponent.saveChildComponent(schema, false); } parent.formioComponent.rebuild(); - this.emitSaveComponentEvent(schema, schema, parent.formioComponent.component, path, (index + 1), true, schema); + this.emitSaveComponentEvent( + schema, + schema, + parent.formioComponent.component, + path, + index + 1, + true, + schema, + ); } this.emit('change', this.form); } @@ -1893,8 +2049,7 @@ export default class WebformBuilder extends Component { this.groups[name] = group; this.groupOrder.push(name); this.triggerRedraw(); - } - else { + } else { this.updateBuilderGroup(name, group); } } @@ -1907,11 +2062,6 @@ export default class WebformBuilder extends Component { } generateKey(info) { - return info.key || _.camelCase( - info.title || - info.label || - info.placeholder || - info.type - ); + return info.key || _.camelCase(info.title || info.label || info.placeholder || info.type); } } diff --git a/src/Wizard.js b/src/Wizard.js index 678b9a6b8b..5991f9d478 100644 --- a/src/Wizard.js +++ b/src/Wizard.js @@ -22,10 +22,10 @@ export default class Wizard extends Webform { constructor(elementOrOptions = undefined, _options = undefined) { let element, options; if (elementOrOptions instanceof HTMLElement || _options) { - element = elementOrOptions; - options = _options || {}; + element = elementOrOptions; + options = _options || {}; } else { - options = elementOrOptions || {}; + options = elementOrOptions || {}; } options.display = 'wizard'; @@ -61,8 +61,9 @@ export default class Wizard extends Webform { getPages(args = {}) { const { all = false } = args; const pages = this.hasExtraPages ? this.components : this.pages; - const filteredPages = pages - .filter(all ? _.identity : (p, index) => this._seenPages.includes(index)); + const filteredPages = pages.filter( + all ? _.identity : (p, index) => this._seenPages.includes(index), + ); return filteredPages; } @@ -93,9 +94,7 @@ export default class Wizard extends Webform { } getComponents() { - return this.submitting - ? this.getPages({ all: this.isLastPage() }) - : super.getComponents(); + return this.submitting ? this.getPages({ all: this.isLastPage() }) : super.getComponents(); } resetValue() { @@ -109,11 +108,11 @@ export default class Wizard extends Webform { showPrevious: true, showNext: true, showSubmit: true, - showCancel: !this.options.readOnly + showCancel: !this.options.readOnly, }); this.options.breadcrumbSettings = _.defaults(this.options.breadcrumbSettings, { - clickable: true + clickable: true, }); this.options.allowPrevious = this.options.allowPrevious || false; @@ -126,7 +125,9 @@ export default class Wizard extends Webform { } this.on('subWizardsUpdated', (subForm) => { - const subWizard = this.subWizards.find(subWizard => subForm?.id && subWizard.subForm?.id === subForm?.id); + const subWizard = this.subWizards.find( + (subWizard) => subForm?.id && subWizard.subForm?.id === subForm?.id, + ); if (this.subWizards.length && subWizard) { subWizard.subForm.setValue(subForm._submission, {}, true); @@ -153,10 +154,10 @@ export default class Wizard extends Webform { get buttons() { const buttons = {}; [ - { name: 'cancel', method: 'cancel' }, - { name: 'previous', method: 'prevPage' }, - { name: 'next', method: 'nextPage' }, - { name: 'submit', method: 'submit' } + { name: 'cancel', method: 'cancel' }, + { name: 'previous', method: 'prevPage' }, + { name: 'next', method: 'nextPage' }, + { name: 'submit', method: 'submit' }, ].forEach((button) => { if (this.hasButton(button.name)) { buttons[button.name] = button; @@ -166,13 +167,10 @@ export default class Wizard extends Webform { } get buttonOrder() { - const defaultButtonOrder = [ - 'cancel', - 'previous', - 'next', - 'submit' - ]; - return this.options.properties?.wizardButtonOrder?.toLowerCase().split(', ') ?? defaultButtonOrder; + const defaultButtonOrder = ['cancel', 'previous', 'next', 'submit']; + return ( + this.options.properties?.wizardButtonOrder?.toLowerCase().split(', ') ?? defaultButtonOrder + ); } get renderContext() { @@ -181,7 +179,9 @@ export default class Wizard extends Webform { wizardKey: this.wizardKey, isBreadcrumbClickable: this.isBreadcrumbClickable(), isSubForm: !!this.parent && !this.root?.component?.type === 'wizard', - panels: this.allPages.length ? this.allPages.map(page => page.component) : this.pages.map(page => page.component), + panels: this.allPages.length + ? this.allPages.map((page) => page.component) + : this.pages.map((page) => page.component), buttons: this.buttons, currentPage: this.page, buttonOrder: this.buttonOrder, @@ -193,8 +193,12 @@ export default class Wizard extends Webform { if (currentPanel && currentPanel.buttonSettings) { Object.keys(currentPanel.buttonSettings).forEach(() => { - Object.keys(ctx.buttons).forEach(key => { - if (typeof currentPanel.buttonSettings[key] !== 'undefined' && !currentPanel.buttonSettings[key] || ctx.isSubForm) { + Object.keys(ctx.buttons).forEach((key) => { + if ( + (typeof currentPanel.buttonSettings[key] !== 'undefined' && + !currentPanel.buttonSettings[key]) || + ctx.isSubForm + ) { ctx.buttons[key] = null; } }); @@ -205,7 +209,8 @@ export default class Wizard extends Webform { } prepareHeaderSettings(ctx, headerType) { - const shouldHideBreadcrumbs = this.currentPanel?.breadcrumb === 'none' || + const shouldHideBreadcrumbs = + this.currentPanel?.breadcrumb === 'none' || _.get(this.form, 'settings.wizardBreadcrumbsType', '') === 'none'; if (shouldHideBreadcrumbs || ctx.isSubForm) { return null; @@ -217,7 +222,7 @@ export default class Wizard extends Webform { const ctx = this.renderContext; if (this.component.key) { - ctx.panels.map(panel => { + ctx.panels.map((panel) => { if (panel.key === this.component.key) { this.currentPanel = panel; ctx.wizardPageTooltip = this.getFormattedTooltip(panel.tooltip); @@ -228,22 +233,26 @@ export default class Wizard extends Webform { const wizardNav = this.prepareNavigationSettings(ctx); const wizardHeaderType = `wizardHeader${_.get(this.form, 'settings.wizardHeaderType', '')}`; - const wizardHeaderLocation = _.get(this.form, 'settings.wizardHeaderLocation', 'left'); + const wizardHeaderLocation = _.get(this.form, 'settings.wizardHeaderLocation', 'left'); const wizardHeader = this.prepareHeaderSettings(ctx, wizardHeaderType); - return this.renderTemplate('wizard', { - ...ctx, - className: super.getClassName(), - wizardHeader, - wizardHeaderType, - wizardHeaderLocation, - wizardNav, - components: this.renderComponents([ - ...this.prefixComps, - ...this.currentPage.components, - ...this.suffixComps - ]), - }, this.builderMode ? 'builder' : 'form'); + return this.renderTemplate( + 'wizard', + { + ...ctx, + className: super.getClassName(), + wizardHeader, + wizardHeaderType, + wizardHeaderLocation, + wizardNav, + components: this.renderComponents([ + ...this.prefixComps, + ...this.currentPage.components, + ...this.suffixComps, + ]), + }, + this.builderMode ? 'builder' : 'form', + ); } redrawNavigation() { @@ -269,11 +278,14 @@ export default class Wizard extends Webform { let headerElement = this.element.querySelector(`#${this.wizardKey}-header`); if (headerElement) { this.detachHeader(); - headerElement.outerHTML = this.renderTemplate(`wizardHeader${_.get(this.form, 'settings.wizardHeaderType', '')}`, this.renderContext); + headerElement.outerHTML = this.renderTemplate( + `wizardHeader${_.get(this.form, 'settings.wizardHeaderType', '')}`, + this.renderContext, + ); headerElement = this.element.querySelector(`#${this.wizardKey}-header`); this.loadRefs(headerElement, { [`${this.wizardKey}-link`]: 'multiple', - [`${this.wizardKey}-tooltip`]: 'multiple' + [`${this.wizardKey}-tooltip`]: 'multiple', }); this.attachHeader(); } @@ -297,7 +309,7 @@ export default class Wizard extends Webform { [`${this.wizardKey}-next`]: 'single', [`${this.wizardKey}-submit`]: 'single', [`${this.wizardKey}-link`]: 'multiple', - [`${this.wizardKey}-tooltip`]: 'multiple' + [`${this.wizardKey}-tooltip`]: 'multiple', }); if ((this.options.readOnly || this.editMode) && !this.enabledIndex) { this.enabledIndex = this.pages?.length - 1; @@ -328,15 +340,14 @@ export default class Wizard extends Webform { if ('scrollIntoView' in pageTop) { pageTop.scrollIntoView(true); - } - else { + } else { this.scrollIntoView(pageTop); } } isBreadcrumbClickable() { let currentPage = null; - this.pages.map(page => { + this.pages.map((page) => { if (_.isEqual(this.currentPage.component, page.component)) { currentPage = page; } @@ -355,7 +366,7 @@ export default class Wizard extends Webform { isAllowPrevious() { let currentPage = null; - this.pages.map(page => { + this.pages.map((page) => { if (_.isEqual(this.currentPage.component, page.component)) { currentPage = page; } @@ -409,18 +420,19 @@ export default class Wizard extends Webform { this.setLoading(buttonElement, true); // Call the button method, then re-enable the button. - this[button.method]().then(() => { - buttonElement.removeAttribute('disabled'); - this.setLoading(buttonElement, false); - }).catch(() => { - buttonElement.removeAttribute('disabled'); - this.setLoading(buttonElement, false); - }); + this[button.method]() + .then(() => { + buttonElement.removeAttribute('disabled'); + this.setLoading(buttonElement, false); + }) + .catch(() => { + buttonElement.removeAttribute('disabled'); + this.setLoading(buttonElement, false); + }); }); }); } - /** * Emits an event indicating that a wizard page has been selected. * @param {number} index - Index of the selected wizard page in the `pages` array. @@ -479,29 +491,45 @@ export default class Wizard extends Webform { const getAllComponents = (nestedComp, compsArr, pushAllowed = true) => { const nestedPages = []; const dataArrayComponents = ['datagrid', 'editgrid', 'dynamicWizard']; - const currentComponents = nestedComp?.subForm ? this.getSortedComponents(nestedComp.subForm) : nestedComp?.components || []; - const visibleComponents = currentComponents.filter(comp => comp._visible); - const filteredComponents = visibleComponents.filter(comp => !dataArrayComponents.includes(comp.component.type) && (comp.type !== 'form' || comp.isNestedWizard)); - const additionalComponents = currentComponents.filter(comp => comp.subForm?._form.display !== 'wizard'); + const currentComponents = nestedComp?.subForm + ? this.getSortedComponents(nestedComp.subForm) + : nestedComp?.components || []; + const visibleComponents = currentComponents.filter((comp) => comp._visible); + const filteredComponents = visibleComponents.filter( + (comp) => + !dataArrayComponents.includes(comp.component.type) && + (comp.type !== 'form' || comp.isNestedWizard), + ); + const additionalComponents = currentComponents.filter( + (comp) => comp.subForm?._form.display !== 'wizard', + ); let hasNested = false; - eachComponent(filteredComponents, (comp) => { - if (comp && comp.component) { - if (comp.component.type === 'panel' && comp?.parent.wizard && !getAllComponents(comp, compsArr, false)) { - if (pushAllowed) { - this.setRootPanelId(comp); - nestedPages.push(comp); + eachComponent( + filteredComponents, + (comp) => { + if (comp && comp.component) { + if ( + comp.component.type === 'panel' && + comp?.parent.wizard && + !getAllComponents(comp, compsArr, false) + ) { + if (pushAllowed) { + this.setRootPanelId(comp); + nestedPages.push(comp); + } + hasNested = true; } - hasNested = true; - } - if (comp.isNestedWizard && comp.subForm) { - const hasNestedForm = getAllComponents(comp, nestedPages, pushAllowed); - if (!hasNested) { - hasNested = hasNestedForm; + if (comp.isNestedWizard && comp.subForm) { + const hasNestedForm = getAllComponents(comp, nestedPages, pushAllowed); + if (!hasNested) { + hasNested = hasNestedForm; + } } } - } - }, true); + }, + true, + ); if (nestedComp.component.type === 'panel') { if (!hasNested && pushAllowed) { @@ -540,12 +568,13 @@ export default class Wizard extends Webform { this.allPages = allComponents; } - getSortedComponents({ components, originalComponents }) { // sorts components if they were shuffled after the conditional logic + getSortedComponents({ components, originalComponents }) { + // sorts components if they were shuffled after the conditional logic const currentComponents = []; const currentPages = []; if (components && components.length) { - components.map(page => { + components.map((page) => { if (page.component.type === 'panel') { currentPages[page.component.key || page.component.title] = page; } @@ -584,11 +613,11 @@ export default class Wizard extends Webform { const visible = []; const currentPages = {}; const pageOptions = { - ...(_.clone(this.options)), + ..._.clone(this.options), ...(this.parent ? { root: this } : {}), }; if (this.components && this.components.length) { - this.components.forEach(page => { + this.components.forEach((page) => { if (page.component.type === 'panel') { currentPages[page.component.key || page.component.title] = page; } @@ -611,8 +640,7 @@ export default class Wizard extends Webform { if (forceShow) { isVisible = true; - } - else if (forceHide) { + } else if (forceHide) { isVisible = false; } @@ -628,15 +656,13 @@ export default class Wizard extends Webform { page.visible = isVisible; this.pages.push(page); page.eachComponent((component) => { - component.page = (this.pages.length - 1); + component.page = this.pages.length - 1; }); } - } - else if (item.type !== 'button') { + } else if (item.type !== 'button') { if (!this.pages.length) { this.prefixComps.push(this.createComponent(item, pageOptions)); - } - else { + } else { this.suffixComps.push(this.createComponent(item, pageOptions)); } } @@ -680,7 +706,7 @@ export default class Wizard extends Webform { const pageFromPages = this.pages[num]; const pageFromComponents = this.components[num]; if (!pageFromComponents || pageFromPages?.id !== pageFromComponents.id) { - parentNum = this.components.findIndex(comp => { + parentNum = this.components.findIndex((comp) => { return comp.id === this.pages?.[parentNum]?.rootPanelId; }); } @@ -690,14 +716,15 @@ export default class Wizard extends Webform { } this.redraw().then(() => { this.checkData(this.submission.data); - const errors = this.submitted ? this.validate(this.localData, { dirty: true }) : this.validateCurrentPage(); + const errors = this.submitted + ? this.validate(this.localData, { dirty: true }) + : this.validateCurrentPage(); if (this.alert) { this.showErrors(errors, true, true); } }); return Promise.resolve(); - } - else if (!this.pages.length) { + } else if (!this.pages.length) { this.redraw(); return Promise.resolve(); } @@ -716,7 +743,9 @@ export default class Wizard extends Webform { } get currentPage() { - return (this.pages && (this.pages.length >= this.page)) ? this.pages[this.page] : { components: [] }; + return this.pages && this.pages.length >= this.page + ? this.pages[this.page] + : { components: [] }; } getNextPage() { @@ -725,14 +754,18 @@ export default class Wizard extends Webform { const form = this.pages[this.page].component; // Check conditional nextPage if (form) { - const page = this.pages.length > (this.page + 1) && !this.showAllErrors ? this.page + 1 : -1; + const page = this.pages.length > this.page + 1 && !this.showAllErrors ? this.page + 1 : -1; if (form.nextPage) { - const next = this.evaluate(form.nextPage, { - next: page, - data, - page, - form - }, 'next'); + const next = this.evaluate( + form.nextPage, + { + next: page, + data, + page, + form, + }, + 'next', + ); if (next === null) { this.currentNextPage = null; return null; @@ -765,10 +798,12 @@ export default class Wizard extends Webform { beforeSubmit() { const pages = this.getPages(); - return Promise.all(pages.map((page) => { - page.options.beforeSubmit = true; - return page.beforeSubmit(); - })); + return Promise.all( + pages.map((page) => { + page.options.beforeSubmit = true; + return page.beforeSubmit(); + }), + ); } beforePage(next) { @@ -782,8 +817,7 @@ export default class Wizard extends Webform { const form = this.currentPage; if (form) { form.beforePage(next).then(resolve).catch(reject); - } - else { + } else { resolve(); } }); @@ -806,7 +840,9 @@ export default class Wizard extends Webform { // Validate the form before going to the next page const currentPageErrors = this.validateCurrentPage({ dirty: true }); - const errors = this.submitted ? this.validate(this.localData, { dirty: true }) : currentPageErrors; + const errors = this.submitted + ? this.validate(this.localData, { dirty: true }) + : currentPageErrors; // allow going to the next page if the current page is valid, even if there are form level errors if (currentPageErrors.length === 0) { this.checkData(this.submission.data); @@ -820,8 +856,7 @@ export default class Wizard extends Webform { this.emitNextPage(); }); }); - } - else { + } else { this.currentPage.components.forEach((comp) => comp.setPristine(false)); this.scrollIntoView(this.element, true); return Promise.reject(this.showErrors(errors, true)); @@ -831,7 +866,11 @@ export default class Wizard extends Webform { validateCurrentPage(flags = {}) { const components = this.currentPage?.components.map((component) => component.component); // Accessing the parent ensures the right instance (whether it's the parent Wizard or a nested Wizard) performs its validation - return this.currentPage?.parent.validateComponents(components, this.currentPage.parent.data, flags); + return this.currentPage?.parent.validateComponents( + components, + this.currentPage.parent.data, + flags, + ); } emitPrevPage() { @@ -885,16 +924,15 @@ export default class Wizard extends Webform { this.originalComponents = []; this.component.components.map((item) => { if (item.type === 'panel') { - item.key = uniqueKey(pageKeys, (item.key || 'panel')); + item.key = uniqueKey(pageKeys, item.key || 'panel'); pageKeys[item.key] = true; if (this.wizard.full) { this.options.show = this.options.show || {}; this.options.show[item.key] = true; - } - else if ( - Object.prototype.hasOwnProperty.call(this.wizard, 'full') - && !_.isEqual(this.originalOptions.show, this.options.show) + } else if ( + Object.prototype.hasOwnProperty.call(this.wizard, 'full') && + !_.isEqual(this.originalOptions.show, this.options.show) ) { this.options.show = { ...(this.originalOptions.show || {}) }; } @@ -908,7 +946,7 @@ export default class Wizard extends Webform { title: 'Page 1', label: 'Page 1', key: 'page1', - components: this.component.components + components: this.component.components, }; this.component.components = [newPage]; this.originalComponents.push(_.clone(newPage)); @@ -924,7 +962,8 @@ export default class Wizard extends Webform { } onSetForm(clonedForm, initialForm) { - this.component.components = (this.parent ? initialForm.components : clonedForm.components) || []; + this.component.components = + (this.parent ? initialForm.components : clonedForm.components) || []; this.setComponentSchema(); } @@ -959,10 +998,10 @@ export default class Wizard extends Webform { } isClickable(page, index) { - return this.page !== index && firstNonNil([ - _.get(page, 'breadcrumbClickable'), - this.options.breadcrumbSettings.clickable - ]); + return ( + this.page !== index && + firstNonNil([_.get(page, 'breadcrumbClickable'), this.options.breadcrumbSettings.clickable]) + ); } hasButton(name, nextPage = this.getNextPage()) { @@ -971,18 +1010,22 @@ export default class Wizard extends Webform { previous = this.options.buttonSettings.showPrevious, cancel = this.options.buttonSettings.showCancel, submit = this.options.buttonSettings.showSubmit, - next = this.options.buttonSettings.showNext + next = this.options.buttonSettings.showNext, } = _.get(this.currentPage, 'component.buttonSettings', {}); switch (name) { case 'previous': - return previous && (this.getPreviousPage() > -1); + return previous && this.getPreviousPage() > -1; case 'next': - return next && (nextPage !== null) && (nextPage !== -1); + return next && nextPage !== null && nextPage !== -1; case 'cancel': return cancel && !this.options.readOnly; case 'submit': - return submit && !this.options.readOnly && ((nextPage === null) || (this.page === (this.pages.length - 1))); + return ( + submit && + !this.options.readOnly && + (nextPage === null || this.page === this.pages.length - 1) + ); default: return true; } @@ -992,14 +1035,9 @@ export default class Wizard extends Webform { if (page.key) { // Some panels have the same key.... return `${page.key}-${page.title}`; - } - else if ( - page.components && - page.components.length > 0 - ) { + } else if (page.components && page.components.length > 0) { return this.pageId(page.components[0]); - } - else { + } else { return page.title; } } @@ -1007,7 +1045,9 @@ export default class Wizard extends Webform { onChange(flags, changed, modified, changes) { super.onChange(flags, changed, modified, changes); // The onChange loop doesn't need all components for wizards - const errors = this.submitted ? this.validate(this.localData, { dirty: true }) : this.validateCurrentPage(); + const errors = this.submitted + ? this.validate(this.localData, { dirty: true }) + : this.validateCurrentPage(); if (this.alert) { this.showErrors(errors, true, true); } @@ -1017,16 +1057,15 @@ export default class Wizard extends Webform { let panels; const currentNextPage = this.currentNextPage; if (this.hasExtraPages) { - currentPanels = this.pages.map(page => page.component.key); + currentPanels = this.pages.map((page) => page.component.key); this.establishPages(); - panels = this.pages.map(page => page.component.key); - } - else { - currentPanels = this.currentPanels || this.pages.map(page => page.component.key); - panels = this.establishPages().map(panel => panel.key); + panels = this.pages.map((page) => page.component.key); + } else { + currentPanels = this.currentPanels || this.pages.map((page) => page.component.key); + panels = this.establishPages().map((panel) => panel.key); this.currentPanels = panels; if (this.currentPanel?.key && this.currentPanels?.length) { - this.setPage(this.currentPanels.findIndex(panel => panel === this.currentPanel.key)); + this.setPage(this.currentPanels.findIndex((panel) => panel === this.currentPanel.key)); } } @@ -1062,17 +1101,16 @@ export default class Wizard extends Webform { return true; } - const components = !currentPageOnly || this.isLastPage() - ? this.getComponents() - : this.currentPage.components; + const components = + !currentPageOnly || this.isLastPage() ? this.getComponents() : this.currentPage.components; return components.reduce( (check, comp) => comp.checkValidity(data, dirty, row, currentPageOnly, childErrors) && check, - true + true, ); } - get errors() { + get errors() { return !this.isLastPage() && !this.submitted ? this.currentPage.errors : super.errors; } @@ -1083,7 +1121,7 @@ export default class Wizard extends Webform { while (!(topPanel.parent instanceof Wizard)) { topPanel = topPanel.parent; } - const pageIndex = this.pages.findIndex(page => page.id === topPanel.id); + const pageIndex = this.pages.findIndex((page) => page.id === topPanel.id); if (pageIndex >= 0) { const page = this.pages[pageIndex]; if (page && page !== this.currentPage) { diff --git a/src/WizardBuilder.js b/src/WizardBuilder.js index 08f3579af4..f8a153a595 100644 --- a/src/WizardBuilder.js +++ b/src/WizardBuilder.js @@ -10,8 +10,7 @@ export default class WizardBuilder extends WebformBuilder { if (arguments[0] instanceof HTMLElement || arguments[1]) { element = arguments[0]; options = arguments[1]; - } - else { + } else { options = arguments[0]; } // Reset skipInit in case PDFBuilder has set it. @@ -21,9 +20,7 @@ export default class WizardBuilder extends WebformBuilder { super(element, options); this._form = { - components: [ - this.getPageConfig(1), - ], + components: [this.getPageConfig(1)], }; this.page = 0; @@ -32,10 +29,10 @@ export default class WizardBuilder extends WebformBuilder { for (const group in this.groups) { if (this.groups[group] && this.groups[group].components) { this.groups[group].componentOrder = Object.keys(this.groups[group].components) - .map(key => this.groups[group].components[key]) - .filter(component => component && !component.ignore) + .map((key) => this.groups[group].components[key]) + .filter((component) => component && !component.ignore) .sort((a, b) => a.weight - b.weight) - .map(component => component.key); + .map((component) => component.key); } } @@ -43,8 +40,7 @@ export default class WizardBuilder extends WebformBuilder { this.options.hooks.renderComponents = (html, { components, self }) => { if (self.type === 'form' && !self.root) { return html; - } - else { + } else { return originalRenderComponentsHook(html, { components, self }); } }; @@ -59,25 +55,29 @@ export default class WizardBuilder extends WebformBuilder { }; // Wizard pages don't replace themselves in the right array. Do that here. - this.on('saveComponent', (component, originalComponent) => { - const webformComponents = this.webform.components.map(({ component }) => component); - if (this._form.components.includes(originalComponent)) { - this._form.components[this._form.components.indexOf(originalComponent)] = component; - this.rebuild(); - } - else if (webformComponents.includes(originalComponent)) { - this._form.components.push(component); - this.rebuild(); - } - else { - // Fallback to look for panel based on key. - const formComponentIndex = this._form.components.findIndex((comp) => originalComponent.key === comp.key); - if (formComponentIndex !== -1) { - this._form.components[formComponentIndex] = component; + this.on( + 'saveComponent', + (component, originalComponent) => { + const webformComponents = this.webform.components.map(({ component }) => component); + if (this._form.components.includes(originalComponent)) { + this._form.components[this._form.components.indexOf(originalComponent)] = component; this.rebuild(); + } else if (webformComponents.includes(originalComponent)) { + this._form.components.push(component); + this.rebuild(); + } else { + // Fallback to look for panel based on key. + const formComponentIndex = this._form.components.findIndex( + (comp) => originalComponent.key === comp.key, + ); + if (formComponentIndex !== -1) { + this._form.components[formComponentIndex] = component; + this.rebuild(); + } } - } - }, true); + }, + true, + ); } removeComponent(component, parent, original) { @@ -94,7 +94,9 @@ export default class WizardBuilder extends WebformBuilder { } allowDrop(element) { - return (this.webform && this.webform.refs && this.webform.refs.webform === element) ? false : true; + return this.webform && this.webform.refs && this.webform.refs.webform === element + ? false + : true; } get pages() { @@ -103,7 +105,7 @@ export default class WizardBuilder extends WebformBuilder { get currentPage() { const pages = this.pages; - return (pages && (pages.length >= this.page)) ? pages[this.page] : null; + return pages && pages.length >= this.page ? pages[this.page] : null; } setForm(value) { @@ -115,10 +117,10 @@ export default class WizardBuilder extends WebformBuilder { if (this.pages.length === 0) { const components = this._form.components.filter((component) => component.type !== 'button'); this._form.components = [this.getPageConfig(1, components)]; - } - else { - const components = this._form.components - .filter((component) => component.type !== 'button' || component.action !== 'submit'); + } else { + const components = this._form.components.filter( + (component) => component.type !== 'button' || component.action !== 'submit', + ); this._form.components = components; } this.rebuild(); @@ -145,17 +147,21 @@ export default class WizardBuilder extends WebformBuilder { scrollEnabled: this.sideBarScroll, groupOrder: this.groupOrder, groupId: `builder-sidebar-${this.id}`, - groups: this.groupOrder.map((groupKey) => this.renderTemplate('builderSidebarGroup', { - group: this.groups[groupKey], - groupKey, - groupId: `builder-sidebar-${this.id}`, - subgroups: this.groups[groupKey].subgroups.map((group) => this.renderTemplate('builderSidebarGroup', { - group, - groupKey: group.key, - groupId: `group-container-${groupKey}`, - subgroups: [] - })), - })), + groups: this.groupOrder.map((groupKey) => + this.renderTemplate('builderSidebarGroup', { + group: this.groups[groupKey], + groupKey, + groupId: `builder-sidebar-${this.id}`, + subgroups: this.groups[groupKey].subgroups.map((group) => + this.renderTemplate('builderSidebarGroup', { + group, + groupKey: group.key, + groupId: `group-container-${groupKey}`, + subgroups: [], + }), + ), + }), + ), }), pages: this.pages, form: this.webform.render(), @@ -174,13 +180,12 @@ export default class WizardBuilder extends WebformBuilder { if (this.dragulaLib) { this.navigationDragula = this.dragulaLib([this.element.querySelector('.wizard-pages')], { - moves: (el) => (!el.classList.contains('wizard-add-page')), + moves: (el) => !el.classList.contains('wizard-add-page'), accepts: (el, target, source, sibling) => (sibling ? true : false), - }) - .on('drop', this.onReorder.bind(this)); + }).on('drop', this.onReorder.bind(this)); } - this.refs.addPage.forEach(link => { + this.refs.addPage.forEach((link) => { this.addEventListener(link, 'click', (event) => { event.preventDefault(); this.addPage(); @@ -208,17 +213,21 @@ export default class WizardBuilder extends WebformBuilder { rebuild() { const page = this.currentPage; - this.webform.setForm({ - display: 'form', - type: 'form', - components: page ? [page] : [], - controller: this._form?.controller || '' - }, { keepAsReference: true }); + this.webform.setForm( + { + display: 'form', + type: 'form', + components: page ? [page] : [], + controller: this._form?.controller || '', + }, + { keepAsReference: true }, + ); return this.redraw(); } addPage(page) { - const newPage = page && page.schema ? fastCloneDeep(page.schema) : this.getPageConfig(this.pages.length + 1); + const newPage = + page && page.schema ? fastCloneDeep(page.schema) : this.getPageConfig(this.pages.length + 1); BuilderUtils.uniquify(this._form.components, newPage); this._form.components.push(newPage); @@ -228,9 +237,9 @@ export default class WizardBuilder extends WebformBuilder { newPage, this._form, 'components', - (this._form.components.length - 1), + this._form.components.length - 1, true, - newPage + newPage, ); this.emit('change', this._form); @@ -246,12 +255,10 @@ export default class WizardBuilder extends WebformBuilder { if (pageIndex === 0) { this._form.components.push(this.getPageConfig(1)); return this.rebuild(); - } - else { + } else { return this.setPage(pageIndex - 1); } - } - else { + } else { return this.rebuild(); } } @@ -265,7 +272,7 @@ export default class WizardBuilder extends WebformBuilder { } const oldPosition = element.dragInfo.index; //should drop at next sibling position; no next sibling means drop to last position - const newPosition = (sibling && sibling.dragInfo ? sibling.dragInfo.index : this.pages.length); + const newPosition = sibling && sibling.dragInfo ? sibling.dragInfo.index : this.pages.length; const movedBelow = newPosition > oldPosition; const formComponents = fastCloneDeep(this._form.components); const draggedRowData = this._form.components[oldPosition]; @@ -277,7 +284,7 @@ export default class WizardBuilder extends WebformBuilder { this._form.components = fastCloneDeep(formComponents); return this.rebuild().then(() => { - this.emit('change', this._form); + this.emit('change', this._form); }); } @@ -303,10 +310,9 @@ export default class WizardBuilder extends WebformBuilder { if (component instanceof WizardBuilder) { return; } - if (this._form.components.find(comp => _.isEqual(component.component, comp))) { + if (this._form.components.find((comp) => _.isEqual(component.component, comp))) { this.addPage(component); - } - else { + } else { return super.pasteComponent(component); } } diff --git a/src/addons/FormioAddon.js b/src/addons/FormioAddon.js index e34bd066eb..7703cc7f16 100644 --- a/src/addons/FormioAddon.js +++ b/src/addons/FormioAddon.js @@ -8,7 +8,7 @@ export default class FormioAddon extends Element { name: 'formioAddon', components: [], label: 'Formio Addon', - defaultSettings: {} + defaultSettings: {}, }; } diff --git a/src/addons/PasswordStrength/PasswordStrengthAddon.form.js b/src/addons/PasswordStrength/PasswordStrengthAddon.form.js index 0f9e9b135b..e2f7063ce2 100644 --- a/src/addons/PasswordStrength/PasswordStrengthAddon.form.js +++ b/src/addons/PasswordStrength/PasswordStrengthAddon.form.js @@ -18,15 +18,16 @@ export default [ label: 'Name', tableView: true, validate: { - required: true + required: true, }, key: 'name', type: 'textfield', - input: true + input: true, }, { label: 'Max Entropy', - description: "Specifies the top boundary of the password's entropy(strength) which belongs to this level.\nCommon entropy values are:\n
    \n
  • < 28 bits = Very Weak;
  • \n
  • 28 - 35 bits = Weak; should keep out most people;
  • \n
  • 36 - 59 bits = Reasonable; fairly secure passwords for network and company passwords;
  • \n
  • 60 - 127 bits = Strong; can be good for guarding financial information;
  • \n
  • > 128 bits = Very Strong; often overkill;
  • \n
\n", + description: + "Specifies the top boundary of the password's entropy(strength) which belongs to this level.\nCommon entropy values are:\n
    \n
  • < 28 bits = Very Weak;
  • \n
  • 28 - 35 bits = Weak; should keep out most people;
  • \n
  • 36 - 59 bits = Reasonable; fairly secure passwords for network and company passwords;
  • \n
  • 60 - 127 bits = Strong; can be good for guarding financial information;
  • \n
  • > 128 bits = Very Strong; often overkill;
  • \n
\n", mask: false, spellcheck: true, tableView: false, @@ -36,11 +37,11 @@ export default [ validate: { required: true, min: 1, - max: 128 + max: 128, }, key: 'maxEntropy', type: 'number', - input: true + input: true, }, { label: 'Style', @@ -50,30 +51,30 @@ export default [ values: [ { label: 'Danger', - value: 'danger' + value: 'danger', }, { label: 'Warning', - value: 'warning' + value: 'warning', }, { label: 'Info', - value: 'info' + value: 'info', }, { label: 'Success', - value: 'success' - } - ] + value: 'success', + }, + ], }, selectThreshold: 0.3, validate: { - onlyAvailableItems: false + onlyAvailableItems: false, }, key: 'style', type: 'select', indexeddb: { filter: {} }, - input: true + input: true, }, { label: 'Color', @@ -82,9 +83,9 @@ export default [ tableView: true, key: 'color', type: 'textfield', - input: true - } - ] + input: true, + }, + ], }, { label: 'Update On', @@ -93,24 +94,24 @@ export default [ values: [ { label: 'Strength Level Change', - value: 'levelChange' + value: 'levelChange', }, { label: 'Entropy Change', - value: 'entropyChange' - } - ] + value: 'entropyChange', + }, + ], }, selectThreshold: 0.3, validate: { - onlyAvailableItems: false + onlyAvailableItems: false, }, key: 'updateOn', type: 'select', indexeddb: { - filter: {} + filter: {}, }, - input: true + input: true, }, { label: 'Rules', @@ -120,9 +121,7 @@ export default [ enableRowGroups: false, initEmpty: false, tableView: false, - defaultValue: [ - {} - ], + defaultValue: [{}], key: 'rulesSettings', type: 'datagrid', input: true, @@ -134,44 +133,44 @@ export default [ values: [ { label: 'Length', - value: 'length' + value: 'length', }, { label: 'Lower Case', - value: 'lowerCase' + value: 'lowerCase', }, { label: 'Upper Case', - value: 'upperCase' + value: 'upperCase', }, { label: 'Numeric', - value: 'numeric' + value: 'numeric', }, { label: 'Symbols', - value: 'symbols' - } - ] + value: 'symbols', + }, + ], }, selectThreshold: 0.3, validate: { required: true, - onlyAvailableItems: false + onlyAvailableItems: false, }, key: 'name', type: 'select', indexeddb: { - filter: {} + filter: {}, }, - input: true + input: true, }, { label: 'Error Message', tableView: true, key: 'errorMessage', type: 'textfield', - input: true + input: true, }, { label: 'Required', @@ -179,9 +178,9 @@ export default [ key: 'required', type: 'checkbox', input: true, - defaultValue: false - } - ] + defaultValue: false, + }, + ], }, { label: 'Custom Rules', @@ -195,21 +194,26 @@ export default [ label: 'Name', tableView: true, validate: { - required: true + required: true, }, key: 'name', type: 'textfield', - input: true + input: true, }, - EditFormUtils.javaScriptValue('Check', 'check', '', 1100, + EditFormUtils.javaScriptValue( + 'Check', + 'check', + '', + 1100, '

Example:

valid = !value.includes(data.email) ? true : "Password should not be variation of the email";

', '', '', - true + true, ), { label: 'Increase Characters Pool Size', - description: 'Set this to amount of characters that may be used in the password if there is a specific group of characters is used.\nE.g., if your validation checks if there is any numeric symbol in the password, then you should set it to 10 (there are 10 possible numbers).\n', + description: + 'Set this to amount of characters that may be used in the password if there is a specific group of characters is used.\nE.g., if your validation checks if there is any numeric symbol in the password, then you should set it to 10 (there are 10 possible numbers).\n', mask: false, spellcheck: true, tableView: false, @@ -218,7 +222,7 @@ export default [ inputFormat: 'plain', key: 'increaseCharactersPoolSize', type: 'number', - input: true + input: true, }, { label: 'Required', @@ -227,49 +231,60 @@ export default [ key: 'required', type: 'checkbox', input: true, - defaultValue: false - } - ] + defaultValue: false, + }, + ], }, - EditFormUtils.javaScriptValue('Is Valid', 'isValid', '', 1100, + EditFormUtils.javaScriptValue( + 'Is Valid', + 'isValid', + '', + 1100, '

Example:

valid = entropy > maxEntropy / 2 ;

', '', 'entropyCurrent entropy bits of the password.' + - 'levelCurrent strength level of the password.', - true + 'levelCurrent strength level of the password.', + true, ), { label: 'Required', - description: "Check this if you don't want to allow submitting password which does not correspond to the minimal strength requirements.", + description: + "Check this if you don't want to allow submitting password which does not correspond to the minimal strength requirements.", tableView: false, key: 'required', type: 'checkbox', input: true, - defaultValue: false + defaultValue: false, }, { label: 'Black List', - tooltip: 'Add words to search in the password. If there are some words from that list were found, the entropy of the password will be recalculated.\n', + tooltip: + 'Add words to search in the password. If there are some words from that list were found, the entropy of the password will be recalculated.\n', tableView: true, multiple: true, key: 'blackList', type: 'textfield', - input: true + input: true, }, - EditFormUtils.javaScriptValue('Custom Blacklisted Words', 'customBlackListedWords', '', 1100, + EditFormUtils.javaScriptValue( + 'Custom Blacklisted Words', + 'customBlackListedWords', + '', + 1100, '

Example:

values = [ data.name, data.dataOfBirth, data.favoriteColor ];

', '', '', - true + true, ), { label: 'Disable Blacklisted Words', - tooltip: 'Check if you want to disable submitting passwords containing words form the clack list', + tooltip: + 'Check if you want to disable submitting passwords containing words form the clack list', tableView: false, key: 'disableBlacklistedWords', type: 'checkbox', input: true, - defaultValue: false + defaultValue: false, }, { label: 'Location', @@ -287,33 +302,34 @@ export default [ values: [ { label: 'Before', - value: 'before' + value: 'before', }, { label: 'After', - value: 'after' - } - ] + value: 'after', + }, + ], }, selectThreshold: 0.3, validate: { - onlyAvailableItems: false + onlyAvailableItems: false, }, key: 'insert', type: 'select', indexeddb: { filter: {} }, - input: true + input: true, }, { label: 'Selector', placeholder: "[ref='element']", - description: 'Specifies the selector of the element which will be used as a reference to insert the indicator template', + description: + 'Specifies the selector of the element which will be used as a reference to insert the indicator template', tableView: true, key: 'selector', type: 'textfield', - input: true - } - ] + input: true, + }, + ], }, { label: 'Template', @@ -322,6 +338,6 @@ export default [ key: 'template', type: 'textarea', input: true, - as: 'html' + as: 'html', }, ]; diff --git a/src/addons/PasswordStrength/PasswordStrengthAddon.js b/src/addons/PasswordStrength/PasswordStrengthAddon.js index de9a97c309..ce7bff9e73 100644 --- a/src/addons/PasswordStrength/PasswordStrengthAddon.js +++ b/src/addons/PasswordStrength/PasswordStrengthAddon.js @@ -15,7 +15,7 @@ export default class PasswordStrengthAddon extends FormioAddon { { name: 'upperCase', required: false, message: 'Value should have uppercase letters' }, { name: 'numeric', required: false, message: 'Value should have numeric symbols' }, { name: 'lowerCase', required: false, message: 'Value should be have lowercase letters' }, - { name: 'symbols', required: false, message: 'Value should have symbols' } + { name: 'symbols', required: false, message: 'Value should have symbols' }, ], updateOn: 'levelChange', required: true, @@ -39,9 +39,9 @@ export default class PasswordStrengthAddon extends FormioAddon { `, location: { insert: 'after', - selector: '[ref="element"]' - } - } + selector: '[ref="element"]', + }, + }, }; } @@ -58,7 +58,7 @@ export default class PasswordStrengthAddon extends FormioAddon { return `Value must be longer than ${minLength} characters`; } return true; - } + }, }, upperCase: { check: (value) => { @@ -67,7 +67,7 @@ export default class PasswordStrengthAddon extends FormioAddon { } return 'Value must contain uppercased alphabetical characters'; }, - increaseCharactersPoolSize: 26 + increaseCharactersPoolSize: 26, }, numeric: { check: (value) => { @@ -125,10 +125,12 @@ export default class PasswordStrengthAddon extends FormioAddon { set entropy(value) { const oldLevel = this.getLevel(); - const updateOnEntropyChange = this.settings.updateOn === 'entropyChange' && this._entropy !== value; + const updateOnEntropyChange = + this.settings.updateOn === 'entropyChange' && this._entropy !== value; this._entropy = value; this.level = this.getLevel(); - const updateOnLevelChange = this.settings.updateOn === 'levelChange' && oldLevel.name !== this.level.name; + const updateOnLevelChange = + this.settings.updateOn === 'levelChange' && oldLevel.name !== this.level.name; if (updateOnLevelChange || updateOnEntropyChange) { this.updateView(); } @@ -158,7 +160,9 @@ export default class PasswordStrengthAddon extends FormioAddon { } calculatePasswordEntropy(passwordLength, charactersPoolSize) { - return !passwordLength || !charactersPoolSize ? 0 : this.log2(Math.pow(charactersPoolSize, passwordLength)); + return !passwordLength || !charactersPoolSize + ? 0 + : this.log2(Math.pow(charactersPoolSize, passwordLength)); } calculatePasswordEntropyWords(wordsCount) { @@ -186,7 +190,11 @@ export default class PasswordStrengthAddon extends FormioAddon { let customBlacklistedWords = this.settings.customBlacklistedWords; if (customBlacklistedWords && typeof customBlacklistedWords === 'string') { - customBlacklistedWords = this.evaluate(customBlacklistedWords, this.component.evalContext({ value }), 'values'); + customBlacklistedWords = this.evaluate( + customBlacklistedWords, + this.component.evalContext({ value }), + 'values', + ); if (customBlacklistedWords && customBlacklistedWords.length) { blackList.push(...customBlacklistedWords); } @@ -214,7 +222,10 @@ export default class PasswordStrengthAddon extends FormioAddon { // If there are some random characters except of blacklisted words in the password, // calculate the entropy for them const { charactersPoolSize } = restValue.length ? this.performChecks(restValue) : 0; - const entropyOfNonblacklistedValue = this.calculatePasswordEntropy(restValue.length, charactersPoolSize); + const entropyOfNonblacklistedValue = this.calculatePasswordEntropy( + restValue.length, + charactersPoolSize, + ); // Calculate the entropy if the biggest part of the password could be picked up from dictionary words const dictionaryCheckEntropy = this.calculatePasswordEntropyWords(blacklistedWords.length); const entropy = dictionaryCheckEntropy + entropyOfNonblacklistedValue; @@ -231,10 +242,14 @@ export default class PasswordStrengthAddon extends FormioAddon { isValid() { const isValidCheck = this.settings.isValid; if (isValidCheck && typeof isValidCheck === 'string') { - const valid = this.evaluate(isValidCheck, this.component.evalContext({ - entropy: this.entropy, - level: this.level - }), 'valid'); + const valid = this.evaluate( + isValidCheck, + this.component.evalContext({ + entropy: this.entropy, + level: this.level, + }), + 'valid', + ); return valid; } @@ -254,10 +269,9 @@ export default class PasswordStrengthAddon extends FormioAddon { errors.push({ validation: validation.name, message, - level: validation.required ? 'error' : 'warning' + level: validation.required ? 'error' : 'warning', }); - } - else if (validation.increaseCharactersPoolSize) { + } else if (validation.increaseCharactersPoolSize) { return validation.increaseCharactersPoolSize; } @@ -280,14 +294,15 @@ export default class PasswordStrengthAddon extends FormioAddon { this.customRules.forEach((rule) => { if (rule.check && typeof rule.check === 'string') { const valid = this.evaluate(rule.check, this.component.evalContext({ value }), 'valid'); - const message = typeof valid === 'string' ? valid : `Password does not meet ${rule.name} validation`; + const message = + typeof valid === 'string' ? valid : `Password does not meet ${rule.name} validation`; charactersPoolSize += this.handleRuleCheckResult(valid, rule, message, errors); } }); return { charactersPoolSize, - errors + errors, }; } @@ -301,15 +316,16 @@ export default class PasswordStrengthAddon extends FormioAddon { const { charactersPoolSize, errors } = this.performChecks(value); const entropy = this.calculatePasswordEntropy(passwordLength, charactersPoolSize); - const blackListCheck = this.settings.blackList?.length || this.settings.customBlacklistedWords ? - this.checkBlackList(value) - : null; + const blackListCheck = + this.settings.blackList?.length || this.settings.customBlacklistedWords + ? this.checkBlackList(value) + : null; const isValid = this.isValid(); if (!isValid) { errors.push({ message: 'Password is not strong enough', - level: this.settings.required ? 'error' : 'warning' + level: this.settings.required ? 'error' : 'warning', }); } @@ -318,8 +334,7 @@ export default class PasswordStrengthAddon extends FormioAddon { this.handleBlackListCheckResult(blackListCheck, errors); // Select the mininal entropy based on the dictionary check or symbolic check this.entropy = Math.min(entropy, blackListCheck.entropy); - } - else { + } else { this.entropy = entropy; } @@ -396,8 +411,7 @@ export default class PasswordStrengthAddon extends FormioAddon { console.warn(`Unknown insert option: ${insert}`); return false; } - } - else { + } else { console.warn(`No elements found using selector: ${selector}`); return false; } diff --git a/src/addons/index.js b/src/addons/index.js index fb579eb0c7..4cfc6d3853 100644 --- a/src/addons/index.js +++ b/src/addons/index.js @@ -1,24 +1,24 @@ import PasswordStrengthAddon from './PasswordStrength/PasswordStrengthAddon'; -export const editForms = [ - PasswordStrengthAddon.info -].map(({ components, name, defaultSettings }) => ({ - type: 'form', - key: 'settings', - display: 'form', - input: true, - components: components.map((comp) => { - comp.tableView = false; - return comp; +export const editForms = [PasswordStrengthAddon.info].map( + ({ components, name, defaultSettings }) => ({ + type: 'form', + key: 'settings', + display: 'form', + input: true, + components: components.map((comp) => { + comp.tableView = false; + return comp; + }), + tableView: false, + defaultValue: { + data: defaultSettings, + }, + customConditional({ row }) { + return row.name.value === name; + }, }), - tableView: false, - defaultValue: { - data: defaultSettings - }, - customConditional({ row }) { - return row.name.value === name; - } -})); +); export default { passwordStrength: PasswordStrengthAddon, diff --git a/src/components/Components.js b/src/components/Components.js index 6767d08a54..81bbcae364 100644 --- a/src/components/Components.js +++ b/src/components/Components.js @@ -41,8 +41,13 @@ export default class Components { // Set the tableView method on BaseComponent. if (comps.base) { // Implement the tableView method. - comps.base.tableView = function(value, options) { - const comp = Components.create(options.component, options.options || {}, options.data || {}, true); + comps.base.tableView = function (value, options) { + const comp = Components.create( + options.component, + options.options || {}, + options.data || {}, + true, + ); return comp.getView(value); }; } @@ -75,7 +80,10 @@ export default class Components { // `editGrid[0].container[0].textField` rather than `editGrid[0].container.textField`. This should be adapted for other // components with a tree-like data model const rowIndex = component.row; - const rowIndexPath = rowIndex && !['container'].includes(thisPath.component.type) ? `[${Number.parseInt(rowIndex)}]` : ''; + const rowIndexPath = + rowIndex && !['container'].includes(thisPath.component.type) + ? `[${Number.parseInt(rowIndex)}]` + : ''; path = `${thisPath.path}${rowIndexPath}.`; if (rowIndexPath && getModelType(thisPath) === 'nestedDataArray') { path = `${path}data.`; @@ -90,24 +98,15 @@ export default class Components { let comp = null; if (component.type && Components.components.hasOwnProperty(component.type)) { comp = new Components.components[component.type](component, options, data); - } - else if (component.arrayTree) { - + } else if (component.arrayTree) { comp = new Components.components['datagrid'](component, options, data); - } - else if (component.tree) { - + } else if (component.tree) { comp = new Components.components['nesteddata'](component, options, data); - } - else if (Array.isArray(component.components)) { - + } else if (Array.isArray(component.components)) { comp = new Components.components['nested'](component, options, data); - } - else if (options && options.server) { - + } else if (options && options.server) { comp = new Components.components['hidden'](component, options, data); - } - else { + } else { comp = new Component(component, options, data); } const path = Components.getComponentPath(comp); diff --git a/src/components/_classes/component/Component.form.js b/src/components/_classes/component/Component.form.js index 29638d3b63..ada8313e66 100644 --- a/src/components/_classes/component/Component.form.js +++ b/src/components/_classes/component/Component.form.js @@ -14,7 +14,7 @@ import EditFormUtils from './editForm/utils'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { +export default function (...extend) { const components = _.cloneDeep([ { type: 'tabs', @@ -24,55 +24,57 @@ export default function(...extend) { label: 'Display', key: 'display', weight: 0, - components: ComponentEditDisplay + components: ComponentEditDisplay, }, { label: 'Data', key: 'data', weight: 10, - components: ComponentEditData + components: ComponentEditData, }, { label: 'Validation', key: 'validation', weight: 20, - components: ComponentEditValidation + components: ComponentEditValidation, }, { label: 'API', key: 'api', weight: 30, - components: ComponentEditAPI + components: ComponentEditAPI, }, { label: 'Conditional', key: 'conditional', weight: 40, - components: ComponentEditConditional + components: ComponentEditConditional, }, { label: 'Logic', key: 'logic', weight: 50, - components: ComponentEditLogic + components: ComponentEditLogic, }, { label: 'Layout', key: 'layout', weight: 60, - components: ComponentEditLayout + components: ComponentEditLayout, }, - ] - } - ]).concat(extend.map((items) => ({ - type: 'tabs', - key: 'tabs', - components: _.cloneDeep(items), - }))); + ], + }, + ]).concat( + extend.map((items) => ({ + type: 'tabs', + key: 'tabs', + components: _.cloneDeep(items), + })), + ); return { components: _.unionWith(components, EditFormUtils.unifyComponents).concat({ type: 'hidden', - key: 'type' - }) + key: 'type', + }), }; } diff --git a/src/components/_classes/component/Component.js b/src/components/_classes/component/Component.js index 1470cff6d4..3f6feaa07c 100644 --- a/src/components/_classes/component/Component.js +++ b/src/components/_classes/component/Component.js @@ -8,7 +8,12 @@ import { processOne, processOneSync, validateProcessInfo } from '@formio/core/pr import { Formio } from '../../../Formio'; import * as FormioUtils from '../../../utils/utils'; import { - fastCloneDeep, boolValue, getComponentPath, isInsideScopingComponent, currentTimezone, getScriptPlugin + fastCloneDeep, + boolValue, + getComponentPath, + isInsideScopingComponent, + currentTimezone, + getScriptPlugin, } from '../../../utils/utils'; import Element from '../../../Element'; import ComponentModal from '../componentModal/ComponentModal'; @@ -26,171 +31,174 @@ const isIEBrowser = FormioUtils.getBrowserInfo().ie; */ export default class Component extends Element { static schema(...sources) { - return _.merge({ - /** - * Determines if this component provides an input. - */ - input: true, - - /** - * The data key for this component (how the data is stored in the database). - */ - key: '', - - /** - * The input placeholder for this component. - */ - placeholder: '', - - /** - * The input prefix - */ - prefix: '', + return _.merge( + { + /** + * Determines if this component provides an input. + */ + input: true, - /** - * The custom CSS class to provide to this component. - */ - customClass: '', + /** + * The data key for this component (how the data is stored in the database). + */ + key: '', - /** - * The input suffix. - */ - suffix: '', + /** + * The input placeholder for this component. + */ + placeholder: '', - /** - * If this component should allow an array of values to be captured. - */ - multiple: false, + /** + * The input prefix + */ + prefix: '', - /** - * The default value of this component. - */ - defaultValue: null, + /** + * The custom CSS class to provide to this component. + */ + customClass: '', - /** - * If the data of this component should be protected (no GET api requests can see the data) - */ - protected: false, + /** + * The input suffix. + */ + suffix: '', - /** - * Validate if the value of this component should be unique within the form. - */ - unique: false, + /** + * If this component should allow an array of values to be captured. + */ + multiple: false, - /** - * If the value of this component should be persisted within the backend api database. - */ - persistent: true, + /** + * The default value of this component. + */ + defaultValue: null, - /** - * Determines if the component should be within the form, but not visible. - */ - hidden: false, + /** + * If the data of this component should be protected (no GET api requests can see the data) + */ + protected: false, - /** - * If the component should be cleared when hidden. - */ - clearOnHide: true, + /** + * Validate if the value of this component should be unique within the form. + */ + unique: false, - /** - * This will refresh this component options when this field changes. - */ - refreshOn: '', + /** + * If the value of this component should be persisted within the backend api database. + */ + persistent: true, - /** - * This will redraw the component when this field changes. - */ - redrawOn: '', + /** + * Determines if the component should be within the form, but not visible. + */ + hidden: false, - /** - * If this component should be included as a column within a submission table. - */ - tableView: false, + /** + * If the component should be cleared when hidden. + */ + clearOnHide: true, - /** - * If this component should be rendering in modal. - */ - modalEdit: false, + /** + * This will refresh this component options when this field changes. + */ + refreshOn: '', - /** - * The input label provided to this component. - */ - label: '', - dataGridLabel: false, - labelPosition: 'top', - description: '', - errorLabel: '', - tooltip: '', - hideLabel: false, - tabindex: '', - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: '', - calculateValue: '', - calculateServer: false, - widget: null, + /** + * This will redraw the component when this field changes. + */ + redrawOn: '', - /** - * Attributes that will be assigned to the input elements of this component. - */ - attributes: {}, + /** + * If this component should be included as a column within a submission table. + */ + tableView: false, - /** - * This will perform the validation on either "change" or "blur" of the input element. - */ - validateOn: 'change', + /** + * If this component should be rendering in modal. + */ + modalEdit: false, - /** - * The validation criteria for this component. - */ - validate: { /** - * If this component is required. + * The input label provided to this component. */ - required: false, + label: '', + dataGridLabel: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, /** - * Custom JavaScript validation. + * Attributes that will be assigned to the input elements of this component. */ - custom: '', + attributes: {}, /** - * If the custom validation should remain private (only the backend will see it and execute it). + * This will perform the validation on either "change" or "blur" of the input element. */ - customPrivate: false, + validateOn: 'change', /** - * If this component should implement a strict date validation if the Calendar widget is implemented. + * The validation criteria for this component. */ - strictDateValidation: false, - multiple: false, - unique: false - }, + validate: { + /** + * If this component is required. + */ + required: false, + + /** + * Custom JavaScript validation. + */ + custom: '', + + /** + * If the custom validation should remain private (only the backend will see it and execute it). + */ + customPrivate: false, + + /** + * If this component should implement a strict date validation if the Calendar widget is implemented. + */ + strictDateValidation: false, + multiple: false, + unique: false, + }, - /** - * The simple conditional settings for a component. - */ - conditional: { - show: null, - when: null, - eq: '' - }, - overlay: { - style: '', - left: '', - top: '', - width: '', - height: '', + /** + * The simple conditional settings for a component. + */ + conditional: { + show: null, + when: null, + eq: '', + }, + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', + }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + addons: [], }, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - addons: [], - }, ...sources); + ...sources, + ); } /** * Return the simple condition settings as part of the component. @@ -203,10 +211,10 @@ export default class Component extends Element { return { type: 'textfield', widget: { - type: 'input' - } + type: 'input', + }, }; - } + }, }; } /** @@ -236,13 +244,18 @@ export default class Component extends Element { * @param {object} options - The options for this component. * @param {object} data - The global data submission object this component will belong. */ - + constructor(component, options, data) { - super(Object.assign({ - renderMode: 'form', - attachMode: 'full', - noDefaults: false - }, options || {})); + super( + Object.assign( + { + renderMode: 'form', + attachMode: 'full', + noDefaults: false, + }, + options || {}, + ), + ); // Restore the component id. if (component && component.id) { @@ -262,11 +275,7 @@ export default class Component extends Element { this.refs = {}; // Allow global override for any component JSON. - if ( - component && - this.options.components && - this.options.components[component.type] - ) { + if (component && this.options.components && this.options.components[component.type]) { _.merge(component, this.options.components[component.type]); } @@ -370,7 +379,9 @@ export default class Component extends Element { /** * Determines if this component is visible, or not. */ - this._parentVisible = this.options.hasOwnProperty('parentVisible') ? this.options.parentVisible : true; + this._parentVisible = this.options.hasOwnProperty('parentVisible') + ? this.options.parentVisible + : true; this._visible = this._parentVisible && this.conditionallyVisible(null, data); this._parentDisabled = false; @@ -452,8 +463,7 @@ export default class Component extends Element { if (this.shouldAddDefaultValue) { this.dataValue = this.defaultValue; } - } - else { + } else { // Ensure the dataValue is set. /* eslint-disable no-self-assign */ this.dataValue = this.dataValue; @@ -476,7 +486,6 @@ export default class Component extends Element { this.init(); } } - get componentsMap() { if (this.localRoot?.childComponentsMap) { @@ -505,10 +514,9 @@ export default class Component extends Element { } get isPDFReadOnlyMode() { - return this.parent && - this.parent.form && - (this.parent.form.display === 'pdf') && - this.options.readOnly; + return ( + this.parent && this.parent.form && this.parent.form.display === 'pdf' && this.options.readOnly + ); } get labelInfo() { @@ -521,7 +529,12 @@ export default class Component extends Element { const isPDFReadOnlyMode = this.isPDFReadOnlyMode; - if (this.hasInput && this.component.validate && boolValue(this.component.validate.required) && !isPDFReadOnlyMode) { + if ( + this.hasInput && + this.component.validate && + boolValue(this.component.validate.required) && + !isPDFReadOnlyMode + ) { label.className += ' field-required'; } if (label.hidden) { @@ -558,14 +571,15 @@ export default class Component extends Element { if (Addon) { const supportedComponents = Addon.info.supportedComponents; - const supportsThisComponentType = !supportedComponents?.length || - supportedComponents.indexOf(this.component.type) !== -1; + const supportsThisComponentType = + !supportedComponents?.length || supportedComponents.indexOf(this.component.type) !== -1; if (supportsThisComponentType) { addon = new Addon(settings, this); this.addons.push(addon); - } - else { - console.warn(`Addon ${name.label} does not support component of type ${this.component.type}.`); + } else { + console.warn( + `Addon ${name.label} does not support component of type ${this.component.type}.`, + ); } } @@ -600,7 +614,11 @@ export default class Component extends Element { } get shouldDisabled() { - return this.options.readOnly || this.component.disabled || (this.options.hasOwnProperty('disabled') && this.options.disabled[this.key]); + return ( + this.options.readOnly || + this.component.disabled || + (this.options.hasOwnProperty('disabled') && this.options.disabled[this.key]) + ); } get isInputComponent() { @@ -734,12 +752,7 @@ export default class Component extends Element { } get isAdvancedLabel() { - return [ - 'left-left', - 'left-right', - 'right-left', - 'right-right' - ].includes(this.labelPosition); + return ['left-left', 'left-right', 'right-left', 'right-right'].includes(this.labelPosition); } get labelPositions() { @@ -783,7 +796,7 @@ export default class Component extends Element { isRightPosition, isRightAlign, labelStyles, - contentStyles + contentStyles, }; } @@ -805,18 +818,16 @@ export default class Component extends Element { if (!_.isEmpty(subModified)) { modified[key] = subModified; } - } - else if (_.isArray(val)) { + } else if (_.isArray(val)) { if (val.length !== 0 && !_.isEqual(val, defaultSchema[key])) { modified[key] = val; } - } - else if ( - (!recursion && (key === 'type')) || - (!recursion && (key === 'key')) || - (!recursion && (key === 'label')) || - (!recursion && (key === 'input')) || - (!recursion && (key === 'tableView')) || + } else if ( + (!recursion && key === 'type') || + (!recursion && key === 'key') || + (!recursion && key === 'label') || + (!recursion && key === 'input') || + (!recursion && key === 'tableView') || (val !== '' && !defaultSchema.hasOwnProperty(key)) || (val !== '' && val !== defaultSchema[key]) || (defaultSchema[key] && val !== defaultSchema[key]) @@ -865,15 +876,20 @@ export default class Component extends Element { } labelIsHidden() { - return !this.component.label || - ((!this.isInDataGrid && this.component.hideLabel) || - (this.isInDataGrid && !this.component.dataGridLabel) || - this.options.floatingLabels || - this.options.inputsOnly) && !this.builderMode; + return ( + !this.component.label || + (((!this.isInDataGrid && this.component.hideLabel) || + (this.isInDataGrid && !this.component.dataGridLabel) || + this.options.floatingLabels || + this.options.inputsOnly) && + !this.builderMode) + ); } transform(type, value) { - const frameworkTemplates = this.options.template ? Templates.templates[this.options.template] : Templates.current; + const frameworkTemplates = this.options.template + ? Templates.templates[this.options.template] + : Templates.current; return frameworkTemplates.hasOwnProperty('transform') ? frameworkTemplates.transform(type, value, this) : (type, value) => value; @@ -895,7 +911,9 @@ export default class Component extends Element { } } - const frameworkTemplates = this.options.template ? Templates.templates[this.options.template] : Templates.current; + const frameworkTemplates = this.options.template + ? Templates.templates[this.options.template] + : Templates.current; result = this.checkTemplate(frameworkTemplates, names, modes); if (result) { return result; @@ -1000,7 +1018,7 @@ export default class Component extends Element { `render${name.charAt(0).toUpperCase() + name.substring(1, name.length)}`, this.interpolate(template, data), data, - mode + mode, ); } @@ -1015,11 +1033,9 @@ export default class Component extends Element { if (!this.shouldSanitizeValue && !forceSanitize) { return dirty; } - return FormioUtils.sanitize( - dirty, - { - sanitizeConfig: _.merge(this.options?.sanitizeConfig || {}, options || {}), - }); + return FormioUtils.sanitize(dirty, { + sanitizeConfig: _.merge(this.options?.sanitizeConfig || {}, options || {}), + }); } /** @@ -1056,7 +1072,10 @@ export default class Component extends Element { settings.shadowRoot = this.root.shadowRoot; } - const widget = settings && Widgets[settings.type] ? new Widgets[settings.type](settings, this.component, this): null; + const widget = + settings && Widgets[settings.type] + ? new Widgets[settings.type](settings, this.component, this) + : null; return widget; } @@ -1066,7 +1085,12 @@ export default class Component extends Element { */ getBrowserLanguage() { const nav = window.navigator; - const browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage']; + const browserLanguagePropertyKeys = [ + 'language', + 'browserLanguage', + 'systemLanguage', + 'userLanguage', + ]; let language; // support for HTML 5.1 "navigator.languages" @@ -1119,7 +1143,8 @@ export default class Component extends Element { * @returns {string} - The submission timezone. */ get submissionTimezone() { - this.options.submissionTimezone = this.options.submissionTimezone || _.get(this.root, 'options.submissionTimezone'); + this.options.submissionTimezone = + this.options.submissionTimezone || _.get(this.root, 'options.submissionTimezone'); return this.options.submissionTimezone; } @@ -1146,10 +1171,8 @@ export default class Component extends Element { const submissionTimezone = this.submissionTimezone; if ( submissionTimezone && - ( - (settings.displayInTimezone === 'submission') || - ((this.options.pdf || this.options.server) && (settings.displayInTimezone === 'viewer')) - ) + (settings.displayInTimezone === 'submission' || + ((this.options.pdf || this.options.server) && settings.displayInTimezone === 'viewer')) ) { return submissionTimezone; } @@ -1172,14 +1195,14 @@ export default class Component extends Element { const refType = refs[ref]; const isString = typeof refType === 'string'; - const selector = isString && refType.includes('scope') - ? `:scope > [${referenceAttributeName || this._referenceAttributeName || 'ref'}="${ref}"]` - : `[${referenceAttributeName || this._referenceAttributeName || 'ref'}="${ref}"]`; + const selector = + isString && refType.includes('scope') + ? `:scope > [${referenceAttributeName || this._referenceAttributeName || 'ref'}="${ref}"]` + : `[${referenceAttributeName || this._referenceAttributeName || 'ref'}="${ref}"]`; if (isString && refType.startsWith('single')) { this.refs[ref] = element.querySelector(selector); - } - else { + } else { this.refs[ref] = element.querySelectorAll(selector); } } @@ -1207,7 +1230,8 @@ export default class Component extends Element { * @returns {string} - The modal preview template. */ getModalPreviewTemplate() { - const dataValue = this.component.type === 'password' ? this.dataValue.replace(/./g, '•') : this.dataValue; + const dataValue = + this.component.type === 'password' ? this.dataValue.replace(/./g, '•') : this.dataValue; let modalLabel; if (this.hasInput && this.component.validate?.required && !this.isPDFReadOnlyMode) { @@ -1215,7 +1239,8 @@ export default class Component extends Element { } return this.renderModalPreview({ - previewText: this.getValueAsString(dataValue, { modalPreview: true }) || this.t('Click to set value'), + previewText: + this.getValueAsString(dataValue, { modalPreview: true }) || this.t('Click to set value'), messages: '', labelInfo: modalLabel, }); @@ -1248,23 +1273,30 @@ export default class Component extends Element { this.rendered = true; if (!this.builderMode && !this.previewMode && this.component.modalEdit) { - return ComponentModal.render(this, { - visible: isVisible, - showSaveButton: this.hasModalSaveButton, - id: this.id, - classes: this.className, - styles: this.customStyle, - children - }, topLevel); - } - else { - return this.renderTemplate('component', { - visible: isVisible, - id: this.id, - classes: this.className, - styles: this.customStyle, - children - }, topLevel); + return ComponentModal.render( + this, + { + visible: isVisible, + showSaveButton: this.hasModalSaveButton, + id: this.id, + classes: this.className, + styles: this.customStyle, + children, + }, + topLevel, + ); + } else { + return this.renderTemplate( + 'component', + { + visible: isVisible, + id: this.id, + classes: this.className, + styles: this.customStyle, + children, + }, + topLevel, + ); } } @@ -1277,8 +1309,10 @@ export default class Component extends Element { createTooltip(tooltipEl, settings = {}) { const tooltipAttribute = tooltipEl.getAttribute('data-tooltip'); const tooltipDataTitle = tooltipEl.getAttribute('data-title'); - const tooltipText = this.interpolate(tooltipDataTitle || tooltipAttribute) - .replace(/(?:\r\n|\r|\n)/g, '
'); + const tooltipText = this.interpolate(tooltipDataTitle || tooltipAttribute).replace( + /(?:\r\n|\r|\n)/g, + '
', + ); return tippy(tooltipEl, { allowHTML: true, @@ -1312,7 +1346,13 @@ export default class Component extends Element { * @returns {ComponentModal} - The created component modal. */ createComponentModal(element, modalShouldBeOpened, currentValue) { - return new ComponentModal(this, element, modalShouldBeOpened, currentValue, this._referenceAttributeName); + return new ComponentModal( + this, + element, + modalShouldBeOpened, + currentValue, + this._referenceAttributeName, + ); } /** @@ -1324,9 +1364,8 @@ export default class Component extends Element { if (!this.builderMode && !this.previewMode && this.component.modalEdit) { const modalShouldBeOpened = this.componentModal ? this.componentModal.isOpened : false; const currentValue = modalShouldBeOpened ? this.componentModal.currentValue : this.dataValue; - const openModalTemplate = this.componentModal && modalShouldBeOpened - ? this.componentModal.openModalTemplate - : null; + const openModalTemplate = + this.componentModal && modalShouldBeOpened ? this.componentModal.openModalTemplate : null; this.componentModal = this.createComponentModal(element, modalShouldBeOpened, currentValue); this.setOpenModalElement(openModalTemplate); } @@ -1343,7 +1382,7 @@ export default class Component extends Element { this.loadRefs(element, { messageContainer: 'single', - tooltip: 'multiple' + tooltip: 'multiple', }); this.attachTooltips(this.refs.tooltip); @@ -1357,7 +1396,11 @@ export default class Component extends Element { // Allow attach per component type. const type = this.component.type; if (type) { - this.hook(`attach${type.charAt(0).toUpperCase() + type.substring(1, type.length)}`, element, this); + this.hook( + `attach${type.charAt(0).toUpperCase() + type.substring(1, type.length)}`, + element, + this, + ); } this.restoreFocus(); @@ -1387,7 +1430,7 @@ export default class Component extends Element { */ addShortcut(element, shortcut) { // Avoid infinite recursion. - if (!element || !this.root || (this.root === this)) { + if (!element || !this.root || this.root === this) { return; } @@ -1406,7 +1449,7 @@ export default class Component extends Element { */ removeShortcut(element, shortcut) { // Avoid infinite recursion. - if (!element || (this.root === this)) { + if (!element || this.root === this) { return; } @@ -1427,8 +1470,7 @@ export default class Component extends Element { ref.forEach((elem) => { delete elem.component; }); - } - else if (ref) { + } else if (ref) { delete ref.component; } }); @@ -1455,9 +1497,11 @@ export default class Component extends Element { } if (refreshData === 'data') { this.refresh(this.data, changed, flags); - } - else if ( - (changePath && getComponentPath(changed.instance) === refreshData) && changed && changed.instance && + } else if ( + changePath && + getComponentPath(changed.instance) === refreshData && + changed && + changed.instance && // Make sure the changed component is not in a different "context". Solves issues where refreshOn being set // in fields inside EditGrids could alter their state from other rows (which is bad). this.inContext(changed.instance) @@ -1480,14 +1524,17 @@ export default class Component extends Element { if (!changes.length && flags.changed) { changes = [flags.changed]; } - const refreshOn = flags.fromBlur ? this.component.refreshOnBlur : this.component.refreshOn || this.component.redrawOn; + const refreshOn = flags.fromBlur + ? this.component.refreshOnBlur + : this.component.refreshOn || this.component.redrawOn; // If they wish to refresh on a value, then add that here. if (refreshOn) { if (Array.isArray(refreshOn)) { - refreshOn.forEach(refreshData => changes.forEach(changed => this.checkRefresh(refreshData, changed, flags))); - } - else { - changes.forEach(changed => this.checkRefresh(refreshOn, changed, flags)); + refreshOn.forEach((refreshData) => + changes.forEach((changed) => this.checkRefresh(refreshData, changed, flags)), + ); + } else { + changes.forEach((changed) => this.checkRefresh(refreshOn, changed, flags)); } } } @@ -1500,8 +1547,7 @@ export default class Component extends Element { refresh(value) { if (this.hasOwnProperty('refreshOnValue')) { this.refreshOnChanged = !_.isEqual(value, this.refreshOnValue); - } - else { + } else { this.refreshOnChanged = true; } this.refreshOnValue = fastCloneDeep(value); @@ -1563,9 +1609,11 @@ export default class Component extends Element { * @returns {HTMLElement} - The element for this component. */ createViewOnlyElement() { - this.setElement(this.ce('dl', { - id: this.id - })); + this.setElement( + this.ce('dl', { + id: this.id, + }), + ); if (this.element) { // Ensure you can get the component info from the element. @@ -1594,8 +1642,7 @@ export default class Component extends Element { if (!value || noInputWidget) { if (!this.widget || !value) { return value; - } - else { + } else { return this.widget.getValueAsString(value); } } @@ -1688,7 +1735,9 @@ export default class Component extends Element { */ itemValueForHTMLMode(value) { if (Array.isArray(value)) { - const values = value.map(item => Array.isArray(item) ? this.itemValueForHTMLMode(item) : this.itemValue(item)); + const values = value.map((item) => + Array.isArray(item) ? this.itemValueForHTMLMode(item) : this.itemValue(item), + ); return values.join(', '); } @@ -1732,10 +1781,10 @@ export default class Component extends Element { const handleCloseClick = (e) => { if (confirm) { - confirm().then(() => close(e)) - .catch(() => {}); - } - else { + confirm() + .then(() => close(e)) + .catch(() => {}); + } else { close(e); } }; @@ -1763,7 +1812,7 @@ export default class Component extends Element { * @returns {string} - The class name of this component. */ get className() { - let className = this.hasInput ? `${this.transform('class', 'form-group')} has-feedback `: ''; + let className = this.hasInput ? `${this.transform('class', 'form-group')} has-feedback ` : ''; className += `formio-component formio-component-${this.component.type} `; // TODO: find proper way to avoid overriding of default type-based component styles if (this.key && this.key !== 'form') { @@ -1831,22 +1880,29 @@ export default class Component extends Element { * @returns {any} - The evaluation context. */ evalContext(additional) { - return super.evalContext(Object.assign({ - component: this.component, - row: this.data, - rowIndex: this.rowIndex, - data: this.rootValue, - iconClass: this.iconClass.bind(this), - // Bind the translate function to the data context of any interpolated string. - // It is useful to translate strings in different scenarions (eg: custom edit grid templates, custom error messages etc.) - // and desirable to be publicly available rather than calling the internal {instance.t} function in the template string. - t: this.t.bind(this), - submission: (this.root ? this.root._submission : { - data: this.rootValue - }), - form: this.root ? this.root._form : {}, - options: this.options, - }, additional)); + return super.evalContext( + Object.assign( + { + component: this.component, + row: this.data, + rowIndex: this.rowIndex, + data: this.rootValue, + iconClass: this.iconClass.bind(this), + // Bind the translate function to the data context of any interpolated string. + // It is useful to translate strings in different scenarions (eg: custom edit grid templates, custom error messages etc.) + // and desirable to be publicly available rather than calling the internal {instance.t} function in the template string. + t: this.t.bind(this), + submission: this.root + ? this.root._submission + : { + data: this.rootValue, + }, + form: this.root ? this.root._form : {}, + options: this.options, + }, + additional, + ), + ); } /** @@ -1902,7 +1958,9 @@ export default class Component extends Element { const iconset = this.options.iconset || Templates.current.defaultIconset || 'fa'; return Templates.current.hasOwnProperty('iconClass') ? Templates.current.iconClass(iconset, name, spinning) - : this.options.iconset === 'fa' ? Templates.defaultTemplates.iconClass(iconset, name, spinning) : name; + : this.options.iconset === 'fa' + ? Templates.defaultTemplates.iconClass(iconset, name, spinning) + : name; } /** @@ -1911,9 +1969,7 @@ export default class Component extends Element { * @returns {string} - The size class for our component. */ size(size) { - return Templates.current.hasOwnProperty('size') - ? Templates.current.size(size) - : size; + return Templates.current.hasOwnProperty('size') ? Templates.current.size(size) : size; } /** @@ -1921,7 +1977,9 @@ export default class Component extends Element { * @returns {string} - The name of the component. */ get name() { - return this.t(this.component.label || this.component.placeholder || this.key, { _userInput: true }); + return this.t(this.component.label || this.component.placeholder || this.key, { + _userInput: true, + }); } /** @@ -1945,10 +2003,9 @@ export default class Component extends Element { * @returns {string} - The error label for this component. */ get errorLabel() { - return this.t(this.component.errorLabel - || this.component.label - || this.component.placeholder - || this.key); + return this.t( + this.component.errorLabel || this.component.label || this.component.placeholder || this.key, + ); } /** @@ -1957,7 +2014,9 @@ export default class Component extends Element { * @returns {string} - The error message configured for this component. */ errorMessage(type) { - return (this.component.errors && this.component.errors[type]) ? this.component.errors[type] : type; + return this.component.errors && this.component.errors[type] + ? this.component.errors[type] + : type; } /** @@ -1989,8 +2048,7 @@ export default class Component extends Element { if (isInputRangeSelectable(input)) { input.setSelectionRange(input.value.length, input.value.length); } - } - else { + } else { input = this.refs.input[this.refs.input.length]; const lastCharacter = input.value?.length || 0; if (isInputRangeSelectable(input)) { @@ -2037,7 +2095,7 @@ export default class Component extends Element { */ removeEventListeners() { super.removeEventListeners(); - this.tooltips.forEach(tooltip => tooltip.destroy()); + this.tooltips.forEach((tooltip) => tooltip.destroy()); this.tooltips = []; } @@ -2126,7 +2184,7 @@ export default class Component extends Element { row || this.data, data || this.rootValue, this.root ? this.root._form : {}, - this + this, ); } @@ -2204,7 +2262,10 @@ export default class Component extends Element { this, ); - return (result ? this.applyActions(newComponent, logic.actions, result, row, data) : false) || changed; + return ( + (result ? this.applyActions(newComponent, logic.actions, result, row, data) : false) || + changed + ); }, false); // If component definition changed, replace and mark as changed. @@ -2262,11 +2323,7 @@ export default class Component extends Element { * @returns {any} - The result of the evaluation. */ defineActionValue(action, argsObject) { - return this.evaluate( - action.value, - argsObject, - 'value', - ); + return this.evaluate(action.value, argsObject, 'value'); } /** @@ -2296,16 +2353,13 @@ export default class Component extends Element { } case 'value': { const oldValue = this.getValue(); - const newValue = this.defineActionValue( - action, - { - value: _.clone(oldValue), - data, - row, - component: newComponent, - result, - } - ); + const newValue = this.defineActionValue(action, { + value: _.clone(oldValue), + data, + row, + component: newComponent, + result, + }); if (!_.isEqual(oldValue, newValue) && !(this.component.clearOnHide && !this.visible)) { this.setValue(newValue); @@ -2342,15 +2396,18 @@ export default class Component extends Element { } case 'customAction': { const oldValue = this.getValue(); - const newValue = this.evaluate(action.customAction, { - value: _.clone(oldValue), - data, - row, - input: oldValue, - component: newComponent, - result, - }, - 'value'); + const newValue = this.evaluate( + action.customAction, + { + value: _.clone(oldValue), + data, + row, + input: oldValue, + component: newComponent, + result, + }, + 'value', + ); if (!_.isEqual(oldValue, newValue) && !(this.component.clearOnHide && !this.visible)) { this.setValue(newValue); @@ -2403,13 +2460,17 @@ export default class Component extends Element { messages = [messages]; } - messages = _.uniqBy(messages, message => message.message); + messages = _.uniqBy(messages, (message) => message.message); if (this.refs.messageContainer) { - this.setContent(this.refs.messageContainer, messages.map((message) => { - return this.renderTemplate('message', { ...message }); - } - ).join('')); + this.setContent( + this.refs.messageContainer, + messages + .map((message) => { + return this.renderTemplate('message', { ...message }); + }) + .join(''), + ); } } @@ -2441,8 +2502,7 @@ export default class Component extends Element { if (dirty && this.options.highlightErrors) { this.addClass(element, this.options.componentErrorClass); - } - else { + } else { this.addClass(element, 'has-error'); } } @@ -2462,8 +2522,7 @@ export default class Component extends Element { if (invalid) { this.addClass(element, 'is-invalid'); - } - else { + } else { this.removeClass(element, 'is-invalid'); } element.setAttribute('aria-invalid', invalid ? 'true' : 'false'); @@ -2483,11 +2542,10 @@ export default class Component extends Element { ) { if (!this.visible) { this.deleteValue(); - } - else if (!this.hasValue() && this.shouldAddDefaultValue) { + } else if (!this.hasValue() && this.shouldAddDefaultValue) { // If shown, ensure the default is set. this.setValue(this.defaultValue, { - noUpdateEvent: true + noUpdateEvent: true, }); } } @@ -2500,8 +2558,7 @@ export default class Component extends Element { triggerRootChange(...args) { if (this.options.onChange) { this.options.onChange(...args); - } - else if (this.root && this.root.triggerChange) { + } else if (this.root && this.root.triggerChange) { this.root.triggerChange(...args); } } @@ -2529,7 +2586,7 @@ export default class Component extends Element { if (this.component.onChange) { this.evaluate(this.component.onChange, { - flags + flags, }); } @@ -2538,7 +2595,7 @@ export default class Component extends Element { instance: this, component: this.component, value: this.dataValue, - flags: flags + flags: flags, }; // Emit the change. @@ -2565,16 +2622,30 @@ export default class Component extends Element { placeholder: this.t(this.component.placeholder, { _userInput: true }), modules: { toolbar: [ - [{ 'size': ['small', false, 'large', 'huge'] }], // custom dropdown - [{ 'header': [1, 2, 3, 4, 5, 6, false] }], - [{ 'font': [] }], - ['bold', 'italic', 'underline', 'strike', { 'script': 'sub' }, { 'script': 'super' }, 'clean'], - [{ 'color': [] }, { 'background': [] }], - [{ 'list': 'ordered' }, { 'list': 'bullet' }, { 'indent': '-1' }, { 'indent': '+1' }, { 'align': [] }], + [{ size: ['small', false, 'large', 'huge'] }], // custom dropdown + [{ header: [1, 2, 3, 4, 5, 6, false] }], + [{ font: [] }], + [ + 'bold', + 'italic', + 'underline', + 'strike', + { script: 'sub' }, + { script: 'super' }, + 'clean', + ], + [{ color: [] }, { background: [] }], + [ + { list: 'ordered' }, + { list: 'bullet' }, + { indent: '-1' }, + { indent: '+1' }, + { align: [] }, + ], ['blockquote', 'code-block'], - ['link', 'image', 'video', 'formula', 'source'] - ] - } + ['link', 'image', 'video', 'formula', 'source'], + ], + }, }, ace: { theme: 'ace/theme/xcode', @@ -2582,7 +2653,7 @@ export default class Component extends Element { minLines: 12, tabSize: 2, mode: 'ace/mode/javascript', - placeholder: this.t(this.component.placeholder, { _userInput: true }) + placeholder: this.t(this.component.placeholder, { _userInput: true }), }, ckeditor: { image: { @@ -2592,18 +2663,13 @@ export default class Component extends Element { 'imageStyle:full', 'imageStyle:alignLeft', 'imageStyle:alignCenter', - 'imageStyle:alignRight' + 'imageStyle:alignRight', ], - styles: [ - 'full', - 'alignLeft', - 'alignCenter', - 'alignRight' - ] + styles: ['full', 'alignLeft', 'alignCenter', 'alignRight'], }, - extraPlugins: [] + extraPlugins: [], }, - default: {} + default: {}, }; } @@ -2611,7 +2677,11 @@ export default class Component extends Element { settings = _.isEmpty(settings) ? {} : settings; settings.base64Upload = this.component.isUploadEnabled ? false : true; settings.mediaEmbed = { previewsInData: true }; - settings = _.merge(this.wysiwygDefault.ckeditor, _.get(this.options, 'editors.ckeditor.settings', {}), settings); + settings = _.merge( + this.wysiwygDefault.ckeditor, + _.get(this.options, 'editors.ckeditor.settings', {}), + settings, + ); if (this.component.isUploadEnabled) { settings.extraPlugins.push(getFormioUploadAdapterPlugin(this.fileService, this)); @@ -2620,119 +2690,146 @@ export default class Component extends Element { return Formio.requireLibrary( 'ckeditor', isIEBrowser ? 'CKEDITOR' : 'ClassicEditor', - _.get(this.options, 'editors.ckeditor.src', - `${Formio.cdn.ckeditor}/ckeditor.js` - ), true) - .then(() => { - if (!element.parentNode) { - return Promise.reject(); - } - if (isIEBrowser) { - const editor = CKEDITOR.replace(element); - editor.on('change', () => onChange(editor.getData())); - return Promise.resolve(editor); - } - else { - return ClassicEditor.create(element, settings).then(editor => { - editor.model.document.on('change', () => onChange(editor.data.get())); - return editor; - }); - } - }); + _.get(this.options, 'editors.ckeditor.src', `${Formio.cdn.ckeditor}/ckeditor.js`), + true, + ).then(() => { + if (!element.parentNode) { + return Promise.reject(); + } + if (isIEBrowser) { + const editor = CKEDITOR.replace(element); + editor.on('change', () => onChange(editor.getData())); + return Promise.resolve(editor); + } else { + return ClassicEditor.create(element, settings).then((editor) => { + editor.model.document.on('change', () => onChange(editor.data.get())); + return editor; + }); + } + }); } addQuill(element, settings, onChange) { settings = _.isEmpty(settings) ? this.wysiwygDefault.quill : settings; - settings = _.merge(this.wysiwygDefault.quill, _.get(this.options, 'editors.quill.settings', {}), settings); + settings = _.merge( + this.wysiwygDefault.quill, + _.get(this.options, 'editors.quill.settings', {}), + settings, + ); settings = { ...settings, modules: { table: true, - ...settings.modules - } + ...settings.modules, + }, }; // Lazy load the quill css. - Formio.requireLibrary(`quill-css-${settings.theme}`, 'Quill', [ - { type: 'styles', src: `${Formio.cdn.quill}/quill.${settings.theme}.css` } - ], true); + Formio.requireLibrary( + `quill-css-${settings.theme}`, + 'Quill', + [{ type: 'styles', src: `${Formio.cdn.quill}/quill.${settings.theme}.css` }], + true, + ); // Lazy load the quill library. - return Formio.requireLibrary('quill', 'Quill', _.get(this.options, 'editors.quill.src', `${Formio.cdn.quill}/quill.min.js`), true) - .then(() => { - return Formio.requireLibrary('quill-table', 'Quill', `${Formio.cdn.baseUrl}/quill/quill-table.js`, true) - .then(() => { - if (!element.parentNode) { - return Promise.reject(); - } - this.quill = new Quill(element, isIEBrowser ? { ...settings, modules: {} } : settings); - - /** This block of code adds the [source] capabilities. See https://codepen.io/anon/pen/ZyEjrQ */ - const txtArea = document.createElement('textarea'); - txtArea.setAttribute('class', 'quill-source-code'); - this.quill.addContainer('ql-custom').appendChild(txtArea); - const qlSource = element.parentNode.querySelector('.ql-source'); - if (qlSource) { - this.addEventListener(qlSource, 'click', (event) => { - event.preventDefault(); - if (txtArea.style.display === 'inherit') { - this.quill.setContents(this.quill.clipboard.convert({ html: txtArea.value })); - } - txtArea.style.display = (txtArea.style.display === 'none') ? 'inherit' : 'none'; - }); + return Formio.requireLibrary( + 'quill', + 'Quill', + _.get(this.options, 'editors.quill.src', `${Formio.cdn.quill}/quill.min.js`), + true, + ).then(() => { + return Formio.requireLibrary( + 'quill-table', + 'Quill', + `${Formio.cdn.baseUrl}/quill/quill-table.js`, + true, + ).then(() => { + if (!element.parentNode) { + return Promise.reject(); + } + this.quill = new Quill(element, isIEBrowser ? { ...settings, modules: {} } : settings); + + /** This block of code adds the [source] capabilities. See https://codepen.io/anon/pen/ZyEjrQ */ + const txtArea = document.createElement('textarea'); + txtArea.setAttribute('class', 'quill-source-code'); + this.quill.addContainer('ql-custom').appendChild(txtArea); + const qlSource = element.parentNode.querySelector('.ql-source'); + if (qlSource) { + this.addEventListener(qlSource, 'click', (event) => { + event.preventDefault(); + if (txtArea.style.display === 'inherit') { + this.quill.setContents(this.quill.clipboard.convert({ html: txtArea.value })); } - /** END CODEBLOCK */ + txtArea.style.display = txtArea.style.display === 'none' ? 'inherit' : 'none'; + }); + } + /** END CODEBLOCK */ - // Make sure to select cursor when they click on the element. - this.addEventListener(element, 'click', () => this.quill.focus()); + // Make sure to select cursor when they click on the element. + this.addEventListener(element, 'click', () => this.quill.focus()); - // Allows users to skip toolbar items when tabbing though form - const elm = document.querySelectorAll('.ql-formats > button'); - for (let i = 0; i < elm.length; i++) { - elm[i].setAttribute('tabindex', '-1'); - } + // Allows users to skip toolbar items when tabbing though form + const elm = document.querySelectorAll('.ql-formats > button'); + for (let i = 0; i < elm.length; i++) { + elm[i].setAttribute('tabindex', '-1'); + } - this.quill.on('text-change', () => { - txtArea.value = this.quill.root.innerHTML; - onChange(txtArea); - }); - return this.quill; - }); + this.quill.on('text-change', () => { + txtArea.value = this.quill.root.innerHTML; + onChange(txtArea); + }); + return this.quill; }); + }); } get shouldSanitizeValue() { // Sanitize value if sanitizing for thw whole content is turned off - return (this.options?.sanitize !== false); + return this.options?.sanitize !== false; } addAce(element, settings, onChange) { - if (!settings || (settings.theme === 'snow')) { + if (!settings || settings.theme === 'snow') { const mode = settings ? settings.mode : ''; settings = {}; if (mode) { settings.mode = mode; } } - settings = _.merge(this.wysiwygDefault.ace, _.get(this.options, 'editors.ace.settings', {}), settings || {}); - return Formio.requireLibrary('ace', 'ace', _.get(this.options, 'editors.ace.src', `${Formio.cdn.ace}/ace.js`), true) - .then((editor) => { - editor = editor.edit(element); - editor.removeAllListeners('change'); - editor.setOptions(settings); - editor.getSession().setMode(settings.mode); - editor.on('change', () => onChange(editor.getValue())); - if (settings.isUseWorkerDisabled) { - editor.session.setUseWorker(false); - } - return editor; - }); + settings = _.merge( + this.wysiwygDefault.ace, + _.get(this.options, 'editors.ace.settings', {}), + settings || {}, + ); + return Formio.requireLibrary( + 'ace', + 'ace', + _.get(this.options, 'editors.ace.src', `${Formio.cdn.ace}/ace.js`), + true, + ).then((editor) => { + editor = editor.edit(element); + editor.removeAllListeners('change'); + editor.setOptions(settings); + editor.getSession().setMode(settings.mode); + editor.on('change', () => onChange(editor.getValue())); + if (settings.isUseWorkerDisabled) { + editor.session.setUseWorker(false); + } + return editor; + }); } async getDragula() { return new Promise((resolve) => { - return Formio.requireLibrary('dragula', 'dragula', `${Formio.cdn.dragula}/dragula.js`, true, (ready) => { - return ready.then(resolve); - }) + return Formio.requireLibrary( + 'dragula', + 'dragula', + `${Formio.cdn.dragula}/dragula.js`, + true, + (ready) => { + return ready.then(resolve); + }, + ); }); } @@ -2774,10 +2871,7 @@ export default class Component extends Element { * @returns {*} - The value for this component. */ get dataValue() { - if ( - !this.key || - (!this.visible && this.component.clearOnHide && !this.rootPristine) - ) { + if (!this.key || (!this.visible && this.component.clearOnHide && !this.rootPristine)) { return this.emptyValue; } if (!this.hasValue() && this.shouldAddDefaultValue) { @@ -2802,10 +2896,10 @@ export default class Component extends Element { ) { return; } - if ((value !== null) && (value !== undefined)) { + if (value !== null && value !== undefined) { value = this.hook('setDataValue', value, this.key, this._data); } - if ((value === null) || (value === undefined)) { + if (value === null || value === undefined) { this.unset(); return; } @@ -2839,24 +2933,24 @@ export default class Component extends Element { deleteValue() { this.setValue(null, { noUpdateEvent: true, - noDefault: true + noDefault: true, }); this.unset(); } getCustomDefaultValue(defaultValue) { if (this.component.customDefaultValue && !this.options.preview) { - defaultValue = this.evaluate( - this.component.customDefaultValue, - { value: '' }, - 'value' - ); + defaultValue = this.evaluate(this.component.customDefaultValue, { value: '' }, 'value'); } return defaultValue; } get shouldAddDefaultValue() { - return !this.options.noDefaults || (this.component.defaultValue && !this.isEmpty(this.component.defaultValue)) || this.component.customDefaultValue; + return ( + !this.options.noDefaults || + (this.component.defaultValue && !this.isEmpty(this.component.defaultValue)) || + this.component.customDefaultValue + ); } get defaultValue() { @@ -2877,8 +2971,7 @@ export default class Component extends Element { value = ''; } } - } - else { + } else { value = ''; } return value; @@ -2887,8 +2980,7 @@ export default class Component extends Element { if (Array.isArray(this.defaultMask) ? this.defaultMask.length > 0 : this.defaultMask) { if (Array.isArray(defaultValue)) { defaultValue = defaultValue.map(checkMask); - } - else { + } else { defaultValue = checkMask(defaultValue); } } @@ -2950,7 +3042,7 @@ export default class Component extends Element { Array.isArray(this.defaultValue) && this.refs.hasOwnProperty('input') && valueInput && - (valueInput.length !== value.length) && + valueInput.length !== value.length && this.visible ) { this.redraw(); @@ -2995,11 +3087,9 @@ export default class Component extends Element { if (input.mask && input.mask.textMaskInputElement) { input.mask.textMaskInputElement.update(value); - } - else if (input.widget && input.widget.setValue) { + } else if (input.widget && input.widget.setValue) { input.widget.setValue(value); - } - else { + } else { input.value = value; } } @@ -3010,9 +3100,10 @@ export default class Component extends Element { setDefaultValue() { if (this.defaultValue && this.shouldAddDefaultValue) { - const defaultValue = (this.component.multiple && !this.dataValue.length) ? [] : this.defaultValue; + const defaultValue = + this.component.multiple && !this.dataValue.length ? [] : this.defaultValue; this.setValue(defaultValue, { - noUpdateEvent: true + noUpdateEvent: true, }); } } @@ -3023,10 +3114,9 @@ export default class Component extends Element { restoreValue() { if (this.hasSetValue) { this.setValue(this.dataValue, { - noUpdateEvent: true + noUpdateEvent: true, }); - } - else { + } else { this.setDefaultValue(); } } @@ -3047,10 +3137,11 @@ export default class Component extends Element { * @returns {boolean} - If the value changed. */ updateComponentValue(value, flags = {}) { - let newValue = (!flags.resetValue && (value === undefined || value === null)) ? this.getValue() : value; + let newValue = + !flags.resetValue && (value === undefined || value === null) ? this.getValue() : value; newValue = this.normalizeValue(newValue, flags); const oldValue = this.dataValue; - let changed = ((newValue !== undefined) ? this.hasChanged(newValue, oldValue) : false); + let changed = newValue !== undefined ? this.hasChanged(newValue, oldValue) : false; if (changed) { this.dataValue = newValue; changed = this.dataValue !== oldValue; @@ -3076,7 +3167,7 @@ export default class Component extends Element { className: this.iconClass(name), ref, styles, - content + content, }); } @@ -3088,7 +3179,7 @@ export default class Component extends Element { this.setValue(this.defaultValue || this.emptyValue, { noUpdateEvent: true, noValidate: true, - resetValue: true + resetValue: true, }); } @@ -3100,18 +3191,13 @@ export default class Component extends Element { */ hasChanged(newValue, oldValue) { if ( - ((newValue === undefined) || (newValue === null)) && - ((oldValue === undefined) || (oldValue === null) || this.isEmpty(oldValue)) + (newValue === undefined || newValue === null) && + (oldValue === undefined || oldValue === null || this.isEmpty(oldValue)) ) { return false; } // If we do not have a value and are getting set to anything other than undefined or null, then we changed. - if ( - newValue !== undefined && - newValue !== null && - this.allowData && - !this.hasValue() - ) { + if (newValue !== undefined && newValue !== null && this.allowData && !this.hasValue()) { return true; } return !_.isEqual(newValue, oldValue); @@ -3136,24 +3222,27 @@ export default class Component extends Element { } convertNumberOrBoolToString(value) { - if (typeof value === 'number' || typeof value === 'boolean' ) { + if (typeof value === 'number' || typeof value === 'boolean') { return value.toString(); } return value; } doValueCalculation(dataValue, data, row) { - return this.evaluate(this.component.calculateValue, { + return this.evaluate( + this.component.calculateValue, + { value: dataValue, data, row: row || this.data, submission: this.root?._submission || { - data: this.rootValue - } - }, 'value'); + data: this.rootValue, + }, + }, + 'value', + ); } - calculateComponentValue(data, flags, row) { // Skip value calculation for the component if we don't have entire form data set or in builder mode if (this.builderMode || _.isUndefined(_.get(this, 'root.data'))) { @@ -3200,22 +3289,25 @@ export default class Component extends Element { // Do not override calculations on server if they have calculateServer set. if (allowOverride) { // The value is considered locked if it is not empty and comes from a submission value. - const fromSubmission = (flags.fromSubmission && this.component.persistent === true); + const fromSubmission = flags.fromSubmission && this.component.persistent === true; if (this.isEmpty(dataValue)) { // Reset the calculation lock if ever the data is cleared. this.calculationLocked = false; - } - else if (this.calculationLocked || fromSubmission) { + } else if (this.calculationLocked || fromSubmission) { this.calculationLocked = true; return false; } - const firstPass = (this.calculatedValue === undefined) || flags.resetValue; + const firstPass = this.calculatedValue === undefined || flags.resetValue; if (firstPass) { this.calculatedValue = null; } - const newCalculatedValue = this.normalizeValue(this.convertNumberOrBoolToString(calculatedValue)); - const previousCalculatedValue = this.normalizeValue(this.convertNumberOrBoolToString(this.calculatedValue)); + const newCalculatedValue = this.normalizeValue( + this.convertNumberOrBoolToString(calculatedValue), + ); + const previousCalculatedValue = this.normalizeValue( + this.convertNumberOrBoolToString(this.calculatedValue), + ); const normalizedDataValue = this.normalizeValue(this.convertNumberOrBoolToString(dataValue)); const calculationChanged = !_.isEqual(previousCalculatedValue, newCalculatedValue); const previousChanged = !_.isEqual(normalizedDataValue, previousCalculatedValue); @@ -3259,7 +3351,6 @@ export default class Component extends Element { } return false; } - /** * Performs calculations in this component plus any child components. @@ -3333,12 +3424,14 @@ export default class Component extends Element { path: this.path || this.component.key, scope: validationScope, instance: this, - processors: [ - validateProcessInfo - ] + processors: [validateProcessInfo], }); const errors = validationScope.errors; - const interpolatedErrors = FormioUtils.interpolateErrors(this.component, errors, this.t.bind(this)); + const interpolatedErrors = FormioUtils.interpolateErrors( + this.component, + errors, + this.t.bind(this), + ); return _.map(interpolatedErrors, 'message').join('\n\n'); } @@ -3357,11 +3450,14 @@ export default class Component extends Element { if (silentCheck) { return []; } - const messages = errors.filter(message => !message.fromServer); - if (errors.length && !!messages.length && (!this.isEmpty(this.defaultValue) || dirty || !this.pristine)) { + const messages = errors.filter((message) => !message.fromServer); + if ( + errors.length && + !!messages.length && + (!this.isEmpty(this.defaultValue) || dirty || !this.pristine) + ) { return this.setCustomValidity(messages, dirty); - } - else { + } else { return this.setCustomValidity(''); } } @@ -3372,8 +3468,14 @@ export default class Component extends Element { * @returns {Array} - The interpolated errors. */ interpolateErrors(errors) { - const interpolatedErrors = FormioUtils.interpolateErrors(this.component, errors, this.t.bind(this)); - return this.serverErrors?.length ? [...interpolatedErrors, ...this.serverErrors] : interpolatedErrors; + const interpolatedErrors = FormioUtils.interpolateErrors( + this.component, + errors, + this.t.bind(this), + ); + return this.serverErrors?.length + ? [...interpolatedErrors, ...this.serverErrors] + : interpolatedErrors; } /** @@ -3419,9 +3521,7 @@ export default class Component extends Element { instance: this, form: this.root ? this.root._form : {}, scope: { errors: [] }, - processors: [ - validateProcessInfo - ] + processors: [validateProcessInfo], }; if (async) { @@ -3454,25 +3554,28 @@ export default class Component extends Element { if (this.parent && this.parent.childErrors) { if (errors.length) { this.parent.childErrors.push(...errors); - } - else { - _.remove(this.parent.childErrors, (err) => (err?.component?.key || err?.context?.key) === this.component.key); + } else { + _.remove( + this.parent.childErrors, + (err) => (err?.component?.key || err?.context?.key) === this.component.key, + ); } } this.showValidationErrors(errors, data, row, flags); return errors.length === 0; }); - } - else { + } else { const errors = this.validateComponent(data, row, flags); this.showValidationErrors(errors, data, row, flags); allErrors.push(...errors); if (this.parent && this.parent.childErrors) { if (errors.length) { this.parent.childErrors.push(...errors); - } - else { - _.remove(this.parent.childErrors, (err) => (err?.component?.key || err?.context?.key) === this.component.key); + } else { + _.remove( + this.parent.childErrors, + (err) => (err?.component?.key || err?.context?.key) === this.component.key, + ); } } return errors.length === 0; @@ -3531,15 +3634,20 @@ export default class Component extends Element { } checkModal(errors = [], dirty = false) { - const messages = errors.filter(error => !error.fromServer); + const messages = errors.filter((error) => !error.fromServer); const isValid = errors.length === 0; if (!this.component.modalEdit || !this.componentModal) { return; } if (dirty && !isValid) { - this.setErrorClasses([this.refs.openModal], dirty, !isValid, !!messages.length, this.refs.openModalWrapper); - } - else { + this.setErrorClasses( + [this.refs.openModal], + dirty, + !isValid, + !!messages.length, + this.refs.openModalWrapper, + ); + } else { this.clearErrorClasses(this.refs.openModalWrapper); } } @@ -3549,7 +3657,8 @@ export default class Component extends Element { } isEmpty(value = this.dataValue) { - const isEmptyArray = (_.isArray(value) && value.length === 1) ? _.isEqual(value[0], this.emptyValue) : false; + const isEmptyArray = + _.isArray(value) && value.length === 1 ? _.isEqual(value[0], this.emptyValue) : false; return value == null || value.length === 0 || _.isEqual(value, this.emptyValue) || isEmptyArray; } @@ -3594,8 +3703,7 @@ export default class Component extends Element { this.root.focusedComponent = this; this.emit('focus', this); - } - else if (this.root.focusedComponent === this && this.root.pendingBlur) { + } else if (this.root.focusedComponent === this && this.root.pendingBlur) { this.root.pendingBlur.cancel(); this.root.pendingBlur = null; } @@ -3604,12 +3712,15 @@ export default class Component extends Element { this.root.pendingBlur = FormioUtils.delay(() => { this.emit('blur', this); if (this.component.validateOn === 'blur') { - this.root.triggerChange({ fromBlur: true }, { - instance: this, - component: this.component, - value: this.dataValue, - flags: { fromBlur: true } - }); + this.root.triggerChange( + { fromBlur: true }, + { + instance: this, + component: this.component, + value: this.dataValue, + flags: { fromBlur: true }, + }, + ); } this.root.focusedComponent = null; this.root.pendingBlur = null; @@ -3617,7 +3728,6 @@ export default class Component extends Element { }); } - setCustomValidity(messages, dirty, external) { const inputRefs = this.isInputComponent ? this.refs.input || [] : null; @@ -3632,13 +3742,12 @@ export default class Component extends Element { if (!Array.isArray(messages)) { if (messages) { messages = [messages]; - } - else { + } else { messages = []; } } - const errors = messages.filter(message => message.level === 'error'); + const errors = messages.filter((message) => message.level === 'error'); let invalidInputRefs = inputRefs; // Filter the invalid input refs in multiple components if (this.component.multiple) { @@ -3670,8 +3779,7 @@ export default class Component extends Element { if (invalidInputRefs) { this.setErrorClasses(invalidInputRefs, dirty, !!errors.length, !!messages.length); } - } - else if (!errors.length || (errors[0].external === !!external)) { + } else if (!errors.length || errors[0].external === !!external) { if (this.refs.messageContainer) { this.empty(this.refs.messageContainer); } @@ -3702,7 +3810,11 @@ export default class Component extends Element { if (!this.root || !this.root.editing) { return false; } - return (this.component.protected || !this.component.persistent || (this.component.persistent === 'client-only')); + return ( + this.component.protected || + !this.component.persistent || + this.component.persistent === 'client-only' + ); } shouldSkipValidation(data, row, flags = {}) { @@ -3717,21 +3829,26 @@ export default class Component extends Element { () => this.isValueHidden(), // Force valid if component is hidden. () => { - if (!this.component.validateWhenHidden && (!this.visible || !this.checkCondition(row, data))) { + if ( + !this.component.validateWhenHidden && + (!this.visible || !this.checkCondition(row, data)) + ) { // If this component is forced valid when it is hidden, then we also need to reset the errors for this component. this._errors = []; return true; } return false; - } + }, ]; - return rules.some(pred => pred()); + return rules.some((pred) => pred()); } // Maintain reverse compatibility. whenReady() { - console.warn('The whenReady() method has been deprecated. Please use the dataReady property instead.'); + console.warn( + 'The whenReady() method has been deprecated. Please use the dataReady property instead.', + ); return this.dataReady; } @@ -3772,28 +3889,26 @@ export default class Component extends Element { element.disabled = disabled; if (disabled) { element.setAttribute('disabled', 'disabled'); - } - else { + } else { element.removeAttribute('disabled'); } } setLoading(element, loading) { - if (!element || (element.loading === loading)) { + if (!element || element.loading === loading) { return; } element.loading = loading; if (!element.loader && loading) { element.loader = this.ce('i', { - class: `${this.iconClass('refresh', true)} button-icon-right` + class: `${this.iconClass('refresh', true)} button-icon-right`, }); } if (element.loader) { if (loading) { this.appendTo(element.loader, element); - } - else { + } else { this.removeChildFrom(element.loader, element); } } @@ -3802,9 +3917,9 @@ export default class Component extends Element { selectOptions(select, tag, options, defaultValue) { _.each(options, (option) => { const attrs = { - value: option.value + value: option.value, }; - if (defaultValue !== undefined && (option.value === defaultValue)) { + if (defaultValue !== undefined && option.value === defaultValue) { attrs.selected = 'selected'; } const optionElement = this.ce('option', attrs); @@ -3818,8 +3933,7 @@ export default class Component extends Element { _.each(options, (option) => { if (option.value === value) { option.setAttribute('selected', 'selected'); - } - else { + } else { option.removeAttribute('selected'); } }); @@ -3833,8 +3947,7 @@ export default class Component extends Element { getRelativePath(path) { const keyPart = `.${this.key}`; - const thisPath = this.isInputComponent ? this.path - : this.path.slice(0).replace(keyPart, ''); + const thisPath = this.isInputComponent ? this.path : this.path.slice(0).replace(keyPart, ''); return path.replace(thisPath, ''); } @@ -3856,7 +3969,7 @@ export default class Component extends Element { } detachLogic() { - this.logic.forEach(logic => { + this.logic.forEach((logic) => { if (logic.trigger.type === 'event') { const event = this.interpolate(logic.trigger.event); this.off(event); // only applies to callbacks on this component @@ -3872,31 +3985,35 @@ export default class Component extends Element { this.logic.forEach((logic) => { if (logic.trigger.type === 'event') { const event = this.interpolate(logic.trigger.event); - this.on(event, (...args) => { - const newComponent = fastCloneDeep(this.originalComponent); - if (this.applyActions(newComponent, logic.actions, args)) { - // If component definition changed, replace it. - if (!_.isEqual(this.component, newComponent)) { - this.component = newComponent; - const visible = this.conditionallyVisible(null, null); - const disabled = this.shouldDisabled; - - // Change states which won't be recalculated during redrawing - if (this.visible !== visible) { - // If the logic is triggered by an event and the action sets the hidden state then the original - // component definition must be changed so that the components hidden state does not get flipped back by - // the fieldLogic function - this.originalComponent.hidden = !visible; - this.visible = visible; - } - if (this.disabled !== disabled) { - this.disabled = disabled; - } + this.on( + event, + (...args) => { + const newComponent = fastCloneDeep(this.originalComponent); + if (this.applyActions(newComponent, logic.actions, args)) { + // If component definition changed, replace it. + if (!_.isEqual(this.component, newComponent)) { + this.component = newComponent; + const visible = this.conditionallyVisible(null, null); + const disabled = this.shouldDisabled; + + // Change states which won't be recalculated during redrawing + if (this.visible !== visible) { + // If the logic is triggered by an event and the action sets the hidden state then the original + // component definition must be changed so that the components hidden state does not get flipped back by + // the fieldLogic function + this.originalComponent.hidden = !visible; + this.visible = visible; + } + if (this.disabled !== disabled) { + this.disabled = disabled; + } - this.redraw(); + this.redraw(); + } } - } - }, true); + }, + true, + ); } }); } @@ -3910,7 +4027,7 @@ export default class Component extends Element { name: this.options.name, type: this.component.inputType || 'text', class: 'form-control', - lang: this.options.language + lang: this.options.language, }; if (this.component.placeholder) { @@ -3931,7 +4048,7 @@ export default class Component extends Element { type: 'input', component: this.component, changeEvent: 'change', - attr: attributes + attr: attributes, }; } @@ -3967,8 +4084,7 @@ export default class Component extends Element { if (sibling) { sibling.focus(); } - } - else { + } else { focusingInput.focus(); } } @@ -4012,7 +4128,7 @@ export default class Component extends Element { } Component.externalLibraries = {}; -Component.requireLibrary = function(name, property, src, polling) { +Component.requireLibrary = function (name, property, src, polling) { if (!Component.externalLibraries.hasOwnProperty(name)) { Component.externalLibraries[name] = {}; Component.externalLibraries[name].ready = new Promise((resolve, reject) => { @@ -4023,7 +4139,7 @@ Component.requireLibrary = function(name, property, src, polling) { const callbackName = `${name}Callback`; if (!polling && !window[callbackName]) { - window[callbackName] = function() { + window[callbackName] = function () { this.resolve(); }.bind(Component.externalLibraries[name]); } @@ -4031,8 +4147,7 @@ Component.requireLibrary = function(name, property, src, polling) { const plugin = getScriptPlugin(property); if (plugin) { Component.externalLibraries[name].resolve(plugin); - } - else { + } else { src = Array.isArray(src) ? src : [src]; src.forEach((lib) => { let attrs = {}; @@ -4040,7 +4155,7 @@ Component.requireLibrary = function(name, property, src, polling) { if (typeof lib === 'string') { lib = { type: 'script', - src: lib + src: lib, }; } switch (lib.type) { @@ -4050,14 +4165,14 @@ Component.requireLibrary = function(name, property, src, polling) { src: lib.src, type: 'text/javascript', defer: true, - async: true + async: true, }; break; case 'styles': elementType = 'link'; attrs = { href: lib.src, - rel: 'stylesheet' + rel: 'stylesheet', }; break; } @@ -4076,8 +4191,7 @@ Component.requireLibrary = function(name, property, src, polling) { const plugin = getScriptPlugin(property); if (plugin) { Component.externalLibraries[name].resolve(plugin); - } - else { + } else { // check again after 200 ms. setTimeout(checkLibrary, 200); } @@ -4088,11 +4202,8 @@ Component.requireLibrary = function(name, property, src, polling) { return Component.externalLibraries[name].ready; }; -Component.libraryReady = function(name) { - if ( - Component.externalLibraries.hasOwnProperty(name) && - Component.externalLibraries[name].ready - ) { +Component.libraryReady = function (name) { + if (Component.externalLibraries.hasOwnProperty(name) && Component.externalLibraries[name].ready) { return Component.externalLibraries[name].ready; } diff --git a/src/components/_classes/component/editForm/Component.edit.addons.js b/src/components/_classes/component/editForm/Component.edit.addons.js index 744bc6a44b..fffd4a2a5b 100644 --- a/src/components/_classes/component/editForm/Component.edit.addons.js +++ b/src/components/_classes/component/editForm/Component.edit.addons.js @@ -11,12 +11,11 @@ export default [ key: 'addons', label: 'Addons', templates: { - header: `
{{ t(components[0].label) }}
Settings
`, - + row: `
{{ row.name.label }} @@ -45,7 +44,7 @@ export default [ type: 'select', dataSrc: 'custom', data: { - custom: function({ instance }) { + custom: function ({ instance }) { const componentType = instance?.root?.data?.type; const availableAddons = Object.keys(Addons).filter((key) => { if (Addons[key]?.info?.supportedComponents?.includes(componentType)) { @@ -65,6 +64,6 @@ export default [ }, }, ...editForms, - ] - } + ], + }, ]; diff --git a/src/components/_classes/component/editForm/Component.edit.api.js b/src/components/_classes/component/editForm/Component.edit.api.js index d1cb45afe7..b5f501bac7 100644 --- a/src/components/_classes/component/editForm/Component.edit.api.js +++ b/src/components/_classes/component/editForm/Component.edit.api.js @@ -8,9 +8,10 @@ export default [ tooltip: 'The name of this field in the API endpoint.', validate: { pattern: '(\\w|\\w[\\w-.]*\\w)', - patternMessage: 'The property name must only contain alphanumeric characters, underscores, dots and dashes and should not be ended by dash or dot.', - required: true - } + patternMessage: + 'The property name must only contain alphanumeric characters, underscores, dots and dashes and should not be ended by dash or dot.', + required: true, + }, }, { weight: 100, @@ -19,7 +20,7 @@ export default [ label: 'Field Tags', storeas: 'array', tooltip: 'Tag the field for use in custom logic.', - key: 'tags' + key: 'tags', }, { weight: 200, @@ -32,7 +33,7 @@ export default [ key: 'value', label: 'Value', placeholder: 'Value', - input: true - } + input: true, + }, }, ]; diff --git a/src/components/_classes/component/editForm/Component.edit.conditional.js b/src/components/_classes/component/editForm/Component.edit.conditional.js index a03eafb9ff..d0f785c5fd 100644 --- a/src/components/_classes/component/editForm/Component.edit.conditional.js +++ b/src/components/_classes/component/editForm/Component.edit.conditional.js @@ -1,6 +1,6 @@ import EditFormUtils from './utils'; import { getContextComponents } from '../../../../utils/utils'; - + export default [ { type: 'panel', @@ -18,9 +18,9 @@ export default [ data: { values: [ { label: 'True', value: 'true' }, - { label: 'False', value: 'false' } - ] - } + { label: 'False', value: 'false' }, + ], + }, }, { type: 'select', @@ -32,22 +32,25 @@ export default [ data: { custom(context) { return getContextComponents(context); - } - } + }, + }, }, { type: 'textfield', input: true, label: 'Has the value:', - key: 'conditional.eq' - } - ] + key: 'conditional.eq', + }, + ], }, - EditFormUtils.javaScriptValue('Advanced Conditions', 'customConditional', 'conditional.json', 110, + EditFormUtils.javaScriptValue( + 'Advanced Conditions', + 'customConditional', + 'conditional.json', + 110, '

You must assign the show variable a boolean result.

' + - '

Note: Advanced Conditional logic will override the results of the Simple Conditional logic.

' + - '
Example
show = !!data.showMe;
', - '

Click here for an example

' - ) + '

Note: Advanced Conditional logic will override the results of the Simple Conditional logic.

' + + '
Example
show = !!data.showMe;
', + '

Click here for an example

', + ), ]; - diff --git a/src/components/_classes/component/editForm/Component.edit.data.js b/src/components/_classes/component/editForm/Component.edit.data.js index 529c19b4f0..e4fb889737 100644 --- a/src/components/_classes/component/editForm/Component.edit.data.js +++ b/src/components/_classes/component/editForm/Component.edit.data.js @@ -1,5 +1,5 @@ import EditFormUtils from './utils'; - + export default [ { weight: 0, @@ -7,7 +7,7 @@ export default [ label: 'Multiple Values', tooltip: 'Allows multiple values to be entered for this field.', key: 'multiple', - input: true + input: true, }, { type: 'textfield', @@ -15,8 +15,9 @@ export default [ key: 'defaultValue', weight: 5, placeholder: 'Default Value', - tooltip: 'The Default Value will be the value for this field, before user interaction. Having a default value will override the placeholder text.', - input: true + tooltip: + 'The Default Value will be the value for this field, before user interaction. Having a default value will override the placeholder text.', + input: true, }, { weight: 30, @@ -31,7 +32,7 @@ export default [ { label: 'None', value: false }, { label: 'Server', value: true }, { label: 'Client', value: 'client-only' }, - ] + ], }, { weight: 150, @@ -39,7 +40,7 @@ export default [ label: 'Protected', tooltip: 'A protected field will not be returned when queried via API.', key: 'protected', - input: true + input: true, }, { type: 'checkbox', @@ -47,13 +48,15 @@ export default [ weight: 200, key: 'dbIndex', label: 'Database Index', - tooltip: 'Set this field as an index within the database. Increases performance for submission queries.' + tooltip: + 'Set this field as an index within the database. Increases performance for submission queries.', }, { weight: 400, type: 'checkbox', label: 'Encrypted', - tooltip: 'Encrypt this field on the server. This is two way encryption which is not suitable for passwords.', + tooltip: + 'Encrypt this field on the server. This is two way encryption which is not suitable for passwords.', key: 'encrypted', input: true, logic: [ @@ -61,7 +64,7 @@ export default [ name: 'disabled', trigger: { type: 'javascript', - javascript: 'result = !instance.root.options.sac;' + javascript: 'result = !instance.root.options.sac;', }, actions: [ { @@ -70,17 +73,17 @@ export default [ property: { label: 'Disabled', value: 'disabled', - type: 'boolean' + type: 'boolean', }, - state: true - } - ] + state: true, + }, + ], }, { name: 'disabledToolTip', trigger: { type: 'javascript', - javascript: 'result = !instance.root.options.sac;' + javascript: 'result = !instance.root.options.sac;', }, actions: [ { @@ -89,13 +92,13 @@ export default [ property: { label: 'Tooltip', value: 'tooltip', - type: 'string' + type: 'string', }, - text: 'Only available with Security Module. Contact sales@form.io for more information.' - } - ] - } - ] + text: 'Only available with Security Module. Contact sales@form.io for more information.', + }, + ], + }, + ], }, { type: 'select', @@ -103,26 +106,30 @@ export default [ key: 'redrawOn', label: 'Redraw On', weight: 600, - tooltip: 'Redraw this component if another component changes. This is useful if interpolating parts of the component like the label.', + tooltip: + 'Redraw this component if another component changes. This is useful if interpolating parts of the component like the label.', dataSrc: 'custom', valueProperty: 'value', data: { custom(context) { var values = []; values.push({ label: 'Any Change', value: 'data' }); - context.utils.eachComponent(context.instance.options.editForm.components, function(component, path) { - if (component.key !== context.data.key) { - values.push({ - label: component.label || component.key, - value: path - }); - } - }); + context.utils.eachComponent( + context.instance.options.editForm.components, + function (component, path) { + if (component.key !== context.data.key) { + values.push({ + label: component.label || component.key, + value: path, + }); + } + }, + ); return values; - } + }, }, conditional: { - json: { '!' : [{ var: 'data.dataSrc' }] }, + json: { '!': [{ var: 'data.dataSrc' }] }, }, }, { @@ -132,16 +139,24 @@ export default [ key: 'clearOnHide', defaultValue: true, tooltip: 'When a field is hidden, clear the value.', - input: true + input: true, }, - EditFormUtils.javaScriptValue('Custom Default Value', 'customDefaultValue', 'customDefaultValue', 1000, + EditFormUtils.javaScriptValue( + 'Custom Default Value', + 'customDefaultValue', + 'customDefaultValue', + 1000, '

Example:

value = data.firstName + " " + data.lastName;

', - '

Example:

{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}
' + '

Example:

{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}
', ), - EditFormUtils.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 1100, + EditFormUtils.javaScriptValue( + 'Calculated Value', + 'calculateValue', + 'calculateValue', + 1100, '

Example:

value = data.a + data.b + data.c;

', '

Example:

{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}

Click here for an example

', -'tokenThe decoded JWT token for the authenticated user.' + 'tokenThe decoded JWT token for the authenticated user.', ), { type: 'checkbox', @@ -149,7 +164,8 @@ export default [ weight: 1100, key: 'calculateServer', label: 'Calculate Value on server', - tooltip: 'Checking this will run the calculation on the server. This is useful if you wish to override the values submitted with the calculations performed on the server.' + tooltip: + 'Checking this will run the calculation on the server. This is useful if you wish to override the values submitted with the calculations performed on the server.', }, { type: 'checkbox', @@ -157,7 +173,6 @@ export default [ weight: 1200, key: 'allowCalculateOverride', label: 'Allow Manual Override of Calculated Value', - tooltip: 'When checked, this will allow the user to manually override the calculated value.' + tooltip: 'When checked, this will allow the user to manually override the calculated value.', }, ]; - diff --git a/src/components/_classes/component/editForm/Component.edit.display.js b/src/components/_classes/component/editForm/Component.edit.display.js index fee318a7b9..09a4494392 100644 --- a/src/components/_classes/component/editForm/Component.edit.display.js +++ b/src/components/_classes/component/editForm/Component.edit.display.js @@ -1,4 +1,3 @@ - export default [ { weight: 0, @@ -9,7 +8,7 @@ export default [ placeholder: 'Field Label', tooltip: 'The label for this field that will appear next to it.', validate: { - required: true + required: true, }, autofocus: true, }, @@ -29,9 +28,9 @@ export default [ { label: 'Left (Right-aligned)', value: 'left-right' }, { label: 'Right (Left-aligned)', value: 'right-left' }, { label: 'Right (Right-aligned)', value: 'right-right' }, - { label: 'Bottom', value: 'bottom' } - ] - } + { label: 'Bottom', value: 'bottom' }, + ], + }, }, { type: 'number', @@ -45,16 +44,16 @@ export default [ suffix: '%', validate: { min: 0, - max: 100 + max: 100, }, conditional: { json: { and: [ { '!==': [{ var: 'data.labelPosition' }, 'top'] }, { '!==': [{ var: 'data.labelPosition' }, 'bottom'] }, - ] - } - } + ], + }, + }, }, { type: 'number', @@ -68,16 +67,16 @@ export default [ suffix: '%', validate: { min: 0, - max: 100 + max: 100, }, conditional: { json: { and: [ { '!==': [{ var: 'data.labelPosition' }, 'top'] }, { '!==': [{ var: 'data.labelPosition' }, 'bottom'] }, - ] - } - } + ], + }, + }, }, { weight: 100, @@ -86,7 +85,7 @@ export default [ key: 'placeholder', label: 'Placeholder', placeholder: 'Placeholder', - tooltip: 'The placeholder text that will appear when this field is empty.' + tooltip: 'The placeholder text that will appear when this field is empty.', }, { weight: 200, @@ -125,7 +124,7 @@ export default [ key: 'customClass', label: 'Custom CSS Class', placeholder: 'Custom CSS Class', - tooltip: 'Custom CSS class to add to this component.' + tooltip: 'Custom CSS class to add to this component.', }, { weight: 600, @@ -134,7 +133,8 @@ export default [ key: 'tabindex', label: 'Tab Index', placeholder: '0', - tooltip: 'Sets the tabindex attribute of this component to override the tab order of the form. See the MDN documentation on tabindex for more information.' + tooltip: + "Sets the tabindex attribute of this component to override the tab order of the form. See the MDN documentation on tabindex for more information.", }, { weight: 1100, @@ -142,15 +142,16 @@ export default [ label: 'Hidden', tooltip: 'A hidden field is still a part of the form, but is hidden from view.', key: 'hidden', - input: true + input: true, }, { weight: 1200, type: 'checkbox', label: 'Hide Label', - tooltip: 'Hide the label (title, if no label) of this component. This allows you to show the label in the form builder, but not when it is rendered.', + tooltip: + 'Hide the label (title, if no label) of this component. This allows you to show the label in the form builder, but not when it is rendered.', key: 'hideLabel', - input: true + input: true, }, { weight: 1350, @@ -158,7 +159,7 @@ export default [ label: 'Initial Focus', tooltip: 'Make this field the initially focused element on this form.', key: 'autofocus', - input: true + input: true, }, { weight: 1370, @@ -169,7 +170,7 @@ export default [ input: true, customConditional(context) { return context.instance.options?.flags?.inDataGrid; - } + }, }, { weight: 1400, @@ -177,7 +178,7 @@ export default [ label: 'Disabled', tooltip: 'Disable the form input.', key: 'disabled', - input: true + input: true, }, { weight: 1500, @@ -185,7 +186,7 @@ export default [ label: 'Table View', tooltip: 'Shows this value within the table view of the submissions.', key: 'tableView', - input: true + input: true, }, { weight: 1600, @@ -193,7 +194,6 @@ export default [ label: 'Modal Edit', tooltip: 'Opens up a modal to edit the value of this component.', key: 'modalEdit', - input: true - } + input: true, + }, ]; - diff --git a/src/components/_classes/component/editForm/Component.edit.layout.js b/src/components/_classes/component/editForm/Component.edit.layout.js index de2da8f0a9..c49d79d76f 100644 --- a/src/components/_classes/component/editForm/Component.edit.layout.js +++ b/src/components/_classes/component/editForm/Component.edit.layout.js @@ -9,9 +9,10 @@ export default [ type: 'textfield', key: 'value', label: 'Attribute Value', - input: true + input: true, }, - tooltip: 'Provide a map of HTML attributes for component\'s input element (attributes provided by other component settings or other attributes generated by form.io take precedence over attributes in this grid)', + tooltip: + "Provide a map of HTML attributes for component's input element (attributes provided by other component settings or other attributes generated by form.io take precedence over attributes in this grid)", addAnother: 'Add Attribute', }, { @@ -30,7 +31,7 @@ export default [ key: 'overlay.style', label: 'Style', placeholder: '', - tooltip: 'Custom styles that should be applied to this component when rendered in PDF.' + tooltip: 'Custom styles that should be applied to this component when rendered in PDF.', }, { type: 'textfield', @@ -38,7 +39,7 @@ export default [ key: 'overlay.page', label: 'Page', placeholder: '', - tooltip: 'The PDF page to place this component.' + tooltip: 'The PDF page to place this component.', }, { type: 'textfield', @@ -46,7 +47,7 @@ export default [ key: 'overlay.left', label: 'Left', placeholder: '', - tooltip: 'The left margin within a page to place this component.' + tooltip: 'The left margin within a page to place this component.', }, { type: 'textfield', @@ -54,7 +55,7 @@ export default [ key: 'overlay.top', label: 'Top', placeholder: '', - tooltip: 'The top margin within a page to place this component.' + tooltip: 'The top margin within a page to place this component.', }, { type: 'textfield', @@ -62,7 +63,7 @@ export default [ key: 'overlay.width', label: 'Width', placeholder: '', - tooltip: 'The width of the component (in pixels).' + tooltip: 'The width of the component (in pixels).', }, { type: 'textfield', @@ -70,9 +71,8 @@ export default [ key: 'overlay.height', label: 'Height', placeholder: '', - tooltip: 'The height of the component (in pixels).' + tooltip: 'The height of the component (in pixels).', }, - - ] + ], }, ]; diff --git a/src/components/_classes/component/editForm/Component.edit.logic.js b/src/components/_classes/component/editForm/Component.edit.logic.js index 7cc25caf6d..d7af8fe1ba 100644 --- a/src/components/_classes/component/editForm/Component.edit.logic.js +++ b/src/components/_classes/component/editForm/Component.edit.logic.js @@ -1,7 +1,6 @@ import EditFormUtils from './utils'; import { getContextComponents } from '../../../../utils/utils'; - export default [ { weight: 0, @@ -9,7 +8,8 @@ export default [ label: 'Advanced Logic', key: 'logic', templates: { - header: '
\n
\n {{ value.length }} {{ ctx.t("Advanced Logic Configured") }}\n
\n
', + header: + '
\n
\n {{ value.length }} {{ ctx.t("Advanced Logic Configured") }}\n
\n
', row: '
\n
\n
{{ row.name }}
\n
\n
\n
\n \n \n
\n
\n
', footer: '', }, @@ -123,7 +123,8 @@ export default [ input: true, tableView: false, placeholder: `result = (data['mykey'] > 1);`, - description: '"row", "data", and "component" variables are available. Return "result".', + description: + '"row", "data", and "component" variables are available. Return "result".', customConditional({ row }) { return row.type === 'javascript'; }, @@ -139,7 +140,8 @@ export default [ input: true, tableView: false, placeholder: `{ ... }`, - description: '"row", "data", "component" and "_" variables are available. Return the result to be passed to the action if truthy.', + description: + '"row", "data", "component" and "_" variables are available. Return the result to be passed to the action if truthy.', customConditional({ row }) { return row.type === 'json'; }, @@ -150,7 +152,8 @@ export default [ key: 'event', label: 'Event Name', placeholder: 'event', - description: 'The event that will trigger this logic. You can trigger events externally or via a button.', + description: + 'The event that will trigger this logic. You can trigger events externally or via a button.', tableView: false, customConditional({ row }) { return row.type === 'event'; @@ -170,7 +173,8 @@ export default [ key: 'actions', tableView: false, templates: { - header: '
\n
{{ value.length }} {{ ctx.t("actions") }}
\n
', + header: + '
\n
{{ value.length }} {{ ctx.t("actions") }}
\n
', row: '
\n
\n
{{ row.name }}
\n
\n
\n
\n \n \n
\n
\n
', footer: '', }, @@ -329,9 +333,11 @@ export default [ template: '{{ item.label }}', type: 'select', customConditional({ row }) { - return row.type === 'property' && + return ( + row.type === 'property' && row.hasOwnProperty('property') && - row.property.type === 'boolean'; + row.property.type === 'boolean' + ); }, }, { @@ -342,12 +348,15 @@ export default [ inputType: 'text', input: true, tableView: false, - description: 'Can use templating with {{ data.myfield }}. "data", "row", "component" and "result" variables are available.', + description: + 'Can use templating with {{ data.myfield }}. "data", "row", "component" and "result" variables are available.', customConditional({ row }) { - return row.type === 'property' && + return ( + row.type === 'property' && row.hasOwnProperty('property') && row.property.type === 'string' && - !row.property.component; + !row.property.component + ); }, }, { @@ -361,7 +370,8 @@ export default [ placeholder: `value = data.myfield;`, type: 'textarea', tableView: false, - description: '"row", "data", "component", and "result" variables are available. Return the value.', + description: + '"row", "data", "component", and "result" variables are available. Return the value.', customConditional({ row }) { return row.type === 'value'; }, @@ -377,17 +387,21 @@ export default [ placeholder: `schema = { label: 'Updated' };`, type: 'textarea', tableView: false, - description: '"row", "data", "component", and "result" variables are available. Return the schema.', + description: + '"row", "data", "component", and "result" variables are available. Return the schema.', customConditional({ row }) { return row.type === 'mergeComponentSchema'; }, - }, - Object.assign(EditFormUtils.logicVariablesTable('inputThe value that was input into this component'), - { + }, + Object.assign( + EditFormUtils.logicVariablesTable( + 'inputThe value that was input into this component', + ), + { customConditional({ row }) { return row.type === 'customAction'; - } - } + }, + }, ), { weight: 20, @@ -410,4 +424,3 @@ export default [ ], }, ]; - diff --git a/src/components/_classes/component/editForm/Component.edit.validation.js b/src/components/_classes/component/editForm/Component.edit.validation.js index d4f54af5d4..0d2655443b 100644 --- a/src/components/_classes/component/editForm/Component.edit.validation.js +++ b/src/components/_classes/component/editForm/Component.edit.validation.js @@ -1,7 +1,6 @@ import EditFormUtils from './utils'; import { Evaluator } from '../../../../utils/Evaluator'; - export default [ { weight: 10, @@ -9,23 +8,25 @@ export default [ label: 'Required', tooltip: 'A required field must be filled in before the form can be submitted.', key: 'validate.required', - input: true + input: true, }, { weight: 100, type: 'checkbox', label: 'Unique', - tooltip: 'Makes sure the data submitted for this field is unique, and has not been submitted before.', + tooltip: + 'Makes sure the data submitted for this field is unique, and has not been submitted before.', key: 'unique', - input: true + input: true, }, { weight: 100, type: 'checkbox', label: 'Validate When Hidden', - tooltip: 'Validates the component when it is hidden/conditionally hidden. Vaildation errors are displayed in the error alert on the form submission. Use caution when enabling this setting, as it can cause a hidden component to be invalid with no way for the form user to correct it.', + tooltip: + 'Validates the component when it is hidden/conditionally hidden. Vaildation errors are displayed in the error alert on the form submission. Use caution when enabling this setting, as it can cause a hidden component to be invalid with no way for the form user to correct it.', key: 'validateWhenHidden', - input: true + input: true, }, { weight: 0, @@ -39,9 +40,9 @@ export default [ data: { values: [ { label: 'Change', value: 'change' }, - { label: 'Blur', value: 'blur' } - ] - } + { label: 'Blur', value: 'blur' }, + ], + }, }, { weight: 190, @@ -50,7 +51,7 @@ export default [ key: 'errorLabel', label: 'Error Label', placeholder: 'Error Label', - tooltip: 'The label for this field when an error occurs.' + tooltip: 'The label for this field when an error occurs.', }, { weight: 200, @@ -59,7 +60,7 @@ export default [ placeholder: 'Custom Error Message', type: 'textfield', tooltip: 'Error message displayed if any error occurred.', - input: true + input: true, }, { type: 'panel', @@ -73,7 +74,9 @@ export default [ return !Evaluator.noeval || Evaluator.protectedEval; }, components: [ - EditFormUtils.logicVariablesTable('inputThe value that was input into this component'), + EditFormUtils.logicVariablesTable( + 'inputThe value that was input into this component', + ), { type: 'textarea', key: 'validate.custom', @@ -81,7 +84,7 @@ export default [ editor: 'ace', hideLabel: true, as: 'javascript', - input: true + input: true, }, { type: 'htmlelement', @@ -92,7 +95,7 @@ export default [

You must assign the valid variable as either true or an error message if validation fails.

Example:
valid = (input === 'Joe') ? true : 'Your name must be "Joe"';
- ` + `, }, { type: 'well', @@ -101,14 +104,16 @@ export default [ weight: 100, type: 'checkbox', label: 'Secret Validation', - tooltip: 'Check this if you wish to perform the validation ONLY on the server side. This keeps your validation logic private and secret.', - description: 'Check this if you wish to perform the validation ONLY on the server side. This keeps your validation logic private and secret.', + tooltip: + 'Check this if you wish to perform the validation ONLY on the server side. This keeps your validation logic private and secret.', + description: + 'Check this if you wish to perform the validation ONLY on the server side. This keeps your validation logic private and secret.', key: 'validate.customPrivate', - input: true - } - ] - } - ] + input: true, + }, + ], + }, + ], }, { type: 'panel', @@ -121,17 +126,19 @@ export default [ { type: 'htmlelement', tag: 'div', - - content: '

Execute custom logic using JSONLogic.

' + + + content: + '

Execute custom logic using JSONLogic.

' + '
Example:
' + - '
' + JSON.stringify({
-            "if": [
-              { "===": [{ "var": "input" }, "Bob"] },
-              true,
-              "Your name must be 'Bob'!"
-            ]
-          }, null, 2) + '
' - + '
' +
+          JSON.stringify(
+            {
+              if: [{ '===': [{ var: 'input' }, 'Bob'] }, true, "Your name must be 'Bob'!"],
+            },
+            null,
+            2,
+          ) +
+          '
', }, { type: 'textarea', @@ -140,9 +147,9 @@ export default [ rows: 5, editor: 'ace', as: 'json', - input: true - } - ] + input: true, + }, + ], }, { type: 'panel', @@ -159,7 +166,7 @@ export default [ rows: 5, editor: 'ace', as: 'json', - input: true + input: true, }, { type: 'htmlelement', @@ -205,9 +212,8 @@ export default [
  • {{ maxYear }}
  • {{ regex }}
  • - ` - } - ] - } + `, + }, + ], + }, ]; - diff --git a/src/components/_classes/component/editForm/utils.js b/src/components/_classes/component/editForm/utils.js index ef0b4763dd..0056895786 100644 --- a/src/components/_classes/component/editForm/utils.js +++ b/src/components/_classes/component/editForm/utils.js @@ -24,12 +24,11 @@ const EditFormUtils = { if (objValue.components) { srcValue.components = EditFormUtils.sortAndFilterComponents( - _.unionWith(objValue.components, srcValue.components, EditFormUtils.unifyComponents) + _.unionWith(objValue.components, srcValue.components, EditFormUtils.unifyComponents), ); } return true; - } - else { + } else { return false; } } @@ -40,26 +39,35 @@ const EditFormUtils = { return { type: 'htmlelement', tag: 'div', - - content: '

    The following variables are available in all scripts.

    ' + - '' + - additional + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
    formThe complete form JSON object
    submissionThe complete submission object.
    dataThe complete submission data object.
    rowContextual "row" data, used within DataGrid, EditGrid, and Container components
    componentThe current component JSON
    instanceThe current component instance.
    valueThe current value of the component.
    momentThe moment.js library for date manipulation.
    _An instance of Lodash.
    utilsAn instance of the FormioUtils object.
    utilAn alias for "utils".

    ' - + + content: + '

    The following variables are available in all scripts.

    ' + + '' + + additional + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    formThe complete form JSON object
    submissionThe complete submission object.
    dataThe complete submission data object.
    rowContextual "row" data, used within DataGrid, EditGrid, and Container components
    componentThe current component JSON
    instanceThe current component instance.
    valueThe current value of the component.
    momentThe moment.js library for date manipulation.
    _An instance of Lodash.
    utilsAn instance of the FormioUtils object.
    utilAn alias for "utils".

    ', }; }, - javaScriptValue(title, property, propertyJSON, weight, exampleHTML, exampleJSON, additionalParams = '', excludeJSONLogic) { + javaScriptValue( + title, + property, + propertyJSON, + weight, + exampleHTML, + exampleJSON, + additionalParams = '', + excludeJSONLogic, + ) { const components = [ this.logicVariablesTable(additionalParams), { @@ -80,14 +88,14 @@ const EditFormUtils = { editor: 'ace', hideLabel: true, as: 'javascript', - input: true + input: true, }, { type: 'htmlelement', tag: 'div', - content: `

    Enter custom javascript code.

    ${exampleHTML}` - } - ] + content: `

    Enter custom javascript code.

    ${exampleHTML}`, + }, + ], }, { type: 'panel', @@ -99,11 +107,11 @@ const EditFormUtils = { { type: 'htmlelement', tag: 'div', - - content: '

    Execute custom logic using JSONLogic.

    ' + + + content: + '

    Execute custom logic using JSONLogic.

    ' + '

    Full Lodash support is provided using an "_" before each operation, such as {"_sum": {var: "data.a"}}

    ' + - exampleJSON - + exampleJSON, }, { type: 'textarea', @@ -112,10 +120,10 @@ const EditFormUtils = { editor: 'ace', hideLabel: true, as: 'json', - input: true - } - ] - } + input: true, + }, + ], + }, ]; if (excludeJSONLogic) { @@ -130,9 +138,9 @@ const EditFormUtils = { collapsed: true, key: `${property}Panel`, weight: weight, - components + components, }; - } + }, }; export default EditFormUtils; diff --git a/src/components/_classes/componentModal/ComponentModal.js b/src/components/_classes/componentModal/ComponentModal.js index 019988ff0f..beda63e942 100644 --- a/src/components/_classes/componentModal/ComponentModal.js +++ b/src/components/_classes/componentModal/ComponentModal.js @@ -30,8 +30,7 @@ export default class ComponentModal { this.showDialogListener = (event) => { if (this.isValueChanged() && !this.component.disabled) { this.showDialog(); - } - else { + } else { this.closeModalHandler(event); } }; @@ -83,7 +82,11 @@ export default class ComponentModal { removeEventListeners() { this.component.removeEventListener(this.refs.openModal, 'click', this.openModalListener); - this.component.removeEventListener(this.refs.modalOverlay, 'click', this.refs.modalSave ? this.showDialogListener : this.saveModalListener); + this.component.removeEventListener( + this.refs.modalOverlay, + 'click', + this.refs.modalSave ? this.showDialogListener : this.saveModalListener, + ); this.component.removeEventListener(this.refs.modalClose, 'click', this.showDialogListener); this.component.removeEventListener(this.refs.modalSave, 'click', this.saveModalListener); } @@ -91,7 +94,11 @@ export default class ComponentModal { setEventListeners() { this.removeEventListeners(); this.component.addEventListener(this.refs.openModal, 'click', this.openModalListener); - this.component.addEventListener(this.refs.modalOverlay, 'click', this.refs.modalSave ? this.showDialogListener : this.saveModalListener); + this.component.addEventListener( + this.refs.modalOverlay, + 'click', + this.refs.modalSave ? this.showDialogListener : this.saveModalListener, + ); this.component.addEventListener(this.refs.modalClose, 'click', this.showDialogListener); this.component.addEventListener(this.refs.modalSave, 'click', this.saveModalListener); } @@ -112,7 +119,7 @@ export default class ComponentModal { setOpenEventListener() { this.component.removeEventListener(this.refs.openModal, 'click', this.openModalListener); this.component.loadRefs(this.refs.openModalWrapper ?? this.element, { - 'openModal': 'single', + openModal: 'single', }); this.component.addEventListener(this.refs.openModal, 'click', this.openModalListener); } @@ -182,15 +189,31 @@ export default class ComponentModal { }); this.dialog = this.component.createModal(this.dialogElement); - this.component.addEventListener(this.dialogElement.refs.dialogYesButton, 'click', this.saveDialogListener); - this.component.addEventListener(this.dialogElement.refs.dialogCancelButton, 'click', this.closeDialogListener); + this.component.addEventListener( + this.dialogElement.refs.dialogYesButton, + 'click', + this.saveDialogListener, + ); + this.component.addEventListener( + this.dialogElement.refs.dialogCancelButton, + 'click', + this.closeDialogListener, + ); } closeDialog(event) { event.preventDefault(); this.dialog.close(); - this.component.removeEventListener(this.dialogElement.refs.dialogYesButton, 'click', this.saveDialogListener); - this.component.removeEventListener(this.dialogElement.refs.dialogCancelButton, 'click', this.closeDialogListener); + this.component.removeEventListener( + this.dialogElement.refs.dialogYesButton, + 'click', + this.saveDialogListener, + ); + this.component.removeEventListener( + this.dialogElement.refs.dialogCancelButton, + 'click', + this.closeDialogListener, + ); } saveDialog(event) { diff --git a/src/components/_classes/field/Field.js b/src/components/_classes/field/Field.js index fefa52f60c..b640199f0f 100644 --- a/src/components/_classes/field/Field.js +++ b/src/components/_classes/field/Field.js @@ -12,19 +12,25 @@ export default class Field extends Component { render(element) { if (this.noField) { return super.render(element); - } - else if (this.isAdvancedLabel || this.options.condensedMode) { - return super.render(this.renderTemplate('field', { - ...this.getLabelInfo(this.options.condensedMode), - labelMarkup: this.renderTemplate('label'), - element: element - }, 'align')); - } - else { - return super.render(this.renderTemplate('field', { - labelMarkup: this.renderTemplate('label'), - element: element, - })); + } else if (this.isAdvancedLabel || this.options.condensedMode) { + return super.render( + this.renderTemplate( + 'field', + { + ...this.getLabelInfo(this.options.condensedMode), + labelMarkup: this.renderTemplate('label'), + element: element, + }, + 'align', + ), + ); + } else { + return super.render( + this.renderTemplate('field', { + labelMarkup: this.renderTemplate('label'), + element: element, + }), + ); } } @@ -36,9 +42,11 @@ export default class Field extends Component { saveCaretPosition(element, index) { if (this.root?.focusedComponent?.path === this.path) { try { - this.root.currentSelection = { selection: [element.selectionStart, element.selectionEnd], index }; - } - catch (e) { + this.root.currentSelection = { + selection: [element.selectionStart, element.selectionEnd], + index, + }; + } catch (e) { if (!(e instanceof DOMException)) { console.debug(e); } diff --git a/src/components/_classes/input/Input.js b/src/components/_classes/input/Input.js index 025b457da7..3c9baeefc8 100644 --- a/src/components/_classes/input/Input.js +++ b/src/components/_classes/input/Input.js @@ -10,11 +10,14 @@ export default class Input extends Multivalue { } static schema(...extend) { - return Multivalue.schema({ - widget: { - type: 'input' - } - }, ...extend); + return Multivalue.schema( + { + widget: { + type: 'input', + }, + }, + ...extend, + ); } get inputInfo() { @@ -22,10 +25,14 @@ export default class Input extends Multivalue { name: this.options.name, type: this.component.inputType || 'text', class: 'form-control', - lang: this.options.language + lang: this.options.language, }; - if (this.options.attachMode === 'builder' || this.options.building || _.get(this.root, 'form.settings.disableAutocomplete')) { + if ( + this.options.attachMode === 'builder' || + this.options.building || + _.get(this.root, 'form.settings.disableAutocomplete') + ) { attr.autocomplete = this.autocompleteDisableAttrName; } @@ -56,7 +63,7 @@ export default class Input extends Multivalue { type: 'input', changeEvent: 'input', content: '', - attr + attr, }; } @@ -65,16 +72,20 @@ export default class Input extends Multivalue { } get maskOptions() { - return _.map(this.component.inputMasks, mask => { + return _.map(this.component.inputMasks, (mask) => { return { label: mask.label, - value: mask.label + value: mask.label, }; }); } get isMultipleMasksField() { - return this.component.allowMultipleMasks && !!this.component.inputMasks && !!this.component.inputMasks.length; + return ( + this.component.allowMultipleMasks && + !!this.component.inputMasks && + !!this.component.inputMasks.length + ); } getMaskByName(maskName) { @@ -90,11 +101,10 @@ export default class Input extends Multivalue { } getMaskOptions() { - return this.component.inputMasks - .map(mask => ({ - label: mask.label, - value: mask.label, - })); + return this.component.inputMasks.map((mask) => ({ + label: mask.label, + value: mask.label, + })); } getWordCount(value) { @@ -116,9 +126,11 @@ export default class Input extends Multivalue { const calendarIcon = this.renderTemplate('icon', { ref: 'icon', // After font-awesome would be updated to v5.x, "clock-o" should be replaced with "clock" - className: this.iconClass(this.component.enableDate || this.component.widget.enableDate ? 'calendar' : 'clock-o'), + className: this.iconClass( + this.component.enableDate || this.component.widget.enableDate ? 'calendar' : 'clock-o', + ), styles: '', - content: '' + content: '', }).trim(); if (this.component.prefix !== calendarIcon) { // converting string to HTML markup to render correctly DateTime component in portal.form.io @@ -135,8 +147,10 @@ export default class Input extends Multivalue { } const info = this.inputInfo; info.attr = info.attr || {}; - info.attr.value = this.getValueAsString(this.formatValue(this.parseValue(value))) - .replace(/"/g, '"'); + info.attr.value = this.getValueAsString(this.formatValue(this.parseValue(value))).replace( + /"/g, + '"', + ); const valueMask = this.component.inputMask; const displayMask = this.component.displayMask; @@ -147,20 +161,28 @@ export default class Input extends Multivalue { } return this.isMultipleMasksField - ? this.renderTemplate('multipleMasksInput', { - input: info, - value, - index, - selectOptions: this.getMaskOptions() || [], - }, this.isHtmlRenderMode() ? 'html' : null) - : this.renderTemplate('input', { - prefix: this.prefix, - suffix: this.suffix, - input: info, - value: this.formatValue(this.parseValue(value)), - hasValueMaskInput: hasDifferentDisplayAndSaveFormats, - index - }, this.isHtmlRenderMode() ? 'html' : null); + ? this.renderTemplate( + 'multipleMasksInput', + { + input: info, + value, + index, + selectOptions: this.getMaskOptions() || [], + }, + this.isHtmlRenderMode() ? 'html' : null, + ) + : this.renderTemplate( + 'input', + { + prefix: this.prefix, + suffix: this.suffix, + input: info, + value: this.formatValue(this.parseValue(value)), + hasValueMaskInput: hasDifferentDisplayAndSaveFormats, + index, + }, + this.isHtmlRenderMode() ? 'html' : null, + ); } setCounter(type, element, count, max) { @@ -168,20 +190,24 @@ export default class Input extends Multivalue { const remaining = max - count; if (remaining > 0) { this.removeClass(element, 'text-danger'); - } - else { + } else { this.addClass(element, 'text-danger'); } - this.setContent(element, this.t(`typeRemaining`, { - remaining: remaining, - type: type - })); - } - else { - this.setContent(element, this.t(`typeCount`, { - count: count, - type: type - })); + this.setContent( + element, + this.t(`typeRemaining`, { + remaining: remaining, + type: type, + }), + ); + } else { + this.setContent( + element, + this.t(`typeCount`, { + count: count, + type: type, + }), + ); } } @@ -190,7 +216,12 @@ export default class Input extends Multivalue { if (_.get(this.component, 'showWordCount', false)) { if (this.refs.wordcount && this.refs.wordcount[index]) { const maxWords = _.parseInt(_.get(this.component, 'validate.maxWords', 0), 10); - this.setCounter(this.t('words'), this.refs.wordcount[index], this.getWordCount(value), maxWords); + this.setCounter( + this.t('words'), + this.refs.wordcount[index], + this.getWordCount(value), + maxWords, + ); } } if (_.get(this.component, 'showCharCount', false)) { @@ -229,7 +260,7 @@ export default class Input extends Multivalue { charcount: 'multiple', wordcount: 'multiple', prefix: 'multiple', - suffix: 'multiple' + suffix: 'multiple', }); return super.attach(element); } @@ -289,8 +320,7 @@ export default class Input extends Multivalue { options.state = this.component.state || 'submitted'; submitButton.loading = true; this.emit('submitButton', options); - } - else { + } else { this.emit('submitButton', options); } } @@ -311,9 +341,12 @@ export default class Input extends Multivalue { } // Get the widget settings. - const settings = (typeof this.component.widget === 'string') ? { - type: this.component.widget - } : this.component.widget; + const settings = + typeof this.component.widget === 'string' + ? { + type: this.component.widget, + } + : this.component.widget; if (this.root?.shadowRoot) { settings.shadowRoot = this.root?.shadowRoot; @@ -326,9 +359,18 @@ export default class Input extends Multivalue { // Create the widget. const widget = new Widgets[settings.type](settings, this.component, this, index); - widget.on('update', () => this.updateValue(this.getValue(), { - modified: true - }, index), true); + widget.on( + 'update', + () => + this.updateValue( + this.getValue(), + { + modified: true, + }, + index, + ), + true, + ); widget.on('redraw', () => this.redraw(), true); return widget; } diff --git a/src/components/_classes/list/ListComponent.form.js b/src/components/_classes/list/ListComponent.form.js index e5ac577a6d..cf4a1a8c04 100644 --- a/src/components/_classes/list/ListComponent.form.js +++ b/src/components/_classes/list/ListComponent.form.js @@ -6,11 +6,14 @@ import ListEditData from './editForm/ListComponent.edit.data'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'data', - components: ListEditData - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'data', + components: ListEditData, + }, + ], + ...extend, + ); } diff --git a/src/components/_classes/list/ListComponent.js b/src/components/_classes/list/ListComponent.js index 258b7cb009..612b96863f 100644 --- a/src/components/_classes/list/ListComponent.js +++ b/src/components/_classes/list/ListComponent.js @@ -5,15 +5,18 @@ import { getItemTemplateKeys } from '../../../utils/utils'; export default class ListComponent extends Field { static schema(...extend) { - return Field.schema({ - dataSrc: 'values', - authenticate: false, - ignoreCache: false, - template: '{{ item.label }}', - validate: { - onlyAvailableItems: false + return Field.schema( + { + dataSrc: 'values', + authenticate: false, + ignoreCache: false, + template: '{{ item.label }}', + validate: { + onlyAvailableItems: false, + }, }, - }, ...extend); + ...extend, + ); } get isSelectURL() { @@ -28,11 +31,7 @@ export default class ListComponent extends Field { get dataReady() { // If the root submission has been set, and we are still not attached, then assume // that our data is ready. - if ( - this.root && - this.root.submissionSet && - !this.attached - ) { + if (this.root && this.root.submissionSet && !this.attached) { return Promise.resolve(); } return this.itemsLoaded; @@ -53,8 +52,11 @@ export default class ListComponent extends Field { const dataValue = this.dataValue; const selectData = this.selectData; return this.templateKeys.reduce((shouldLoad, key) => { - const hasValue = _.has(dataValue, key) || - (_.isArray(selectData) ? selectData.every((data) => _.has(data, key)) : _.has(selectData, key)); + const hasValue = + _.has(dataValue, key) || + (_.isArray(selectData) + ? selectData.every((data) => _.has(data, key)) + : _.has(selectData, key)); return shouldLoad || !hasValue; }, false); } @@ -65,9 +67,7 @@ export default class ListComponent extends Field { getTemplateKeys() { const template = this.component.template; - this.templateKeys = this.options.readOnly && template - ? getItemTemplateKeys(template) - : []; + this.templateKeys = this.options.readOnly && template ? getItemTemplateKeys(template) : []; } get requestHeaders() { @@ -81,8 +81,7 @@ export default class ListComponent extends Field { headers.set(header.key, this.interpolate(header.value)); } }); - } - catch (err) { + } catch (err) { console.warn(err.message); } } @@ -103,7 +102,7 @@ export default class ListComponent extends Field { } const options = { noeval: true, - data: {} + data: {}, }; const template = this.sanitize( this.component.template @@ -127,13 +126,15 @@ export default class ListComponent extends Field { return ''; } - const template = this.sanitize(this.getOptionTemplate(data, value, index), this.shouldSanitizeValue); + const template = this.sanitize( + this.getOptionTemplate(data, value, index), + this.shouldSanitizeValue, + ); if (template) { const label = template.replace(/<\/?[^>]+(>|$)/g, ''); if (!label) return; return template.replace(label, this.t(label, { _userInput: true })); - } - else { + } else { return this.sanitize(JSON.stringify(data), this.shouldSanitizeValue); } } @@ -159,7 +160,6 @@ export default class ListComponent extends Field { console.warn(`Unable to load resources for ${this.key}`); } - updateItems(searchInput, forceUpdate) { if (!this.component.data) { console.warn(`Select component ${this.key} does not have data configuration.`); @@ -190,24 +190,29 @@ export default class ListComponent extends Field { return; } - let resourceUrl = this.options.formio ? this.options.formio.formsUrl : `${Formio.getProjectUrl()}/form`; - resourceUrl += (`/${this.component.data.resource}/submission`); + let resourceUrl = this.options.formio + ? this.options.formio.formsUrl + : `${Formio.getProjectUrl()}/form`; + resourceUrl += `/${this.component.data.resource}/submission`; if (forceUpdate || this.additionalResourcesAvailable || !this.serverCount) { try { this.loadItems(resourceUrl, searchInput, this.requestHeaders); - } - catch (ignoreErr) { + } catch (ignoreErr) { console.warn(`Unable to load resources for ${this.key}`); } - } - else { + } else { this.setItems(this.downloadedResources); } break; } case 'url': { - if (!forceUpdate && !this.active && !this.calculatedValue && this.component.type === 'select') { + if ( + !forceUpdate && + !this.active && + !this.calculatedValue && + this.component.type === 'select' + ) { // If we are lazyLoading, wait until activated. this.itemsLoadedResolve(); return; @@ -218,19 +223,19 @@ export default class ListComponent extends Field { let body; if (url.startsWith('/')) { // if URL starts with '/project', we should use base URL to avoid issues with URL formed like //project//... - const baseUrl = url.startsWith('/project') ? Formio.getBaseUrl() : Formio.getProjectUrl() || Formio.getBaseUrl(); + const baseUrl = url.startsWith('/project') + ? Formio.getBaseUrl() + : Formio.getProjectUrl() || Formio.getBaseUrl(); url = baseUrl + url; } if (!this.component.data.method) { method = 'GET'; - } - else { + } else { method = this.component.data.method; if (method.toUpperCase() === 'POST') { body = this.component.data.body; - } - else { + } else { body = null; } } @@ -248,13 +253,20 @@ export default class ListComponent extends Field { window.alert("Your browser doesn't support current version of indexedDB"); } - if (this.component.indexeddb && this.component.indexeddb.database && this.component.indexeddb.table) { + if ( + this.component.indexeddb && + this.component.indexeddb.database && + this.component.indexeddb.table + ) { const request = window.indexedDB.open(this.component.indexeddb.database); request.onupgradeneeded = (event) => { if (this.component.customOptions) { const db = event.target.result; - const objectStore = db.createObjectStore(this.component.indexeddb.table, { keyPath: 'myKey', autoIncrement: true }); + const objectStore = db.createObjectStore(this.component.indexeddb.table, { + keyPath: 'myKey', + autoIncrement: true, + }); objectStore.transaction.oncomplete = () => { const transaction = db.transaction(this.component.indexeddb.table, 'readwrite'); this.component.customOptions.forEach((item) => { @@ -291,5 +303,4 @@ export default class ListComponent extends Field { } } } - } diff --git a/src/components/_classes/list/editForm/ListComponent.edit.data.js b/src/components/_classes/list/editForm/ListComponent.edit.data.js index d74bb7a468..4030419490 100644 --- a/src/components/_classes/list/editForm/ListComponent.edit.data.js +++ b/src/components/_classes/list/editForm/ListComponent.edit.data.js @@ -1,117 +1,116 @@ export default [ - { - type: 'select', - input: true, - weight: 0, - tooltip: 'The source to use for the select data. Values lets you provide your own values and labels. JSON lets you provide raw JSON data. URL lets you provide a URL to retrieve the JSON data from.', - key: 'dataSrc', - defaultValue: 'values', - label: 'Data Source Type', - dataSrc: 'values', - }, - { - type: 'textfield', - input: true, - key: 'data.url', - weight: 10, - label: 'Data Source URL', - placeholder: 'Data Source URL', - tooltip: 'A URL that returns a JSON array to use as the data source.', - conditional: { - json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, - }, + { + type: 'select', + input: true, + weight: 0, + tooltip: + 'The source to use for the select data. Values lets you provide your own values and labels. JSON lets you provide raw JSON data. URL lets you provide a URL to retrieve the JSON data from.', + key: 'dataSrc', + defaultValue: 'values', + label: 'Data Source Type', + dataSrc: 'values', + }, + { + type: 'textfield', + input: true, + key: 'data.url', + weight: 10, + label: 'Data Source URL', + placeholder: 'Data Source URL', + tooltip: 'A URL that returns a JSON array to use as the data source.', + conditional: { + json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, }, - { - type: 'datagrid', + }, + { + type: 'datagrid', + input: true, + label: 'Request Headers', + key: 'data.headers', + tooltip: + 'Set any headers that should be sent along with the request to the url. This is useful for authentication.', + weight: 11, + components: [ + { + label: 'Key', + key: 'key', input: true, - label: 'Request Headers', - key: 'data.headers', - tooltip: 'Set any headers that should be sent along with the request to the url. This is useful for authentication.', - weight: 11, - components: [ - { - label: 'Key', - key: 'key', - input: true, - type: 'textfield', - }, - { - label: 'Value', - key: 'value', - input: true, - type: 'textfield', - }, - ], - conditional: { - json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, - }, - }, - { type: 'textfield', + }, + { + label: 'Value', + key: 'value', input: true, - label: 'Value Property', - key: 'valueProperty', - skipMerge: true, - clearOnHide: false, - weight: 13, - description: "The selected item's property to save.", - tooltip: 'The property of each item in the data source to use as the select value. If not specified, the item itself will be used.', - conditional: { - json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'json', - 'url', - 'custom' - ], - ], - }, - }, + type: 'textfield', + }, + ], + conditional: { + json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, }, - { - type: 'textarea', - input: true, - key: 'template', - label: 'Item Template', - editor: 'ace', - as: 'html', - rows: 3, - weight: 18, - tooltip: 'The HTML template for the result data items.', - allowCalculateOverride: true, - calculateValue:(context) => { - if (!context.data.template) { - if (context.instance && context.instance._currentForm.options.editComponent) { - return context.instance._currentForm.options.editComponent.template; - } - } - return context.data.template; - }, + }, + { + type: 'textfield', + input: true, + label: 'Value Property', + key: 'valueProperty', + skipMerge: true, + clearOnHide: false, + weight: 13, + description: "The selected item's property to save.", + tooltip: + 'The property of each item in the data source to use as the select value. If not specified, the item itself will be used.', + conditional: { + json: { + in: [{ var: 'data.dataSrc' }, ['json', 'url', 'custom']], + }, }, - { - type: 'checkbox', - input: true, - weight: 26, - key: 'authenticate', - label: 'Formio Authenticate', - tooltip: 'Check this if you would like to use Formio Authentication with the request.', - conditional: { - json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, - }, + }, + { + type: 'textarea', + input: true, + key: 'template', + label: 'Item Template', + editor: 'ace', + as: 'html', + rows: 3, + weight: 18, + tooltip: 'The HTML template for the result data items.', + allowCalculateOverride: true, + calculateValue: (context) => { + if (!context.data.template) { + if (context.instance && context.instance._currentForm.options.editComponent) { + return context.instance._currentForm.options.editComponent.template; + } + } + return context.data.template; }, - { - type: 'checkbox', - input: true, - weight: 29, - key: 'ignoreCache', - label: 'Disables Storing Request Result in the Cache', - tooltip: 'Check it if you don\'t want the requests and its results to be stored in the cache. By default, it is stored and if the Select tries to make the request to the same URL with the same paremetrs, the cached data will be returned. It allows to increase performance, but if the remote source\'s data is changing quite often and you always need to keep it up-to-date, uncheck this option.', - conditional: { - json: { 'or': [ - { '===': [{ var: 'data.dataSrc' }, 'url'] }, - { '===': [{ var: 'data.dataSrc' }, 'resource'] }, - ] }, - }, + }, + { + type: 'checkbox', + input: true, + weight: 26, + key: 'authenticate', + label: 'Formio Authenticate', + tooltip: 'Check this if you would like to use Formio Authentication with the request.', + conditional: { + json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, + }, + }, + { + type: 'checkbox', + input: true, + weight: 29, + key: 'ignoreCache', + label: 'Disables Storing Request Result in the Cache', + tooltip: + "Check it if you don't want the requests and its results to be stored in the cache. By default, it is stored and if the Select tries to make the request to the same URL with the same paremetrs, the cached data will be returned. It allows to increase performance, but if the remote source's data is changing quite often and you always need to keep it up-to-date, uncheck this option.", + conditional: { + json: { + or: [ + { '===': [{ var: 'data.dataSrc' }, 'url'] }, + { '===': [{ var: 'data.dataSrc' }, 'resource'] }, + ], + }, }, + }, ]; diff --git a/src/components/_classes/multivalue/Multivalue.js b/src/components/_classes/multivalue/Multivalue.js index 3c2e318d50..afcd144b9e 100644 --- a/src/components/_classes/multivalue/Multivalue.js +++ b/src/components/_classes/multivalue/Multivalue.js @@ -11,7 +11,10 @@ export default class Multivalue extends Field { * @returns {*} - The normalized value. */ normalizeValue(value, flags = {}, emptyValue = this.emptyValue) { - const underlyingValueShouldBeArray = Utils.getModelType(this.component) === 'array' || this.component.storeas === 'array' || Array.isArray(emptyValue); + const underlyingValueShouldBeArray = + Utils.getModelType(this.component) === 'array' || + this.component.storeas === 'array' || + Array.isArray(emptyValue); if (this.component.multiple) { if (Array.isArray(value)) { if (underlyingValueShouldBeArray) { @@ -55,8 +58,7 @@ export default class Multivalue extends Field { if (this.component.multiple) { if (_.isArray(value)) { value = !value.length ? [super.emptyValue] : value; - } - else { + } else { value = [value]; } } @@ -78,14 +80,12 @@ export default class Multivalue extends Field { rows: dataValue.map(this.renderRow.bind(this)).join(''), disabled: this.disabled, addAnother: this.addAnother, - }) + }), ) : super.render( `
    - ${this.renderElement( - this.component.type !== 'hidden' ? dataValue : '' - )} -
    ` + ${this.renderElement(this.component.type !== 'hidden' ? dataValue : '')} +
    `, ); } @@ -150,7 +150,6 @@ export default class Multivalue extends Field { }); } - /** * Remove all event handlers. */ @@ -186,10 +185,7 @@ export default class Multivalue extends Field { const textCase = _.get(this.component, 'case', 'mixed'); if (textCase !== 'mixed') { - const { - selectionStart, - selectionEnd, - } = element; + const { selectionStart, selectionEnd } = element; if (textCase === 'uppercase' && element.value) { element.value = element.value.toUpperCase(); @@ -206,23 +202,29 @@ export default class Multivalue extends Field { try { this.saveCaretPosition(element, index); - } - catch (err) { + } catch (err) { console.warn('An error occurred while trying to save caret position', err); } // If a mask is present, delay the update to allow mask to update first. if (element.mask) { setTimeout(() => { - return this.updateValue(null, { - modified: (this.component.type !== 'hidden') - }, index); + return this.updateValue( + null, + { + modified: this.component.type !== 'hidden', + }, + index, + ); }, 1); - } - else { - return this.updateValue(null, { - modified: (this.component.type !== 'hidden') - }, index); + } else { + return this.updateValue( + null, + { + modified: this.component.type !== 'hidden', + }, + index, + ); } }); @@ -246,8 +248,7 @@ export default class Multivalue extends Field { this.updateComponentValue(this.refs.input[0].value); } }); - } - else { + } else { applyMask(); } } @@ -273,7 +274,7 @@ export default class Multivalue extends Field { if (this.multiMasks[maskName]) { return this.multiMasks[maskName]; } - const mask = this.component.inputMasks.find(inputMask => inputMask.label === maskName); + const mask = this.component.inputMasks.find((inputMask) => inputMask.label === maskName); this.multiMasks[maskName] = mask ? mask.mask : this.component.inputMasks[0].mask; return this.multiMasks[maskName]; } @@ -284,7 +285,9 @@ export default class Multivalue extends Field { * @returns {boolean} - Returns true if the mask was successfully attached */ attachMultiMask(index) { - if (!(this.isMultipleMasksField && this.component.inputMasks.length && this.refs.input.length)) { + if ( + !(this.isMultipleMasksField && this.component.inputMasks.length && this.refs.input.length) + ) { return false; } @@ -320,8 +323,7 @@ export default class Multivalue extends Field { */ addNewValue(value) { if (value === undefined) { - value = this.component.defaultValue ? - this.component.defaultValue : this.emptyValue; + value = this.component.defaultValue ? this.component.defaultValue : this.emptyValue; // If default is an empty aray, default back to empty value. if (Array.isArray(value) && value.length === 0) { value = this.emptyValue; @@ -334,8 +336,7 @@ export default class Multivalue extends Field { if (Array.isArray(value)) { dataValue = dataValue.concat(value); - } - else { + } else { dataValue.push(value); } this.dataValue = dataValue; diff --git a/src/components/_classes/nested/NestedComponent.form.js b/src/components/_classes/nested/NestedComponent.form.js index e0f5da1532..7089170884 100644 --- a/src/components/_classes/nested/NestedComponent.form.js +++ b/src/components/_classes/nested/NestedComponent.form.js @@ -5,15 +5,18 @@ import Components from '../../Components'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'data', - ignore: true - }, - { - key: 'validation', - ignore: true - } - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'data', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, + ], + ...extend, + ); } diff --git a/src/components/_classes/nested/NestedComponent.js b/src/components/_classes/nested/NestedComponent.js index e429f71ff8..3a5f6cd198 100644 --- a/src/components/_classes/nested/NestedComponent.js +++ b/src/components/_classes/nested/NestedComponent.js @@ -2,7 +2,11 @@ import _ from 'lodash'; import Field from '../field/Field'; import Components from '../../Components'; -import { getArrayFromComponentPath, getStringFromComponentPath, getRandomComponentId } from '../../../utils/utils'; +import { + getArrayFromComponentPath, + getStringFromComponentPath, + getRandomComponentId, +} from '../../../utils/utils'; import { process as processAsync, processSync } from '@formio/core/process'; /** @@ -11,10 +15,13 @@ import { process as processAsync, processSync } from '@formio/core/process'; */ export default class NestedComponent extends Field { static schema(...extend) { - return Field.schema({ - tree: false, - lazyLoad: false, - }, ...extend); + return Field.schema( + { + tree: false, + lazyLoad: false, + }, + ...extend, + ); } constructor(component, options, data) { @@ -88,7 +95,7 @@ export default class NestedComponent extends Field { const isVisible = this.visible; const forceShow = this.shouldForceShow(); const forceHide = this.shouldForceHide(); - this.components.forEach(component => { + this.components.forEach((component) => { // Set the parent visibility first since we may have nested components within nested components // and they need to be able to determine their visibility based on the parent visibility. component.parentVisible = isVisible; @@ -96,8 +103,7 @@ export default class NestedComponent extends Field { const conditionallyVisible = component.conditionallyVisible(); if (forceShow || conditionallyVisible) { component.visible = true; - } - else if (forceHide || !isVisible || !conditionallyVisible) { + } else if (forceHide || !isVisible || !conditionallyVisible) { component.visible = false; } // If hiding a nested component, clear all errors below. @@ -126,7 +132,7 @@ export default class NestedComponent extends Field { */ set parentVisible(value) { super.parentVisible = value; - this.components.forEach(component => component.parentVisible = this.visible); + this.components.forEach((component) => (component.parentVisible = this.visible)); } /** @@ -151,7 +157,7 @@ export default class NestedComponent extends Field { */ set disabled(disabled) { super.disabled = disabled; - this.components.forEach((component) => component.parentDisabled = disabled); + this.components.forEach((component) => (component.parentDisabled = disabled)); } /** @@ -161,7 +167,7 @@ export default class NestedComponent extends Field { */ set parentDisabled(value) { super.parentDisabled = value; - this.components.forEach(component => { + this.components.forEach((component) => { component.parentDisabled = this.disabled; }); } @@ -179,7 +185,7 @@ export default class NestedComponent extends Field { * @returns {Promise} - The promise that resolves when all components are ready. */ get ready() { - return Promise.all(this.getComponents().map(component => component.ready)); + return Promise.all(this.getComponents().map((component) => component.ready)); } /** @@ -197,7 +203,7 @@ export default class NestedComponent extends Field { */ set currentForm(instance) { super.currentForm = instance; - this.getComponents().forEach(component => { + this.getComponents().forEach((component) => { component.currentForm = instance; }); } @@ -338,8 +344,7 @@ export default class NestedComponent extends Field { if (this.componentsMap.hasOwnProperty(originalPath)) { if (fn) { return fn(this.componentsMap[originalPath]); - } - else { + } else { return this.componentsMap[originalPath]; } } @@ -361,15 +366,15 @@ export default class NestedComponent extends Field { } this.everyComponent((component, components) => { - const matchPath = component.hasInput && component.path ? pathStr.includes(component.path) : true; + const matchPath = + component.hasInput && component.path ? pathStr.includes(component.path) : true; if (component.component.key === key) { possibleComp = component; if (matchPath) { comp = component; if (remainingPath.length > 0 && 'getComponent' in component) { comp = component.getComponent(remainingPath, fn, originalPath); - } - else if (fn) { + } else if (fn) { fn(component, components); } return false; @@ -413,7 +418,7 @@ export default class NestedComponent extends Field { * @param {import('@formio/core').Component} [replacedComp] - The component to replace with this component. * @returns {any} - The created component instance. */ - createComponent(component, options, data, before, replacedComp) { + createComponent(component, options, data, before, replacedComp) { if (!component) { return; } @@ -437,21 +442,17 @@ export default class NestedComponent extends Field { const index = _.findIndex(this.components, { id: before.id }); if (index !== -1) { this.components.splice(index, 0, comp); - } - else { + } else { this.components.push(comp); } - } - else if (replacedComp) { + } else if (replacedComp) { const index = _.findIndex(this.components, { id: replacedComp.id }); if (index !== -1) { this.components[index] = comp; - } - else { + } else { this.components.push(comp); } - } - else { + } else { this.components.push(comp); } return comp; @@ -490,8 +491,7 @@ export default class NestedComponent extends Field { options = options || this.options; if (options.components) { this.components = options.components; - } - else { + } else { const components = this.hook('addComponents', this.componentComponents, this) || []; components.forEach((component) => this.addComponent(component, data)); } @@ -524,16 +524,19 @@ export default class NestedComponent extends Field { render(children) { // If already rendering, don't re-render. - return super.render(children || this.renderTemplate(this.templateName, { - children: !this.visible ? '' : this.renderComponents(), - nestedKey: this.nestedKey, - collapsed: this.options.pdf ? false : this.collapsed, - })); + return super.render( + children || + this.renderTemplate(this.templateName, { + children: !this.visible ? '' : this.renderComponents(), + nestedKey: this.nestedKey, + collapsed: this.options.pdf ? false : this.collapsed, + }), + ); } renderComponents(components) { components = components || this.getComponents(); - const children = components.map(component => component.render()); + const children = components.map((component) => component.render()); return this.renderTemplate('components', { children, components, @@ -571,10 +574,7 @@ export default class NestedComponent extends Field { }); } - return Promise.all([ - superPromise, - childPromise, - ]); + return Promise.all([superPromise, childPromise]); } /** @@ -587,7 +587,7 @@ export default class NestedComponent extends Field { _.each(components, (comp) => { comp.attachLogic(); - if (_.isFunction(comp.attachComponentsLogic)) { + if (_.isFunction(comp.attachComponentsLogic)) { comp.attachComponentsLogic(); } }); @@ -600,12 +600,12 @@ export default class NestedComponent extends Field { element = this.hook('attachComponents', element, components, container, this); if (!element) { // Return a non-resolving promise. - return (new Promise(() => {})); + return new Promise(() => {}); } let index = 0; const promises = []; - Array.prototype.slice.call(element.children).forEach(child => { + Array.prototype.slice.call(element.children).forEach((child) => { if (!child.getAttribute('data-noattach') && components[index]) { promises.push(components[index].attach(child)); index++; @@ -672,17 +672,19 @@ export default class NestedComponent extends Field { } updateValue(value, flags = {}) { - return this.components.reduce((changed, comp) => { - return comp.updateValue(null, flags) || changed; - }, super.updateValue(value, flags)); + return this.components.reduce( + (changed, comp) => { + return comp.updateValue(null, flags) || changed; + }, + super.updateValue(value, flags), + ); } shouldSkipValidation(data, row, flags) { // Nested components with no input should not be validated. if (!this.component.input) { return true; - } - else { + } else { return super.shouldSkipValidation(data, row, flags); } } @@ -703,7 +705,7 @@ export default class NestedComponent extends Field { // check conditions of parent component first, because it may influence on visibility of it's children const check = super.checkConditions(data, flags, row); //row data of parent component not always corresponds to row of nested components, use comp.data as row data for children instead - this.getComponents().forEach(comp => comp.checkConditions(data, flags, comp.data)); + this.getComponents().forEach((comp) => comp.checkConditions(data, flags, comp.data)); return check; } @@ -717,11 +719,11 @@ export default class NestedComponent extends Field { this.restoreComponentsContext(); } } - this.getComponents().forEach(component => component.clearOnHide(show)); + this.getComponents().forEach((component) => component.clearOnHide(show)); } restoreComponentsContext() { - this.getComponents().forEach((component) => component.data = this.dataValue); + this.getComponents().forEach((component) => (component.data = this.dataValue)); } /** @@ -748,7 +750,7 @@ export default class NestedComponent extends Field { } return this.getComponents().reduce( (changed, comp) => comp.calculateValue(data, flags, row) || changed, - super.calculateValue(data, flags, row) + super.calculateValue(data, flags, row), ); } @@ -759,7 +761,7 @@ export default class NestedComponent extends Field { isValid(data, dirty) { return this.getComponents().reduce( (valid, comp) => comp.isValid(data, dirty) && valid, - super.isValid(data, dirty) + super.isValid(data, dirty), ); } @@ -774,7 +776,7 @@ export default class NestedComponent extends Field { return; } - if(!instance.component.path) { + if (!instance.component.path) { instance.component.path = component.path; } @@ -801,7 +803,7 @@ export default class NestedComponent extends Field { if ( instance && instance.parent && - (component === components[components.length - 1]) && + component === components[components.length - 1] && instance.parent.componentModal ) { instance.parent.checkModal(instance.parent.childErrors, dirty); @@ -816,15 +818,17 @@ export default class NestedComponent extends Field { processors: [ { process: validationProcessorProcess, - processSync: validationProcessorProcess + processSync: validationProcessorProcess, }, { process: checkModalProcessorProcess, - processSync: checkModalProcessorProcess - } - ] + processSync: checkModalProcessorProcess, + }, + ], }; - return async ? processAsync(processorContext).then((scope) => scope.errors) : processSync(processorContext).errors; + return async + ? processAsync(processorContext).then((scope) => scope.errors) + : processSync(processorContext).errors; } /** @@ -835,7 +839,11 @@ export default class NestedComponent extends Field { */ validate(data = null, flags = {}) { data = data || this.rootValue; - return this.validateComponents(this.getComponents().map((component) => component.component), data, flags); + return this.validateComponents( + this.getComponents().map((component) => component.component), + data, + flags, + ); } checkComponentValidity(data = null, dirty = false, row = null, flags = {}, allErrors = []) { @@ -854,13 +862,22 @@ export default class NestedComponent extends Field { */ checkValidity(data = null, dirty = false, row = null, silentCheck = false, childErrors = []) { childErrors.push(...this.validate(data, { dirty, silentCheck })); - return this.checkComponentValidity(data, dirty, row, { dirty, silentCheck }, childErrors) && childErrors.length === 0; + return ( + this.checkComponentValidity(data, dirty, row, { dirty, silentCheck }, childErrors) && + childErrors.length === 0 + ); } checkAsyncValidity(data = null, dirty = false, row = null, silentCheck = false) { return this.ready.then(() => { return this.validate(data, { dirty, silentCheck, async: true }).then((childErrors) => { - return this.checkComponentValidity(data, dirty, row, { dirty, silentCheck, async: true }, childErrors).then((valid) => { + return this.checkComponentValidity( + data, + dirty, + row, + { dirty, silentCheck, async: true }, + childErrors, + ).then((valid) => { return valid && childErrors.length === 0; }); }); @@ -881,14 +898,14 @@ export default class NestedComponent extends Field { } detach() { - this.components.forEach(component => { + this.components.forEach((component) => { component.detach(); }); super.detach(); } clear() { - this.components.forEach(component => { + this.components.forEach((component) => { component.clear(); }); super.clear(); @@ -906,14 +923,17 @@ export default class NestedComponent extends Field { } get visibleErrors() { - return this.getComponents().reduce((errors, comp) => errors.concat(comp.visibleErrors || []), super.visibleErrors); + return this.getComponents().reduce( + (errors, comp) => errors.concat(comp.visibleErrors || []), + super.visibleErrors, + ); } get errors() { const thisErrors = super.errors; return this.getComponents() .reduce((errors, comp) => errors.concat(comp.errors || []), thisErrors) - .filter(err => err.level !== 'hidden'); + .filter((err) => err.level !== 'hidden'); } getValue() { @@ -940,11 +960,9 @@ export default class NestedComponent extends Field { return component.setValue(_.get(value, component.key), flags); } return component.setValue(value, flags); - } - else if (value && component.hasValue(value)) { + } else if (value && component.hasValue(value)) { return component.setValue(_.get(value, component.key), flags); - } - else if ((!this.rootPristine || component.visible) && component.shouldAddDefaultValue) { + } else if ((!this.rootPristine || component.visible) && component.shouldAddDefaultValue) { flags.noValidate = !flags.dirty; flags.resetValue = true; return component.setValue(component.defaultValue, flags); diff --git a/src/components/_classes/nestedarray/NestedArrayComponent.js b/src/components/_classes/nestedarray/NestedArrayComponent.js index 02a6ee11b6..a348631a3b 100644 --- a/src/components/_classes/nestedarray/NestedArrayComponent.js +++ b/src/components/_classes/nestedarray/NestedArrayComponent.js @@ -1,16 +1,23 @@ 'use strict'; import _ from 'lodash'; -import { componentValueTypes, getStringFromComponentPath, isLayoutComponent } from '../../../utils/utils'; +import { + componentValueTypes, + getStringFromComponentPath, + isLayoutComponent, +} from '../../../utils/utils'; import Component from '../component/Component'; import NestedDataComponent from '../nesteddata/NestedDataComponent'; export default class NestedArrayComponent extends NestedDataComponent { static schema(...extend) { - return NestedDataComponent.schema({ - disableAddingRemovingRows: false - }, ...extend); + return NestedDataComponent.schema( + { + disableAddingRemovingRows: false, + }, + ...extend, + ); } static savedValueTypes() { @@ -52,21 +59,22 @@ export default class NestedArrayComponent extends NestedDataComponent { row = row || this.data; this.checkAddButtonChanged(); - return this.processRows('checkData', data, flags, Component.prototype.checkData.call(this, data, flags, row)); + return this.processRows( + 'checkData', + data, + flags, + Component.prototype.checkData.call(this, data, flags, row), + ); } processRows(method, data, opts, defaultValue, silentCheck) { - return this.iteratableRows.reduce( - (valid, row, rowIndex) => { - if (!opts?.rowIndex || opts?.rowIndex === rowIndex) { - return this.processRow(method, data, opts, row.data, row.components, silentCheck) && valid; - } - else { - return valid; - } - }, - defaultValue, - ); + return this.iteratableRows.reduce((valid, row, rowIndex) => { + if (!opts?.rowIndex || opts?.rowIndex === rowIndex) { + return this.processRow(method, data, opts, row.data, row.components, silentCheck) && valid; + } else { + return valid; + } + }, defaultValue); } validate(data, flags = {}) { @@ -100,15 +108,22 @@ export default class NestedArrayComponent extends NestedDataComponent { const maxLength = _.get(this.component, 'validate.maxLength'); const conditionalAddButton = _.get(this.component, 'conditionalAddButton'); - return !this.component.disableAddingRemovingRows && + return ( + !this.component.disableAddingRemovingRows && !this.options.readOnly && !this.disabled && this.fullMode && !this.options.preview && - (!maxLength || (this.iteratableRows.length < maxLength)) && - (!conditionalAddButton || this.evaluate(conditionalAddButton, { - value: this.dataValue, - }, 'show')); + (!maxLength || this.iteratableRows.length < maxLength) && + (!conditionalAddButton || + this.evaluate( + conditionalAddButton, + { + value: this.dataValue, + }, + 'show', + )) + ); } getComponent(path, fn, originalPath) { @@ -116,8 +131,7 @@ export default class NestedArrayComponent extends NestedDataComponent { if (this.componentsMap.hasOwnProperty(originalPath)) { if (fn) { return fn(this.componentsMap[originalPath]); - } - else { + } else { return this.componentsMap[originalPath]; } } @@ -142,8 +156,7 @@ export default class NestedArrayComponent extends NestedDataComponent { possibleComp = component; if (remainingPath.length > 0 && 'getComponent' in component) { comp = component.getComponent(remainingPath, fn, originalPath); - } - else if (fn) { + } else if (fn) { fn(component, components); } result = rowIndex !== null ? comp : result.concat(comp || possibleComp); @@ -195,8 +208,7 @@ export default class NestedArrayComponent extends NestedDataComponent { for (const component of components) { if (component.isInputComponent) { row += getHeaderCell(component); - } - else if (isLayoutComponent(component) && typeof component.everyComponent === 'function') { + } else if (isLayoutComponent(component) && typeof component.everyComponent === 'function') { component.everyComponent((comp) => { row += getHeaderCell(comp); }, options); @@ -213,7 +225,7 @@ export default class NestedArrayComponent extends NestedDataComponent { } return `${component.getView(component.dataValue, options)}`; - } + }; const rows = []; for (const { components } of this.iteratableRows) { @@ -221,8 +233,7 @@ export default class NestedArrayComponent extends NestedDataComponent { for (const component of components) { if (component.isInputComponent) { row += getBodyCell(component); - } - else if (isLayoutComponent(component) && typeof component.everyComponent === 'function') { + } else if (isLayoutComponent(component) && typeof component.everyComponent === 'function') { component.everyComponent((comp) => { row += getBodyCell(comp); }, options); diff --git a/src/components/_classes/nesteddata/NestedDataComponent.js b/src/components/_classes/nesteddata/NestedDataComponent.js index 82b62b41fe..0e654a2288 100644 --- a/src/components/_classes/nesteddata/NestedDataComponent.js +++ b/src/components/_classes/nesteddata/NestedDataComponent.js @@ -7,11 +7,7 @@ import { componentValueTypes, getComponentSavedTypes } from '../../../utils/util export default class NestedDataComponent extends NestedComponent { hasChanged(newValue, oldValue) { // If we do not have a value and are getting set to anything other than undefined or null, then we changed. - if ( - newValue !== undefined && - newValue !== null && - !this.hasValue() - ) { + if (newValue !== undefined && newValue !== null && !this.hasValue()) { return true; } return !_.isEqual(newValue, oldValue); @@ -35,29 +31,32 @@ export default class NestedDataComponent extends NestedComponent { getValueAsString(value, options) { if (options?.email) { - let result = (` + let result = ` - `); + `; - this.everyComponent((component) => { - if (component.isInputComponent && component.visible && !component.skipInEmail) { - result += (` + this.everyComponent( + (component) => { + if (component.isInputComponent && component.visible && !component.skipInEmail) { + result += ` - `); - } - }, { - ...options, - fromRoot: true, - }); - - result += (` + `; + } + }, + { + ...options, + fromRoot: true, + }, + ); + + result += `
    ${component.label} ${component.getView(component.dataValue, options)}
    - `); + `; return result; } @@ -73,35 +72,41 @@ export default class NestedDataComponent extends NestedComponent { } getDataValueAsTable(value, options) { - let result = (` + let result = ` - `); + `; const htmlTagRegExp = new RegExp('<(.*?)>'); - this.everyComponent((component) => { - if (component.isInputComponent && component.visible && !component.skipInEmail) { - const componentValue = component.getView(component.dataValue, options); - result += (` + this.everyComponent( + (component) => { + if (component.isInputComponent && component.visible && !component.skipInEmail) { + const componentValue = component.getView(component.dataValue, options); + result += ` - - `); - } - }, { - ...options, - fromRoot: true, - }); + `; + } + }, + { + ...options, + fromRoot: true, + }, + ); - result += (` + result += `
    ${component.label}${component.component && component.component.inputFormat === 'html' && htmlTagRegExp.test(componentValue) - ? componentValue - : `` + ${ + component.component && + component.component.inputFormat === 'html' && + htmlTagRegExp.test(componentValue) + ? componentValue + : `` }
    - `); + `; return result; } @@ -110,8 +115,7 @@ export default class NestedDataComponent extends NestedComponent { if (options?.email) { if (options.fromRoot) { delete options.fromRoot; - } - else { + } else { return; } } diff --git a/src/components/address/Address.form.js b/src/components/address/Address.form.js index aa9a206207..d1b8e91196 100644 --- a/src/components/address/Address.form.js +++ b/src/components/address/Address.form.js @@ -8,21 +8,24 @@ import AddressEditProvider from './editForm/Address.edit.provider'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'data', - components: AddressEditData, - }, - { - key: 'display', - components: AddressEditDisplay, - }, - { - label: 'Provider', - key: 'provider', - weight: 15, - components: AddressEditProvider, - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'data', + components: AddressEditData, + }, + { + key: 'display', + components: AddressEditDisplay, + }, + { + label: 'Provider', + key: 'provider', + weight: 15, + components: AddressEditProvider, + }, + ], + ...extend, + ); } diff --git a/src/components/address/Address.js b/src/components/address/Address.js index c2e02e3ee2..06c48f7e22 100644 --- a/src/components/address/Address.js +++ b/src/components/address/Address.js @@ -15,72 +15,75 @@ export const AddressComponentMode = { }; const RemoveValueIconHiddenClass = 'address-autocomplete-remove-value-icon--hidden'; -const ChildConditional = 'show = _.get(instance, \'parent.manualMode\', false);'; +const ChildConditional = "show = _.get(instance, 'parent.manualMode', false);"; export default class AddressComponent extends ContainerComponent { static schema(...extend) { - return ContainerComponent.schema({ - type: 'address', - label: 'Address', - key: 'address', - switchToManualModeLabel: 'Can\'t find address? Switch to manual mode.', - provider: '', - providerOptions: {}, - manualModeViewString: '', - hideLabel: false, - disableClearIcon: false, - enableManualMode: false, - components: [ - { - label: 'Address 1', - tableView: false, - key: 'address1', - type: 'textfield', - input: true, - customConditional: ChildConditional, - }, - { - label: 'Address 2', - tableView: false, - key: 'address2', - type: 'textfield', - input: true, - customConditional: ChildConditional, - }, - { - label: 'City', - tableView: false, - key: 'city', - type: 'textfield', - input: true, - customConditional: ChildConditional, - }, - { - label: 'State', - tableView: false, - key: 'state', - type: 'textfield', - input: true, - customConditional: ChildConditional, - }, - { - label: 'Country', - tableView: false, - key: 'country', - type: 'textfield', - input: true, - customConditional: ChildConditional, - }, - { - label: 'Zip Code', - tableView: false, - key: 'zip', - type: 'textfield', - input: true, - customConditional: ChildConditional, - }, - ], - }, ...extend); + return ContainerComponent.schema( + { + type: 'address', + label: 'Address', + key: 'address', + switchToManualModeLabel: "Can't find address? Switch to manual mode.", + provider: '', + providerOptions: {}, + manualModeViewString: '', + hideLabel: false, + disableClearIcon: false, + enableManualMode: false, + components: [ + { + label: 'Address 1', + tableView: false, + key: 'address1', + type: 'textfield', + input: true, + customConditional: ChildConditional, + }, + { + label: 'Address 2', + tableView: false, + key: 'address2', + type: 'textfield', + input: true, + customConditional: ChildConditional, + }, + { + label: 'City', + tableView: false, + key: 'city', + type: 'textfield', + input: true, + customConditional: ChildConditional, + }, + { + label: 'State', + tableView: false, + key: 'state', + type: 'textfield', + input: true, + customConditional: ChildConditional, + }, + { + label: 'Country', + tableView: false, + key: 'country', + type: 'textfield', + input: true, + customConditional: ChildConditional, + }, + { + label: 'Zip Code', + tableView: false, + key: 'zip', + type: 'textfield', + input: true, + customConditional: ChildConditional, + }, + ], + }, + ...extend, + ); } static savedValueTypes(schema) { @@ -118,7 +121,7 @@ export default class AddressComponent extends ContainerComponent { defaultSchema = _.omit(defaultSchema, 'components'); } - return _.defaultsDeep(component , defaultSchema); + return _.defaultsDeep(component, defaultSchema); } init() { @@ -130,33 +133,26 @@ export default class AddressComponent extends ContainerComponent { if (!this.builderMode) { if (this.component.provider) { - const { - provider, - providerOptions, - } = this.component; + const { provider, providerOptions } = this.component; if (_.get(providerOptions, 'params.subscriptionKey')) { - _.set(providerOptions, "params['subscription-key']", _.get(providerOptions, 'params.subscriptionKey')); + _.set( + providerOptions, + "params['subscription-key']", + _.get(providerOptions, 'params.subscriptionKey'), + ); _.unset(providerOptions, 'params.subscriptionKey'); } this.provider = this.initializeProvider(provider, providerOptions); - } - else if (this.component.map) { + } else if (this.component.map) { // Fallback to legacy version where Google Maps was the only provider. this.component.provider = GoogleAddressProvider.name; this.component.providerOptions = this.component.providerOptions || {}; - const { - map, - provider, - providerOptions, - } = this.component; + const { map, provider, providerOptions } = this.component; - const { - key, - region, - } = map; + const { key, region } = map; if (key) { _.set(providerOptions, 'params.key', key); @@ -179,9 +175,9 @@ export default class AddressComponent extends ContainerComponent { get emptyValue() { return this.manualModeEnabled ? { - mode: AddressComponentMode.Autocomplete, - address: {}, - } + mode: AddressComponentMode.Autocomplete, + address: {}, + } : {}; } @@ -229,14 +225,13 @@ export default class AddressComponent extends ContainerComponent { return _.isArray(this.dataValue) ? this.dataValue : [this.dataValue]; } // Manual mode is not implementing for multiple value - return (this.manualModeEnabled && this.dataValue) ? this.dataValue.address : this.dataValue; + return this.manualModeEnabled && this.dataValue ? this.dataValue.address : this.dataValue; } set address(value) { if (this.manualModeEnabled && !this.isMultiple && !_.isEqual(value, this.emptyValue)) { this.dataValue.address = value; - } - else { + } else { this.dataValue = value; } } @@ -248,7 +243,7 @@ export default class AddressComponent extends ContainerComponent { defaultValue = _.isArray(defaultValue) ? defaultValue : [defaultValue]; } - return defaultValue; + return defaultValue; } get defaultSchema() { @@ -260,23 +255,23 @@ export default class AddressComponent extends ContainerComponent { } set dataValue(value) { - super.dataValue = value + super.dataValue = value; } get dataValue() { const resultValue = _.get(this._data, this.component.path); if (!_.isArray(resultValue) && this.component.multiple) { - return [resultValue] + return [resultValue]; } return super.dataValue; } normalizeValue(value) { - return (this.manualModeEnabled && this.isValueInLegacyFormat(value)) + return this.manualModeEnabled && this.isValueInLegacyFormat(value) ? { - mode: AddressComponentMode.Autocomplete, - address: value, - } + mode: AddressComponentMode.Autocomplete, + address: value, + } : value; } @@ -287,7 +282,7 @@ export default class AddressComponent extends ContainerComponent { this.restoreComponentsContext(); } - if (changed || !_.isEmpty(value) && flags.fromSubmission) { + if (changed || (!_.isEmpty(value) && flags.fromSubmission)) { this.redraw(); } @@ -315,33 +310,23 @@ export default class AddressComponent extends ContainerComponent { } get modeSwitcher() { - return this.refs - ? (this.refs[AddressComponent.modeSwitcherRef] || null) - : null; + return this.refs ? this.refs[AddressComponent.modeSwitcherRef] || null : null; } get removeValueIcon() { - return this.refs - ? (this.refs[AddressComponent.removeValueIconRef] || null) - : null; + return this.refs ? this.refs[AddressComponent.removeValueIconRef] || null : null; } get searchInput() { - return this.refs - ? (this.refs[AddressComponent.searchInputRef] || null) - : null; + return this.refs ? this.refs[AddressComponent.searchInputRef] || null : null; } get addRowButton() { - return this.refs - ? (this.refs[AddressComponent.addRowButtonRef] || null) - : null; + return this.refs ? this.refs[AddressComponent.addRowButtonRef] || null : null; } get removeRowButton() { - return this.refs - ? (this.refs[AddressComponent.removeRowButtonRef] || null) - : null; + return this.refs ? this.refs[AddressComponent.removeRowButtonRef] || null : null; } get searchInputAttributes() { @@ -354,7 +339,7 @@ export default class AddressComponent extends ContainerComponent { }; if (this.component.placeholder) { - attr.placeholder = this.t(this.component.placeholder), { _userInput: true }; + (attr.placeholder = this.t(this.component.placeholder)), { _userInput: true }; } if (this.disabled) { @@ -432,8 +417,7 @@ export default class AddressComponent extends ContainerComponent { if (this.isMultiple) { this.address[index] = address; this.address = [...this.address]; - } - else { + } else { this.address = address; } @@ -454,14 +438,13 @@ export default class AddressComponent extends ContainerComponent { } attach(element) { - const result = ((this.builderMode || this.manualMode) ? super.attach : Field.prototype.attach).call(this, element); + const result = ( + this.builderMode || this.manualMode ? super.attach : Field.prototype.attach + ).call(this, element); if (!this.builderMode) { if (!this.provider && this.component.provider) { - const { - provider, - providerOptions, - } = this.component; + const { provider, providerOptions } = this.component; this.provider = this.initializeProvider(provider, providerOptions); } } @@ -478,8 +461,7 @@ export default class AddressComponent extends ContainerComponent { if (!this.builderMode && element && this.provider) { if (this.component.provider === 'google') { this.provider.attachAutocomplete(element, index, this.onSelectAddress.bind(this)); - } - else { + } else { autocompleter({ input: element, debounceWaitMs: 300, @@ -504,7 +486,9 @@ export default class AddressComponent extends ContainerComponent { } if (element.value) { - element.value = this.getDisplayValue(this.isMultiple ? this.address[index] : this.address); + element.value = this.getDisplayValue( + this.isMultiple ? this.address[index] : this.address, + ); } }); @@ -520,13 +504,13 @@ export default class AddressComponent extends ContainerComponent { } }); if (this.addRowButton) { - this.addEventListener(this.addRowButton, 'click', event => { + this.addEventListener(this.addRowButton, 'click', (event) => { event.preventDefault(); this.addRow(); }); } this.removeRowButton.forEach((removeRowButton, index) => { - this.addEventListener(removeRowButton, 'click', event => { + this.addEventListener(removeRowButton, 'click', (event) => { event.preventDefault(); this.removeValue(index); }); @@ -578,7 +562,7 @@ export default class AddressComponent extends ContainerComponent { }); }); - _.each(this.refs.searchInput || [], el => this.addFocusBlurEvents(el)); + _.each(this.refs.searchInput || [], (el) => this.addFocusBlurEvents(el)); } return result; @@ -589,16 +573,15 @@ export default class AddressComponent extends ContainerComponent { } redraw() { - const modeSwitcherInFocus = (this.modeSwitcher && (document.activeElement === this.modeSwitcher)); + const modeSwitcherInFocus = this.modeSwitcher && document.activeElement === this.modeSwitcher; - return super.redraw() - .then((result) => { - if (modeSwitcherInFocus && this.modeSwitcher) { - this.modeSwitcher.focus(); - } + return super.redraw().then((result) => { + if (modeSwitcherInFocus && this.modeSwitcher) { + this.modeSwitcher.focus(); + } - return result; - }); + return result; + }); } clearAddress(element, index) { @@ -608,8 +591,7 @@ export default class AddressComponent extends ContainerComponent { if (this.address?.[index]) { this.address[index] = this.emptyValue; - } - else { + } else { this.address = this.emptyValue; } if (element) { @@ -619,9 +601,7 @@ export default class AddressComponent extends ContainerComponent { } getDisplayValue(value = this.address) { - return (this.provider && !this.manualMode) - ? this.provider.getDisplayValue(value) - : ''; + return this.provider && !this.manualMode ? this.provider.getDisplayValue(value) : ''; } validateMultiple() { @@ -634,8 +614,7 @@ export default class AddressComponent extends ContainerComponent { const value = this.isMultiple ? this.address[index] : this.address; if (this.isEmpty(value) || this.disabled) { this.addClass(removeValueIcon, RemoveValueIconHiddenClass); - } - else { + } else { this.removeClass(removeValueIcon, RemoveValueIconHiddenClass); } } @@ -648,18 +627,13 @@ export default class AddressComponent extends ContainerComponent { const normalizedValue = this.normalizeValue(value); - const { - address, - mode, - } = ( - this.manualModeEnabled - ? normalizedValue - : { + const { address, mode } = this.manualModeEnabled + ? normalizedValue + : { address: normalizedValue, mode: AddressComponentMode.Autocomplete, - } - ); - const valueInManualMode = (mode === AddressComponentMode.Manual); + }; + const valueInManualMode = mode === AddressComponentMode.Manual; if (this.provider && !valueInManualMode) { return this.getDisplayValue(address); diff --git a/src/components/address/editForm/Address.edit.data.js b/src/components/address/editForm/Address.edit.data.js index 5b84522e89..44712e6d1d 100644 --- a/src/components/address/editForm/Address.edit.data.js +++ b/src/components/address/editForm/Address.edit.data.js @@ -9,15 +9,15 @@ export default [ key: 'defaultValue', weight: 5, placeholder: 'Default Value', - tooltip: 'The Default Value will be the value for this field, before user interaction. Having a default value will override the placeholder text.', + tooltip: + 'The Default Value will be the value for this field, before user interaction. Having a default value will override the placeholder text.', input: true, - customDefaultValue: ({ instance }) => ( + customDefaultValue: ({ instance }) => instance.manualModeEnabled ? { - mode: 'autocomplete', - address: {}, - } - : {} - ), + mode: 'autocomplete', + address: {}, + } + : {}, }, ]; diff --git a/src/components/address/editForm/Address.edit.display.js b/src/components/address/editForm/Address.edit.display.js index 1f39081278..16d2a402db 100644 --- a/src/components/address/editForm/Address.edit.display.js +++ b/src/components/address/editForm/Address.edit.display.js @@ -27,7 +27,7 @@ export default [ input: true, key: 'disableClearIcon', label: 'Disable Clear Icon', - tooltip: 'Clear Icon allows easily clear component\'s value.', + tooltip: "Clear Icon allows easily clear component's value.", }, { type: 'textfield', diff --git a/src/components/address/editForm/Address.edit.provider.js b/src/components/address/editForm/Address.edit.provider.js index bbd393357c..d7ad2dc31e 100644 --- a/src/components/address/editForm/Address.edit.provider.js +++ b/src/components/address/editForm/Address.edit.provider.js @@ -15,10 +15,12 @@ export default [ dataSrc: 'custom', data: { custom() { - return _.values(Formio.Providers.getProviders('address')).sort().map((provider) => ({ - label: provider.displayName, - value: provider.name, - })); + return _.values(Formio.Providers.getProviders('address')) + .sort() + .map((provider) => ({ + label: provider.displayName, + value: provider.name, + })); }, }, validate: { @@ -28,7 +30,7 @@ export default [ { type: 'textfield', input: true, - key: "providerOptions.params.subscriptionKey", + key: 'providerOptions.params.subscriptionKey', label: 'Subscription Key', placeholder: 'Enter Subscription Key', weight: 10, @@ -75,7 +77,8 @@ export default [ label: 'Response Property', placeholder: 'Enter Response Property', weight: 30, - tooltip: 'The property within the response data, where iterable addresses reside. For example: results.', + tooltip: + 'The property within the response data, where iterable addresses reside. For example: results.', conditional: { json: { '===': [{ var: 'data.provider' }, 'custom'] }, }, @@ -128,12 +131,13 @@ export default [ key: 'providerOptions.params.autocompleteOptions', label: 'Provider options', placeholder: 'Enter provider options as JSON object', - defaultValue:{}, + defaultValue: {}, weight: 60, rows: 5, as: 'json', editor: 'ace', - tooltip: 'Specify Google Maps Autocomplete options used for address searching as JSON object. Follow the link for available options', + tooltip: + "Specify Google Maps Autocomplete options used for address searching as JSON object. Follow the link for available options", conditional: { json: { '===': [{ var: 'data.provider' }, 'google'] }, }, @@ -144,10 +148,12 @@ export default [ key: 'manualModeViewString', label: 'Manual Mode View String', placeholder: 'Enter Manual Mode View String', - description: '"address" variable references component value, "data" - submission data and "component" - address component schema.', + description: + '"address" variable references component value, "data" - submission data and "component" - address component schema.', weight: 60, rows: 5, editor: 'ace', - tooltip: 'Specify template which should be when quering view string for the component value entered in manual mode. This string is used in table view, CSV export and email rendering. When left blank combined value of all components joined with comma will be used.', + tooltip: + 'Specify template which should be when quering view string for the component value entered in manual mode. This string is used in table view, CSV export and email rendering. When left blank combined value of all components joined with comma will be used.', }, ]; diff --git a/src/components/alert/Alert.js b/src/components/alert/Alert.js index 669bb7f3d4..2db20df6a3 100644 --- a/src/components/alert/Alert.js +++ b/src/components/alert/Alert.js @@ -7,12 +7,12 @@ export default class Alert { this.alert = null; this.parentComponent = component; this.refs = {}; - this.loadRefs = this.parentComponent.loadRefs.bind(this); + this.loadRefs = this.parentComponent.loadRefs.bind(this); } get refsNames() { return { - messageRef: 'multiple' + messageRef: 'multiple', }; } @@ -21,7 +21,7 @@ export default class Alert { error: 'danger', success: 'success', info: 'info', - warning: 'warning' + warning: 'warning', }; } @@ -42,10 +42,9 @@ export default class Alert { let messageElement = message; if (messageElement instanceof HTMLElement) { messageElement.setAttribute('ref', 'messageRef'); - } - else { + } else { messageElement = this.parentComponent.ce('p', { - ref: 'messageRef' + ref: 'messageRef', }); } this.showAlert(type, messageElement, options); @@ -64,7 +63,7 @@ export default class Alert { const ul = this.parentComponent.ce('ul'); const messagesList = document.createDocumentFragment(); - errors.forEach(err => this.appendErrorToList(err, ul)); + errors.forEach((err) => this.appendErrorToList(err, ul)); p.appendChild(ul); messagesList.appendChild(p); @@ -89,13 +88,12 @@ export default class Alert { if (messagesList) { const { id = `${type}-list-${this.parentComponent.id}`, - customClasses = `alert alert-${alertType}` + customClasses = `alert alert-${alertType}`, } = options; this.alert = this.parentComponent.ce('div', { id, class: customClasses }); if (messagesList instanceof HTMLElement) { this.parentComponent.appendTo(messagesList, this.alert); - } - else { + } else { this.parentComponent.setContent(this.alert, messagesList); } } @@ -114,21 +112,23 @@ export default class Alert { (e) => { const key = e.currentTarget.dataset.componentKey; this.focusOnComponent(key); - } + }, ], keypress: [ ...keyPressListeners, (e) => { const key = e.currentTarget.dataset.componentKey; this.focusOnComponent(key); - } - ] + }, + ], }; if (this.refs.messageRef?.length) { - this.refs.messageRef.forEach(el => { + this.refs.messageRef.forEach((el) => { Object.entries(customEvents).forEach(([event, listeners]) => { - listeners.forEach((listener) => this.parentComponent.addEventListener(el, event, listener)); + listeners.forEach((listener) => + this.parentComponent.addEventListener(el, event, listener), + ); this.eventListenersKeys.push(event); }); }); @@ -138,22 +138,25 @@ export default class Alert { clear() { try { if (this.refs.messageRef?.length) { - this.refs.messageRef.forEach(el => { - this.eventListenersKeys.forEach(event => this.parentComponent.removeEventListener(el, event)); + this.refs.messageRef.forEach((el) => { + this.eventListenersKeys.forEach((event) => + this.parentComponent.removeEventListener(el, event), + ); }); } this.refs = {}; this.parentComponent.removeChildFrom(this.alert, this.container); this.alert = null; - } - catch (ignoreErr) { + } catch (ignoreErr) { // ignore } } focusOnComponent(keyOrPath) { if (keyOrPath) { - const path = this.parentComponent._parentPath ? keyOrPath.replace(this.parentComponent._parentPath, '') : keyOrPath; + const path = this.parentComponent._parentPath + ? keyOrPath.replace(this.parentComponent._parentPath, '') + : keyOrPath; const component = this.parentComponent.root?.getComponent(path, null, keyOrPath); if (component && _.isFunction(component.focus)) { component.focus(); @@ -173,7 +176,7 @@ export default class Alert { style: 'cursor: pointer', ref: 'messageRef', tabIndex: 0, - 'aria-label': `${message}. Click to navigate to the field with following error.` + 'aria-label': `${message}. Click to navigate to the field with following error.`, }; const li = this.parentComponent.ce('li', params); @@ -194,8 +197,7 @@ export default class Alert { err.messages.forEach(({ message }, index) => { this.createMessage('error', ul, message, index, err); }); - } - else if (err) { + } else if (err) { const message = _.isObject(err) ? err.message || '' : err; this.createMessage('error', ul, message); } diff --git a/src/components/button/Button.form.js b/src/components/button/Button.form.js index 6e15574b9a..ce0b83d73d 100644 --- a/src/components/button/Button.form.js +++ b/src/components/button/Button.form.js @@ -6,19 +6,22 @@ import ButtonEditDisplay from './editForm/Button.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: ButtonEditDisplay - }, - { - key: 'data', - ignore: true, - }, - { - key: 'validation', - ignore: true, - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: ButtonEditDisplay, + }, + { + key: 'data', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, + ], + ...extend, + ); } diff --git a/src/components/button/Button.js b/src/components/button/Button.js index cb18ecd0ce..a232a718f1 100644 --- a/src/components/button/Button.js +++ b/src/components/button/Button.js @@ -1,24 +1,32 @@ import _ from 'lodash'; import Field from '../_classes/field/Field'; import Input from '../_classes/input/Input'; -import { componentValueTypes, eachComponent, getArrayFromComponentPath, getComponentSavedTypes } from '../../utils/utils'; +import { + componentValueTypes, + eachComponent, + getArrayFromComponentPath, + getComponentSavedTypes, +} from '../../utils/utils'; export default class ButtonComponent extends Field { static schema(...extend) { - return Input.schema({ - type: 'button', - label: 'Submit', - key: 'submit', - size: 'md', - leftIcon: '', - rightIcon: '', - block: false, - action: 'submit', - persistent: false, - disableOnInvalid: false, - theme: 'primary', - dataGridLabel: true - }, ...extend); + return Input.schema( + { + type: 'button', + label: 'Submit', + key: 'submit', + size: 'md', + leftIcon: '', + rightIcon: '', + block: false, + action: 'submit', + persistent: false, + disableOnInvalid: false, + theme: 'primary', + dataGridLabel: true, + }, + ...extend, + ); } static get builderInfo() { @@ -28,7 +36,7 @@ export default class ButtonComponent extends Field { icon: 'stop', documentation: '/userguide/form-building/form-components#button', weight: 110, - schema: ButtonComponent.schema() + schema: ButtonComponent.schema(), }; } @@ -48,7 +56,7 @@ export default class ButtonComponent extends Field { get inputInfo() { const info = super.elementInfo(); info.type = 'button'; - info.attr.type = (['submit', 'saveState'].includes(this.component.action)) ? 'submit' : 'button'; + info.attr.type = ['submit', 'saveState'].includes(this.component.action) ? 'submit' : 'button'; this.component.theme = this.component.theme || 'default'; info.attr.class = `btn btn-${this.component.theme}`; if (this.component.size) { @@ -66,7 +74,7 @@ export default class ButtonComponent extends Field { get labelInfo() { return { - hidden: true + hidden: true, }; } @@ -123,10 +131,12 @@ export default class ButtonComponent extends Field { if (this.viewOnly || this.options.hideButtons) { this._visible = false; } - return super.render(this.renderTemplate('button', { - component: this.component, - input: this.inputInfo, - })); + return super.render( + this.renderTemplate('button', { + component: this.component, + input: this.inputInfo, + }), + ); } attachButton() { @@ -134,48 +144,74 @@ export default class ButtonComponent extends Field { let onChange = null; let onError = null; if (this.component.action === 'submit') { - this.on('submitButton', () => { - this.disabled = true; - }, true); - this.on('cancelSubmit', () => { - this.disabled = false; - }, true); - this.on('submitDone', (message) => { - const resultMessage = _.isString(message) ? message : this.t('complete'); - this.loading = false; - this.disabled = false; - this.addClass(this.refs.button, 'btn-success submit-success'); - this.removeClass(this.refs.button, 'btn-danger submit-fail'); - this.addClass(this.refs.buttonMessageContainer, 'has-success'); - this.removeClass(this.refs.buttonMessageContainer, 'has-error'); - this.setContent(this.refs.buttonMessage, resultMessage); - }, true); - this.on('submitError', (message) => { - const resultMessage = _.isString(message) ? this.t(message) : this.t(this.errorMessage('submitError')); - this.loading = false; - this.disabled = false; - this.hasError = true; - this.removeClass(this.refs.button, 'btn-success submit-success'); - this.addClass(this.refs.button, 'btn-danger submit-fail'); - this.removeClass(this.refs.buttonMessageContainer, 'has-success'); - this.addClass(this.refs.buttonMessageContainer, 'has-error'); - this.setContent(this.refs.buttonMessage, resultMessage); - }, true); - - this.on('fileUploadingStart', (filePromise) => { - this.filesUploading.push(filePromise); - this.disabled = true; - this.setDisabled(this.refs.button, this.disabled); - }, true); - - this.on('fileUploadingEnd', (filePromise) => { - const index = this.filesUploading.indexOf(filePromise); - if (index !== -1) { - this.filesUploading.splice(index, 1); - } - this.disabled = this.shouldDisabled ? true : false; - this.setDisabled(this.refs.button, this.disabled); - }, true); + this.on( + 'submitButton', + () => { + this.disabled = true; + }, + true, + ); + this.on( + 'cancelSubmit', + () => { + this.disabled = false; + }, + true, + ); + this.on( + 'submitDone', + (message) => { + const resultMessage = _.isString(message) ? message : this.t('complete'); + this.loading = false; + this.disabled = false; + this.addClass(this.refs.button, 'btn-success submit-success'); + this.removeClass(this.refs.button, 'btn-danger submit-fail'); + this.addClass(this.refs.buttonMessageContainer, 'has-success'); + this.removeClass(this.refs.buttonMessageContainer, 'has-error'); + this.setContent(this.refs.buttonMessage, resultMessage); + }, + true, + ); + this.on( + 'submitError', + (message) => { + const resultMessage = _.isString(message) + ? this.t(message) + : this.t(this.errorMessage('submitError')); + this.loading = false; + this.disabled = false; + this.hasError = true; + this.removeClass(this.refs.button, 'btn-success submit-success'); + this.addClass(this.refs.button, 'btn-danger submit-fail'); + this.removeClass(this.refs.buttonMessageContainer, 'has-success'); + this.addClass(this.refs.buttonMessageContainer, 'has-error'); + this.setContent(this.refs.buttonMessage, resultMessage); + }, + true, + ); + + this.on( + 'fileUploadingStart', + (filePromise) => { + this.filesUploading.push(filePromise); + this.disabled = true; + this.setDisabled(this.refs.button, this.disabled); + }, + true, + ); + + this.on( + 'fileUploadingEnd', + (filePromise) => { + const index = this.filesUploading.indexOf(filePromise); + if (index !== -1) { + this.filesUploading.splice(index, 1); + } + this.disabled = this.shouldDisabled ? true : false; + this.setDisabled(this.refs.button, this.disabled); + }, + true, + ); onChange = (value, isValid) => { this.removeClass(this.refs.button, 'btn-success submit-success'); @@ -200,39 +236,59 @@ export default class ButtonComponent extends Field { } if (this.component.action === 'url') { - this.on('requestButton', () => { - this.disabled = true; - }, true); - this.on('requestDone', () => { - this.loading = false; - this.disabled = false; - }, true); + this.on( + 'requestButton', + () => { + this.disabled = true; + }, + true, + ); + this.on( + 'requestDone', + () => { + this.loading = false; + this.disabled = false; + }, + true, + ); } - this.on('change', (value, flags) => { - let isValid = value.isValid; - const isSilent = flags && flags.silent; - //check root validity only if disableOnInvalid is set and when it is not possible to make submission because of validation errors - if (flags && flags.noValidate && (this.component.disableOnInvalid || this.hasError)) { - isValid = flags.rootValidity || (this.root ? (this.root.validate(this.root.data, { dirty: false, silentCheck: true }).length === 0) : true); - flags.rootValidity = isValid; - } - this.isDisabledOnInvalid = this.component.disableOnInvalid && (isSilent || !isValid); - this.disabled = this.shouldDisabled; - this.setDisabled(this.refs.button, this.disabled); + this.on( + 'change', + (value, flags) => { + let isValid = value.isValid; + const isSilent = flags && flags.silent; + //check root validity only if disableOnInvalid is set and when it is not possible to make submission because of validation errors + if (flags && flags.noValidate && (this.component.disableOnInvalid || this.hasError)) { + isValid = + flags.rootValidity || + (this.root + ? this.root.validate(this.root.data, { dirty: false, silentCheck: true }).length === 0 + : true); + flags.rootValidity = isValid; + } + this.isDisabledOnInvalid = this.component.disableOnInvalid && (isSilent || !isValid); + this.disabled = this.shouldDisabled; + this.setDisabled(this.refs.button, this.disabled); - if (onChange) { - onChange(value, isValid); - } - }, true); + if (onChange) { + onChange(value, isValid); + } + }, + true, + ); - this.on('error', () => { - this.loading = false; - this.disabled = false; - if (onError) { - onError(); - } - }, true); + this.on( + 'error', + () => { + this.loading = false; + this.disabled = false; + if (onError) { + onError(); + } + }, + true, + ); if (this.component.saveOnEnter) { this.root.addEventListener(this.root.element, 'keyup', (event) => { @@ -269,9 +325,9 @@ export default class ButtonComponent extends Field { } // If this is an OpenID Provider initiated login, perform the click event immediately - if ((this.component.action === 'oauth') && this.oauthConfig && !this.oauthConfig.error) { + if (this.component.action === 'oauth' && this.oauthConfig && !this.oauthConfig.error) { const iss = getUrlParameter('iss'); - if (iss && (this.oauthConfig.authURI.indexOf(iss) === 0)) { + if (iss && this.oauthConfig.authURI.indexOf(iss) === 0) { this.openOauth(this.oauthConfig); } } @@ -285,14 +341,13 @@ export default class ButtonComponent extends Field { this.loadRefs(element, { button: 'single', buttonMessageContainer: 'single', - buttonMessage: 'single' + buttonMessage: 'single', }); const superAttach = super.attach(element); this.attachButton(); return superAttach; } - detach(element) { if (element && this.refs.button) { @@ -321,7 +376,7 @@ export default class ButtonComponent extends Field { noValidate: this.component.state === 'draft', state: this.component.state || 'submitted', component: this.component, - instance: this + instance: this, }); break; case 'event': @@ -331,7 +386,7 @@ export default class ButtonComponent extends Field { type: this.interpolate(this.component.event), component: this.component, data: this.data, - event: event + event: event, }); break; case 'custom': { @@ -341,16 +396,20 @@ export default class ButtonComponent extends Field { const flattened = {}; const components = {}; - eachComponent(form.components, (componentWrapper, path) => { - const component = componentWrapper.component || componentWrapper; - flattened[path] = component; - components[component.key] = component; - }, true); + eachComponent( + form.components, + (componentWrapper, path) => { + const component = componentWrapper.component || componentWrapper; + flattened[path] = component; + components[component.key] = component; + }, + true, + ); this.evaluate(this.component.custom, { form, flattened, - components + components, }); this.triggerChange(); @@ -360,11 +419,11 @@ export default class ButtonComponent extends Field { this.loading = true; this.emit('requestButton', { component: this.component, - instance: this + instance: this, }); this.emit('requestUrl', { url: this.interpolate(this.component.url), - headers: this.component.headers + headers: this.component.headers, }); break; case 'reset': @@ -381,7 +440,10 @@ export default class ButtonComponent extends Field { // Display Alert if OAuth config is missing if (!this.oauthConfig) { - this.root.setAlert('danger', 'OAuth not configured. You must configure oauth for your project before it will work.'); + this.root.setAlert( + 'danger', + 'OAuth not configured. You must configure oauth for your project before it will work.', + ); break; } @@ -403,23 +465,22 @@ export default class ButtonComponent extends Field { return; } - let params = { response_type: 'code', client_id: settings.clientId, - redirect_uri: (settings.redirectURI && this.interpolate(settings.redirectURI)) || window.location.origin || `${window.location.protocol}//${window.location.host}`, - scope: settings.scope + redirect_uri: + (settings.redirectURI && this.interpolate(settings.redirectURI)) || + window.location.origin || + `${window.location.protocol}//${window.location.host}`, + scope: settings.scope, }; if (settings.state) { params.state = settings.state; - } - else if (settings.code_challenge) { + } else if (settings.code_challenge) { params.code_challenge = settings.code_challenge; params.code_challenge_method = 'S256'; } - - // Needs for the correct redirection URI for the OpenID const originalRedirectUri = params.redirect_uri; @@ -428,9 +489,11 @@ export default class ButtonComponent extends Field { params.display = settings.display; } - params = Object.keys(params).map(key => { - return `${key}=${encodeURIComponent(params[key])}`; - }).join('&'); + params = Object.keys(params) + .map((key) => { + return `${key}=${encodeURIComponent(params[key])}`; + }) + .join('&'); const separator = settings.authURI.indexOf('?') !== -1 ? '&' : '?'; const url = `${settings.authURI}${separator}${params}`; @@ -442,11 +505,14 @@ export default class ButtonComponent extends Field { const currentHost = window.location.host; if (popup && !popup.closed && popupHost === currentHost) { popup.close(); - const params = popup.location.search.substr(1).split('&').reduce((params, param) => { - const split = param.split('='); - params[split[0]] = split[1]; - return params; - }, {}); + const params = popup.location.search + .substr(1) + .split('&') + .reduce((params, param) => { + const split = param.split('='); + params[split[0]] = split[1]; + return params; + }, {}); if (params.error) { alert(params.error_description || params.error); this.root.setAlert('danger', params.error_description || params.error); @@ -454,21 +520,31 @@ export default class ButtonComponent extends Field { } // TODO: check for error response here if (settings.state !== params.state) { - this.root.setAlert('danger', 'OAuth state does not match. Please try logging in again.'); + this.root.setAlert( + 'danger', + 'OAuth state does not match. Please try logging in again.', + ); return; } // Depending on where the settings came from, submit to either the submission endpoint (old) or oauth endpoint (new). let requestPromise = Promise.resolve(); - if (_.has(this, 'root.form.config.oauth') && this.root.form.config.oauth[this.component.oauthProvider]) { + if ( + _.has(this, 'root.form.config.oauth') && + this.root.form.config.oauth[this.component.oauthProvider] + ) { params.provider = settings.provider; params.redirectURI = originalRedirectUri; // Needs for the exclude oAuth Actions that not related to this button params.triggeredBy = this.oauthComponentPath; - requestPromise = this.root.formio.makeRequest('oauth', `${this.root.formio.projectUrl}/oauth2`, 'POST', params); - } - else { + requestPromise = this.root.formio.makeRequest( + 'oauth', + `${this.root.formio.projectUrl}/oauth2`, + 'POST', + params, + ); + } else { const submission = { data: {}, oauth: {} }; submission.oauth[settings.provider] = params; submission.oauth[settings.provider].redirectURI = originalRedirectUri; @@ -480,16 +556,19 @@ export default class ButtonComponent extends Field { submission.oauth[settings.provider].triggeredBy = this.oauthComponentPath; requestPromise = this.root.formio.saveSubmission(submission); } - requestPromise.then((result) => { + requestPromise + .then((result) => { this.root.onSubmit(result, true); }) .catch((err) => { this.root.onSubmissionError(err); }); } - } - catch (error) { - if (error.name !== 'SecurityError' && (error.name !== 'Error' || error.message !== 'Permission denied')) { + } catch (error) { + if ( + error.name !== 'SecurityError' && + (error.name !== 'Error' || error.message !== 'Permission denied') + ) { this.root.setAlert('danger', error.message || error); } } @@ -501,7 +580,10 @@ export default class ButtonComponent extends Field { get oauthComponentPath() { const pathArray = getArrayFromComponentPath(this.path); - return _.chain(pathArray).filter(pathPart => !_.isNumber(pathPart)).join('.').value(); + return _.chain(pathArray) + .filter((pathPart) => !_.isNumber(pathPart)) + .join('.') + .value(); } focus() { @@ -517,12 +599,14 @@ export default class ButtonComponent extends Field { let captchaComponent; - this.root.everyComponent((component)=> { - if (/^(re)?captcha$/.test(component.component.type) && + this.root.everyComponent((component) => { + if ( + /^(re)?captcha$/.test(component.component.type) && component.component.eventType === 'buttonClick' && - component.component.buttonKey === this.component.key) { - captchaComponent = component; - } + component.component.buttonKey === this.component.key + ) { + captchaComponent = component; + } }); if (captchaComponent) { diff --git a/src/components/button/editForm/Button.edit.display.js b/src/components/button/editForm/Button.edit.display.js index 0ffcc6825b..d21218acb9 100644 --- a/src/components/button/editForm/Button.edit.display.js +++ b/src/components/button/editForm/Button.edit.display.js @@ -64,7 +64,8 @@ export default [ label: 'Save in state', key: 'state', weight: 112, - tooltip: 'The state you wish to save the submission under when this button is pressed. Example "draft" would save the submission in Draft Mode.', + tooltip: + 'The state you wish to save the submission under when this button is pressed. Example "draft" would save the submission in Draft Mode.', placeholder: 'submitted', input: true, conditional: { @@ -139,7 +140,7 @@ export default [ label: 'Value', input: true, type: 'textfield', - } + }, ], conditional: { json: { '===': [{ var: 'data.action' }, 'url'] }, @@ -227,7 +228,7 @@ export default [ custom(context) { return BuilderUtils.getAvailableShortcuts( _.get(context, 'instance.options.editForm', {}), - _.get(context, 'instance.options.editComponent', {}) + _.get(context, 'instance.options.editComponent', {}), ); }, }, diff --git a/src/components/checkbox/Checkbox.form.js b/src/components/checkbox/Checkbox.form.js index 6af6796817..e6c9d037dc 100644 --- a/src/components/checkbox/Checkbox.form.js +++ b/src/components/checkbox/Checkbox.form.js @@ -8,19 +8,22 @@ import CheckboxEditValidation from './editForm/Checkbox.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'data', - components: CheckboxEditData - }, - { - key: 'display', - components: CheckboxEditDisplay - }, - { - key: 'validation', - components: CheckboxEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'data', + components: CheckboxEditData, + }, + { + key: 'display', + components: CheckboxEditDisplay, + }, + { + key: 'validation', + components: CheckboxEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/checkbox/Checkbox.js b/src/components/checkbox/Checkbox.js index 7120ae85ef..fe29cac26a 100644 --- a/src/components/checkbox/Checkbox.js +++ b/src/components/checkbox/Checkbox.js @@ -4,16 +4,19 @@ import Field from '../_classes/field/Field'; export default class CheckBoxComponent extends Field { static schema(...extend) { - return Field.schema({ - type: 'checkbox', - inputType: 'checkbox', - label: 'Checkbox', - key: 'checkbox', - dataGridLabel: true, - labelPosition: 'right', - value: '', - name: '' - }, ...extend); + return Field.schema( + { + type: 'checkbox', + inputType: 'checkbox', + label: 'Checkbox', + key: 'checkbox', + dataGridLabel: true, + labelPosition: 'right', + value: '', + name: '', + }, + ...extend, + ); } static get builderInfo() { @@ -23,7 +26,7 @@ export default class CheckBoxComponent extends Field { icon: 'check-square', documentation: '/userguide/form-building/form-components#check-box', weight: 50, - schema: CheckBoxComponent.schema() + schema: CheckBoxComponent.schema(), }; } @@ -40,13 +43,13 @@ export default class CheckBoxComponent extends Field { valueType: 'boolean', data: { values: [ - { label: 'Checked', value: 'true' }, - { label: 'Not Checked', value: 'false' }, - ] + { label: 'Checked', value: 'true' }, + { label: 'Not Checked', value: 'false' }, + ], }, - type: 'select' + type: 'select', }; - } + }, }; } @@ -71,10 +74,12 @@ export default class CheckBoxComponent extends Field { get labelClass() { let className = ''; - if (this.isInputComponent - && !this.options.inputsOnly - && this.component.validate - && this.component.validate.required) { + if ( + this.isInputComponent && + !this.options.inputsOnly && + this.component.validate && + this.component.validate.required + ) { className += ' field-required'; } return `${className}`; @@ -101,25 +106,31 @@ export default class CheckBoxComponent extends Field { get labelInfo() { return { - hidden: true + hidden: true, }; } render() { - return super.render(this.renderTemplate('checkbox', { - input: this.inputInfo, - checked: this.checked, - tooltip: this.interpolate(this.t(this.component.tooltip) || '', { _userInput: true }).replace(/(?:\r\n|\r|\n)/g, '
    ') - })); + return super.render( + this.renderTemplate('checkbox', { + input: this.inputInfo, + checked: this.checked, + tooltip: this.interpolate(this.t(this.component.tooltip) || '', { + _userInput: true, + }).replace(/(?:\r\n|\r|\n)/g, '
    '), + }), + ); } attach(element) { this.loadRefs(element, { input: 'multiple' }); this.input = this.refs.input[0]; if (this.refs.input) { - this.addEventListener(this.input, this.inputInfo.changeEvent, () => this.updateValue(null, { - modified: true - })); + this.addEventListener(this.input, this.inputInfo.changeEvent, () => + this.updateValue(null, { + modified: true, + }), + ); this.addShortcut(this.input); } return super.attach(element); @@ -155,15 +166,14 @@ export default class CheckBoxComponent extends Field { const value = super.getValue(); if (this.component.name) { return value ? this.setCheckedState(value) : this.setCheckedState(this.dataValue); - } - else { - return (value === '') ? this.dataValue : !!value; + } else { + return value === '' ? this.dataValue : !!value; } } get checked() { if (this.component.name) { - return (this.dataValue === this.component.value); + return this.dataValue === this.component.value; } return !!this.dataValue; } @@ -173,29 +183,24 @@ export default class CheckBoxComponent extends Field { return; } if (this.component.name) { - this.input.value = (value === this.component.value) ? this.component.value : 0; - this.input.checked = (value === this.component.value) ? 1 : 0; - } - else if (value === 'on') { + this.input.value = value === this.component.value ? this.component.value : 0; + this.input.checked = value === this.component.value ? 1 : 0; + } else if (value === 'on') { this.input.value = 1; this.input.checked = 1; - } - else if (value === 'off') { + } else if (value === 'off') { this.input.value = 0; this.input.checked = 0; - } - else if (value) { + } else if (value) { this.input.value = 1; this.input.checked = 1; - } - else { + } else { this.input.value = 0; this.input.checked = 0; } if (this.input.checked) { this.input.setAttribute('checked', true); - } - else { + } else { this.input.removeAttribute('checked'); } return value; @@ -218,7 +223,7 @@ export default class CheckBoxComponent extends Field { updateValue(value, flags) { // If this is a radio and is alredy checked, uncheck it. - if (this.component.name && flags.modified && (this.dataValue === this.component.value)) { + if (this.component.name && flags.modified && this.dataValue === this.component.value) { this.input.checked = 0; this.input.value = 0; this.dataValue = ''; @@ -231,8 +236,7 @@ export default class CheckBoxComponent extends Field { if (changed && this.input) { if (this.input.checked) { this.input.setAttribute('checked', 'true'); - } - else { + } else { this.input.removeAttribute('checked'); } } diff --git a/src/components/checkbox/editForm/Checkbox.edit.data.js b/src/components/checkbox/editForm/Checkbox.edit.data.js index 37a32a08fe..c58832a68b 100644 --- a/src/components/checkbox/editForm/Checkbox.edit.data.js +++ b/src/components/checkbox/editForm/Checkbox.edit.data.js @@ -1,6 +1,6 @@ export default [ { key: 'multiple', - ignore: true + ignore: true, }, ]; diff --git a/src/components/checkbox/editForm/Checkbox.edit.display.js b/src/components/checkbox/editForm/Checkbox.edit.display.js index f814964c37..07aacf86fc 100644 --- a/src/components/checkbox/editForm/Checkbox.edit.display.js +++ b/src/components/checkbox/editForm/Checkbox.edit.display.js @@ -12,7 +12,7 @@ export default [ }, { key: 'labelMargin', - ignore: true + ignore: true, }, { key: 'placeholder', @@ -33,7 +33,7 @@ export default [ custom(context) { return BuilderUtils.getAvailableShortcuts( _.get(context, 'instance.options.editForm', {}), - _.get(context, 'instance.options.editComponent', {}) + _.get(context, 'instance.options.editComponent', {}), ); }, }, diff --git a/src/components/checkbox/editForm/Checkbox.edit.validation.js b/src/components/checkbox/editForm/Checkbox.edit.validation.js index 5e1241b518..387a1fe1d2 100644 --- a/src/components/checkbox/editForm/Checkbox.edit.validation.js +++ b/src/components/checkbox/editForm/Checkbox.edit.validation.js @@ -1,10 +1,10 @@ export default [ { key: 'validateOn', - ignore: true + ignore: true, }, { key: 'unique', - ignore: true + ignore: true, }, ]; diff --git a/src/components/columns/Columns.form.js b/src/components/columns/Columns.form.js index 5bed40f9b2..2b24ab93ce 100644 --- a/src/components/columns/Columns.form.js +++ b/src/components/columns/Columns.form.js @@ -7,11 +7,14 @@ import ColumnsEditDisplay from './editForm/Columns.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: ColumnsEditDisplay - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: ColumnsEditDisplay, + }, + ], + ...extend, + ); } diff --git a/src/components/columns/Columns.js b/src/components/columns/Columns.js index 92ccbce8f1..cd809a571b 100644 --- a/src/components/columns/Columns.js +++ b/src/components/columns/Columns.js @@ -3,20 +3,23 @@ import NestedComponent from '../_classes/nested/NestedComponent'; export default class ColumnsComponent extends NestedComponent { static schema(...extend) { - return NestedComponent.schema({ - label: 'Columns', - key: 'columns', - type: 'columns', - columns: [ - { components: [], width: 6, offset: 0, push: 0, pull: 0, size: 'md' }, - { components: [], width: 6, offset: 0, push: 0, pull: 0, size: 'md' } - ], - clearOnHide: false, - input: false, - tableView: false, - persistent: false, - autoAdjust: false - }, ...extend); + return NestedComponent.schema( + { + label: 'Columns', + key: 'columns', + type: 'columns', + columns: [ + { components: [], width: 6, offset: 0, push: 0, pull: 0, size: 'md' }, + { components: [], width: 6, offset: 0, push: 0, pull: 0, size: 'md' }, + ], + clearOnHide: false, + input: false, + tableView: false, + persistent: false, + autoAdjust: false, + }, + ...extend, + ); } static get builderInfo() { @@ -27,7 +30,7 @@ export default class ColumnsComponent extends NestedComponent { documentation: '/userguide/form-building/layout-components#columns', showPreview: false, weight: 10, - schema: ColumnsComponent.schema() + schema: ColumnsComponent.schema(), }; } @@ -96,16 +99,18 @@ export default class ColumnsComponent extends NestedComponent { } render() { - return super.render(this.renderTemplate('columns', { - columnKey: this.columnKey, - columnComponents: this.columns.map(column => this.renderComponents(column)) - })); + return super.render( + this.renderTemplate('columns', { + columnKey: this.columnKey, + columnComponents: this.columns.map((column) => this.renderComponents(column)), + }), + ); } justifyColumn(items, index) { - const toAdjust = _.every(items, item => !item.visible); + const toAdjust = _.every(items, (item) => !item.visible); const column = this.component.columns[index]; - const width = (toAdjust && items.length) ? 0 : column.width; + const width = toAdjust && items.length ? 0 : column.width; const shouldRedraw = !_.isEqual(width, column.currentWidth); column.currentWidth = width; @@ -114,7 +119,10 @@ export default class ColumnsComponent extends NestedComponent { } justify() { - return this.columns.reduce((redraw, items, index) => this.justifyColumn(items, index) || redraw, false); + return this.columns.reduce( + (redraw, items, index) => this.justifyColumn(items, index) || redraw, + false, + ); } attach(element) { @@ -122,7 +130,11 @@ export default class ColumnsComponent extends NestedComponent { const superAttach = super.attach(element); if (this.refs[this.columnKey]) { this.refs[this.columnKey].forEach((column, index) => - this.attachComponents(column, this.columns[index], this.component.columns[index].components) + this.attachComponents( + column, + this.columns[index], + this.component.columns[index].components, + ), ); } return superAttach; @@ -134,23 +146,26 @@ export default class ColumnsComponent extends NestedComponent { /** * Group columns in rows. - * @returns {Array.} - The array of columns + * @returns {Array.} - The array of columns */ groupByRow() { const initVal = { stack: [], rows: [] }; - const width = x => x.component.width; - const result = _.reduce(this.components, (acc, next) => { - const stack = [...acc.stack, next]; - if (_.sumBy(stack, width) <= this.gridSize) { - acc.stack = stack; - return acc; - } - else { - acc.rows = [...acc.rows, acc.stack]; - acc.stack = [next]; - return acc; - } - }, initVal); + const width = (x) => x.component.width; + const result = _.reduce( + this.components, + (acc, next) => { + const stack = [...acc.stack, next]; + if (_.sumBy(stack, width) <= this.gridSize) { + acc.stack = stack; + return acc; + } else { + acc.rows = [...acc.rows, acc.stack]; + acc.stack = [next]; + return acc; + } + }, + initVal, + ); return _.concat(result.rows, [result.stack]); } diff --git a/src/components/columns/editForm/Columns.edit.display.js b/src/components/columns/editForm/Columns.edit.display.js index 1c6afdccfd..619788d7bb 100644 --- a/src/components/columns/editForm/Columns.edit.display.js +++ b/src/components/columns/editForm/Columns.edit.display.js @@ -1,39 +1,39 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { weight: 0, @@ -44,10 +44,10 @@ export default [ placeholder: 'Field Label', tooltip: 'The label for this field.', validate: { - required: true + required: true, }, autofocus: true, - overrideEditForm: true + overrideEditForm: true, }, { weight: 150, @@ -56,13 +56,14 @@ export default [ key: 'columns', label: 'Column Properties', addAnother: 'Add Column', - tooltip: 'The size and width settings for each column. One row is equal to 12. (e.g., a row with two columns spanning the entire page should be 6 and 6)', + tooltip: + 'The size and width settings for each column. One row is equal to 12. (e.g., a row with two columns spanning the entire page should be 6 and 6)', reorder: true, components: [ { type: 'hidden', key: 'components', - defaultValue: [] + defaultValue: [], }, { type: 'select', @@ -83,9 +84,9 @@ export default [ type: 'number', key: 'width', defaultValue: 6, - label: 'Width' - } - ] + label: 'Width', + }, + ], }, { weight: 160, @@ -93,10 +94,10 @@ export default [ label: 'Auto adjust columns', tooltip: 'Will automatically adjust columns based on if nested components are hidden.', key: 'autoAdjust', - input: true + input: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, ]; diff --git a/src/components/container/Container.form.js b/src/components/container/Container.form.js index 6ccefc84fc..7f6af695a8 100644 --- a/src/components/container/Container.form.js +++ b/src/components/container/Container.form.js @@ -7,15 +7,18 @@ import ContainerEditData from './editForm/Container.edit.data'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: ContainerEditDisplay - }, - { - key: 'data', - components: ContainerEditData - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: ContainerEditDisplay, + }, + { + key: 'data', + components: ContainerEditData, + }, + ], + ...extend, + ); } diff --git a/src/components/container/Container.js b/src/components/container/Container.js index 4967641ef3..c11715a003 100644 --- a/src/components/container/Container.js +++ b/src/components/container/Container.js @@ -1,5 +1,9 @@ import _ from 'lodash'; -import { componentValueTypes, getComponentSavedTypes, getFocusableElements } from '../../utils/utils'; +import { + componentValueTypes, + getComponentSavedTypes, + getFocusableElements, +} from '../../utils/utils'; import Component from '../_classes/component/Component'; import Field from '../_classes/field/Field'; @@ -7,16 +11,19 @@ import NestedDataComponent from '../_classes/nesteddata/NestedDataComponent'; export default class ContainerComponent extends NestedDataComponent { static schema(...extend) { - return NestedDataComponent.schema({ - label: 'Container', - type: 'container', - key: 'container', - clearOnHide: true, - input: true, - tree: true, - hideLabel: true, - components: [] - }, ...extend); + return NestedDataComponent.schema( + { + label: 'Container', + type: 'container', + key: 'container', + clearOnHide: true, + input: true, + tree: true, + hideLabel: true, + components: [], + }, + ...extend, + ); } static get builderInfo() { @@ -27,7 +34,7 @@ export default class ContainerComponent extends NestedDataComponent { documentation: '/userguide/form-building/data-components#container', showPreview: false, weight: 10, - schema: ContainerComponent.schema() + schema: ContainerComponent.schema(), }; } @@ -37,7 +44,7 @@ export default class ContainerComponent extends NestedDataComponent { } static savedValueTypes(schema) { - return getComponentSavedTypes(schema) || [componentValueTypes.object]; + return getComponentSavedTypes(schema) || [componentValueTypes.object]; } addComponents(data, options) { @@ -72,15 +79,15 @@ export default class ContainerComponent extends NestedDataComponent { focus() { const focusableElements = getFocusableElements(this.element); - if (focusableElements && focusableElements[0]) { - focusableElements[0].focus(); - } + if (focusableElements && focusableElements[0]) { + focusableElements[0].focus(); + } } checkConditions(data, flags, row) { // check conditions of parent component first, because it may influence on visibility of it's children const check = Field.prototype.checkConditions.call(this, data, flags, row); - this.getComponents().forEach(comp => comp.checkConditions(data, flags, this.dataValue)); + this.getComponents().forEach((comp) => comp.checkConditions(data, flags, this.dataValue)); return check; } } diff --git a/src/components/container/editForm/Container.edit.data.js b/src/components/container/editForm/Container.edit.data.js index 9aa6fd8d21..4ff5f3fe07 100644 --- a/src/components/container/editForm/Container.edit.data.js +++ b/src/components/container/editForm/Container.edit.data.js @@ -1,14 +1,14 @@ export default [ { key: 'multiple', - ignore: true + ignore: true, }, { key: 'allowCalculateOverride', - ignore: true + ignore: true, }, { key: 'defaultValue', - ignore: true + ignore: true, }, ]; diff --git a/src/components/container/editForm/Container.edit.display.js b/src/components/container/editForm/Container.edit.display.js index e3656fe2c2..88c9f0e5b2 100644 --- a/src/components/container/editForm/Container.edit.display.js +++ b/src/components/container/editForm/Container.edit.display.js @@ -1,18 +1,18 @@ export default [ { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, ]; diff --git a/src/components/content/Content.form.js b/src/components/content/Content.form.js index 3e11a5a4e3..e0f0b9639e 100644 --- a/src/components/content/Content.form.js +++ b/src/components/content/Content.form.js @@ -7,37 +7,42 @@ import ContentEditLogic from './editForm/Content.edit.logic'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - const editForm = Components.baseEditForm([ - { - key: 'display', - components: ContentEditDisplay, - }, - { - key: 'data', - ignore: true, - }, - { - key: 'validation', - ignore: true, - }, +export default function (...extend) { + const editForm = Components.baseEditForm( + [ + { + key: 'display', + components: ContentEditDisplay, + }, + { + key: 'data', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, + { + key: 'logic', + components: ContentEditLogic, + }, + ], + ...extend, + ); + // Add content as full width above the settings. + editForm.components = [ { - key: 'logic', - components: ContentEditLogic, + weight: 0, + type: 'textarea', + editor: 'ckeditor', + label: 'Content', + hideLabel: true, + input: true, + key: 'html', + as: 'html', + rows: 3, + tooltip: 'The HTML template for the result data items.', }, - ], ...extend); - // Add content as full width above the settings. - editForm.components = [{ - weight: 0, - type: 'textarea', - editor: 'ckeditor', - label: 'Content', - hideLabel: true, - input: true, - key: 'html', - as: 'html', - rows: 3, - tooltip: 'The HTML template for the result data items.', - }].concat(editForm.components); + ].concat(editForm.components); return editForm; } diff --git a/src/components/content/Content.js b/src/components/content/Content.js index 8ca7273481..a060332ba0 100644 --- a/src/components/content/Content.js +++ b/src/components/content/Content.js @@ -3,13 +3,16 @@ import _ from 'lodash'; export default class ContentComponent extends Component { static schema(...extend) { - return Component.schema({ - label: 'Content', - type: 'content', - key: 'content', - input: false, - html: '' - }, ...extend); + return Component.schema( + { + label: 'Content', + type: 'content', + key: 'content', + input: false, + html: '', + }, + ...extend, + ); } static get builderInfo() { @@ -21,7 +24,7 @@ export default class ContentComponent extends Component { showPreview: false, documentation: '/userguide/form-building/layout-components#content', weight: 5, - schema: ContentComponent.schema() + schema: ContentComponent.schema(), }; } @@ -38,20 +41,24 @@ export default class ContentComponent extends Component { return this.component.html || 'Content'; } const submission = _.get(this.root, 'submission', {}); - return this.component.html ? this.interpolate(this.component.html, { - metadata: submission.metadata || {}, - submission: submission, - data: this.rootValue, - row: this.data - }) : ''; + return this.component.html + ? this.interpolate(this.component.html, { + metadata: submission.metadata || {}, + submission: submission, + data: this.rootValue, + row: this.data, + }) + : ''; } render() { - return super.render(this.renderTemplate('html', { - tag: 'div', - attrs: [], - content: this.content, - })); + return super.render( + this.renderTemplate('html', { + tag: 'div', + attrs: [], + content: this.content, + }), + ); } get dataReady() { @@ -66,11 +73,15 @@ export default class ContentComponent extends Component { } }); if (this.component.refreshOnChange) { - this.on('change', () => { - if (this.refs.html) { - this.setContent(this.refs.html, this.content); - } - }, true); + this.on( + 'change', + () => { + if (this.refs.html) { + this.setContent(this.refs.html, this.content); + } + }, + true, + ); } return super.attach(element); } diff --git a/src/components/content/editForm/Content.edit.display.js b/src/components/content/editForm/Content.edit.display.js index 9cc26a818e..52b2bdb5d9 100644 --- a/src/components/content/editForm/Content.edit.display.js +++ b/src/components/content/editForm/Content.edit.display.js @@ -1,39 +1,39 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { weight: 700, @@ -41,6 +41,6 @@ export default [ label: 'Refresh On Change', tooltip: 'Rerender the field whenever a value on the form changes.', key: 'refreshOnChange', - input: true + input: true, }, ]; diff --git a/src/components/content/editForm/Content.edit.logic.js b/src/components/content/editForm/Content.edit.logic.js index b9534cfada..04b7c546bf 100644 --- a/src/components/content/editForm/Content.edit.logic.js +++ b/src/components/content/editForm/Content.edit.logic.js @@ -83,10 +83,12 @@ export default [ weight: 30, input: true, customConditional(context) { - return (context.row.type === 'property' && + return ( + context.row.type === 'property' && context.row.hasOwnProperty('property') && context.row.property.type === 'string' && - context.row.property.component === 'content'); + context.row.property.component === 'content' + ); }, }, ], diff --git a/src/components/currency/Currency.form.js b/src/components/currency/Currency.form.js index 23d0b9924e..c268a3ad26 100644 --- a/src/components/currency/Currency.form.js +++ b/src/components/currency/Currency.form.js @@ -6,40 +6,43 @@ import CurrencyEditData from './editForm/Currency.edit.data'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return baseEditForm([ - { - key: 'display', - components: CurrencyEditDisplay - }, - { - key: 'data', - components: CurrencyEditData - }, - { - key: 'validation', - components: [ - { - key: 'validate.minLength', - ignore: true, - }, - { - key: 'validate.maxLength', - ignore: true, - }, - { - key: 'validate.minWords', - ignore: true, - }, - { - key: 'validate.maxWords', - ignore: true, - }, - { - key: 'validate.pattern', - ignore: true, - }, - ] - }, - ], ...extend); +export default function (...extend) { + return baseEditForm( + [ + { + key: 'display', + components: CurrencyEditDisplay, + }, + { + key: 'data', + components: CurrencyEditData, + }, + { + key: 'validation', + components: [ + { + key: 'validate.minLength', + ignore: true, + }, + { + key: 'validate.maxLength', + ignore: true, + }, + { + key: 'validate.minWords', + ignore: true, + }, + { + key: 'validate.maxWords', + ignore: true, + }, + { + key: 'validate.pattern', + ignore: true, + }, + ], + }, + ], + ...extend, + ); } diff --git a/src/components/currency/Currency.js b/src/components/currency/Currency.js index e80791187f..14766cd395 100644 --- a/src/components/currency/Currency.js +++ b/src/components/currency/Currency.js @@ -6,11 +6,14 @@ import NumberComponent from '../number/Number'; export default class CurrencyComponent extends NumberComponent { static schema(...extend) { - return NumberComponent.schema({ - type: 'currency', - label: 'Currency', - key: 'currency' - }, ...extend); + return NumberComponent.schema( + { + type: 'currency', + label: 'Currency', + key: 'currency', + }, + ...extend, + ); } static get builderInfo() { @@ -20,7 +23,7 @@ export default class CurrencyComponent extends NumberComponent { icon: 'usd', documentation: '/userguide/form-building/advanced-components#currency', weight: 70, - schema: CurrencyComponent.schema() + schema: CurrencyComponent.schema(), }; } @@ -42,7 +45,7 @@ export default class CurrencyComponent extends NumberComponent { currency: this.component.currency, decimalLimit: decimalLimit, decimalSeparator: this.decimalSeparator, - lang: this.options.language + lang: this.options.language, }); this.currencyPrefix = this.options.prefix || affixes.prefix; this.currencySuffix = this.options.suffix || affixes.suffix; @@ -85,7 +88,7 @@ export default class CurrencyComponent extends NumberComponent { } return conformedValue; }, - shadowRoot: this.root ? this.root.shadowRoot : null + shadowRoot: this.root ? this.root.shadowRoot : null, }); } @@ -102,7 +105,7 @@ export default class CurrencyComponent extends NumberComponent { } addZerosAndFormatValue(value) { - if (!value && value !== 0) return; + if (!value && value !== 0) return; const decimalLimit = _.get(this.component, 'decimalLimit', 2); @@ -114,13 +117,12 @@ export default class CurrencyComponent extends NumberComponent { const hasSuffix = this.currencySuffix ? value.includes(this.currencySuffix) : false; const isNegative = value.includes(negativeValueSymbol) || false; - value = this.stripPrefixSuffix(isNegative ? value.replace(negativeValueSymbol,'') : value); + value = this.stripPrefixSuffix(isNegative ? value.replace(negativeValueSymbol, '') : value); if (value.includes(this.decimalSeparator)) { [integerPart, decimalPart] = value.split(this.decimalSeparator); - decimalPartNumbers =[...decimalPart.split('')] ; - } - else { + decimalPartNumbers = [...decimalPart.split('')]; + } else { integerPart = value; } @@ -130,7 +132,7 @@ export default class CurrencyComponent extends NumberComponent { } } - const formattedValue = `${isNegative ? negativeValueSymbol:''}${hasPrefix ? this.currencyPrefix : ''}${integerPart}${this.decimalSeparator}${decimalPartNumbers.join('')}${hasSuffix ? this.currencySuffix : ''}`; + const formattedValue = `${isNegative ? negativeValueSymbol : ''}${hasPrefix ? this.currencyPrefix : ''}${integerPart}${this.decimalSeparator}${decimalPartNumbers.join('')}${hasSuffix ? this.currencySuffix : ''}`; return super.formatValue(formattedValue); } @@ -138,10 +140,11 @@ export default class CurrencyComponent extends NumberComponent { getValueAsString(value, options) { const stringValue = super.getValueAsString(value, options); - if (value || value == '0') { if (Array.isArray(value)) { - return value.map((val) => this.addZerosAndFormatValue(super.getValueAsString(val, options))).join(', '); + return value + .map((val) => this.addZerosAndFormatValue(super.getValueAsString(val, options))) + .join(', '); } return this.addZerosAndFormatValue(stringValue); } @@ -172,11 +175,15 @@ export default class CurrencyComponent extends NumberComponent { value = value.replace(this.currencySuffix, ''); } //when we enter $ in the field using dashboard, it contains '_' that is NaN - if ((hasPrefix || hasSuffix) && !hasDelimiter && !hasDecimalSeparator && (Number.isNaN(+value) || !value)) { - value ='0'; + if ( + (hasPrefix || hasSuffix) && + !hasDelimiter && + !hasDecimalSeparator && + (Number.isNaN(+value) || !value) + ) { + value = '0'; } - } - catch (ignoreErr) { + } catch (ignoreErr) { // If value doesn't have a replace method, continue on as before. } } @@ -192,7 +199,9 @@ export default class CurrencyComponent extends NumberComponent { } }); this.addEventListener(element, 'blur', () => { - element.value = this.getValueAsString(this.addZerosAndFormatValue(this.parseValue(element.value))); + element.value = this.getValueAsString( + this.addZerosAndFormatValue(this.parseValue(element.value)), + ); }); } } diff --git a/src/components/currency/editForm/Currency.edit.data.js b/src/components/currency/editForm/Currency.edit.data.js index a10d18351d..8bd993fc78 100644 --- a/src/components/currency/editForm/Currency.edit.data.js +++ b/src/components/currency/editForm/Currency.edit.data.js @@ -1,7 +1,7 @@ export default [ { key: 'case', - ignore: true + ignore: true, }, { type: 'select', @@ -9,7 +9,8 @@ export default [ weight: 50, key: 'currency', label: 'Currency', - tooltip: 'The currency to use in currency formatting. Possible values are (ISO-4217) currency codes.', + tooltip: + 'The currency to use in currency formatting. Possible values are (ISO-4217) currency codes.', defaultValue: 'USD', dataSrc: 'values', data: { @@ -183,8 +184,8 @@ export default [ { label: 'Dong (VND)', value: 'VND' }, { label: 'Yemeni Rial (YER)', value: 'YER' }, { label: 'Zambian Kwacha (ZMW)', value: 'ZMW' }, - { label: 'Zimbabwe Dollar (ZWL),', value: 'ZWL' } - ] - } - } + { label: 'Zimbabwe Dollar (ZWL),', value: 'ZWL' }, + ], + }, + }, ]; diff --git a/src/components/currency/editForm/Currency.edit.display.js b/src/components/currency/editForm/Currency.edit.display.js index 500d715d85..0dcf76e85a 100644 --- a/src/components/currency/editForm/Currency.edit.display.js +++ b/src/components/currency/editForm/Currency.edit.display.js @@ -1,23 +1,23 @@ export default [ { key: 'inputMask', - ignore: true + ignore: true, }, { key: 'allowMultipleMasks', - ignore: true + ignore: true, }, { key: 'showWordCount', - ignore: true + ignore: true, }, { key: 'showCharCount', - ignore: true + ignore: true, }, { key: 'spellcheck', - ignore: true + ignore: true, }, { type: 'textfield', @@ -25,7 +25,7 @@ export default [ weight: 310, key: 'prefix', label: 'prefix', - tooltip: 'Specify the prefix symbol after the component (e.g.: USD, EUR)' + tooltip: 'Specify the prefix symbol after the component (e.g.: USD, EUR)', }, { type: 'textfield', @@ -33,6 +33,6 @@ export default [ weight: 320, key: 'suffix', label: 'suffix', - tooltip: 'Specify the suffix symbol after the component (e.g.: USD, EUR).' - } + tooltip: 'Specify the suffix symbol after the component (e.g.: USD, EUR).', + }, ]; diff --git a/src/components/datagrid/DataGrid.form.js b/src/components/datagrid/DataGrid.form.js index 229c2385f0..13998fac43 100644 --- a/src/components/datagrid/DataGrid.form.js +++ b/src/components/datagrid/DataGrid.form.js @@ -8,19 +8,22 @@ import DataGridEditValidation from './editForm/DataGrid.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: DataGridEditDisplay - }, - { - key: 'data', - components: DataGridEditData - }, - { - key: 'validation', - components: DataGridEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: DataGridEditDisplay, + }, + { + key: 'data', + components: DataGridEditData, + }, + { + key: 'validation', + components: DataGridEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/datagrid/DataGrid.js b/src/components/datagrid/DataGrid.js index 0fd9523511..4c3e32705d 100644 --- a/src/components/datagrid/DataGrid.js +++ b/src/components/datagrid/DataGrid.js @@ -5,15 +5,18 @@ import Components from '../Components'; export default class DataGridComponent extends NestedArrayComponent { static schema(...extend) { - return NestedArrayComponent.schema({ - label: 'Data Grid', - key: 'dataGrid', - type: 'datagrid', - clearOnHide: true, - input: true, - tree: true, - components: [] - }, ...extend); + return NestedArrayComponent.schema( + { + label: 'Data Grid', + key: 'dataGrid', + type: 'datagrid', + clearOnHide: true, + input: true, + tree: true, + components: [], + }, + ...extend, + ); } static get builderInfo() { @@ -24,7 +27,7 @@ export default class DataGridComponent extends NestedArrayComponent { documentation: '/userguide/form-building/data-components#data-grid', showPreview: false, weight: 30, - schema: DataGridComponent.schema() + schema: DataGridComponent.schema(), }; } @@ -45,7 +48,7 @@ export default class DataGridComponent extends NestedArrayComponent { this.createRows(true); } - if(this.allowReorder) { + if (this.allowReorder) { this.dragulaReady = this.getDragula(); } @@ -89,8 +92,7 @@ export default class DataGridComponent extends NestedArrayComponent { get minLength() { if (this.hasRowGroups()) { return _.sum(this.getGroupSizes()); - } - else { + } else { return _.get(this.component, 'validate.minLength', 0); } } @@ -108,11 +110,9 @@ export default class DataGridComponent extends NestedArrayComponent { if (Array.isArray(value)) { defaultValue = value; - } - else if (value && (typeof value === 'object')) { + } else if (value && typeof value === 'object') { defaultValue = [value]; - } - else { + } else { defaultValue = this.emptyValue; } @@ -175,9 +175,10 @@ export default class DataGridComponent extends NestedArrayComponent { ([startIndex, acc], size) => { const endIndex = startIndex + size; return [endIndex, [...acc, [startIndex, endIndex]]]; - }, [0, []] + }, + [0, []], ); - return chunks.map(range => _.slice(rows, ...range)); + return chunks.map((range) => _.slice(rows, ...range)); } /** @@ -188,20 +189,20 @@ export default class DataGridComponent extends NestedArrayComponent { getGroups() { const groups = _.get(this.component, 'rowGroups', []); const sizes = _.map(groups, 'numberOfRows').slice(0, -1); - const indexes = sizes.reduce((groupIndexes, size) => { - const last = groupIndexes[groupIndexes.length - 1]; - return groupIndexes.concat(last + size); - }, [0]); - - return groups.reduce( - (gidxs, group, idx) => { - return { - ...gidxs, - [indexes[idx]]: group - }; + const indexes = sizes.reduce( + (groupIndexes, size) => { + const last = groupIndexes[groupIndexes.length - 1]; + return groupIndexes.concat(last + size); }, - {} + [0], ); + + return groups.reduce((gidxs, group, idx) => { + return { + ...gidxs, + [indexes[idx]]: group, + }; + }, {}); } /** @@ -225,15 +226,18 @@ export default class DataGridComponent extends NestedArrayComponent { } hasExtraColumn() { - return (this.hasRemoveButtons() || this.canAddColumn); + return this.hasRemoveButtons() || this.canAddColumn; } hasRemoveButtons() { - return !this.builderMode && !this.component.disableAddingRemovingRows && + return ( + !this.builderMode && + !this.component.disableAddingRemovingRows && !this.options.readOnly && !this.disabled && this.fullMode && - (this.dataValue.length > _.get(this.component, 'validate.minLength', 0)); + this.dataValue.length > _.get(this.component, 'validate.minLength', 0) + ); } hasTopSubmit() { @@ -262,34 +266,36 @@ export default class DataGridComponent extends NestedArrayComponent { columnExtra++; } const colWidth = Math.floor(12 / (columns.length + columnExtra)); - return super.render(this.renderTemplate('datagrid', { - rows: this.getRows(), - columns: columns, - groups: this.hasRowGroups() ? this.getGroups() : [], - visibleColumns: this.visibleColumns, - hasToggle: _.get(this, 'component.groupToggle', false), - hasHeader: this.hasHeader(), - hasExtraColumn: this.hasExtraColumn(), - hasAddButton: this.hasAddButton(), - hasRemoveButtons, - hasTopSubmit: this.hasTopSubmit(), - hasBottomSubmit: this.hasBottomSubmit(), - hasGroups: this.hasRowGroups(), - numColumns: columns.length + (this.hasExtraColumn() ? 1 : 0), - datagridKey: this.datagridKey, - allowReorder: this.allowReorder, - builder: this.builderMode, - canAddColumn: this.canAddColumn, - tabIndex: this.tabIndex, - placeholder: this.renderTemplate('builderPlaceholder', { - position: this.componentComponents.length, + return super.render( + this.renderTemplate('datagrid', { + rows: this.getRows(), + columns: columns, + groups: this.hasRowGroups() ? this.getGroups() : [], + visibleColumns: this.visibleColumns, + hasToggle: _.get(this, 'component.groupToggle', false), + hasHeader: this.hasHeader(), + hasExtraColumn: this.hasExtraColumn(), + hasAddButton: this.hasAddButton(), + hasRemoveButtons, + hasTopSubmit: this.hasTopSubmit(), + hasBottomSubmit: this.hasBottomSubmit(), + hasGroups: this.hasRowGroups(), + numColumns: columns.length + (this.hasExtraColumn() ? 1 : 0), + datagridKey: this.datagridKey, + allowReorder: this.allowReorder, + builder: this.builderMode, + canAddColumn: this.canAddColumn, + tabIndex: this.tabIndex, + placeholder: this.renderTemplate('builderPlaceholder', { + position: this.componentComponents.length, + }), + colWidth: colWidth.toString(), }), - colWidth: colWidth.toString() - })); + ); } getRows() { - return this.rows.map(row => { + return this.rows.map((row) => { const components = {}; _.each(row, (col, key) => { components[key] = col.render(); @@ -300,7 +306,7 @@ export default class DataGridComponent extends NestedArrayComponent { getColumns() { return this.columns.filter((comp) => { - return (!this.visibleColumns.hasOwnProperty(comp.key) || this.visibleColumns[comp.key]); + return !this.visibleColumns.hasOwnProperty(comp.key) || this.visibleColumns[comp.key]; }); } @@ -323,7 +329,7 @@ export default class DataGridComponent extends NestedArrayComponent { if (this.allowReorder) { this.refs[`${this.datagridKey}-row`].forEach((row, index) => { - row.dragInfo = {index}; + row.dragInfo = { index }; }); this.dragulaReady.then((dragula) => { // The drop event may call redraw twice which calls attach twice and because this block of code is asynchronous @@ -342,10 +348,11 @@ export default class DataGridComponent extends NestedArrayComponent { if (oldParentKey === clickedElementKey) { return clickedElement.classList.contains('formio-drag-button'); } - } - }).on('drop', this.onReorder.bind(this)) + }, + }) + .on('drop', this.onReorder.bind(this)) .on('cloned', this.onCloned.bind(this)); - }) + }); } this.refs[`${this.datagridKey}-addRow`].forEach((addButton) => { @@ -357,7 +364,10 @@ export default class DataGridComponent extends NestedArrayComponent { }); if (this.hasRowGroups()) { - this.refs.chunks = this.getRowChunks(this.getGroupSizes(), this.refs[`${this.datagridKey}-row`]); + this.refs.chunks = this.getRowChunks( + this.getGroupSizes(), + this.refs[`${this.datagridKey}-row`], + ); this.refs[`${this.datagridKey}-group-header`].forEach((header, index) => { this.addEventListener(header, 'click', () => this.toggleGroup(header, index)); }); @@ -369,7 +379,7 @@ export default class DataGridComponent extends NestedArrayComponent { let columnIndex = 0; columns.forEach((col) => { this.attachComponents( - this.refs[this.datagridKey][(rowIndex * rowLength) + columnIndex], + this.refs[this.datagridKey][rowIndex * rowLength + columnIndex], [this.rows[rowIndex][col.key]], this.getComponentsContainer(), ); @@ -416,7 +426,12 @@ export default class DataGridComponent extends NestedArrayComponent { const dataValue = fastCloneDeep(this.dataValue); this.reorderValues(dataValue, oldPosition, newPosition, movedBelow); //reorder select data - this.reorderValues(_.get(this.root, `submission.metadata.selectData.${this.path}`, []), oldPosition, newPosition, movedBelow); + this.reorderValues( + _.get(this.root, `submission.metadata.selectData.${this.path}`, []), + oldPosition, + newPosition, + movedBelow, + ); // When components are reordered we need to set the dataGrid and form pristine properties to false this.root.pristine = false; @@ -435,14 +450,9 @@ export default class DataGridComponent extends NestedArrayComponent { if (styles.cssText !== '') { el.children[index].style.cssText = styles.cssText; } else { - const cssText = Object.values(styles).reduce( - (css, propertyName) => { - return `${css}${propertyName}:${styles.getPropertyValue( - propertyName - )};`; - }, - '' - ); + const cssText = Object.values(styles).reduce((css, propertyName) => { + return `${css}${propertyName}:${styles.getPropertyValue(propertyName)};`; + }, ''); el.children[index].style.cssText = cssText; } @@ -479,15 +489,14 @@ export default class DataGridComponent extends NestedArrayComponent { if (this.initEmpty && defaultValue[index]) { row = defaultValue[index]; dataValue[index] = row; - } - else { + } else { row = dataValue[index]; } this.rows[index] = this.createRowComponents(row, index); this.emit('dataGridAddRow', { component: this.component, - row + row, }); this.checkConditions(); this.triggerChange(); @@ -500,7 +509,10 @@ export default class DataGridComponent extends NestedArrayComponent { components.forEach((component, colIndex) => { if (component.options?.name) { const newName = `[${this.key}][${rowIndex}]`; - component.options.name = component.options.name.replace(`[${this.key}][${component.rowIndex}]`, newName); + component.options.name = component.options.name.replace( + `[${this.key}][${component.rowIndex}]`, + newName, + ); } component.rowIndex = rowIndex; component.row = `${rowIndex}-${colIndex}`; @@ -537,7 +549,7 @@ export default class DataGridComponent extends NestedArrayComponent { setRowComponentsData(rowIndex, rowData) { _.each(this.rows[rowIndex], (component) => { - component.data = rowData; + component.data = rowData; }); } @@ -548,8 +560,7 @@ export default class DataGridComponent extends NestedArrayComponent { rowValues.forEach((row, index) => { if (!rebuild && this.rows[index]) { this.setRowComponentsData(index, row); - } - else { + } else { if (this.rows[index]) { this.removeRowComponents(this.rows[index]); } @@ -562,7 +573,7 @@ export default class DataGridComponent extends NestedArrayComponent { const removed = !!removedRows.length; // Delete components of extra rows (to make sure that this.components contain only components of exisiting rows) if (removed) { - removedRows.forEach(row => this.removeRowComponents(row)); + removedRows.forEach((row) => this.removeRowComponents(row)); } if (!init && (added || removed)) { @@ -584,19 +595,15 @@ export default class DataGridComponent extends NestedArrayComponent { if (this.builderMode) { col.id = col.id + rowIndex; columnComponent = col; - } - else { - columnComponent = { ...col, id: (col.id + rowIndex) }; + } else { + columnComponent = { ...col, id: col.id + rowIndex }; } const component = this.createComponent(columnComponent, options, row); component.parentDisabled = !!this.disabled; component.rowIndex = rowIndex; component.inDataGrid = true; - if ( - columnComponent.tabindex && - parseInt(columnComponent.tabindex) > this.tabIndex - ) { + if (columnComponent.tabindex && parseInt(columnComponent.tabindex) > this.tabIndex) { this.tabIndex = parseInt(columnComponent.tabindex); } components[col.key] = component; @@ -623,19 +630,24 @@ export default class DataGridComponent extends NestedArrayComponent { const dataValue = this.dataValue; this.rows.forEach((row, rowIndex) => { _.each(row, (col, key) => { - if (col && (typeof col.checkConditions === 'function')) { + if (col && typeof col.checkConditions === 'function') { const firstRowCheck = visibility[key] === undefined; - visibility[key] = !!visibility[key] || + visibility[key] = + !!visibility[key] || (col.checkConditions(data, flags, dataValue[rowIndex]) && col.type !== 'hidden'); if (col.component.logic && firstRowCheck) { const compIndex = _.findIndex(this.columns, ['key', key]); - const equalColumns = _.isEqualWith(this.columns[compIndex], col.component, (col1, col2, key) => { - // Don't compare columns by their auto-generated ids. - if (key === 'id') { - return true; - } - }); + const equalColumns = _.isEqualWith( + this.columns[compIndex], + col.component, + (col1, col2, key) => { + // Don't compare columns by their auto-generated ids. + if (key === 'id') { + return true; + } + }, + ); if (!equalColumns) { logicRebuild = true; @@ -680,8 +692,7 @@ export default class DataGridComponent extends NestedArrayComponent { if (!Array.isArray(value)) { if (typeof value === 'object') { value = [value]; - } - else { + } else { this.createRows(); value = [{}]; } @@ -697,8 +708,11 @@ export default class DataGridComponent extends NestedArrayComponent { this.dataValue = value; - if (this.initRows || isSettingSubmission || - (Array.isArray(this.dataValue) && this.dataValue.length !== this.rows.length)) { + if ( + this.initRows || + isSettingSubmission || + (Array.isArray(this.dataValue) && this.dataValue.length !== this.rows.length) + ) { if (!this.createRows() && changed) { this.redraw(); } @@ -723,7 +737,9 @@ export default class DataGridComponent extends NestedArrayComponent { } restoreComponentsContext() { - this.rows.forEach((row, index) => _.forIn(row, (component) => component.data = this.dataValue[index])); + this.rows.forEach((row, index) => + _.forIn(row, (component) => (component.data = this.dataValue[index])), + ); } getComponent(path, fn) { @@ -761,8 +777,7 @@ export default class DataGridComponent extends NestedArrayComponent { let comp = component; if (remainingPath.length > 0 && 'getComponent' in component) { comp = component.getComponent(remainingPath, fn); - } - else if (fn) { + } else if (fn) { fn(component, components); } @@ -775,7 +790,7 @@ export default class DataGridComponent extends NestedArrayComponent { toggleGroup(element, index) { element.classList.toggle('collapsed'); - _.each(this.refs.chunks[index], row => { + _.each(this.refs.chunks[index], (row) => { row.classList.toggle('hidden'); }); } diff --git a/src/components/datagrid/editForm/DataGrid.edit.data.js b/src/components/datagrid/editForm/DataGrid.edit.data.js index 37a32a08fe..c58832a68b 100644 --- a/src/components/datagrid/editForm/DataGrid.edit.data.js +++ b/src/components/datagrid/editForm/DataGrid.edit.data.js @@ -1,6 +1,6 @@ export default [ { key: 'multiple', - ignore: true + ignore: true, }, ]; diff --git a/src/components/datagrid/editForm/DataGrid.edit.display.js b/src/components/datagrid/editForm/DataGrid.edit.display.js index 394ea506ea..d50be663e5 100644 --- a/src/components/datagrid/editForm/DataGrid.edit.display.js +++ b/src/components/datagrid/editForm/DataGrid.edit.display.js @@ -1,7 +1,7 @@ export default [ { key: 'placeholder', - ignore: true + ignore: true, }, { type: 'checkbox', @@ -49,7 +49,7 @@ export default [ input: true, customConditional(context) { return !context.data.disableAddingRemovingRows; - } + }, }, { type: 'select', @@ -63,13 +63,13 @@ export default [ values: [ { label: 'Top', value: 'top' }, { label: 'Bottom', value: 'bottom' }, - { label: 'Both', value: 'both' } - ] + { label: 'Both', value: 'both' }, + ], }, weight: 411, customConditional(context) { return !context.data.disableAddingRemovingRows; - } + }, }, { type: 'checkbox', @@ -83,7 +83,7 @@ export default [ type: 'checkbox', label: 'Enable Row Groups', weight: 440, - input: true + input: true, }, { label: 'Groups', @@ -110,9 +110,9 @@ export default [ input: true, key: 'label', widget: { - type: '' + type: '', }, - row: '0-0' + row: '0-0', }, { label: 'Number of Rows', @@ -122,11 +122,11 @@ export default [ type: 'number', input: true, key: 'numberOfRows', - row: '0-1' - } + row: '0-1', + }, ], weight: 441, - conditional: { json: { var: 'data.enableRowGroups' } } + conditional: { json: { var: 'data.enableRowGroups' } }, }, { label: 'Hide Group on Header Click', @@ -134,7 +134,7 @@ export default [ input: true, key: 'groupToggle', weight: 442, - conditional: { json: { var: 'data.enableRowGroups' } } + conditional: { json: { var: 'data.enableRowGroups' } }, }, { label: 'Initialize Empty', @@ -142,6 +142,6 @@ export default [ input: true, key: 'initEmpty', tooltip: 'The DataGrid will have no visible rows when initialized.', - weight: 450 - } + weight: 450, + }, ]; diff --git a/src/components/datagrid/editForm/DataGrid.edit.validation.js b/src/components/datagrid/editForm/DataGrid.edit.validation.js index 03e45c630a..865a8d2602 100644 --- a/src/components/datagrid/editForm/DataGrid.edit.validation.js +++ b/src/components/datagrid/editForm/DataGrid.edit.validation.js @@ -10,7 +10,7 @@ export default [ placeholder: 'Minimum Length', type: 'textfield', tooltip: 'The minimum length requirement this field must meet.', - input: true + input: true, }, { weight: 120, @@ -19,6 +19,6 @@ export default [ placeholder: 'Maximum Length', type: 'textfield', tooltip: 'The maximum length requirement this field must meet.', - input: true - } + input: true, + }, ]; diff --git a/src/components/datamap/DataMap.form.js b/src/components/datamap/DataMap.form.js index 47e8ec077d..7a86415492 100644 --- a/src/components/datamap/DataMap.form.js +++ b/src/components/datamap/DataMap.form.js @@ -7,15 +7,18 @@ import DataMapEditDisplay from './editForm/DataMap.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: DataMapEditDisplay - }, - { - key: 'data', - components: DataMapEditData - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: DataMapEditDisplay, + }, + { + key: 'data', + components: DataMapEditData, + }, + ], + ...extend, + ); } diff --git a/src/components/datamap/DataMap.js b/src/components/datamap/DataMap.js index 584710e097..2a4b8c19b8 100644 --- a/src/components/datamap/DataMap.js +++ b/src/components/datamap/DataMap.js @@ -7,26 +7,29 @@ import Components from '../Components'; export default class DataMapComponent extends DataGridComponent { static schema(...extend) { - return Component.schema({ - label: 'Data Map', - key: 'dataMap', - type: 'datamap', - clearOnHide: true, - addAnother: 'Add Another', - disableAddingRemovingRows: false, - keyBeforeValue: true, - valueComponent: { - type: 'textfield', - key: 'value', - label: 'Value', - input: true + return Component.schema( + { + label: 'Data Map', + key: 'dataMap', + type: 'datamap', + clearOnHide: true, + addAnother: 'Add Another', + disableAddingRemovingRows: false, + keyBeforeValue: true, + valueComponent: { + type: 'textfield', + key: 'value', + label: 'Value', + input: true, + }, + input: true, + validate: { + maxLength: 0, + minLength: 0, + }, }, - input: true, - validate: { - maxLength: 0, - minLength: 0 - } - }, ...extend); + ...extend, + ); } static get builderInfo() { @@ -37,13 +40,13 @@ export default class DataMapComponent extends DataGridComponent { documentation: '/userguide/form-building/data-components#data-map', showPreview: false, weight: 20, - schema: DataMapComponent.schema() + schema: DataMapComponent.schema(), }; } get schema() { const schema = super.schema; - if (this.components && (this.components.length > 0)) { + if (this.components && this.components.length > 0) { schema.valueComponent = this.components[this.components.length - 1].schema; } return _.omit(schema, 'components'); @@ -64,7 +67,7 @@ export default class DataMapComponent extends DataGridComponent { this.createRows(); this.visibleColumns = { key: true, - [this.valueKey]: true + [this.valueKey]: true, }; this.component.valueComponent.hideLabel = true; } @@ -78,10 +81,7 @@ export default class DataMapComponent extends DataGridComponent { } get dataValue() { - if ( - !this.key || - (!this.visible && this.component.clearOnHide) - ) { + if (!this.key || (!this.visible && this.component.clearOnHide)) { return this.emptyValue; } if (!this.hasValue() && this.shouldAddDefaultValue) { @@ -131,7 +131,7 @@ export default class DataMapComponent extends DataGridComponent { getComponentsContainer() { if (this.builderMode) { - return this.getComponents().map(comp => comp.component); + return this.getComponents().map((comp) => comp.component); } return super.getComponentsContainer(); @@ -139,15 +139,16 @@ export default class DataMapComponent extends DataGridComponent { get iteratableRows() { return this.rows.map((row) => { - return Object.keys(row).map(key => ({ + return Object.keys(row).map((key) => ({ components: row[key], data: row[key].dataValue, - })); + })); }); } componentContext(component) { - return this.iteratableRows[component.row].find(comp => comp.components.key === component.key).data; + return this.iteratableRows[component.row].find((comp) => comp.components.key === component.key) + .data; } hasHeader() { @@ -155,10 +156,12 @@ export default class DataMapComponent extends DataGridComponent { } hasRemoveButtons() { - return !this.component.disableAddingRemovingRows && + return ( + !this.component.disableAddingRemovingRows && !this.options.readOnly && !this.disabled && - this.fullMode; + this.fullMode + ); } getColumns() { @@ -166,9 +169,7 @@ export default class DataMapComponent extends DataGridComponent { const valueSchema = Object.assign({}, this.component.valueComponent); keySchema.hideLabel = false; valueSchema.hideLabel = false; - return this.component.keyBeforeValue ? - [keySchema, valueSchema] : - [valueSchema, keySchema]; + return this.component.keyBeforeValue ? [keySchema, valueSchema] : [valueSchema, keySchema]; } getRowKey(rowIndex) { @@ -187,10 +188,9 @@ export default class DataMapComponent extends DataGridComponent { _.each(this.rows[rowIndex], (component) => { if (component.key === '__key') { component.data = { - '__key': Object.keys(rowData)[rowIndex], + __key: Object.keys(rowData)[rowIndex], }; - } - else { + } else { component.data = rowData; } }); @@ -198,25 +198,25 @@ export default class DataMapComponent extends DataGridComponent { getValueAsString(value, options) { if (options?.email && this.visible && !this.skipInEmail && _.isObject(value)) { - let result = (` + let result = ` - `); + `; result = Object.keys(value).reduce((result, key) => { - result += (` + result += ` - `); + `; return result; }, result); - result += (` + result += `
    ${key} ${this.getView(value[key], options)}
    - `); + `; return result; } @@ -232,26 +232,26 @@ export default class DataMapComponent extends DataGridComponent { } getDataValueAsTable(value, options) { - let result = (` + let result = ` - `); + `; if (this.visible && _.isObject(value)) { Object.keys(value).forEach((key) => { - result += (` + result += ` - `); + `; }); } - result += (` + result += `
    ${key} ${this.getView(value[key], options)}
    - `); + `; return result; } @@ -267,7 +267,9 @@ export default class DataMapComponent extends DataGridComponent { options.row = `${rowIndex}`; const components = {}; - components['__key'] = this.createComponent(this.keySchema, options, { __key: this.builderMode ? this.defaultRowKey : key }); + components['__key'] = this.createComponent(this.keySchema, options, { + __key: this.builderMode ? this.defaultRowKey : key, + }); components['__key'].on('componentChange', (event) => { const dataValue = this.dataValue; const newKey = uniqueKey(dataValue, event.value); @@ -284,7 +286,11 @@ export default class DataMapComponent extends DataGridComponent { const componentOptions = this.options; componentOptions.row = options.row; - components[this.valueKey] = this.createComponent(valueComponent, componentOptions, this.dataValue); + components[this.valueKey] = this.createComponent( + valueComponent, + componentOptions, + this.dataValue, + ); return components; } @@ -334,7 +340,7 @@ export default class DataMapComponent extends DataGridComponent { } checkColumns() { - if (this.builderMode || (!this.dataValue || !Object.keys(this.dataValue).length)) { + if (this.builderMode || !this.dataValue || !Object.keys(this.dataValue).length) { return { rebuild: false, show: true }; } diff --git a/src/components/datamap/editForm/DataMap.edit.data.js b/src/components/datamap/editForm/DataMap.edit.data.js index 98c49f298a..80021b93d1 100644 --- a/src/components/datamap/editForm/DataMap.edit.data.js +++ b/src/components/datamap/editForm/DataMap.edit.data.js @@ -6,5 +6,5 @@ export default [ { key: 'defaultValue', ignore: true, - } + }, ]; diff --git a/src/components/datamap/editForm/DataMap.edit.display.js b/src/components/datamap/editForm/DataMap.edit.display.js index 2989507ad5..efb5c81665 100644 --- a/src/components/datamap/editForm/DataMap.edit.display.js +++ b/src/components/datamap/editForm/DataMap.edit.display.js @@ -1,19 +1,19 @@ export default [ { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { type: 'textfield', label: 'Label for Key column', key: 'keyLabel', - tooltip: 'Provide a label text for Key column (otherwise \'Key\' will be used)', + tooltip: "Provide a label text for Key column (otherwise 'Key' will be used)", weight: 404, - input: true + input: true, }, { type: 'checkbox', @@ -21,7 +21,7 @@ export default [ key: 'disableAddingRemovingRows', tooltip: 'Check if you want to hide Add Another button and Remove Row button', weight: 405, - input: true + input: true, }, { type: 'checkbox', @@ -29,7 +29,7 @@ export default [ key: 'keyBeforeValue', tooltip: 'Check if you would like to show the Key before the Value column.', weight: 406, - input: true + input: true, }, { type: 'textfield', @@ -41,6 +41,6 @@ export default [ input: true, customConditional(context) { return !context.data.disableAddingRemovingRows; - } - } + }, + }, ]; diff --git a/src/components/datetime/DateTime.form.js b/src/components/datetime/DateTime.form.js index 5536d60913..d99f3db5a3 100644 --- a/src/components/datetime/DateTime.form.js +++ b/src/components/datetime/DateTime.form.js @@ -10,31 +10,34 @@ import DateTimeEditValidation from './editForm/DateTime.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: DateTimeEditDisplay - }, - { - label: 'Date', - key: 'date', - weight: 1, - components: DateTimeEditDate - }, - { - label: 'Time', - key: 'time', - weight: 2, - components: DateTimeEditTime - }, - { - key: 'data', - components: DateTimeEditData - }, - { - key: 'validation', - components: DateTimeEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: DateTimeEditDisplay, + }, + { + label: 'Date', + key: 'date', + weight: 1, + components: DateTimeEditDate, + }, + { + label: 'Time', + key: 'time', + weight: 2, + components: DateTimeEditTime, + }, + { + key: 'data', + components: DateTimeEditData, + }, + { + key: 'validation', + components: DateTimeEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/datetime/DateTime.js b/src/components/datetime/DateTime.js index 0a8aad3776..5eb22406be 100644 --- a/src/components/datetime/DateTime.js +++ b/src/components/datetime/DateTime.js @@ -6,41 +6,44 @@ import Input from '../_classes/input/Input'; export default class DateTimeComponent extends Input { static schema(...extend) { - return Input.schema({ - type: 'datetime', - label: 'Date / Time', - key: 'dateTime', - format: 'yyyy-MM-dd hh:mm a', - useLocaleSettings: false, - allowInput: true, - enableDate: true, - enableTime: true, - defaultValue: '', - defaultDate: '', - displayInTimezone: 'viewer', - timezone: '', - datepickerMode: 'day', - datePicker: { - showWeeks: true, - startingDay: 0, - initDate: '', - minMode: 'day', - maxMode: 'year', - yearRows: 4, - yearColumns: 5, - minDate: null, - maxDate: null + return Input.schema( + { + type: 'datetime', + label: 'Date / Time', + key: 'dateTime', + format: 'yyyy-MM-dd hh:mm a', + useLocaleSettings: false, + allowInput: true, + enableDate: true, + enableTime: true, + defaultValue: '', + defaultDate: '', + displayInTimezone: 'viewer', + timezone: '', + datepickerMode: 'day', + datePicker: { + showWeeks: true, + startingDay: 0, + initDate: '', + minMode: 'day', + maxMode: 'year', + yearRows: 4, + yearColumns: 5, + minDate: null, + maxDate: null, + }, + timePicker: { + hourStep: 1, + minuteStep: 1, + showMeridian: true, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, + }, + customOptions: {}, }, - timePicker: { - hourStep: 1, - minuteStep: 1, - showMeridian: true, - readonlyInput: false, - mousewheel: true, - arrowkeys: true - }, - customOptions: {}, - }, ...extend); + ...extend, + ); } static get builderInfo() { @@ -50,7 +53,7 @@ export default class DateTimeComponent extends Input { icon: 'calendar', documentation: '/userguide/form-building/advanced-components#date-and-time', weight: 40, - schema: DateTimeComponent.schema() + schema: DateTimeComponent.schema(), }; } @@ -61,45 +64,58 @@ export default class DateTimeComponent extends Input { static get conditionOperatorsSettings() { return { ...super.conditionOperatorsSettings, - operators: ['isDateEqual', 'isNotDateEqual', 'isEmpty', 'isNotEmpty','dateLessThan', 'dateGreaterThan', 'dateLessThanOrEqual','dateGreaterThanOrEqual'], + operators: [ + 'isDateEqual', + 'isNotDateEqual', + 'isEmpty', + 'isNotEmpty', + 'dateLessThan', + 'dateGreaterThan', + 'dateLessThanOrEqual', + 'dateGreaterThanOrEqual', + ], valueComponent(classComp) { return { ...classComp, type: 'datetime', }; - } + }, }; } static savedValueTypes(schema) { schema = schema || {}; - return getComponentSavedTypes(schema) || [componentValueTypes.date]; + return getComponentSavedTypes(schema) || [componentValueTypes.date]; } constructor(component, options, data) { super(component, options, data); - const timezone = (this.component.timezone || this.options.timezone); + const timezone = this.component.timezone || this.options.timezone; const time24hr = !_.get(this.component, 'timePicker.showMeridian', true); // Change the format to map to the settings. if (!this.component.enableDate) { this.component.format = this.component.format.replace(/yyyy-MM-dd /g, ''); - } - else if (this.component.enableDate && !/[yMd]/.test(this.component.format) && this.builderMode) { + } else if ( + this.component.enableDate && + !/[yMd]/.test(this.component.format) && + this.builderMode + ) { this.component.format = `yyyy-MM-dd ${this.component.format}`; } if (!this.component.enableTime) { this.component.format = this.component.format.replace(/ hh:mm a$/g, ''); - } - else if (this.component.enableTime && !/[mhH]/.test(this.component.format) && this.builderMode) { + } else if ( + this.component.enableTime && + !/[mhH]/.test(this.component.format) && + this.builderMode + ) { this.component.format = `${this.component.format} hh:mm a`; - } - else if (time24hr) { + } else if (time24hr) { this.component.format = this.component.format.replace(/hh:mm a$/g, 'HH:mm'); - } - else { + } else { this.component.format = this.component.format.replace(/HH:mm$/g, 'hh:mm a'); } @@ -108,14 +124,12 @@ export default class DateTimeComponent extends Input { if (typeof customOptions === 'string') { try { customOptions = JSON.parse(customOptions); - } - catch (err) { + } catch (err) { console.warn(err.message); customOptions = {}; } } - this.component.widget = { type: 'calendar', timezone, @@ -139,7 +153,6 @@ export default class DateTimeComponent extends Input { maxDate: _.get(this.component, 'datePicker.maxDate'), ...customOptions, }; - } get defaultSchema() { @@ -164,7 +177,7 @@ export default class DateTimeComponent extends Input { } isEmpty(value = this.dataValue) { - if (value && (value.toString() === 'Invalid Date')) { + if (value && value.toString() === 'Invalid Date') { return true; } return super.isEmpty(value); @@ -176,8 +189,10 @@ export default class DateTimeComponent extends Input { } isEqual(valueA, valueB = this.dataValue) { - return (this.isEmpty(valueA) && this.isEmpty(valueB)) - || moment.utc(valueA).format(this.momentFormat) === moment.utc(valueB).format(this.momentFormat); + return ( + (this.isEmpty(valueA) && this.isEmpty(valueB)) || + moment.utc(valueA).format(this.momentFormat) === moment.utc(valueB).format(this.momentFormat) + ); } createWrapper() { @@ -201,13 +216,15 @@ export default class DateTimeComponent extends Input { const timezone = this.timezone; if (value && !this.attached && timezone) { if (Array.isArray(value) && this.component.multiple) { - return value.map(item => _.trim(FormioUtils.momentDate(item, format, timezone).format(format))).join(', '); + return value + .map((item) => _.trim(FormioUtils.momentDate(item, format, timezone).format(format))) + .join(', '); } return _.trim(FormioUtils.momentDate(value, format, timezone).format(format)); } if (Array.isArray(value) && this.component.multiple) { - return value.map(item => _.trim(moment(item).format(format))).join(', '); + return value.map((item) => _.trim(moment(item).format(format))).join(', '); } return (value ? _.trim(moment(value).format(format)) : value) || ''; } diff --git a/src/components/datetime/editForm/DateTime.edit.data.js b/src/components/datetime/editForm/DateTime.edit.data.js index aea049b180..3cc7674098 100644 --- a/src/components/datetime/editForm/DateTime.edit.data.js +++ b/src/components/datetime/editForm/DateTime.edit.data.js @@ -5,9 +5,11 @@ export default [ key: 'defaultDate', label: 'Default Date', placeholder: 'moment()', - tooltip: 'You can use Moment.js functions to set the default value to a specific date. For example: \n \n moment().subtract(10, \'days\')', - weight: 6 - },{ + tooltip: + "You can use Moment.js functions to set the default value to a specific date. For example: \n \n moment().subtract(10, 'days')", + weight: 6, + }, + { type: 'textarea', as: 'json', editor: 'ace', diff --git a/src/components/datetime/editForm/DateTime.edit.date.js b/src/components/datetime/editForm/DateTime.edit.date.js index 9f8d61eed4..86d3956f24 100644 --- a/src/components/datetime/editForm/DateTime.edit.date.js +++ b/src/components/datetime/editForm/DateTime.edit.date.js @@ -8,7 +8,7 @@ export default [ key: 'enableDate', label: 'Enable Date Input', weight: 0, - tooltip: 'Enables date input for this field.' + tooltip: 'Enables date input for this field.', }, { type: 'tags', @@ -18,9 +18,10 @@ export default [ placeholder: '(yyyy-MM-dd) or (yyyy-MM-dd - yyyy-MM-dd)', tooltip: 'Add dates that you want to blacklist. For example: \n \n 2025-02-21', validate: { - custom: 'if (_.isEmpty(input)) {\n return true;\n}\nconst dates = _.isArray(input) ?\ninput : input.split(component.delimeter);\nconst isValid = _.every(dates, (data) => \n !!data.match(/\\d{4}-\\d{2}-\\d{2}/g));\nvalid = isValid || \'Invalid date\';' + custom: + "if (_.isEmpty(input)) {\n return true;\n}\nconst dates = _.isArray(input) ?\ninput : input.split(component.delimeter);\nconst isValid = _.every(dates, (data) => \n !!data.match(/\\d{4}-\\d{2}-\\d{2}/g));\nvalid = isValid || 'Invalid date';", }, - weight: 21 + weight: 21, }, { type: 'panel', @@ -40,17 +41,19 @@ export default [ editor: 'ace', key: 'datePicker.disableFunction', label: 'Disabling dates by a function', - description: 'For more information check out the Docs', - weight: 22 + description: + 'For more information check out the Docs', + weight: 22, }, { type: 'htmlelement', tag: 'div', - content: '

    Example

    ' + + content: + '

    Example

    ' + `
    // Disable all weekends
    date.getDay() === 0 || date.getDay() === 6
    - ` - } - ] + `, + }, + ], }, { type: 'checkbox', @@ -58,7 +61,7 @@ export default [ key: 'datePicker.disableWeekends', label: 'Disable weekends', tooltip: 'Check to disable weekends', - weight: 23 + weight: 23, }, { type: 'checkbox', @@ -66,6 +69,6 @@ export default [ key: 'datePicker.disableWeekdays', label: 'Disable weekdays', tooltip: 'Check to disable weekdays', - weight: 23 - } + weight: 23, + }, ]; diff --git a/src/components/datetime/editForm/DateTime.edit.display.js b/src/components/datetime/editForm/DateTime.edit.display.js index cb727ee899..81a79ac69d 100644 --- a/src/components/datetime/editForm/DateTime.edit.display.js +++ b/src/components/datetime/editForm/DateTime.edit.display.js @@ -13,9 +13,9 @@ export default [ { label: 'of Viewer', value: 'viewer' }, { label: 'of Submission', value: 'submission' }, { label: 'of Location', value: 'location' }, - { label: 'UTC', value: 'utc' } - ] - } + { label: 'UTC', value: 'utc' }, + ], + }, }, { type: 'select', @@ -29,12 +29,12 @@ export default [ valueProperty: 'name', dataSrc: 'url', data: { - url: '{{options.cdnUrl}}/timezones.json' + url: '{{options.cdnUrl}}/timezones.json', }, template: '{{ item.label }}', conditional: { - json: { '===': [{ var: 'data.displayInTimezone' }, 'location'] } - } + json: { '===': [{ var: 'data.displayInTimezone' }, 'location'] }, + }, }, { type: 'checkbox', @@ -42,7 +42,7 @@ export default [ key: 'useLocaleSettings', label: 'Use Locale Settings', tooltip: 'Use locale settings to display date and time.', - weight: 51 + weight: 51, }, { type: 'checkbox', @@ -50,7 +50,7 @@ export default [ key: 'allowInput', label: 'Allow Manual Input', tooltip: 'Check this if you would like to allow the user to manually enter in the date.', - weight: 51 + weight: 51, }, { type: 'textfield', @@ -58,19 +58,22 @@ export default [ key: 'format', label: 'Format', placeholder: 'Format', - description: 'Use formats provided by DateParser Codes', + description: + 'Use formats provided by DateParser Codes', tooltip: 'The date format for displaying the datetime value.', - weight: 52 + weight: 52, }, { type: 'editgrid', input: true, key: 'shortcutButtons', label: 'Shortcut Buttons', - description: 'You can specify few buttons which will be shown above the calendar. Use Label to specify the name of the button and onClick to specify which date/time will be set when user clicks the button. E.g, date = new Date()', + description: + 'You can specify few buttons which will be shown above the calendar. Use Label to specify the name of the button and onClick to specify which date/time will be set when user clicks the button. E.g, date = new Date()', templates: { - header: '
    \n
    Label
    \n
    onClick
    \n
    ', - row: '
    \n
    \n {{ flattenedComponents.label.getView(row.label) }}\n
    \n
    \n {{ flattenedComponents.onClick.getView(row.onClick) }}\n
    \n {% if (!instance.disabled) { %}\n
    \n
    \n \n {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}\n \n {% } %}\n
    \n
    \n {% } %}\n
    ' + header: + '
    \n
    Label
    \n
    onClick
    \n
    ', + row: '
    \n
    \n {{ flattenedComponents.label.getView(row.label) }}\n
    \n
    \n {{ flattenedComponents.onClick.getView(row.onClick) }}\n
    \n {% if (!instance.disabled) { %}\n
    \n
    \n \n {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}\n \n {% } %}\n
    \n
    \n {% } %}\n
    ', }, components: [ { @@ -79,8 +82,8 @@ export default [ type: 'textfield', input: true, validate: { - required: true - } + required: true, + }, }, { label: 'onClick', @@ -89,10 +92,10 @@ export default [ editor: 'ace', input: true, validate: { - required: true - } - } + required: true, + }, + }, ], - defaultValue: [] - } + defaultValue: [], + }, ]; diff --git a/src/components/datetime/editForm/DateTime.edit.time.js b/src/components/datetime/editForm/DateTime.edit.time.js index bbd1b6ceb9..d499139f73 100644 --- a/src/components/datetime/editForm/DateTime.edit.time.js +++ b/src/components/datetime/editForm/DateTime.edit.time.js @@ -5,7 +5,7 @@ export default [ key: 'enableTime', label: 'Enable Time Input', tooltip: 'Enables time input for this field.', - weight: 0 + weight: 0, }, { type: 'number', @@ -13,7 +13,7 @@ export default [ key: 'timePicker.hourStep', label: 'Hour Step Size', tooltip: 'The number of hours to increment/decrement in the time picker.', - weight: 10 + weight: 10, }, { type: 'number', @@ -21,7 +21,7 @@ export default [ key: 'timePicker.minuteStep', label: 'Minute Step Size', tooltip: 'The number of minutes to increment/decrement in the time picker.', - weight: 20 + weight: 20, }, { type: 'checkbox', @@ -29,6 +29,6 @@ export default [ key: 'timePicker.showMeridian', label: '12 Hour Time (AM/PM)', tooltip: 'Display time in 12 hour time with AM/PM.', - weight: 30 - } + weight: 30, + }, ]; diff --git a/src/components/datetime/editForm/DateTime.edit.validation.js b/src/components/datetime/editForm/DateTime.edit.validation.js index 775f3a4ae9..a2abdf98e3 100644 --- a/src/components/datetime/editForm/DateTime.edit.validation.js +++ b/src/components/datetime/editForm/DateTime.edit.validation.js @@ -6,7 +6,7 @@ export default [ label: 'Use Input to add moment.js for minDate', persistent: false, weight: 10, - tooltip: 'Enables to use input for moment functions instead of calendar.' + tooltip: 'Enables to use input for moment functions instead of calendar.', }, { type: 'datetime', @@ -17,7 +17,11 @@ export default [ weight: 10, tooltip: 'Enables to use calendar to set date.', customConditional({ data, component }) { - if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) { + if ( + component.datePicker && + component.datePicker.minDate && + component.datePicker.minDate.indexOf('moment') !== -1 + ) { return false; } return !data.enableMinDateInput; @@ -31,9 +35,14 @@ export default [ skipMerge: true, label: 'Minimum Date', weight: 10, - tooltip: 'The minimum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().subtract(10, \'days\')', + tooltip: + "The minimum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().subtract(10, 'days')", customConditional({ data, component }) { - if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) { + if ( + component.datePicker && + component.datePicker.minDate && + component.datePicker.minDate.indexOf('moment') !== -1 + ) { return true; } return data.enableMinDateInput; @@ -46,7 +55,7 @@ export default [ label: 'Use Input to add moment.js for maxDate', persistent: false, weight: 20, - tooltip: 'Enables to use input for moment functions instead of calendar.' + tooltip: 'Enables to use input for moment functions instead of calendar.', }, { type: 'datetime', @@ -57,7 +66,11 @@ export default [ weight: 20, tooltip: 'Enables to use calendar to set date.', customConditional({ data, component }) { - if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) { + if ( + component.datePicker && + component.datePicker.maxDate && + component.datePicker.maxDate.indexOf('moment') !== -1 + ) { return false; } return !data.enableMaxDateInput; @@ -70,13 +83,18 @@ export default [ key: 'datePicker.maxDate', skipMerge: true, label: 'Maximum Date', - tooltip: 'The maximum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().add(10, \'days\')', + tooltip: + "The maximum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().add(10, 'days')", weight: 20, customConditional({ data, component }) { - if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) { + if ( + component.datePicker && + component.datePicker.maxDate && + component.datePicker.maxDate.indexOf('moment') !== -1 + ) { return true; } return data.enableMaxDateInput; }, - } + }, ]; diff --git a/src/components/day/Day.form.js b/src/components/day/Day.form.js index cb7de71193..1bb82ddcd9 100644 --- a/src/components/day/Day.form.js +++ b/src/components/day/Day.form.js @@ -11,37 +11,40 @@ import DayEditYear from './editForm/Day.edit.year'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: DayEditDisplay - }, - { - key: 'data', - components: DayEditData, - }, - { - key: 'validation', - components: DayEditValidation - }, - { - key: 'day', - label: 'Day', - weight: 3, - components: DayEditDay - }, - { - key: 'month', - label: 'Month', - weight: 3, - components: DayEditMonth - }, - { - key: 'year', - label: 'Year', - weight: 3, - components: DayEditYear - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: DayEditDisplay, + }, + { + key: 'data', + components: DayEditData, + }, + { + key: 'validation', + components: DayEditValidation, + }, + { + key: 'day', + label: 'Day', + weight: 3, + components: DayEditDay, + }, + { + key: 'month', + label: 'Month', + weight: 3, + components: DayEditMonth, + }, + { + key: 'year', + label: 'Year', + weight: 3, + components: DayEditYear, + }, + ], + ...extend, + ); } diff --git a/src/components/day/Day.js b/src/components/day/Day.js index 5e5ed62727..5815b5228b 100644 --- a/src/components/day/Day.js +++ b/src/components/day/Day.js @@ -1,34 +1,42 @@ import _ from 'lodash'; import moment from 'moment'; import Field from '../_classes/field/Field'; -import { boolValue, componentValueTypes, getComponentSavedTypes, getLocaleDateFormatInfo } from '../../utils/utils'; +import { + boolValue, + componentValueTypes, + getComponentSavedTypes, + getLocaleDateFormatInfo, +} from '../../utils/utils'; export default class DayComponent extends Field { static schema(...extend) { - return Field.schema({ - type: 'day', - label: 'Day', - key: 'day', - fields: { - day: { - type: 'number', - placeholder: '', - required: false - }, - month: { - type: 'select', - placeholder: '', - required: false + return Field.schema( + { + type: 'day', + label: 'Day', + key: 'day', + fields: { + day: { + type: 'number', + placeholder: '', + required: false, + }, + month: { + type: 'select', + placeholder: '', + required: false, + }, + year: { + type: 'number', + placeholder: '', + required: false, + }, }, - year: { - type: 'number', - placeholder: '', - required: false - } + dayFirst: false, + defaultValue: '', }, - dayFirst: false, - defaultValue: '' - }, ...extend); + ...extend, + ); } static get builderInfo() { @@ -38,14 +46,23 @@ export default class DayComponent extends Field { icon: 'calendar', documentation: '/userguide/form-building/advanced-components#day', weight: 50, - schema: DayComponent.schema() + schema: DayComponent.schema(), }; } static get conditionOperatorsSettings() { return { ...super.conditionOperatorsSettings, - operators: ['isDateEqual', 'isNotDateEqual', 'isEmpty', 'isNotEmpty','dateLessThan', 'dateGreaterThan', 'dateLessThanOrEqual','dateGreaterThanOrEqual'], + operators: [ + 'isDateEqual', + 'isNotDateEqual', + 'isEmpty', + 'isNotEmpty', + 'dateLessThan', + 'dateGreaterThan', + 'dateLessThanOrEqual', + 'dateGreaterThanOrEqual', + ], }; } @@ -125,7 +142,7 @@ export default class DayComponent extends Field { isEmpty(value = this.dataValue) { if (value === DayComponent.oldEmptyValue) { - return true + return true; } return super.isEmpty(value); } @@ -155,7 +172,7 @@ export default class DayComponent extends Field { step: 1, min, max, - } + }, }; } @@ -168,8 +185,8 @@ export default class DayComponent extends Field { id: `${this.component.key}-${name}`, class: 'form-control', name, - lang: this.options.language - } + lang: this.options.language, + }, }; } @@ -177,13 +194,11 @@ export default class DayComponent extends Field { if (this._days) { return this._days; } - this._days = [ - { value: '', label: _.get(this.component, 'fields.day.placeholder', '') } - ]; + this._days = [{ value: '', label: _.get(this.component, 'fields.day.placeholder', '') }]; for (let x = 1; x <= 31; x++) { this._days.push({ value: x, - label: x.toString() + label: x.toString(), }); } return this._days; @@ -196,7 +211,9 @@ export default class DayComponent extends Field { this._months = [ { value: '', - label: _.get(this.component, 'fields.month.placeholder') || (this.hideInputLabels ? this.t('Month') : '') + label: + _.get(this.component, 'fields.month.placeholder') || + (this.hideInputLabels ? this.t('Month') : ''), }, { value: 1, label: 'January' }, { value: 2, label: 'February' }, @@ -209,7 +226,7 @@ export default class DayComponent extends Field { { value: 9, label: 'September' }, { value: 10, label: 'October' }, { value: 11, label: 'November' }, - { value: 12, label: 'December' } + { value: 12, label: 'December' }, ]; return this._months; } @@ -218,15 +235,13 @@ export default class DayComponent extends Field { if (this._years) { return this._years; } - this._years = [ - { value: '', label: _.get(this.component, 'fields.year.placeholder', '') } - ]; + this._years = [{ value: '', label: _.get(this.component, 'fields.year.placeholder', '') }]; const minYears = _.get(this.component, 'fields.year.minYear', 1900) || 1900; const maxYears = _.get(this.component, 'fields.year.maxYear', 2030) || 2030; for (let x = minYears; x <= maxYears; x++) { this._years.push({ value: x, - label: x.toString() + label: x.toString(), }); } return this._years; @@ -261,35 +276,39 @@ export default class DayComponent extends Field { return super.render(this.renderTemplate('input')); } - return super.render(this.renderTemplate('day', { - dayFirst: this.dayFirst, - showDay: this.showDay, - showMonth: this.showMonth, - showYear: this.showYear, - day: this.renderField('day'), - month: this.renderField('month'), - year: this.renderField('year'), - })); + return super.render( + this.renderTemplate('day', { + dayFirst: this.dayFirst, + showDay: this.showDay, + showMonth: this.showMonth, + showYear: this.showYear, + day: this.renderField('day'), + month: this.renderField('month'), + year: this.renderField('year'), + }), + ); } renderField(name) { if (this.component.fields[name].type === 'select') { return this.renderTemplate('select', { input: this.selectDefinition(name), - selectOptions: this[`${name}s`].reduce((html, option) => - html + this.renderTemplate('selectOption', { - option, - selected: false, - attrs: {} - }), '' + selectOptions: this[`${name}s`].reduce( + (html, option) => + html + + this.renderTemplate('selectOption', { + option, + selected: false, + attrs: {}, + }), + '', ), }); - } - else { + } else { return this.renderTemplate('input', { prefix: this.prefix, suffix: this.suffix, - input: this.inputDefinition(name) + input: this.inputDefinition(name), }); } } @@ -301,8 +320,7 @@ export default class DayComponent extends Field { const updateValueAndSaveFocus = (element, name) => () => { try { this.saveCaretPosition(element, name); - } - catch (err) { + } catch (err) { console.warn('An error occurred while trying to save caret position', err); } this.updateValue(null, { @@ -317,16 +335,13 @@ export default class DayComponent extends Field { if (this.refs.input) { this.refs.input.forEach((input) => this.setDisabled(input, true)); } - } - else { + } else { this.addEventListener(this.refs.day, 'input', updateValueAndSaveFocus(this.refs.day, 'day')); // TODO: Need to rework this to work with day select as well. // Change day max input when month changes. this.addEventListener(this.refs.month, 'input', () => { - const maxDay = this.refs.year ? parseInt( - new Date(this.refs.year.value, this.refs.month.value, 0).getDate(), - 10 - ) + const maxDay = this.refs.year + ? parseInt(new Date(this.refs.year.value, this.refs.month.value, 0).getDate(), 10) : ''; const day = this.getFieldValue('day'); if (!this.component.fields.day.hide && maxDay) { @@ -337,13 +352,21 @@ export default class DayComponent extends Field { } updateValueAndSaveFocus(this.refs.month, 'month')(); }); - this.addEventListener(this.refs.year, 'input', updateValueAndSaveFocus(this.refs.year, 'year')); - this.addEventListener(this.refs.input, this.info.changeEvent, () => this.updateValue(null, { - modified: true - })); - [this.refs.day, this.refs.month, this.refs.year].filter((element) => !!element).forEach((element) => { - super.addFocusBlurEvents(element); - }); + this.addEventListener( + this.refs.year, + 'input', + updateValueAndSaveFocus(this.refs.year, 'year'), + ); + this.addEventListener(this.refs.input, this.info.changeEvent, () => + this.updateValue(null, { + modified: true, + }), + ); + [this.refs.day, this.refs.month, this.refs.year] + .filter((element) => !!element) + .forEach((element) => { + super.addFocusBlurEvents(element); + }); } this.setValue(this.dataValue); // Force the disabled state with getters and setters. @@ -380,8 +403,7 @@ export default class DayComponent extends Field { this.refs.year.setAttribute('disabled', 'disabled'); this.refs.month.setAttribute('disabled', 'disabled'); this.refs.day.setAttribute('disabled', 'disabled'); - } - else { + } else { this.refs.year.removeAttribute('disabled'); this.refs.month.removeAttribute('disabled'); this.refs.day.removeAttribute('disabled'); @@ -405,24 +427,30 @@ export default class DayComponent extends Field { let defaultDay = ''; let defaultMonth = ''; let defaultYear = ''; - if(defaultValue) { - const hasHiddenFields = defaultValue.length !==3; - defaultDay = hasHiddenFields ? this.getDayWithHiddenFields(defaultValue).day : defaultValue[DAY]; - defaultMonth = hasHiddenFields ? this.getDayWithHiddenFields(defaultValue).month : defaultValue[MONTH]; - defaultYear = hasHiddenFields ? this.getDayWithHiddenFields(defaultValue).year : defaultValue[YEAR]; - } - - if(this.options.building && defaultValue.length ===3) { + if (defaultValue) { + const hasHiddenFields = defaultValue.length !== 3; + defaultDay = hasHiddenFields + ? this.getDayWithHiddenFields(defaultValue).day + : defaultValue[DAY]; + defaultMonth = hasHiddenFields + ? this.getDayWithHiddenFields(defaultValue).month + : defaultValue[MONTH]; + defaultYear = hasHiddenFields + ? this.getDayWithHiddenFields(defaultValue).year + : defaultValue[YEAR]; + } + + if (this.options.building && defaultValue.length === 3) { return this.component.defaultValue; } const getNextPart = (shouldTake, defaultValue) => { - // Only push the part if it's not an empty string + // Only push the part if it's not an empty string const part = shouldTake ? valueParts.shift() : defaultValue; if (part !== '') { dateParts.push(part); } - } + }; if (this.dayFirst) { getNextPart(this.showDay, defaultDay); @@ -457,8 +485,7 @@ export default class DayComponent extends Field { day = this.getDayWithHiddenFields(parts).day; month = this.getDayWithHiddenFields(parts).month; year = this.getDayWithHiddenFields(parts).year; - } - else { + } else { if (this.component.dayFirst) { day = parts.shift(); } @@ -500,7 +527,7 @@ export default class DayComponent extends Field { month: _.isNull(MONTH) ? '' : parts[MONTH], day: _.isNull(DAY) ? '' : parts[DAY], year: _.isNull(YEAR) ? '' : parts[YEAR], - } + }; } getFieldValue(name) { @@ -520,7 +547,7 @@ export default class DayComponent extends Field { } val = parseInt(val, 10); - return (!_.isNaN(val) && _.isNumber(val)) ? val : 0; + return !_.isNaN(val) && _.isNumber(val) ? val : 0; } get parts() { @@ -549,8 +576,7 @@ export default class DayComponent extends Field { if (this.showYear) { format += 'YYYY'; return format; - } - else { + } else { // Trim off the "/" from the end of the format string. return format.length ? format.substring(0, format.length - 1) : format; } @@ -562,41 +588,58 @@ export default class DayComponent extends Field { * @returns {null|string} - The date string. */ getDate(value) { - let defaults = [], day, month, year; + let defaults = [], + day, + month, + year; // Map positions to identifiers to get default values for each part of day const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2]; const defaultValue = value || this.component.defaultValue; if (defaultValue) { - defaults = defaultValue.split('/').map(x => parseInt(x, 10)); + defaults = defaultValue.split('/').map((x) => parseInt(x, 10)); } const isModalEditClosed = this.component.modalEdit && !this.componentModal.isOpened; if (this.showDay && this.refs.day) { - day = (this.refs.day.value === '' && !isModalEditClosed) ? '' : parseInt(this.refs.day.value, 10); + day = + this.refs.day.value === '' && !isModalEditClosed ? '' : parseInt(this.refs.day.value, 10); } if (day === undefined || _.isNaN(day) || value) { - day = (defaults.length !== 3) - ? this.getDayWithHiddenFields(defaults).day - : (defaults[DAY] && !_.isNaN(defaults[DAY]) ? defaults[DAY] : 0); + day = + defaults.length !== 3 + ? this.getDayWithHiddenFields(defaults).day + : defaults[DAY] && !_.isNaN(defaults[DAY]) + ? defaults[DAY] + : 0; } if (this.showMonth && this.refs.month) { // Months are 0 indexed. - month = (this.refs.month.value === '' && !isModalEditClosed) ? '' : parseInt(this.refs.month.value, 10); + month = + this.refs.month.value === '' && !isModalEditClosed + ? '' + : parseInt(this.refs.month.value, 10); } if (month === undefined || _.isNaN(month) || value) { - month = (defaults.length !== 3) - ? this.getDayWithHiddenFields(defaults).month - : (defaults[MONTH] && !_.isNaN(defaults[MONTH]) ? defaults[MONTH] : 0); + month = + defaults.length !== 3 + ? this.getDayWithHiddenFields(defaults).month + : defaults[MONTH] && !_.isNaN(defaults[MONTH]) + ? defaults[MONTH] + : 0; } if (this.showYear && this.refs.year) { - year = (this.refs.year.value === '' && !isModalEditClosed) ? '' : parseInt(this.refs.year.value); + year = + this.refs.year.value === '' && !isModalEditClosed ? '' : parseInt(this.refs.year.value); } if (year === undefined || _.isNaN(year) || value) { - year = (defaults.length !== 3) - ? this.getDayWithHiddenFields(defaults).year - : (defaults[YEAR] && !_.isNaN(defaults[YEAR]) ? defaults[YEAR] : 0); + year = + defaults.length !== 3 + ? this.getDayWithHiddenFields(defaults).year + : defaults[YEAR] && !_.isNaN(defaults[YEAR]) + ? defaults[YEAR] + : 0; } let result; @@ -616,10 +659,9 @@ export default class DayComponent extends Field { year = this.showYear ? year.toString().padStart(4, 0) : ''; if (this.component.dayFirst) { - result = `${day}${this.showDay && this.showMonth || this.showDay && this.showYear ? '/' : ''}${month}${this.showMonth && this.showYear ? '/' : ''}${year}`; - } - else { - result = `${month}${this.showDay && this.showMonth || this.showMonth && this.showYear ? '/' : ''}${day}${this.showDay && this.showYear ? '/' : ''}${year}`; + result = `${day}${(this.showDay && this.showMonth) || (this.showDay && this.showYear) ? '/' : ''}${month}${this.showMonth && this.showYear ? '/' : ''}${year}`; + } else { + result = `${month}${(this.showDay && this.showMonth) || (this.showMonth && this.showYear) ? '/' : ''}${day}${this.showDay && this.showYear ? '/' : ''}${year}`; } return result; @@ -643,7 +685,7 @@ export default class DayComponent extends Field { getValue() { const result = super.getValue(); - return (!result) ? this.dataValue : result; + return !result ? this.dataValue : result; } /** @@ -656,8 +698,7 @@ export default class DayComponent extends Field { if (date) { this.refs.input[index].value = date; return this.refs.input[index].value; - } - else { + } else { this.refs.input[index].value = ''; return null; } @@ -678,14 +719,17 @@ export default class DayComponent extends Field { focus(field) { if (field && typeof field === 'string' && this.refs[field]) { this.refs[field].focus(); - } - else if (this.dayFirst && this.showDay || !this.dayFirst && !this.showMonth && this.showDay) { + } else if ( + (this.dayFirst && this.showDay) || + (!this.dayFirst && !this.showMonth && this.showDay) + ) { this.refs.day?.focus(); - } - else if (this.dayFirst && !this.showDay && this.showMonth || !this.dayFirst && this.showMonth) { + } else if ( + (this.dayFirst && !this.showDay && this.showMonth) || + (!this.dayFirst && this.showMonth) + ) { this.refs.month?.focus(); - } - else if (!this.showDay && !this.showDay && this.showYear) { + } else if (!this.showDay && !this.showDay && this.showYear) { this.refs.year?.focus(); } } @@ -709,10 +753,10 @@ export default class DayComponent extends Field { } const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2]; const values = value.split('/'); - if(values.length < 3){ + if (values.length < 3) { return true; } - return (values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000'); + return values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000'; } getValidationFormat() { @@ -723,7 +767,7 @@ export default class DayComponent extends Field { if (this.fields?.month?.hide) { validationFormat = validationFormat.replace('MM-', ''); } - if ( this.fields?.year?.hide ) { + if (this.fields?.year?.hide) { validationFormat = validationFormat.replace('-YYYY', ''); } return validationFormat; diff --git a/src/components/day/editForm/Day.edit.day.js b/src/components/day/editForm/Day.edit.day.js index 486a855b6d..18adb9db7e 100644 --- a/src/components/day/editForm/Day.edit.day.js +++ b/src/components/day/editForm/Day.edit.day.js @@ -11,14 +11,14 @@ export default [ values: [ { label: 'Number', - value: 'number' + value: 'number', }, { label: 'Select', - value: 'select' + value: 'select', }, - ] - } + ], + }, }, { weight: 210, @@ -27,7 +27,7 @@ export default [ key: 'fields.day.placeholder', label: 'Placeholder', placeholder: 'Day Placeholder', - tooltip: 'The placeholder text that will appear when Day field is empty.' + tooltip: 'The placeholder text that will appear when Day field is empty.', }, { weight: 215, @@ -35,22 +35,24 @@ export default [ label: 'Hidden', tooltip: 'Hide the Day part of the component.', key: 'fields.day.hide', - onChange: ({data}) => { + onChange: ({ data }) => { if (data.defaultValue) { const defaultValueParts = data.defaultValue.split('/'); - if (!data.fields.day.hide && defaultValueParts.length !==3) { + if (!data.fields.day.hide && defaultValueParts.length !== 3) { const newDefaultValue = ['00']; if (!data.fields.month.hide) { - data.dayFirst ? newDefaultValue.push(defaultValueParts[0]) : newDefaultValue.unshift(defaultValueParts[0]) + data.dayFirst + ? newDefaultValue.push(defaultValueParts[0]) + : newDefaultValue.unshift(defaultValueParts[0]); } if (!data.fields.year.hide) { - newDefaultValue.push(defaultValueParts[1]) + newDefaultValue.push(defaultValueParts[1]); } _.set(data, 'defaultValue', newDefaultValue.join('/')); } } }, - input: true + input: true, }, { weight: 214, @@ -58,6 +60,6 @@ export default [ label: 'Day First', tooltip: 'Display the Day field before the Month field.', key: 'dayFirst', - input: true + input: true, }, ]; diff --git a/src/components/day/editForm/Day.edit.display.js b/src/components/day/editForm/Day.edit.display.js index 6b4d10a6b9..c924f5dfa4 100644 --- a/src/components/day/editForm/Day.edit.display.js +++ b/src/components/day/editForm/Day.edit.display.js @@ -1,15 +1,16 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { weight: 15, type: 'checkbox', label: 'Hide Input Labels', - tooltip: 'Hide the labels of component inputs. This allows you to show the labels in the form builder, but not when it is rendered.', + tooltip: + 'Hide the labels of component inputs. This allows you to show the labels in the form builder, but not when it is rendered.', key: 'hideInputLabels', - input: true + input: true, }, { type: 'select', @@ -25,13 +26,13 @@ export default [ { label: 'Top', value: 'top' }, { label: 'Left', value: 'left' }, { label: 'Right', value: 'right' }, - { label: 'Bottom', value: 'bottom' } - ] - } + { label: 'Bottom', value: 'bottom' }, + ], + }, }, { key: 'placeholder', - ignore: true + ignore: true, }, { weight: 213, @@ -39,6 +40,6 @@ export default [ label: 'Use Locale Settings', tooltip: 'Use locale settings to display day.', key: 'useLocaleSettings', - input: true + input: true, }, ]; diff --git a/src/components/day/editForm/Day.edit.month.js b/src/components/day/editForm/Day.edit.month.js index f4cff8b62d..22f604c032 100644 --- a/src/components/day/editForm/Day.edit.month.js +++ b/src/components/day/editForm/Day.edit.month.js @@ -11,14 +11,14 @@ export default [ values: [ { label: 'Number', - value: 'number' + value: 'number', }, { label: 'Select', - value: 'select' + value: 'select', }, - ] - } + ], + }, }, { weight: 210, @@ -27,7 +27,7 @@ export default [ key: 'fields.month.placeholder', label: 'Placeholder', placeholder: 'Month Placeholder', - tooltip: 'The placeholder text that will appear when Month field is empty.' + tooltip: 'The placeholder text that will appear when Month field is empty.', }, { weight: 215, @@ -35,21 +35,23 @@ export default [ label: 'Hidden', tooltip: 'Hide the Month part of the component.', key: 'fields.month.hide', - onChange: ({data}) => { + onChange: ({ data }) => { if (data.defaultValue) { const defaultValueParts = data.defaultValue.split('/'); - if (!data.fields.month.hide && defaultValueParts.length !==3) { + if (!data.fields.month.hide && defaultValueParts.length !== 3) { const newDefaultValue = ['00']; if (!data.fields.day.hide) { - data.dayFirst ? newDefaultValue.unshift(defaultValueParts[0]) : newDefaultValue.push(defaultValueParts[0]) + data.dayFirst + ? newDefaultValue.unshift(defaultValueParts[0]) + : newDefaultValue.push(defaultValueParts[0]); } if (!data.fields.year.hide) { - newDefaultValue.push(defaultValueParts[1]) + newDefaultValue.push(defaultValueParts[1]); } _.set(data, 'defaultValue', newDefaultValue.join('/')); } } }, - input: true + input: true, }, ]; diff --git a/src/components/day/editForm/Day.edit.validation.js b/src/components/day/editForm/Day.edit.validation.js index 81537a4b96..d0527e229d 100644 --- a/src/components/day/editForm/Day.edit.validation.js +++ b/src/components/day/editForm/Day.edit.validation.js @@ -1,11 +1,11 @@ export default [ { key: 'validate.required', - ignore: true + ignore: true, }, { key: 'validate.unique', - ignore: true + ignore: true, }, { weight: 0, @@ -13,7 +13,7 @@ export default [ label: 'Require Day', tooltip: 'A required field must be filled in before the form can be submitted.', key: 'fields.day.required', - input: true + input: true, }, { weight: 10, @@ -21,7 +21,7 @@ export default [ label: 'Require Month', tooltip: 'A required field must be filled in before the form can be submitted.', key: 'fields.month.required', - input: true + input: true, }, { weight: 20, @@ -29,14 +29,15 @@ export default [ label: 'Require Year', tooltip: 'A required field must be filled in before the form can be submitted.', key: 'fields.year.required', - input: true + input: true, }, { weight: 40, type: 'textfield', label: 'Minimum Day', placeholder: 'yyyy-MM-dd', - tooltip: 'A minimum date that can be set. You can also use Moment.js functions. For example: \n \n moment().subtract(10, \'days\')', + tooltip: + "A minimum date that can be set. You can also use Moment.js functions. For example: \n \n moment().subtract(10, 'days')", key: 'minDate', input: true, }, @@ -45,7 +46,8 @@ export default [ type: 'textfield', label: 'Maximum Day', placeholder: 'yyyy-MM-dd', - tooltip: 'A maximum day that can be set. You can also use Moment.js functions. For example: \n \n moment().add(10, \'days\')', + tooltip: + "A maximum day that can be set. You can also use Moment.js functions. For example: \n \n moment().add(10, 'days')", key: 'maxDate', input: true, }, diff --git a/src/components/day/editForm/Day.edit.year.js b/src/components/day/editForm/Day.edit.year.js index 38579a086c..7adbdb2215 100644 --- a/src/components/day/editForm/Day.edit.year.js +++ b/src/components/day/editForm/Day.edit.year.js @@ -11,14 +11,14 @@ export default [ values: [ { label: 'Number', - value: 'number' + value: 'number', }, { label: 'Select', - value: 'select' + value: 'select', }, - ] - } + ], + }, }, { weight: 203, @@ -27,7 +27,7 @@ export default [ key: 'fields.year.minYear', label: 'Minimum Year', placeholder: '1900', - tooltip: 'The minimum year that can be entered.' + tooltip: 'The minimum year that can be entered.', }, { weight: 204, @@ -36,7 +36,7 @@ export default [ key: 'fields.year.maxYear', label: 'Maximum Year', placeholder: '2030', - tooltip: 'The maximum year that can be entered.' + tooltip: 'The maximum year that can be entered.', }, { weight: 210, @@ -45,7 +45,7 @@ export default [ key: 'fields.year.placeholder', label: 'Placeholder', placeholder: 'Year Placeholder', - tooltip: 'The placeholder text that will appear when Year field is empty.' + tooltip: 'The placeholder text that will appear when Year field is empty.', }, { weight: 215, @@ -53,15 +53,15 @@ export default [ label: 'Hidden', tooltip: 'Hide the Year part of the component.', key: 'fields.year.hide', - onChange: ({data}) => { + onChange: ({ data }) => { if (data.defaultValue) { const defaultValueParts = data.defaultValue.split('/'); - if (!data.fields.month.hide && defaultValueParts.length !==3) { - defaultValueParts.push('0000') + if (!data.fields.month.hide && defaultValueParts.length !== 3) { + defaultValueParts.push('0000'); _.set(data, 'defaultValue', defaultValueParts.join('/')); } } }, - input: true + input: true, }, ]; diff --git a/src/components/editgrid/EditGrid.form.js b/src/components/editgrid/EditGrid.form.js index b9cd131562..d54a474974 100644 --- a/src/components/editgrid/EditGrid.form.js +++ b/src/components/editgrid/EditGrid.form.js @@ -9,25 +9,28 @@ import EditGridEditValidation from './editForm/EditGrid.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - label: 'Templates', - key: 'templates', - weight: 5, - components: EditGridEditTemplates - }, - { - key: 'display', - components: EditGridEditDisplay, - }, - { - key: 'data', - components: EditGridEditData, - }, - { - key: 'validation', - components: EditGridEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + label: 'Templates', + key: 'templates', + weight: 5, + components: EditGridEditTemplates, + }, + { + key: 'display', + components: EditGridEditDisplay, + }, + { + key: 'data', + components: EditGridEditData, + }, + { + key: 'validation', + components: EditGridEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/editgrid/EditGrid.js b/src/components/editgrid/EditGrid.js index 819cf1872d..2fd84e7593 100644 --- a/src/components/editgrid/EditGrid.js +++ b/src/components/editgrid/EditGrid.js @@ -9,7 +9,7 @@ import { fastCloneDeep, Evaluator, getArrayFromComponentPath, - eachComponent + eachComponent, } from '../../utils/utils'; const EditRowState = { @@ -23,27 +23,30 @@ const EditRowState = { export default class EditGridComponent extends NestedArrayComponent { static schema(...extend) { - return NestedArrayComponent.schema({ - type: 'editgrid', - label: 'Edit Grid', - key: 'editGrid', - clearOnHide: true, - input: true, - tree: true, - removeRow: 'Cancel', - defaultOpen: false, - openWhenEmpty: false, - modal: false, - components: [], - inlineEdit: false, - templates: { - header: EditGridComponent.defaultHeaderTemplate, - row: EditGridComponent.defaultRowTemplate, - tableHeader: EditGridComponent.defaultTableHeaderTemplate, - tableRow: EditGridComponent.defaultTableRowTemplate, - footer: '', + return NestedArrayComponent.schema( + { + type: 'editgrid', + label: 'Edit Grid', + key: 'editGrid', + clearOnHide: true, + input: true, + tree: true, + removeRow: 'Cancel', + defaultOpen: false, + openWhenEmpty: false, + modal: false, + components: [], + inlineEdit: false, + templates: { + header: EditGridComponent.defaultHeaderTemplate, + row: EditGridComponent.defaultRowTemplate, + tableHeader: EditGridComponent.defaultTableHeaderTemplate, + tableRow: EditGridComponent.defaultTableRowTemplate, + footer: '', + }, }, - }, ...extend); + ...extend, + ); } static get builderInfo() { @@ -152,13 +155,10 @@ export default class EditGridComponent extends NestedArrayComponent { get rowTemplate() { let rowTemplate; if (Evaluator.noeval) { - rowTemplate = this.displayAsTable ? - templates.tableRow - : templates.row; - } - else { - rowTemplate = this.displayAsTable ? - _.get(this.component, 'templates.tableRow', this.defaultRowTemplate) + rowTemplate = this.displayAsTable ? templates.tableRow : templates.row; + } else { + rowTemplate = this.displayAsTable + ? _.get(this.component, 'templates.tableRow', this.defaultRowTemplate) : _.get(this.component, 'templates.row', this.defaultRowTemplate); } @@ -168,13 +168,10 @@ export default class EditGridComponent extends NestedArrayComponent { get headerTemplate() { let headerTemplate; if (Evaluator.noeval) { - headerTemplate = this.displayAsTable ? - templates.tableHeader - : templates.header; - } - else { - headerTemplate = this.displayAsTable ? - _.get(this.component, 'templates.tableHeader', this.defaultHeaderTemplate) + headerTemplate = this.displayAsTable ? templates.tableHeader : templates.header; + } else { + headerTemplate = this.displayAsTable + ? _.get(this.component, 'templates.tableHeader', this.defaultHeaderTemplate) : _.get(this.component, 'templates.header', this.defaultHeaderTemplate); } @@ -301,11 +298,13 @@ export default class EditGridComponent extends NestedArrayComponent { } hasRemoveButtons() { - return !this.component.disableAddingRemovingRows && + return ( + !this.component.disableAddingRemovingRows && !this.options.readOnly && !this.disabled && this.fullMode && - (this.dataValue.length > _.get(this.component, 'validate.minLength', 0)); + this.dataValue.length > _.get(this.component, 'validate.minLength', 0) + ); } init() { @@ -320,8 +319,7 @@ export default class EditGridComponent extends NestedArrayComponent { const dataObj = {}; this.editRows = []; this.createRow(dataObj, 0); - } - else { + } else { this.editRows = dataValue.map((row, rowIndex) => ({ components: this.lazyLoad ? [] : this.createRowComponents(row, rowIndex), data: row, @@ -338,17 +336,21 @@ export default class EditGridComponent extends NestedArrayComponent { this.setVariableTypeComponents(); if (this.variableTypeComponentsIndexes.length) { - _.each(this.editRows || [], (editRow, rowIndex) => this.checkRowVariableTypeComponents(editRow, rowIndex)); + _.each(this.editRows || [], (editRow, rowIndex) => + this.checkRowVariableTypeComponents(editRow, rowIndex), + ); } } checkRowVariableTypeComponents(editRow, rowIndex) { const rowComponents = editRow.components; - if (_.some(this.variableTypeComponentsIndexes, (compIndex) => { - const variableTypeComp = rowComponents[compIndex]; - return variableTypeComp.type !== variableTypeComp.component.type; - })) { + if ( + _.some(this.variableTypeComponentsIndexes, (compIndex) => { + const variableTypeComp = rowComponents[compIndex]; + return variableTypeComp.type !== variableTypeComp.component.type; + }) + ) { editRow.components = this.createRowComponents(editRow.data, rowIndex, true); } } @@ -371,7 +373,7 @@ export default class EditGridComponent extends NestedArrayComponent { isComponentVisibleInSomeRow(component) { const rows = this.editRows; const savedStates = [EditRowState.Saved, EditRowState.Editing, EditRowState.Draft]; - const savedRows = rows.filter(row => _.includes(savedStates, row.state)); + const savedRows = rows.filter((row) => _.includes(savedStates, row.state)); this.visibleInHeader = this.visibleInHeader || []; @@ -404,7 +406,10 @@ export default class EditGridComponent extends NestedArrayComponent { return isVisible; } - const isOpenRowWhenEmpty = _.get(this.component, 'openWhenEmpty') && rows.length === 1 && rows[0].state === EditRowState.New; + const isOpenRowWhenEmpty = + _.get(this.component, 'openWhenEmpty') && + rows.length === 1 && + rows[0].state === EditRowState.New; if (!_.isEmpty(rows) && _.isEmpty(savedRows) && !isOpenRowWhenEmpty) { return _.includes(this.visibleInHeader, component.key); @@ -420,8 +425,7 @@ export default class EditGridComponent extends NestedArrayComponent { isVisible = instance ? instance.visible : true; changeVisibleInHeader(component, isVisible); - } - else { + } else { isVisible = _.includes(this.visibleInHeader, component.key); } @@ -439,36 +443,40 @@ export default class EditGridComponent extends NestedArrayComponent { const t = this.t.bind(this); const templateName = this.displayAsTable ? 'editgridTable' : 'editgrid'; - return super.render(children || this.renderTemplate(templateName, { - ref: { - row: this.rowRef, - addRow: this.addRowRef, - saveRow: this.saveRowRef, - cancelRow: this.cancelRowRef, - }, - header: this.renderString(headerTemplate, { - displayValue: (component) => this.displayComponentValue(component, true), - components: this.component.components, - value: dataValue, - t - }), - footer: this.renderString(_.get(this.component, 'templates.footer'), { - components: this.component.components, - value: dataValue, - t - }), - rows: this.editRows.map(this.renderRow.bind(this)), - openRows: this.editRows.map((row) => this.isOpen(row)), - errors: this.editRows.map((row) => row.error), - hasAddButton: this.hasAddButton(), - hasRemoveButtons: this.hasRemoveButtons(), - })); + return super.render( + children || + this.renderTemplate(templateName, { + ref: { + row: this.rowRef, + addRow: this.addRowRef, + saveRow: this.saveRowRef, + cancelRow: this.cancelRowRef, + }, + header: this.renderString(headerTemplate, { + displayValue: (component) => this.displayComponentValue(component, true), + components: this.component.components, + value: dataValue, + t, + }), + footer: this.renderString(_.get(this.component, 'templates.footer'), { + components: this.component.components, + value: dataValue, + t, + }), + rows: this.editRows.map(this.renderRow.bind(this)), + openRows: this.editRows.map((row) => this.isOpen(row)), + errors: this.editRows.map((row) => row.error), + hasAddButton: this.hasAddButton(), + hasRemoveButtons: this.hasRemoveButtons(), + }), + ); } renderComponents(components) { components = components || this.getComponents(); - const children = components.map(component => component.render()); - const templateName = this.displayAsTable && this.prevHasAddButton ? 'tableComponents' : 'components'; + const children = components.map((component) => component.render()); + const templateName = + this.displayAsTable && this.prevHasAddButton ? 'tableComponents' : 'components'; return this.renderTemplate(templateName, { children, @@ -499,11 +507,14 @@ export default class EditGridComponent extends NestedArrayComponent { } if (this.isOpen(editRow)) { this.attachComponents(row, editRow.components); - this.addEventListener(this.saveRowElements[openRowCount], 'click', () => this.saveRow(rowIndex, true)); - this.addEventListener(this.cancelRowElements[openRowCount], 'click', () => this.cancelRow(rowIndex)); + this.addEventListener(this.saveRowElements[openRowCount], 'click', () => + this.saveRow(rowIndex, true), + ); + this.addEventListener(this.cancelRowElements[openRowCount], 'click', () => + this.cancelRow(rowIndex), + ); openRowCount++; - } - else { + } else { // Attach edit and remove button events. [ { @@ -518,7 +529,8 @@ export default class EditGridComponent extends NestedArrayComponent { this.editRow(rowIndex).then(() => { if (this.component.rowDrafts) { const errors = this.validateRow(editRow, false); - const shouldShowRowErrorsAlert = this.component.modal && errors.length && this.root?.submitted; + const shouldShowRowErrorsAlert = + this.component.modal && errors.length && this.root?.submitted; if (shouldShowRowErrorsAlert) { this.alert.showErrors(errors, false); editRow.alerts = true; @@ -535,29 +547,26 @@ export default class EditGridComponent extends NestedArrayComponent { let eventName = 'editGridSelectRow'; if (Array.from(row.classList).includes('selected')) { editRow.isRowSelected = true; - } - else { + } else { delete editRow.isRowSelected; eventName = 'editGridUnSelectRow'; } this.emit(eventName, { component: this.component, - data: this.dataValue[rowIndex] + data: this.dataValue[rowIndex], }); }, - } - ].forEach(({ - className, - event, - action, - }) => { + }, + ].forEach(({ className, event, action }) => { const elements = row.getElementsByClassName(className); Array.prototype.forEach.call(elements, (element) => { - if (this.options.pdf && _.intersection(element.classList, ['editRow', 'removeRow']).length) { + if ( + this.options.pdf && + _.intersection(element.classList, ['editRow', 'removeRow']).length + ) { element.style.display = 'none'; - } - else { + } else { this.addEventListener(element, event, action); } }); @@ -568,8 +577,7 @@ export default class EditGridComponent extends NestedArrayComponent { // Add open class to the element if any edit grid row is open if (openRowCount) { this.addClass(this.refs.component, `formio-component-${this.component.type}-row-open`); - } - else { + } else { this.removeClass(this.refs.component, `formio-component-${this.component.type}-row-open`); } @@ -582,8 +590,7 @@ export default class EditGridComponent extends NestedArrayComponent { Object.keys(dataValue).forEach((key) => { if (_.isObject(dataValue[key]) && !_.isNil(dataValue[key])) { Object.assign(flattened, this.flattenRowDataValue(dataValue[key])); - } - else { + } else { flattened[key] = dataValue[key]; } }); @@ -597,43 +604,44 @@ export default class EditGridComponent extends NestedArrayComponent { } displayComponentValue(component, header) { - return !!((!component.hasOwnProperty('tableView') || component.tableView) - && header ? this.isComponentVisibleInSomeRow(component) : _.includes(this.visibleInHeader, component.key)); + return !!((!component.hasOwnProperty('tableView') || component.tableView) && header + ? this.isComponentVisibleInSomeRow(component) + : _.includes(this.visibleInHeader, component.key)); } renderRow(row, rowIndex) { const dataValue = this.dataValue; if (this.isOpen(row)) { return this.renderComponents(row.components); - } - else { + } else { const flattenedComponents = this.flattenComponents(rowIndex); const rowTemplate = this.rowTemplate; - return this.renderString( - rowTemplate, - { - row: dataValue[rowIndex] || {}, - data: this.data, - rowIndex, - components: this.component.components, - flattenedComponents, - displayValue: (component) => this.displayComponentValue(component), - isVisibleInRow: (component) => this.isComponentVisibleInRow(component, flattenedComponents), - getView: (component, data) => { - const instance = flattenedComponents[component.key]; - const view = instance ? instance.getView(data || instance.dataValue) : ''; - - // If there is an html tag in view, don't allow it to be injected in template - const htmlTagRegExp = new RegExp('<(.*?)>'); - return typeof view === 'string' && view.length && !instance.component?.template && htmlTagRegExp.test(view) && instance.component?.inputFormat !== 'html' + return this.renderString(rowTemplate, { + row: dataValue[rowIndex] || {}, + data: this.data, + rowIndex, + components: this.component.components, + flattenedComponents, + displayValue: (component) => this.displayComponentValue(component), + isVisibleInRow: (component) => this.isComponentVisibleInRow(component, flattenedComponents), + getView: (component, data) => { + const instance = flattenedComponents[component.key]; + const view = instance ? instance.getView(data || instance.dataValue) : ''; + + // If there is an html tag in view, don't allow it to be injected in template + const htmlTagRegExp = new RegExp('<(.*?)>'); + return typeof view === 'string' && + view.length && + !instance.component?.template && + htmlTagRegExp.test(view) && + instance.component?.inputFormat !== 'html' ? `` : view; - }, - state: this.editRows[rowIndex].state, - t: this.t.bind(this) }, - ); + state: this.editRows[rowIndex].state, + t: this.t.bind(this), + }); } } @@ -669,7 +677,7 @@ export default class EditGridComponent extends NestedArrayComponent { return this.builderMode ? super.getComponents() : _.isNumber(rowIndex) - ? (this.editRows[rowIndex]?.components || []) + ? this.editRows[rowIndex]?.components || [] : this.editRows.reduce((result, row) => result.concat(row.components || []), []); } @@ -728,8 +736,7 @@ export default class EditGridComponent extends NestedArrayComponent { this.processRow('checkData', null, {}, editRow.data, editRow.components); if (this.component.modal) { this.addRowModal(rowIndex); - } - else { + } else { this.redraw(); } return editRow; @@ -742,7 +749,9 @@ export default class EditGridComponent extends NestedArrayComponent { const { components } = editRow; modalContent.innerHTML = this.renderComponents(components); - const dialog = this.component.modal ? this.createModal(modalContent, {}, () => this.showDialog(rowIndex)) : undefined; + const dialog = this.component.modal + ? this.createModal(modalContent, {}, () => this.showDialog(rowIndex)) + : undefined; dialog.classList.add(`editgrid-row-modal-${this.id}`); editRow.dialog = dialog; @@ -772,26 +781,31 @@ export default class EditGridComponent extends NestedArrayComponent { delete editRow.dialog; }); - dialog.refs.dialogContents.appendChild(this.ce('button', { - class: 'btn btn-primary', - onClick: () => { - // After an attempt to save, all the components inside the row should become not pristine - if (!this.component.rowDrafts) { - editRow.components.forEach((comp) => comp.setPristine(false)); - } + dialog.refs.dialogContents.appendChild( + this.ce( + 'button', + { + class: 'btn btn-primary', + onClick: () => { + // After an attempt to save, all the components inside the row should become not pristine + if (!this.component.rowDrafts) { + editRow.components.forEach((comp) => comp.setPristine(false)); + } - const errors = this.validateRow(editRow, true); - if (!errors.length || this.component.rowDrafts) { - editRow.willBeSaved = true; - dialog.close(); - this.saveRow(rowIndex, true); - } - else { - this.alert.showErrors(errors, false); - editRow.alerts = true; - } - }, - }, this.component.saveRow || 'Save')); + const errors = this.validateRow(editRow, true); + if (!errors.length || this.component.rowDrafts) { + editRow.willBeSaved = true; + dialog.close(); + this.saveRow(rowIndex, true); + } else { + this.alert.showErrors(errors, false); + editRow.alerts = true; + } + }, + }, + this.component.saveRow || 'Save', + ), + ); this.emit('editGridOpenModal', { component: this.component, @@ -804,7 +818,11 @@ export default class EditGridComponent extends NestedArrayComponent { showDialog(rowIndex) { const editRow = this.editRows[rowIndex]; - if (editRow.state === EditRowState.New ? _.isEqual(this.emptyRow, editRow.data) : _.isEqual(editRow.backup, editRow.data)) { + if ( + editRow.state === EditRowState.New + ? _.isEqual(this.emptyRow, editRow.data) + : _.isEqual(editRow.backup, editRow.data) + ) { return Promise.resolve(); } @@ -847,14 +865,15 @@ export default class EditGridComponent extends NestedArrayComponent { editRow(rowIndex) { const editRow = this.editRows[rowIndex]; - const isAlreadyEditing = editRow.state === EditRowState.Editing || editRow.state === EditRowState.New; + const isAlreadyEditing = + editRow.state === EditRowState.Editing || editRow.state === EditRowState.New; if (!editRow || isAlreadyEditing) { return Promise.resolve(); } editRow.prevState = editRow.state; editRow.state = this.options.readOnly ? EditRowState.Viewing : EditRowState.Editing; - if (this.lazyLoad && (editRow.components.length === 0)) { + if (this.lazyLoad && editRow.components.length === 0) { editRow.components = this.createRowComponents(editRow.data, rowIndex); } @@ -862,8 +881,7 @@ export default class EditGridComponent extends NestedArrayComponent { if (this.inlineEditMode) { editRow.backup = dataSnapshot; - } - else { + } else { editRow.backup = fastCloneDeep(editRow.data); editRow.data = dataSnapshot; this.restoreRowContext(editRow); @@ -968,7 +986,7 @@ export default class EditGridComponent extends NestedArrayComponent { case EditRowState.New: { const newIndex = dataValue.length; dataValue.push(editRow.data); - editRow.components.forEach(component=>component.rowIndex = newIndex); + editRow.components.forEach((component) => (component.rowIndex = newIndex)); if (rowIndex !== newIndex) { this.editRows.splice(rowIndex, 1); this.editRows.splice(newIndex, 0, editRow); @@ -982,18 +1000,23 @@ export default class EditGridComponent extends NestedArrayComponent { } } - editRow.state = this.component.rowDrafts && errors.length ? EditRowState.Draft : EditRowState.Saved; + editRow.state = + this.component.rowDrafts && errors.length ? EditRowState.Draft : EditRowState.Saved; editRow.backup = null; this.updateValue(); this.emit('editGridSaveRow', { component: this.component, row: editRow.data, - instance: this + instance: this, + }); + this.triggerChange({ + modified, + noPristineChangeOnModified: modified && this.component.rowDrafts, + isolateRow: true, }); - this.triggerChange({ modified, noPristineChangeOnModified: modified && this.component.rowDrafts, isolateRow: true }); if (this.component.rowDrafts) { - editRow.components.forEach(comp => comp.setPristine(this.pristine)); + editRow.components.forEach((comp) => comp.setPristine(this.pristine)); } this.checkValidity(null, true); this.redraw(); @@ -1058,13 +1081,17 @@ export default class EditGridComponent extends NestedArrayComponent { this.removeSubmissionMetadataRow(rowIndex); this.splice(rowIndex); this.emit('editGridDeleteRow', { - index: rowIndex + index: rowIndex, }); this.editRows.splice(rowIndex, 1); this.openWhenEmpty(); this.updateRowsComponents(rowIndex); this.updateValue(); - this.triggerChange({ modified, noPristineChangeOnModified: modified && this.component.rowDrafts, isolateRow: true }); + this.triggerChange({ + modified, + noPristineChangeOnModified: modified && this.component.rowDrafts, + isolateRow: true, + }); this.checkValidity(null, true); this.checkData(); this.redraw(); @@ -1084,7 +1111,9 @@ export default class EditGridComponent extends NestedArrayComponent { return this.component.components.map((col, colIndex) => { if (recreatePartially && currentRowComponents && this.variableTypeComponentsIndexes.length) { const currentComp = currentRowComponents[colIndex]; - const shouldRecreate = _.includes(this.variableTypeComponentsIndexes, colIndex) && currentComp?.type !== currentComp?.component?.type; + const shouldRecreate = + _.includes(this.variableTypeComponentsIndexes, colIndex) && + currentComp?.type !== currentComp?.component?.type; if (!shouldRecreate) { return currentComp; @@ -1098,10 +1127,9 @@ export default class EditGridComponent extends NestedArrayComponent { options.name += `[${rowIndex}]`; options.row = `${rowIndex}-${colIndex}`; options.onChange = (flags = {}, changed, modified) => { - if (changed.instance.root?.id && (this.root?.id !== changed.instance.root.id)) { + if (changed.instance.root?.id && this.root?.id !== changed.instance.root.id) { changed.instance.root.triggerChange(flags, changed, modified); - } - else if (!this.component.modal) { + } else if (!this.component.modal) { this.triggerRootChange(flags, changed, modified); } @@ -1112,10 +1140,16 @@ export default class EditGridComponent extends NestedArrayComponent { const editRow = this.editRows[rowIndex]; if (editRow) { - this.processRow('checkData', null, { - ...flags, - changed, - }, editRow.data, editRow.components); + this.processRow( + 'checkData', + null, + { + ...flags, + changed, + }, + editRow.data, + editRow.components, + ); this.validateRow(editRow, false); } @@ -1130,7 +1164,7 @@ export default class EditGridComponent extends NestedArrayComponent { options, row, null, - recreatePartially && currentRowComponents ? currentRowComponents[colIndex] : null + recreatePartially && currentRowComponents ? currentRowComponents[colIndex] : null, ); comp.rowIndex = rowIndex; comp.inEditGrid = true; @@ -1139,42 +1173,52 @@ export default class EditGridComponent extends NestedArrayComponent { } hasOpenRows() { - return this.editRows.some(row => this.isOpen(row)); + return this.editRows.some((row) => this.isOpen(row)); } getAttachedData(data = null) { const ourData = fastCloneDeep(data || this._data || this.rootValue); - _.set(ourData, this.key, this.editRows.map((row) => row.data)); + _.set( + ourData, + this.key, + this.editRows.map((row) => row.data), + ); return ourData; } shouldValidateDraft(editRow) { // Draft rows should be validated only when there was an attempt to submit a form - return (editRow.state === EditRowState.Draft && - !this.pristine && - !this.root?.pristine && - !this.hasOpenRows()) || - this.root?.submitted; + return ( + (editRow.state === EditRowState.Draft && + !this.pristine && + !this.root?.pristine && + !this.hasOpenRows()) || + this.root?.submitted + ); } shouldValidateRow(editRow, dirty, fromSubmission) { - return this.shouldValidateDraft(editRow) || + return ( + this.shouldValidateDraft(editRow) || editRow.state === EditRowState.New || editRow.state === EditRowState.Editing || editRow.alerts || fromSubmission || - dirty; + dirty + ); } validateRow(editRow, dirty, forceSilentCheck, fromSubmission) { editRow.errors = []; if (this.shouldValidateRow(editRow, dirty, fromSubmission)) { - const silentCheck = (this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck; + const silentCheck = + (this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck; const rootValue = fastCloneDeep(this.rootValue); const editGridValue = _.get(rootValue, this.path, []); editGridValue[editRow.rowIndex] = editRow.data; _.set(rootValue, this.path, editGridValue); - const validationProcessorProcess = (context) => this.validationProcessor(context, { dirty, silentCheck }); + const validationProcessorProcess = (context) => + this.validationProcessor(context, { dirty, silentCheck }); const errors = processSync({ components: fastCloneDeep(this.component.components).map((component) => { component.parentPath = `${this.path}[${editRow.rowIndex}]`; @@ -1188,33 +1232,39 @@ export default class EditGridComponent extends NestedArrayComponent { processors: [ { process: validationProcessorProcess, - processSync: validationProcessorProcess - } - ] + processSync: validationProcessorProcess, + }, + ], }).errors; - editRow.errors = (this.component.modal || this.component.rowDrafts) - ? errors - : errors.filter((err) => _.find(this.visibleErrors, ['component.id', err.component.id])); + editRow.errors = + this.component.modal || this.component.rowDrafts + ? errors + : errors.filter((err) => _.find(this.visibleErrors, ['component.id', err.component.id])); } // TODO: this is essentially running its own custom validation and should be moved into a validation rule if (this.component.validate && this.component.validate.row) { - const valid = this.evaluate(this.component.validate.row, { - valid: (editRow.length === 0), - row: editRow.data - }, 'valid', true); + const valid = this.evaluate( + this.component.validate.row, + { + valid: editRow.length === 0, + row: editRow.data, + }, + 'valid', + true, + ); if (valid.toString() !== 'true') { editRow.errors.push({ type: 'error', rowError: true, - message: valid.toString() + message: valid.toString(), }); } if (valid === null) { editRow.errors.push({ type: 'error', - message: `Invalid row validation for ${this.key}` + message: `Invalid row validation for ${this.key}`, }); } } @@ -1232,8 +1282,7 @@ export default class EditGridComponent extends NestedArrayComponent { if (errors.length) { this.alert.showErrors(errors, false); editRow.alerts = true; - } - else { + } else { this.alert.clear(); this.alert = null; } @@ -1253,7 +1302,7 @@ export default class EditGridComponent extends NestedArrayComponent { const superValid = super.checkComponentValidity(data, dirty, row, options, errors); // If super tells us that component invalid and there is no need to update alerts, just return false - if (!superValid && (!this.alert && !this.hasOpenRows())) { + if (!superValid && !this.alert && !this.hasOpenRows()) { return false; } @@ -1271,29 +1320,37 @@ export default class EditGridComponent extends NestedArrayComponent { if (rowContainer) { const errorContainer = rowContainer.querySelector('.editgrid-row-error'); - if (rowErrors.length && errorContainer && (!this.component.rowDrafts || this.shouldValidateDraft(editRow))) { - const rowError = rowErrors.find(error => error.rowError); - this.addClass(errorContainer, 'help-block' ); - errorContainer.textContent = this.t(rowError ? rowError.message : this.errorMessage('invalidRowError')); - } - else if (errorContainer) { + if ( + rowErrors.length && + errorContainer && + (!this.component.rowDrafts || this.shouldValidateDraft(editRow)) + ) { + const rowError = rowErrors.find((error) => error.rowError); + this.addClass(errorContainer, 'help-block'); + errorContainer.textContent = this.t( + rowError ? rowError.message : this.errorMessage('invalidRowError'), + ); + } else if (errorContainer) { errorContainer.textContent = ''; - this.removeClass(errorContainer, 'help-block' ); + this.removeClass(errorContainer, 'help-block'); } } } // If this is a dirty check, and any rows are still editing, we need to throw validation error. - rowsEditing |= (dirty && this.isOpen(editRow)); + rowsEditing |= dirty && this.isOpen(editRow); }); if (allRowErrors.length) { - if (!silentCheck && (dirty || this.dirty) && (!this.component.rowDrafts || this.root?.submitted)) { + if ( + !silentCheck && + (dirty || this.dirty) && + (!this.component.rowDrafts || this.root?.submitted) + ) { this.setCustomValidity(this.t(this.errorMessage('invalidRowsError')), dirty); this.removeClass(this.element, 'has-error'); } return false; - } - else if (rowsEditing && this.saveEditMode && !this.component.openWhenEmpty) { + } else if (rowsEditing && this.saveEditMode && !this.component.openWhenEmpty) { this._errors = this.setCustomValidity(this.t(this.errorMessage('unsavedRowsError')), dirty); errors.push(...this._errors); return false; @@ -1304,8 +1361,7 @@ export default class EditGridComponent extends NestedArrayComponent { this._errors = this.setCustomValidity(message, dirty); errors.push(...this._errors); this.root.showErrors([message]); - } - else { + } else { this._errors = this.setCustomValidity(message, dirty); errors.push(...this._errors); } @@ -1316,10 +1372,9 @@ export default class EditGridComponent extends NestedArrayComponent { const editRow = this.editRows[index]; const errorContainer = ref.querySelector('.editgrid-row-error'); if (errorContainer && (!this.component.rowDrafts || this.shouldValidateDraft(editRow))) { - this.addClass(errorContainer, 'help-block' ); + this.addClass(errorContainer, 'help-block'); errorContainer.textContent = this.t(this.errorMessage('invalidRowError')); - } - else if (errorContainer) { + } else if (errorContainer) { errorContainer.textContent = ''; } } @@ -1327,8 +1382,7 @@ export default class EditGridComponent extends NestedArrayComponent { changeState(changed, flags) { if (this.visible && (changed || (flags.resetValue && this.component.modalEdit))) { this.rebuild(); - } - else { + } else { this.redraw(); } } @@ -1341,8 +1395,7 @@ export default class EditGridComponent extends NestedArrayComponent { if (!Array.isArray(value)) { if (typeof value === 'object') { value = [value]; - } - else { + } else { return false; } } @@ -1361,8 +1414,7 @@ export default class EditGridComponent extends NestedArrayComponent { editRow.state = EditRowState.Saved; editRow.backup = null; editRow.errors = []; - } - else { + } else { this.editRows[rowIndex] = { components: this.lazyLoad ? [] : this.createRowComponents(row, rowIndex), data: row, @@ -1375,10 +1427,12 @@ export default class EditGridComponent extends NestedArrayComponent { let { length: dataLength } = this.dataValue; // If the last row is a new row, then do not remove it. - if (this.editRows[dataLength] && (this.editRows[dataLength].state === EditRowState.New)) { - dataLength = (dataLength + 1); + if (this.editRows[dataLength] && this.editRows[dataLength].state === EditRowState.New) { + dataLength = dataLength + 1; } - this.editRows.slice(dataLength).forEach((editRow, index) => this.baseRemoveRow(dataLength + index)); + this.editRows + .slice(dataLength) + .forEach((editRow, index) => this.baseRemoveRow(dataLength + index)); this.editRows = this.editRows.slice(0, dataLength); this.openWhenEmpty(); diff --git a/src/components/editgrid/editForm/EditGrid.edit.data.js b/src/components/editgrid/editForm/EditGrid.edit.data.js index 0d29afba72..a19b63cae2 100644 --- a/src/components/editgrid/editForm/EditGrid.edit.data.js +++ b/src/components/editgrid/editForm/EditGrid.edit.data.js @@ -5,7 +5,8 @@ export default [ weight: 105, key: 'inlineEdit', label: 'Inline Editing', - tooltip: 'Check this if you would like your changes within \'edit\' mode to be committed directly to the submission object as that row is being changed', + tooltip: + "Check this if you would like your changes within 'edit' mode to be committed directly to the submission object as that row is being changed", }, { key: 'defaultValue', @@ -13,6 +14,6 @@ export default [ }, { key: 'multiple', - ignore: true + ignore: true, }, ]; diff --git a/src/components/editgrid/editForm/EditGrid.edit.display.js b/src/components/editgrid/editForm/EditGrid.edit.display.js index 186acdb2fd..80ccabb678 100644 --- a/src/components/editgrid/editForm/EditGrid.edit.display.js +++ b/src/components/editgrid/editForm/EditGrid.edit.display.js @@ -14,7 +14,7 @@ export default [ input: true, conditional: { json: { '!==': [{ var: 'data.modal' }, true] }, - } + }, }, { type: 'checkbox', diff --git a/src/components/editgrid/editForm/EditGrid.edit.templates.js b/src/components/editgrid/editForm/EditGrid.edit.templates.js index d3d58a7d27..9342a9ba91 100644 --- a/src/components/editgrid/editForm/EditGrid.edit.templates.js +++ b/src/components/editgrid/editForm/EditGrid.edit.templates.js @@ -11,11 +11,13 @@ export default [ clearOnHide: false, input: true, placeholder: '/*** Lodash Template Code ***/', - description: 'Two available variables. "value" is the array of row data and "components" is the array of components in the grid.', - tooltip: 'This is the Lodash Template used to render the header of the Edit grid.', + description: + 'Two available variables. "value" is the array of row data and "components" is the array of components in the grid.', + tooltip: + "This is the Lodash Template used to render the header of the Edit grid.", customConditional({ data }) { return (!Evaluator.noeval || Evaluator.protectedEval) && !data.displayAsTable; - } + }, }, { type: 'textarea', @@ -27,11 +29,13 @@ export default [ clearOnHide: false, input: true, placeholder: '/*** Lodash Template Code ***/', - description: 'Two available variables. "value" is the array of row data and "components" is the array of components in the grid.', - tooltip: 'This is the Lodash Template used to render the header of the Edit grid.', + description: + 'Two available variables. "value" is the array of row data and "components" is the array of components in the grid.', + tooltip: + "This is the Lodash Template used to render the header of the Edit grid.", customConditional({ data }) { return (!Evaluator.noeval || Evaluator.protectedEval) && data.displayAsTable; - } + }, }, { type: 'textarea', @@ -43,13 +47,15 @@ export default [ clearOnHide: false, input: true, placeholder: '/*** Lodash Template Code ***/', - description: 'Three available variables. "row" is an object of one row\'s data, "components"' + + description: + 'Three available variables. "row" is an object of one row\'s data, "components"' + ' is the array of components in the grid and "state" is current row\'s state (can be "draft" or "saved").' + ' To add click events, add the classes "editRow" and "removeRow" to elements.', - tooltip: 'This is the Lodash Template used to render each row of the Edit grid.', + tooltip: + "This is the Lodash Template used to render each row of the Edit grid.", customConditional({ data }) { return (!Evaluator.noeval || Evaluator.protectedEval) && !data.displayAsTable; - } + }, }, { type: 'textarea', @@ -61,13 +67,15 @@ export default [ clearOnHide: false, input: true, placeholder: '/*** Lodash Template Code ***/', - description: 'Three available variables. "row" is an object of one row\'s data, "components"' + + description: + 'Three available variables. "row" is an object of one row\'s data, "components"' + ' is the array of components in the grid and "state" is current row\'s state (can be "draft" or "saved").' + ' To add click events, add the classes "editRow" and "removeRow" to elements.', - tooltip: 'This is the Lodash Template used to render each row of the Edit grid.', + tooltip: + "This is the Lodash Template used to render each row of the Edit grid.", customConditional({ data }) { return (!Evaluator.noeval || Evaluator.protectedEval) && data.displayAsTable; - } + }, }, { type: 'textarea', @@ -78,11 +86,13 @@ export default [ as: 'handlebars', input: true, placeholder: '/*** Lodash Template Code ***/', - description: 'Two available variables. "value" is the array of row data and "components" is the array of components in the grid.', - tooltip: 'This is the Lodash Template used to render the footer of the Edit grid.', + description: + 'Two available variables. "value" is the array of row data and "components" is the array of components in the grid.', + tooltip: + "This is the Lodash Template used to render the footer of the Edit grid.", customConditional() { return !Evaluator.noeval || Evaluator.protectedEval; - } + }, }, { type: 'textfield', @@ -90,7 +100,7 @@ export default [ key: 'rowClass', label: 'Row CSS Class', placeholder: 'Row CSS Class', - tooltip: 'CSS class to add to the edit row wrapper.' + tooltip: 'CSS class to add to the edit row wrapper.', }, { type: 'textfield', @@ -98,7 +108,7 @@ export default [ key: 'addAnother', label: 'Add Another Text', placeholder: 'Add Another', - tooltip: 'Set the text of the Add Another button.' + tooltip: 'Set the text of the Add Another button.', }, { weight: 70, @@ -106,7 +116,7 @@ export default [ label: 'Display as Modal', tooltip: 'Display a modal to add or edit entries in the table', key: 'modal', - input: true + input: true, }, { type: 'textfield', @@ -114,7 +124,7 @@ export default [ key: 'saveRow', label: 'Save Row Text', placeholder: 'Save', - tooltip: 'Set the text of the Save Row button.' + tooltip: 'Set the text of the Save Row button.', }, { type: 'textfield', @@ -122,6 +132,6 @@ export default [ key: 'removeRow', label: 'Remove Row Text', placeholder: 'Remove', - tooltip: 'Set the text of the remove Row button.' - } + tooltip: 'Set the text of the remove Row button.', + }, ]; diff --git a/src/components/editgrid/editForm/EditGrid.edit.validation.js b/src/components/editgrid/editForm/EditGrid.edit.validation.js index ec0c5e6f53..cd962edcf6 100644 --- a/src/components/editgrid/editForm/EditGrid.edit.validation.js +++ b/src/components/editgrid/editForm/EditGrid.edit.validation.js @@ -10,7 +10,7 @@ export default [ placeholder: 'Minimum Length', type: 'number', tooltip: 'The minimum length requirement this field must meet.', - input: true + input: true, }, { weight: 120, @@ -19,7 +19,7 @@ export default [ placeholder: 'Maximum Length', type: 'number', tooltip: 'The maximum length requirement this field must meet.', - input: true + input: true, }, { type: 'checkbox', @@ -27,6 +27,7 @@ export default [ weight: 105, key: 'rowDrafts', label: 'Enable Row Drafts', - tooltip: 'Allow save rows even if their data is invalid. Errors will occur when try to submit with invalid rows.', - } + tooltip: + 'Allow save rows even if their data is invalid. Errors will occur when try to submit with invalid rows.', + }, ]; diff --git a/src/components/email/Email.form.js b/src/components/email/Email.form.js index 4f7707d8e0..6056ea5fe4 100644 --- a/src/components/email/Email.form.js +++ b/src/components/email/Email.form.js @@ -7,15 +7,18 @@ import EmailEditFormValidation from './editForm/Email.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return baseEditForm([ - { - key: 'display', - components: EmailEditFormDisplay, - }, - { - key: 'validation', - components: EmailEditFormValidation, - }, - ], ...extend); +export default function (...extend) { + return baseEditForm( + [ + { + key: 'display', + components: EmailEditFormDisplay, + }, + { + key: 'validation', + components: EmailEditFormValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/email/Email.js b/src/components/email/Email.js index fd467e86f0..fef61b9380 100644 --- a/src/components/email/Email.js +++ b/src/components/email/Email.js @@ -2,15 +2,18 @@ import TextFieldComponent from '../textfield/TextField'; export default class EmailComponent extends TextFieldComponent { static schema(...extend) { - return TextFieldComponent.schema({ - type: 'email', - label: 'Email', - key: 'email', - inputType: 'email', - kickbox: { - enabled: false - } - }, ...extend); + return TextFieldComponent.schema( + { + type: 'email', + label: 'Email', + key: 'email', + inputType: 'email', + kickbox: { + enabled: false, + }, + }, + ...extend, + ); } static get builderInfo() { @@ -20,7 +23,7 @@ export default class EmailComponent extends TextFieldComponent { icon: 'at', documentation: '/userguide/form-building/advanced-components#email', weight: 10, - schema: EmailComponent.schema() + schema: EmailComponent.schema(), }; } @@ -42,9 +45,8 @@ export default class EmailComponent extends TextFieldComponent { value = super.normalizeValue(value, flags); if (this.options.server && !!value) { if (Array.isArray(value)) { - value = value.map(val => val.toLowerCase()); - } - else { + value = value.map((val) => val.toLowerCase()); + } else { value = value.toLowerCase(); } } diff --git a/src/components/email/editForm/Email.edit.display.js b/src/components/email/editForm/Email.edit.display.js index 1e8370f506..ee6493548b 100644 --- a/src/components/email/editForm/Email.edit.display.js +++ b/src/components/email/editForm/Email.edit.display.js @@ -9,10 +9,10 @@ export default [ }, { key: 'showWordCount', - ignore: true + ignore: true, }, { key: 'showCharCount', - ignore: true - } + ignore: true, + }, ]; diff --git a/src/components/email/editForm/Email.edit.validation.js b/src/components/email/editForm/Email.edit.validation.js index 99c2da18a5..8c5a442d11 100644 --- a/src/components/email/editForm/Email.edit.validation.js +++ b/src/components/email/editForm/Email.edit.validation.js @@ -1,11 +1,11 @@ export default [ { key: 'validate.minWords', - ignore: true + ignore: true, }, { key: 'validate.maxWords', - ignore: true + ignore: true, }, { type: 'panel', @@ -19,8 +19,8 @@ export default [ label: 'Enable', tooltip: 'Enable Kickbox validation for this email field.', description: 'Validate this email using the Kickbox email validation service.', - key: 'kickbox.enabled' - } - ] - } + key: 'kickbox.enabled', + }, + ], + }, ]; diff --git a/src/components/fieldset/Fieldset.form.js b/src/components/fieldset/Fieldset.form.js index 7bbe8af81a..8f645cb937 100644 --- a/src/components/fieldset/Fieldset.form.js +++ b/src/components/fieldset/Fieldset.form.js @@ -5,11 +5,14 @@ import FieldSetEditDisplay from './editForm/Fieldset.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: FieldSetEditDisplay - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: FieldSetEditDisplay, + }, + ], + ...extend, + ); } diff --git a/src/components/fieldset/Fieldset.js b/src/components/fieldset/Fieldset.js index 9b71fe87e0..09638189ea 100644 --- a/src/components/fieldset/Fieldset.js +++ b/src/components/fieldset/Fieldset.js @@ -2,15 +2,18 @@ import NestedComponent from '../_classes/nested/NestedComponent'; export default class FieldsetComponent extends NestedComponent { static schema(...extend) { - return NestedComponent.schema({ - label: 'Field Set', - key: 'fieldSet', - type: 'fieldset', - legend: '', - components: [], - input: false, - persistent: false - }, ...extend); + return NestedComponent.schema( + { + label: 'Field Set', + key: 'fieldSet', + type: 'fieldset', + legend: '', + components: [], + input: false, + persistent: false, + }, + ...extend, + ); } static get builderInfo() { @@ -21,7 +24,7 @@ export default class FieldsetComponent extends NestedComponent { documentation: '/userguide/form-building/layout-components#field-set', showPreview: false, weight: 20, - schema: FieldsetComponent.schema() + schema: FieldsetComponent.schema(), }; } diff --git a/src/components/fieldset/editForm/Fieldset.edit.display.js b/src/components/fieldset/editForm/Fieldset.edit.display.js index 9692ccf97b..743d0bd244 100644 --- a/src/components/fieldset/editForm/Fieldset.edit.display.js +++ b/src/components/fieldset/editForm/Fieldset.edit.display.js @@ -1,34 +1,34 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'label', hidden: true, calculateValue(context) { return context.data.legend; - } + }, }, { weight: 1, @@ -37,6 +37,6 @@ export default [ key: 'legend', label: 'Legend', placeholder: 'Legend', - tooltip: 'The legend for this Fieldset.' + tooltip: 'The legend for this Fieldset.', }, ]; diff --git a/src/components/file/File.form.js b/src/components/file/File.form.js index fbdaa6e747..4177009465 100644 --- a/src/components/file/File.form.js +++ b/src/components/file/File.form.js @@ -9,25 +9,28 @@ import FileEditValidation from './editForm/File.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: FileEditDisplay - }, - { - key: 'data', - components: FileEditData - }, - { - label: 'File', - key: 'file', - weight: 5, - components: FileEditFile - }, - { - key: 'validation', - components: FileEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: FileEditDisplay, + }, + { + key: 'data', + components: FileEditData, + }, + { + label: 'File', + key: 'file', + weight: 5, + components: FileEditFile, + }, + { + key: 'validation', + components: FileEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/file/File.js b/src/components/file/File.js index de6d344b0c..95660683a6 100644 --- a/src/components/file/File.js +++ b/src/components/file/File.js @@ -13,16 +13,15 @@ let webViewCamera = 'undefined' !== typeof window ? navigator.camera : Camera; let htmlCanvasElement; if (typeof window !== 'undefined') { htmlCanvasElement = window.HTMLCanvasElement; -} -else if (typeof global !== 'undefined') { +} else if (typeof global !== 'undefined') { htmlCanvasElement = global.HTMLCanvasElement; } if (htmlCanvasElement && !htmlCanvasElement.prototype.toBlob) { Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', { - value: function(callback, type, quality) { + value: function (callback, type, quality) { var canvas = this; - setTimeout(function() { + setTimeout(function () { var binStr = atob(canvas.toDataURL(type, quality).split(',')[1]), len = binStr.length, arr = new Uint8Array(len); @@ -33,7 +32,7 @@ if (htmlCanvasElement && !htmlCanvasElement.prototype.toBlob) { callback(new Blob([arr], { type: type || 'image/png' })); }); - } + }, }); } @@ -41,18 +40,21 @@ const createRandomString = () => Math.random().toString(36).substring(2, 15); export default class FileComponent extends Field { static schema(...extend) { - return Field.schema({ - type: 'file', - label: 'Upload', - key: 'file', - image: false, - privateDownload: false, - imageSize: '200', - filePattern: '*', - fileMinSize: '0KB', - fileMaxSize: '1GB', - uploadOnly: false, - }, ...extend); + return Field.schema( + { + type: 'file', + label: 'Upload', + key: 'file', + image: false, + privateDownload: false, + imageSize: '200', + filePattern: '*', + fileMinSize: '0KB', + fileMaxSize: '1GB', + uploadOnly: false, + }, + ...extend, + ); } static get builderInfo() { @@ -80,15 +82,18 @@ export default class FileComponent extends Field { static savedValueTypes(schema) { schema = schema || {}; - return getComponentSavedTypes(schema) || [componentValueTypes.object]; + return getComponentSavedTypes(schema) || [componentValueTypes.object]; } init() { super.init(); webViewCamera = navigator.camera || Camera; - const fileReaderSupported = (typeof FileReader !== 'undefined'); + const fileReaderSupported = typeof FileReader !== 'undefined'; const formDataSupported = typeof window !== 'undefined' ? Boolean(window.FormData) : false; - const progressSupported = (typeof window !== 'undefined' && window.XMLHttpRequest) ? ('upload' in new XMLHttpRequest) : false; + const progressSupported = + typeof window !== 'undefined' && window.XMLHttpRequest + ? 'upload' in new XMLHttpRequest() + : false; this.support = { filereader: fileReaderSupported, @@ -128,7 +133,7 @@ export default class FileComponent extends Field { getValueAsString(value, options) { if (options?.review && !this.component.uploadOnly) { return _.map(value, (val, index) => { - return `${val.originalName}` + return `${val.originalName}`; }).join(', '); } if (_.isArray(value)) { @@ -148,10 +153,12 @@ export default class FileComponent extends Field { } get hasTypes() { - return this.component.fileTypes && + return ( + this.component.fileTypes && Array.isArray(this.component.fileTypes) && this.component.fileTypes.length !== 0 && - (this.component.fileTypes[0].label !== '' || this.component.fileTypes[0].value !== ''); + (this.component.fileTypes[0].label !== '' || this.component.fileTypes[0].value !== '') + ); } get fileDropHidden() { @@ -191,18 +198,20 @@ export default class FileComponent extends Field { render() { const { filesToDelete, filesToUpload } = this.filesToSync; - return super.render(this.renderTemplate('file', { - fileSize: this.fileSize, - files: this.dataValue || [], - filesToDelete, - filesToUpload, - disabled: this.disabled, - support: this.support, - fileDropHidden: this.fileDropHidden, - showSyncButton: this.autoSync && (filesToDelete.length || filesToUpload.length), - isSyncing: this.isSyncing, - columns: this.columnsSize, - })); + return super.render( + this.renderTemplate('file', { + fileSize: this.fileSize, + files: this.dataValue || [], + filesToDelete, + filesToUpload, + disabled: this.disabled, + support: this.support, + fileDropHidden: this.fileDropHidden, + showSyncButton: this.autoSync && (filesToDelete.length || filesToUpload.length), + isSyncing: this.isSyncing, + columns: this.columnsSize, + }), + ); } getVideoStream(constraints) { @@ -273,13 +282,12 @@ export default class FileComponent extends Field { return; } - this.getFrame(videoPlayer) - .then((frame) => { - frame.name = `photo-${Date.now()}.png`; - this.handleFilesToUpload([frame]); - this.cameraMode = false; - this.redraw(); - }); + this.getFrame(videoPlayer).then((frame) => { + frame.name = `photo-${Date.now()}.png`; + this.handleFilesToUpload([frame]); + this.cameraMode = false; + this.redraw(); + }); } browseFiles(attrs = {}) { @@ -292,17 +300,20 @@ export default class FileComponent extends Field { }); document.body.appendChild(fileInput); - fileInput.addEventListener('change', () => { - resolve(fileInput.files); - document.body.removeChild(fileInput); - }, true); + fileInput.addEventListener( + 'change', + () => { + resolve(fileInput.files); + document.body.removeChild(fileInput); + }, + true, + ); // There is no direct way to trigger a file dialog. To work around this, create an input of type file and trigger // a click event on it. if (typeof fileInput.trigger === 'function') { fileInput.trigger('click'); - } - else { + } else { fileInput.click(); } }); @@ -313,8 +324,7 @@ export default class FileComponent extends Field { if (value) { this.startVideo(); - } - else { + } else { this.stopVideo(); } } @@ -347,11 +357,9 @@ export default class FileComponent extends Field { if (this.imageUpload && (!filePattern || filePattern === '*')) { options.accept = imagesPattern; - } - else if (this.imageUpload && !filePattern.includes(imagesPattern)) { + } else if (this.imageUpload && !filePattern.includes(imagesPattern)) { options.accept = `${imagesPattern},${filePattern}`; - } - else { + } else { options.accept = filePattern; } } @@ -359,11 +367,9 @@ export default class FileComponent extends Field { else if (this.component.capture) { if (filePattern.includes('video')) { options.accept = 'video/*'; - } - else if (filePattern.includes('audio')) { + } else if (filePattern.includes('audio')) { options.accept = 'audio/*'; - } - else { + } else { options.accept = 'image/*'; } } @@ -405,15 +411,15 @@ export default class FileComponent extends Field { // this.refs.fileDrop.removeAttribute('hidden'); // } const _this = this; - this.addEventListener(this.refs.fileDrop, 'dragover', function(event) { + this.addEventListener(this.refs.fileDrop, 'dragover', function (event) { this.className = 'fileSelector fileDragOver'; event.preventDefault(); }); - this.addEventListener(this.refs.fileDrop, 'dragleave', function(event) { + this.addEventListener(this.refs.fileDrop, 'dragleave', function (event) { this.className = 'fileSelector'; event.preventDefault(); }); - this.addEventListener(this.refs.fileDrop, 'drop', function(event) { + this.addEventListener(this.refs.fileDrop, 'drop', function (event) { this.className = 'fileSelector'; event.preventDefault(); _this.handleFilesToUpload(event.dataTransfer.files); @@ -427,10 +433,9 @@ export default class FileComponent extends Field { if (this.refs.fileBrowse) { this.addEventListener(this.refs.fileBrowse, 'click', (event) => { event.preventDefault(); - this.browseFiles(this.browseOptions) - .then((files) => { - this.handleFilesToUpload(files); - }); + this.browseFiles(this.browseOptions).then((files) => { + this.handleFilesToUpload(files); + }); }); } @@ -473,8 +478,9 @@ export default class FileComponent extends Field { if (this.refs.galleryButton && webViewCamera) { this.addEventListener(this.refs.galleryButton, 'click', (event) => { event.preventDefault(); - webViewCamera.getPicture((success) => { - window.resolveLocalFileSystemURL(success, (fileEntry) => { + webViewCamera.getPicture( + (success) => { + window.resolveLocalFileSystemURL(success, (fileEntry) => { fileEntry.file((file) => { const reader = new FileReader(); reader.onloadend = (evt) => { @@ -484,21 +490,24 @@ export default class FileComponent extends Field { }; reader.readAsArrayBuffer(file); }); - } - ); - }, (err) => { - console.error(err); - }, { - sourceType: webViewCamera.PictureSourceType.PHOTOLIBRARY, - }); + }); + }, + (err) => { + console.error(err); + }, + { + sourceType: webViewCamera.PictureSourceType.PHOTOLIBRARY, + }, + ); }); } if (this.refs.cameraButton && webViewCamera) { this.addEventListener(this.refs.cameraButton, 'click', (event) => { event.preventDefault(); - webViewCamera.getPicture((success) => { - window.resolveLocalFileSystemURL(success, (fileEntry) => { + webViewCamera.getPicture( + (success) => { + window.resolveLocalFileSystemURL(success, (fileEntry) => { fileEntry.file((file) => { const reader = new FileReader(); reader.onloadend = (evt) => { @@ -508,17 +517,19 @@ export default class FileComponent extends Field { }; reader.readAsArrayBuffer(file); }); - } - ); - }, (err) => { - console.error(err); - }, { - sourceType: webViewCamera.PictureSourceType.CAMERA, - encodingType: webViewCamera.EncodingType.PNG, - mediaType: webViewCamera.MediaType.PICTURE, - saveToPhotoAlbum: true, - correctOrientation: false, - }); + }); + }, + (err) => { + console.error(err); + }, + { + sourceType: webViewCamera.PictureSourceType.CAMERA, + encodingType: webViewCamera.EncodingType.PNG, + mediaType: webViewCamera.MediaType.PICTURE, + saveToPhotoAlbum: true, + correctOrientation: false, + }, + ); }); } @@ -542,12 +553,15 @@ export default class FileComponent extends Field { return; } - this.dataValue[index].fileType = this.dataValue[index].fileType || this.component.fileTypes[0].label; + this.dataValue[index].fileType = + this.dataValue[index].fileType || this.component.fileTypes[0].label; this.addEventListener(fileType, 'change', (event) => { event.preventDefault(); - const fileType = this.component.fileTypes.find((typeObj) => typeObj.value === event.target.value); + const fileType = this.component.fileTypes.find( + (typeObj) => typeObj.value === event.target.value, + ); this.dataValue[index].fileType = fileType.label; }); @@ -569,33 +583,30 @@ export default class FileComponent extends Field { loadingImages.push(this.loadImage(this.dataValue[index]).then((url) => (image.src = url))); }); if (loadingImages.length) { - Promise.all(loadingImages).then(() => { - this.filesReadyResolve(); - }).catch(() => this.filesReadyReject()); - } - else { + Promise.all(loadingImages) + .then(() => { + this.filesReadyResolve(); + }) + .catch(() => this.filesReadyReject()); + } else { this.filesReadyResolve(); } } return superAttach; } - fileSize(a, b, c, d, e) { - return `${(b = Math, c = b.log, d = 1024, e = c(a) / c(d) | 0, a / b.pow(d, e)).toFixed(2)} ${e ? `${'kMGTPEZY'[--e]}B` : 'Bytes'}`; + return `${((b = Math), (c = b.log), (d = 1024), (e = (c(a) / c(d)) | 0), a / b.pow(d, e)).toFixed(2)} ${e ? `${'kMGTPEZY'[--e]}B` : 'Bytes'}`; } - - - globStringToRegex(str) { str = str.replace(/\s/g, ''); - let regexp = '', excludes = []; + let regexp = '', + excludes = []; if (str.length > 2 && str[0] === '/' && str[str.length - 1] === '/') { regexp = str.substring(1, str.length - 1); - } - else { + } else { const split = str.split(','); if (split.length > 1) { for (let i = 0; i < split.length; i++) { @@ -605,17 +616,14 @@ export default class FileComponent extends Field { if (i < split.length - 1) { regexp += '|'; } - } - else { + } else { excludes = excludes.concat(r.excludes); } } - } - else { + } else { if (str.startsWith('!')) { excludes.push(`^((?!${this.globStringToRegex(str.substring(1)).regexp}).)*$`); - } - else { + } else { if (str.startsWith('.')) { str = `*${str}`; } @@ -627,8 +635,6 @@ export default class FileComponent extends Field { return { regexp, excludes }; } - - translateScalars(str) { if (typeof str === 'string') { if (str.search(/kb/i) === str.length - 2) { @@ -664,13 +670,17 @@ export default class FileComponent extends Field { let valid = true; if (pattern.regexp && pattern.regexp.length) { const regexp = new RegExp(pattern.regexp, 'i'); - valid = (!_.isNil(file.type) && regexp.test(file.type)) || + valid = + (!_.isNil(file.type) && regexp.test(file.type)) || (!_.isNil(file.name) && regexp.test(file.name)); } valid = pattern.excludes.reduce((result, excludePattern) => { const exclude = new RegExp(excludePattern, 'i'); - return result && (_.isNil(file.type) || exclude.test(file.type)) && - (_.isNil(file.name) || exclude.test(file.name)); + return ( + result && + (_.isNil(file.type) || exclude.test(file.type)) && + (_.isNil(file.name) || exclude.test(file.name)) + ); }, valid); return valid; } @@ -684,7 +694,7 @@ export default class FileComponent extends Field { } abortRequest(id) { - const abortUpload = this.abortUploads.find(abortUpload => abortUpload.id === id); + const abortUpload = this.abortUploads.find((abortUpload) => abortUpload.id === id); if (abortUpload) { abortUpload.abort(); } @@ -708,7 +718,9 @@ export default class FileComponent extends Field { } getInitFileToSync(file) { - const escapedFileName = file.name ? file.name.replaceAll('<', '<').replaceAll('>', '>') : file.name; + const escapedFileName = file.name + ? file.name.replaceAll('<', '<').replaceAll('>', '>') + : file.name; return { id: createRandomString(), // Get a unique name for this file to keep file collisions from occurring. @@ -734,7 +746,7 @@ export default class FileComponent extends Field { const bmf = new BMF(); const hash = await new Promise((resolve, reject) => { this.emit('fileUploadingStart'); - bmf.md5(file, (err, md5)=>{ + bmf.md5(file, (err, md5) => { if (err) { return reject(err); } @@ -748,16 +760,22 @@ export default class FileComponent extends Field { validateFileName(file) { // Check if file with the same name is being uploaded - const fileWithSameNameUploading = this.filesToSync.filesToUpload - .some(fileToSync => fileToSync.file?.name === file.name); + const fileWithSameNameUploading = this.filesToSync.filesToUpload.some( + (fileToSync) => fileToSync.file?.name === file.name, + ); - const fileWithSameNameUploaded = _.some(this.dataValue, fileStatus => fileStatus.originalName === file.name); + const fileWithSameNameUploaded = _.some( + this.dataValue, + (fileStatus) => fileStatus.originalName === file.name, + ); return fileWithSameNameUploaded || fileWithSameNameUploading ? { - status: 'error', - message: this.t(`File with the same name is already ${fileWithSameNameUploading ? 'being ' : ''}uploaded`), - } + status: 'error', + message: this.t( + `File with the same name is already ${fileWithSameNameUploading ? 'being ' : ''}uploaded`, + ), + } : {}; } @@ -799,9 +817,9 @@ export default class FileComponent extends Field { const { fileService } = this; return !fileService ? { - status: 'error', - message: this.t('File Service not provided.'), - } + status: 'error', + message: this.t('File Service not provided.'), + } : {}; } @@ -826,15 +844,19 @@ export default class FileComponent extends Field { //Iterate through form components to find group resource if one exists this.root.everyComponent((element) => { if (element.component?.submissionAccess || element.component?.defaultPermission) { - groupPermissions = !element.component.submissionAccess ? [ - { - type: element.component.defaultPermission, - roles: [], - }, - ] : element.component.submissionAccess; + groupPermissions = !element.component.submissionAccess + ? [ + { + type: element.component.defaultPermission, + roles: [], + }, + ] + : element.component.submissionAccess; groupPermissions.forEach((permission) => { - groupKey = ['admin', 'write', 'create'].includes(permission.type) ? element.component.key : null; + groupKey = ['admin', 'write', 'create'].includes(permission.type) + ? element.component.key + : null; }); } }); @@ -850,17 +872,18 @@ export default class FileComponent extends Field { if (this.refs.fileProcessingLoader) { this.refs.fileProcessingLoader.style.display = 'block'; } - const fileProcessorHandler = fileProcessor(this.fileService, this.root.options.fileProcessor); + const fileProcessorHandler = fileProcessor( + this.fileService, + this.root.options.fileProcessor, + ); processedFile = await fileProcessorHandler(file, this.component.properties); - } - catch (ignoreErr) { + } catch (ignoreErr) { this.fileDropHidden = false; return { status: 'error', message: this.t('File processing has been failed.'), }; - } - finally { + } finally { if (this.refs.fileProcessingLoader) { this.refs.fileProcessingLoader.style.display = 'none'; } @@ -920,12 +943,13 @@ export default class FileComponent extends Field { if (this.component.storage && files && files.length) { this.fileDropHidden = true; - return Promise.all([...files].map(async(file) => { - await this.prepareFileToUpload(file); - this.redraw(); - })); - } - else { + return Promise.all( + [...files].map(async (file) => { + await this.prepareFileToUpload(file); + this.redraw(); + }), + ); + } else { return Promise.resolve(); } } @@ -946,7 +970,7 @@ export default class FileComponent extends Field { : this.t('Preparing file to remove'), }); - const index = this.dataValue.findIndex(file => file.name === fileInfo.name); + const index = this.dataValue.findIndex((file) => file.name === fileInfo.name); this.splice(index); this.redraw(); } @@ -961,12 +985,14 @@ export default class FileComponent extends Field { async deleteFile(fileInfo) { const { options = {} } = this.component; - if (fileInfo && (['url', 'indexeddb', 's3', 'azure', 'googledrive'].includes(this.component.storage))) { + if ( + fileInfo && + ['url', 'indexeddb', 's3', 'azure', 'googledrive'].includes(this.component.storage) + ) { const { fileService } = this; if (fileService && typeof fileService.deleteFile === 'function') { return await fileService.deleteFile(fileInfo, options); - } - else { + } else { const formio = this.options.formio || (this.root && this.root.formio); if (formio) { @@ -981,37 +1007,39 @@ export default class FileComponent extends Field { return Promise.resolve(); } - return await Promise.all(this.filesToSync.filesToDelete.map(async(fileToSync) => { - try { - if (fileToSync.isValidationError) { - return { fileToSync }; - } + return await Promise.all( + this.filesToSync.filesToDelete.map(async (fileToSync) => { + try { + if (fileToSync.isValidationError) { + return { fileToSync }; + } - await this.deleteFile(fileToSync); - fileToSync.status = 'success'; - fileToSync.message = this.t('Succefully removed'); - } - catch (response) { - fileToSync.status = 'error'; - fileToSync.message = typeof response === 'string' ? response : response.toString(); - } - finally { - this.redraw(); - } + await this.deleteFile(fileToSync); + fileToSync.status = 'success'; + fileToSync.message = this.t('Succefully removed'); + } catch (response) { + fileToSync.status = 'error'; + fileToSync.message = typeof response === 'string' ? response : response.toString(); + } finally { + this.redraw(); + } - return { fileToSync }; - })); + return { fileToSync }; + }), + ); } updateProgress(fileInfo, progressEvent) { - fileInfo.progress = parseInt(100.0 * progressEvent.loaded / progressEvent.total); + fileInfo.progress = parseInt((100.0 * progressEvent.loaded) / progressEvent.total); if (fileInfo.status !== 'progress') { fileInfo.status = 'progress'; delete fileInfo.message; this.redraw(); - } - else { - const progress = Array.prototype.find.call(this.refs.progress, progressElement => progressElement.id === fileInfo.id); + } else { + const progress = Array.prototype.find.call( + this.refs.progress, + (progressElement) => progressElement.id === fileInfo.id, + ); progress.innerHTML = `${fileInfo.progress}% ${this.t('Complete')}`; progress.style.width = `${fileInfo.progress}%`; progress.ariaValueNow = fileInfo.progress.toString(); @@ -1020,20 +1048,22 @@ export default class FileComponent extends Field { getMultipartOptions(fileToSync) { let count = 0; - return this.component.useMultipartUpload && this.component.multipart ? { - ...this.component.multipart, - progressCallback: (total) => { - count++; - fileToSync.status = 'progress'; - fileToSync.progress = parseInt(100 * count / total); - delete fileToSync.message; - this.redraw(); - }, - changeMessage: (message) => { - fileToSync.message = message; - this.redraw(); - }, - } : false; + return this.component.useMultipartUpload && this.component.multipart + ? { + ...this.component.multipart, + progressCallback: (total) => { + count++; + fileToSync.status = 'progress'; + fileToSync.progress = parseInt((100 * count) / total); + delete fileToSync.message; + this.redraw(); + }, + changeMessage: (message) => { + fileToSync.message = message; + this.redraw(); + }, + } + : false; } async uploadFile(fileToSync) { @@ -1051,10 +1081,11 @@ export default class FileComponent extends Field { fileToSync.groupResourceId, () => {}, // Abort upload callback - (abort) => this.abortUploads.push({ - id: fileToSync.id, - abort, - }), + (abort) => + this.abortUploads.push({ + id: fileToSync.id, + abort, + }), this.getMultipartOptions(fileToSync), ); } @@ -1064,47 +1095,48 @@ export default class FileComponent extends Field { return Promise.resolve(); } - return await Promise.all(this.filesToSync.filesToUpload.map(async(fileToSync) => { - let fileInfo = null; - try { - if (fileToSync.isValidationError) { - return { + return await Promise.all( + this.filesToSync.filesToUpload.map(async (fileToSync) => { + let fileInfo = null; + try { + if (fileToSync.isValidationError) { + return { + fileToSync, + fileInfo, + }; + } + + fileInfo = await this.uploadFile(fileToSync); + fileToSync.status = 'success'; + fileToSync.message = this.t('Succefully uploaded'); + + fileInfo.originalName = fileToSync.originalName; + fileInfo.hash = fileToSync.hash; + } catch (response) { + fileToSync.status = 'error'; + delete fileToSync.progress; + fileToSync.message = + typeof response === 'string' + ? response + : response.type === 'abort' + ? this.t('Request was aborted') + : response.toString(); + + this.emit('fileUploadError', { fileToSync, - fileInfo, - }; + response, + }); + } finally { + delete fileToSync.progress; + this.redraw(); } - fileInfo = await this.uploadFile(fileToSync); - fileToSync.status = 'success'; - fileToSync.message = this.t('Succefully uploaded'); - - fileInfo.originalName = fileToSync.originalName; - fileInfo.hash = fileToSync.hash; - } - catch (response) { - fileToSync.status = 'error'; - delete fileToSync.progress; - fileToSync.message = typeof response === 'string' - ? response - : response.type === 'abort' - ? this.t('Request was aborted') - : response.toString(); - - this.emit('fileUploadError', { + return { fileToSync, - response, - }); - } - finally { - delete fileToSync.progress; - this.redraw(); - } - - return { - fileToSync, - fileInfo, - }; - })); + fileInfo, + }; + }), + ); } async syncFiles() { @@ -1112,29 +1144,30 @@ export default class FileComponent extends Field { this.fileDropHidden = true; this.redraw(); try { - const [filesToDelete = [], filesToUpload = []] = await Promise.all([this.delete(), this.upload()]); + const [filesToDelete = [], filesToUpload = []] = await Promise.all([ + this.delete(), + this.upload(), + ]); this.filesToSync.filesToDelete = filesToDelete - .filter(file => file.fileToSync?.status === 'error') - .map(file => file.fileToSync); + .filter((file) => file.fileToSync?.status === 'error') + .map((file) => file.fileToSync); this.filesToSync.filesToUpload = filesToUpload - .filter(file => file.fileToSync?.status === 'error') - .map(file => file.fileToSync); + .filter((file) => file.fileToSync?.status === 'error') + .map((file) => file.fileToSync); if (!this.hasValue()) { - this.dataValue =[]; + this.dataValue = []; } const data = filesToUpload - .filter(file => file.fileToSync?.status === 'success') - .map(file => file.fileInfo); + .filter((file) => file.fileToSync?.status === 'success') + .map((file) => file.fileInfo); this.dataValue.push(...data); this.triggerChange(); return Promise.resolve(); - } - catch (ignoreErr) { + } catch (ignoreErr) { return Promise.reject(); - } - finally { + } finally { this.isSyncing = false; this.fileDropHidden = false; this.abortUploads = []; @@ -1151,16 +1184,17 @@ export default class FileComponent extends Field { if (this.component.privateDownload) { fileInfo.private = true; } - fileService.downloadFile(fileInfo, options).then((file) => { - if (file) { - if (['base64', 'indexeddb'].includes(file.storage)) { - download(file.url, file.originalName || file.name, file.type); - } - else { - window.open(file.url, '_blank'); + fileService + .downloadFile(fileInfo, options) + .then((file) => { + if (file) { + if (['base64', 'indexeddb'].includes(file.storage)) { + download(file.url, file.originalName || file.name, file.type); + } else { + window.open(file.url, '_blank'); + } } - } - }) + }) .catch((response) => { // Is alert the best way to do this? // User is expecting an immediate notification due to attempting to download a file. @@ -1185,11 +1219,8 @@ export default class FileComponent extends Field { } await this.syncFiles(); - return this.shouldSyncFiles - ? Promise.reject('Synchronization is failed') - : Promise.resolve(); - } - catch (error) { + return this.shouldSyncFiles ? Promise.reject('Synchronization is failed') : Promise.resolve(); + } catch (error) { return Promise.reject(error.message); } } diff --git a/src/components/file/editForm/File.edit.display.js b/src/components/file/editForm/File.edit.display.js index 53589dd4f4..3171b20921 100644 --- a/src/components/file/editForm/File.edit.display.js +++ b/src/components/file/editForm/File.edit.display.js @@ -1,23 +1,24 @@ export default [ { key: 'placeholder', - ignore: true + ignore: true, }, { type: 'hidden', label: 'Files Synchronization feature', - tooltip: 'Enable ability to control files synchronization. Files will be auto synced before submit.', + tooltip: + 'Enable ability to control files synchronization. Files will be auto synced before submit.', key: 'autoSync', input: true, conditional: { json: { in: [ { - var: 'data.storage' + var: 'data.storage', }, - ['s3', 'azure', 'googledrive'] + ['s3', 'azure', 'googledrive'], ], - } - } + }, + }, }, ]; diff --git a/src/components/file/editForm/File.edit.file.js b/src/components/file/editForm/File.edit.file.js index 6a79593fc2..6c722174fa 100644 --- a/src/components/file/editForm/File.edit.file.js +++ b/src/components/file/editForm/File.edit.file.js @@ -16,19 +16,20 @@ export default [ custom() { return _.map(Formio.Providers.getProviders('storage'), (storage, key) => ({ label: storage.title, - value: key + value: key, })); - } - } + }, + }, }, { type: 'checkbox', input: true, key: 'useMultipartUpload', label: 'Use the S3 Multipart Upload API', - tooltip: "The S3 Multipart Upload API is designed to improve the upload experience for larger objects (> 5GB).", + tooltip: + "The S3 Multipart Upload API is designed to improve the upload experience for larger objects (> 5GB).", conditional: { - json: { '===': [{ var: 'data.storage' }, 's3'] } + json: { '===': [{ var: 'data.storage' }, 's3'] }, }, }, { @@ -58,7 +59,7 @@ export default [ }, ], conditional: { - json: { '===': [{ var: 'data.useMultipartUpload' }, true] } + json: { '===': [{ var: 'data.useMultipartUpload' }, true] }, }, }, { @@ -68,10 +69,11 @@ export default [ label: 'Url', weight: 10, placeholder: 'Enter the url to post the files to.', - tooltip: "See https://github.com/danialfarid/ng-file-upload#server-side for how to set up the server.", + tooltip: + "See https://github.com/danialfarid/ng-file-upload#server-side for how to set up the server.", conditional: { - json: { '===': [{ var: 'data.storage' }, 'url'] } - } + json: { '===': [{ var: 'data.storage' }, 'url'] }, + }, }, { type: 'textfield', @@ -84,12 +86,12 @@ export default [ json: { in: [ { - var: 'data.storage' + var: 'data.storage', }, - ['indexeddb'] + ['indexeddb'], ], - } - } + }, + }, }, { type: 'textfield', @@ -102,12 +104,12 @@ export default [ json: { in: [ { - var: 'data.storage' + var: 'data.storage', }, - ['indexeddb'] + ['indexeddb'], ], - } - } + }, + }, }, { type: 'textarea', @@ -126,11 +128,14 @@ export default [ }`, conditional: { json: { - '===': [{ - var: 'data.storage' - }, 'url'] - } - } + '===': [ + { + var: 'data.storage', + }, + 'url', + ], + }, + }, }, { type: 'textfield', @@ -142,11 +147,14 @@ export default [ tooltip: 'Key name that you would like to modify for the file while calling API request.', conditional: { json: { - '===': [{ - var: 'data.storage' - }, 'url'] - } - } + '===': [ + { + var: 'data.storage', + }, + 'url', + ], + }, + }, }, { type: 'textfield', @@ -158,11 +166,14 @@ export default [ weight: 20, conditional: { json: { - '!==': [{ - var: 'data.storage' - }, 'googledrive'] - } - } + '!==': [ + { + var: 'data.storage', + }, + 'googledrive', + ], + }, + }, }, { type: 'textfield', @@ -174,11 +185,14 @@ export default [ weight: 20, conditional: { json: { - '===': [{ - var: 'data.storage' - }, 'googledrive'] - } - } + '===': [ + { + var: 'data.storage', + }, + 'googledrive', + ], + }, + }, }, { type: 'textfield', @@ -186,8 +200,9 @@ export default [ key: 'fileNameTemplate', label: 'File Name Template', placeholder: '(optional) { {name} }-{ {guid} }', - tooltip: 'Specify template for name of uploaded file(s). Regular template variables are available (`data`, `component`, `user`, `value`, `moment` etc.), also `fileName`, `guid` variables are available. `guid` part must be present, if not found in template, will be added at the end.', - weight: 25 + tooltip: + 'Specify template for name of uploaded file(s). Regular template variables are available (`data`, `component`, `user`, `value`, `moment` etc.), also `fileName`, `guid` variables are available. `guid` part must be present, if not found in template, will be added at the end.', + weight: 25, }, { type: 'checkbox', @@ -195,14 +210,15 @@ export default [ key: 'image', label: 'Display as image(s)', tooltip: 'Instead of a list of linked files, images will be rendered in the view.', - weight: 30 + weight: 30, }, { type: 'checkbox', input: true, key: 'uploadOnly', label: 'Upload Only', - tooltip: 'When this is checked, will only allow you to upload file(s) and consequently the download, in this component, will be unavailable.', + tooltip: + 'When this is checked, will only allow you to upload file(s) and consequently the download, in this component, will be unavailable.', weight: 33, }, { @@ -210,11 +226,12 @@ export default [ input: true, key: 'privateDownload', label: 'Private Download', - tooltip: 'When this is checked, the file download will send a POST request to the download URL with the x-jwt-token header. This will allow your endpoint to create a Private download system.', + tooltip: + 'When this is checked, the file download will send a POST request to the download URL with the x-jwt-token header. This will allow your endpoint to create a Private download system.', weight: 31, conditional: { - json: { '===': [{ var: 'data.storage' }, 'url'] } - } + json: { '===': [{ var: 'data.storage' }, 'url'] }, + }, }, { type: 'textfield', @@ -225,16 +242,17 @@ export default [ tooltip: 'The image size for previewing images.', weight: 40, conditional: { - json: { '==': [{ var: 'data.image' }, true] } - } + json: { '==': [{ var: 'data.image' }, true] }, + }, }, { type: 'checkbox', input: true, key: 'webcam', label: 'Enable web camera', - tooltip: 'This will allow using an attached camera to directly take a picture instead of uploading an existing file.', - weight: 32 + tooltip: + 'This will allow using an attached camera to directly take a picture instead of uploading an existing file.', + weight: 32, }, { type: 'textfield', @@ -245,54 +263,56 @@ export default [ tooltip: 'The webcam size for taking pictures.', weight: 38, conditional: { - json: { '==': [{ var: 'data.webcam' }, true] } - } + json: { '==': [{ var: 'data.webcam' }, true] }, + }, }, { type: 'radio', input: true, key: 'capture', label: 'Enable device capture', - tooltip: 'This will allow a mobile device to open the camera or microphone directly in capture mode.', + tooltip: + 'This will allow a mobile device to open the camera or microphone directly in capture mode.', optionsLabelPosition: 'right', inline: true, defaultValue: false, values: [ { label: 'Disabled', - value: 'false' + value: 'false', }, { label: 'Environment (rear camera)', - value: 'environment' + value: 'environment', }, { label: 'User (front camera)', - value: 'user' - } - ] + value: 'user', + }, + ], }, { type: 'datagrid', input: true, label: 'File Types', key: 'fileTypes', - tooltip: 'Specify file types to classify the uploads. This is useful if you allow multiple types of uploads but want to allow the user to specify which type of file each is.', + tooltip: + 'Specify file types to classify the uploads. This is useful if you allow multiple types of uploads but want to allow the user to specify which type of file each is.', weight: 11, components: [ { label: 'Label', key: 'label', input: true, - type: 'textfield' + type: 'textfield', }, { label: 'Value', key: 'value', input: true, - type: 'textfield' - } - ] + type: 'textfield', + }, + ], }, { type: 'textfield', @@ -300,8 +320,9 @@ export default [ key: 'filePattern', label: 'File Pattern', placeholder: '.jpg,video/*,application/pdf', - tooltip: 'See https://github.com/danialfarid/ng-file-upload#full-reference for how to specify file patterns.', - weight: 50 + tooltip: + "See https://github.com/danialfarid/ng-file-upload#full-reference for how to specify file patterns.", + weight: 50, }, { type: 'textfield', @@ -309,8 +330,9 @@ export default [ key: 'fileMinSize', label: 'File Minimum Size', placeholder: '1MB', - tooltip: 'See https://github.com/danialfarid/ng-file-upload#full-reference for how to specify file sizes.', - weight: 60 + tooltip: + "See https://github.com/danialfarid/ng-file-upload#full-reference for how to specify file sizes.", + weight: 60, }, { type: 'textfield', @@ -318,7 +340,8 @@ export default [ key: 'fileMaxSize', label: 'File Maximum Size', placeholder: '10MB', - tooltip: 'See https://github.com/danialfarid/ng-file-upload#full-reference for how to specify file sizes.', - weight: 70 + tooltip: + "See https://github.com/danialfarid/ng-file-upload#full-reference for how to specify file sizes.", + weight: 70, }, ]; diff --git a/src/components/file/editForm/File.edit.validation.js b/src/components/file/editForm/File.edit.validation.js index ed5bc10a65..a025ede8c1 100644 --- a/src/components/file/editForm/File.edit.validation.js +++ b/src/components/file/editForm/File.edit.validation.js @@ -1,10 +1,10 @@ export default [ { key: 'unique', - ignore: true + ignore: true, }, { key: 'validateOn', - ignore: true + ignore: true, }, ]; diff --git a/src/components/form/Form.form.js b/src/components/form/Form.form.js index a9faf554f9..75c823befa 100644 --- a/src/components/form/Form.form.js +++ b/src/components/form/Form.form.js @@ -8,23 +8,26 @@ import FormEditData from './editForm/Form.edit.data'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: FormEditDisplay - }, - { - label: 'Form', - key: 'form', - weight: 10, - components: FormEditForm - }, - { - label: 'Data', - key: 'data', - weight: 10, - components: FormEditData - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: FormEditDisplay, + }, + { + label: 'Form', + key: 'form', + weight: 10, + components: FormEditForm, + }, + { + label: 'Data', + key: 'data', + weight: 10, + components: FormEditData, + }, + ], + ...extend, + ); } diff --git a/src/components/form/Form.js b/src/components/form/Form.js index c94bada94a..5ed827601e 100644 --- a/src/components/form/Form.js +++ b/src/components/form/Form.js @@ -1,4 +1,3 @@ - import _ from 'lodash'; import Component from '../_classes/component/Component'; import ComponentModal from '../_classes/componentModal/ComponentModal'; @@ -8,23 +7,26 @@ import { eachComponent, getStringFromComponentPath, getArrayFromComponentPath, - componentValueTypes + componentValueTypes, } from '../../utils/utils'; import { Formio } from '../../Formio'; import Form from '../../Form'; export default class FormComponent extends Component { static schema(...extend) { - return Component.schema({ - label: 'Form', - type: 'form', - key: 'form', - src: '', - reference: true, - form: '', - path: '', - tableView: true, - }, ...extend); + return Component.schema( + { + label: 'Form', + type: 'form', + key: 'form', + src: '', + reference: true, + form: '', + path: '', + tableView: true, + }, + ...extend, + ); } static get builderInfo() { @@ -34,7 +36,7 @@ export default class FormComponent extends Component { group: 'premium', documentation: '/userguide/form-building/premium-components#nested-form', weight: 110, - schema: FormComponent.schema() + schema: FormComponent.schema(), }; } @@ -47,7 +49,7 @@ export default class FormComponent extends Component { this.formObj = { display: this.component.display, settings: this.component.settings, - components: this.component.components + components: this.component.components, }; this.valueChanged = false; this.subForm = null; @@ -69,20 +71,17 @@ export default class FormComponent extends Component { } this.formSrc += `/${this.component.project}`; this.options.project = this.formSrc; - } - else { + } else { this.formSrc = Formio.getProjectUrl(); this.options.project = this.formSrc; } if (this.component.form) { if (isMongoId(this.component.form)) { this.formSrc += `/form/${this.component.form}`; - } - else { + } else { this.formSrc += `/${this.component.form}`; } - } - else if (this.component.path) { + } else if (this.component.path) { this.formSrc += `/${this.component.path}`; } } @@ -92,8 +91,7 @@ export default class FormComponent extends Component { const rootSrc = this.options.formio.formsUrl; if (this.component.form && isMongoId(this.component.form)) { this.formSrc = `${rootSrc}/${this.component.form}`; - } - else { + } else { const formPath = this.component.path || this.component.form; this.formSrc = `${rootSrc.replace(/\/form$/, '')}/${formPath}`; } @@ -105,11 +103,16 @@ export default class FormComponent extends Component { } // Add revision version if set. - if (this.component.revision || this.component.revision === 0 || - this.component.formRevision || this.component.formRevision === 0 - || this.component.revisionId + if ( + this.component.revision || + this.component.revision === 0 || + this.component.formRevision || + this.component.formRevision === 0 || + this.component.revisionId ) { - this.setFormRevision(this.component.revisionId || this.component.revision || this.component.formRevision); + this.setFormRevision( + this.component.revisionId || this.component.revision || this.component.formRevision, + ); } return this.createSubForm(); @@ -148,8 +151,7 @@ export default class FormComponent extends Component { if (!isNaN(revNumber)) { this.subFormRevision = rev; this.formSrc += `/v/${rev}`; - } - else { + } else { this.subFormRevision = undefined; } } @@ -165,7 +167,6 @@ export default class FormComponent extends Component { } } - getSubOptions(options = {}) { options.events = this.createEmitter(); @@ -235,7 +236,6 @@ export default class FormComponent extends Component { } return options; } - render() { if (this.builderMode) { @@ -264,29 +264,32 @@ export default class FormComponent extends Component { return 'No data provided'; } if (options?.email) { - let result = (` + let result = ` - `); + `; - this.everyComponent((component) => { - if (component.isInputComponent && component.visible && !component.skipInEmail) { - result += (` + this.everyComponent( + (component) => { + if (component.isInputComponent && component.visible && !component.skipInEmail) { + result += ` - `); - } - }, { - ...options, - fromRoot: true, - }); - - result += (` + `; + } + }, + { + ...options, + fromRoot: true, + }, + ); + + result += `
    ${component.label} ${component.getView(component.dataValue, options)}
    - `); + `; return result; } @@ -302,46 +305,59 @@ export default class FormComponent extends Component { if (this.builderMode) { return super.attach(element); } - return super.attach(element) - .then(() => { - if (this.isSubFormLazyLoad() && !this.hasLoadedForm && !this.subFormLoading) { - this.createSubForm(true); + return super.attach(element).then(() => { + if (this.isSubFormLazyLoad() && !this.hasLoadedForm && !this.subFormLoading) { + this.createSubForm(true); + } + + return this.subFormReady.then(() => { + this.empty(element); + if (this.options.builder) { + this.setContent( + element, + this.ce( + 'div', + { + class: 'text-muted text-center p-2', + }, + this.text(this.formObj.title), + ), + ); + return; } - return this.subFormReady.then(() => { - this.empty(element); - if (this.options.builder) { - this.setContent(element, this.ce('div', { - class: 'text-muted text-center p-2' - }, this.text(this.formObj.title))); - return; + this.setContent(element, this.render()); + if (this.subForm) { + if (this.isNestedWizard) { + element = this.root.element; } + this.subForm.attach(element); + this.valueChanged = this.hasSetValue; - this.setContent(element, this.render()); - if (this.subForm) { - if (this.isNestedWizard) { - element = this.root.element; - } - this.subForm.attach(element); - this.valueChanged = this.hasSetValue; - - if (!this.valueChanged && this.dataValue.state !== 'submitted') { - this.setDefaultValue(); - } - else { - this.restoreValue(); - } - } - if (!this.builderMode && this.component.modalEdit) { - const modalShouldBeOpened = this.componentModal ? this.componentModal.isOpened : false; - const currentValue = modalShouldBeOpened ? this.componentModal.currentValue : this.dataValue; - this.componentModal = new ComponentModal(this, element, modalShouldBeOpened, currentValue, this._referenceAttributeName); - this.setOpenModalElement(); + if (!this.valueChanged && this.dataValue.state !== 'submitted') { + this.setDefaultValue(); + } else { + this.restoreValue(); } + } + if (!this.builderMode && this.component.modalEdit) { + const modalShouldBeOpened = this.componentModal ? this.componentModal.isOpened : false; + const currentValue = modalShouldBeOpened + ? this.componentModal.currentValue + : this.dataValue; + this.componentModal = new ComponentModal( + this, + element, + modalShouldBeOpened, + currentValue, + this._referenceAttributeName, + ); + this.setOpenModalElement(); + } - this.calculateValue(); - }); + this.calculateValue(); }); + }); } detach() { @@ -356,10 +372,12 @@ export default class FormComponent extends Component { } get hasLoadedForm() { - return this.formObj - && this.formObj.components - && Array.isArray(this.formObj.components) - && this.formObj.components.length; + return ( + this.formObj && + this.formObj.components && + Array.isArray(this.formObj.components) && + this.formObj.components.length + ); } set currentForm(instance) { @@ -367,15 +385,17 @@ export default class FormComponent extends Component { if (!this.subForm) { return; } - this.subForm.getComponents().forEach(component => { + this.subForm.getComponents().forEach((component) => { component.currentForm = this; }); } get isRevisionChanged() { - return _.isNumber(this.subFormRevision) - && _.isNumber(this.formObj._vid) - && this.formObj._vid !== this.subFormRevision; + return ( + _.isNumber(this.subFormRevision) && + _.isNumber(this.formObj._vid) && + this.formObj._vid !== this.subFormRevision + ); } destroy(all = false) { @@ -412,11 +432,12 @@ export default class FormComponent extends Component { updateSubWizards(subForm) { if (this.isNestedWizard && this.root?.subWizards && subForm?._form?.display === 'wizard') { - const existedForm = this.root.subWizards.findIndex(form => form.component.form === this.component.form); + const existedForm = this.root.subWizards.findIndex( + (form) => form.component.form === this.component.form, + ); if (existedForm !== -1) { this.root.subWizards[existedForm] = this; - } - else { + } else { this.root.subWizards.push(this); } this.emit('subWizardsUpdated', subForm); @@ -429,54 +450,56 @@ export default class FormComponent extends Component { * @returns {*} - The subform instance. */ createSubForm(fromAttach) { - this.subFormReady = this.loadSubForm(fromAttach).then((form) => { - if (!form) { - return; - } + this.subFormReady = this.loadSubForm(fromAttach) + .then((form) => { + if (!form) { + return; + } - // Iterate through every component and hide the submit button. - eachComponent(form.components, (component) => { - this.hideSubmitButton(component); - }); + // Iterate through every component and hide the submit button. + eachComponent(form.components, (component) => { + this.hideSubmitButton(component); + }); - // If the subform is already created then destroy the old one. - if (this.subForm) { - this.subForm.destroy(); - } + // If the subform is already created then destroy the old one. + if (this.subForm) { + this.subForm.destroy(); + } - // Render the form. - return (new Form(form, this.getSubOptions())).ready.then((instance) => { - this.subForm = instance; - this.subForm.currentForm = this; - this.subForm.parent = this; - this.subForm.parentVisible = this.visible; - this.subForm.on('change', () => { - if (this.subForm) { - this.dataValue = this.subForm.getValue(); - this.triggerChange({ - noEmit: true - }); - } + // Render the form. + return new Form(form, this.getSubOptions()).ready.then((instance) => { + this.subForm = instance; + this.subForm.currentForm = this; + this.subForm.parent = this; + this.subForm.parentVisible = this.visible; + this.subForm.on('change', () => { + if (this.subForm) { + this.dataValue = this.subForm.getValue(); + this.triggerChange({ + noEmit: true, + }); + } + }); + this.subForm.url = this.formSrc; + this.subForm.nosubmit = true; + this.subForm.root = this.root; + this.subForm.localRoot = this.isNestedWizard ? this.localRoot : this.subForm; + this.restoreValue(); + this.valueChanged = this.hasSetValue; + this.onChange(); + return this.subForm; }); - this.subForm.url = this.formSrc; - this.subForm.nosubmit = true; - this.subForm.root = this.root; - this.subForm.localRoot = this.isNestedWizard ? this.localRoot : this.subForm; - this.restoreValue(); - this.valueChanged = this.hasSetValue; - this.onChange(); - return this.subForm; + }) + .then((subForm) => { + this.updateSubWizards(subForm); + return subForm; }); - }).then((subForm) => { - this.updateSubWizards(subForm); - return subForm; - }); return this.subFormReady; } hideSubmitButton(component) { - const isSubmitButton = (component.type === 'button') && - ((component.action === 'submit') || !component.action); + const isSubmitButton = + component.type === 'button' && (component.action === 'submit' || !component.action); if (isSubmitButton) { component.hidden = true; @@ -493,24 +516,32 @@ export default class FormComponent extends Component { return Promise.resolve(); } - if (this.hasLoadedForm && !this.isRevisionChanged && - !(this.options.pdf && this.component?.useOriginalRevision && _.isNull(this.subForm) && !this.subFormLoading) + if ( + this.hasLoadedForm && + !this.isRevisionChanged && + !( + this.options.pdf && + this.component?.useOriginalRevision && + _.isNull(this.subForm) && + !this.subFormLoading + ) ) { // Pass config down to sub forms. if (this.root && this.root.form && this.root.form.config && !this.formObj.config) { this.formObj.config = this.root.form.config; } return Promise.resolve(this.formObj); - } - else if (this.formSrc) { + } else if (this.formSrc) { this.subFormLoading = true; - const options = this.root?.formio?.base && this.root?.formio?.projectUrl - ? { - base: this.root.formio.base, - project: this.root.formio.projectUrl, - } - : {}; - return (new Formio(this.formSrc, options)).loadForm({ params: { live: 1 } }) + const options = + this.root?.formio?.base && this.root?.formio?.projectUrl + ? { + base: this.root.formio.base, + project: this.root.formio.projectUrl, + } + : {}; + return new Formio(this.formSrc, options) + .loadForm({ params: { live: 1 } }) .then((formObj) => { this.formObj = formObj; if (this.options.pdf && this.component.useOriginalRevision) { @@ -586,7 +617,11 @@ export default class FormComponent extends Component { * @returns {*|boolean} - TRUE if the subform should be submitted, FALSE if it should not. */ get shouldSubmit() { - return this.subFormReady && (!this.component.hasOwnProperty('reference') || this.component.reference) && !this.isHidden(); + return ( + this.subFormReady && + (!this.component.hasOwnProperty('reference') || this.component.reference) && + !this.isHidden() + ); } /** @@ -596,8 +631,7 @@ export default class FormComponent extends Component { getSubFormData() { if (_.get(this.subForm, 'form.display') === 'pdf') { return this.subForm.getSubmission(); - } - else { + } else { return Promise.resolve(this.dataValue); } } @@ -615,16 +649,19 @@ export default class FormComponent extends Component { } this.subForm.nosubmit = false; this.subForm.submitted = true; - return this.subForm.submitForm().then(result => { - this.subForm.loading = false; - this.subForm.showAllErrors = false; - this.dataValue = result.submission; - return this.dataValue; - }).catch(err => { - this.subForm.showAllErrors = true; - this.subForm.onSubmissionError(err); - return Promise.reject(err); - }); + return this.subForm + .submitForm() + .then((result) => { + this.subForm.loading = false; + this.subForm.showAllErrors = false; + this.dataValue = result.submission; + return this.dataValue; + }) + .catch((err) => { + this.subForm.showAllErrors = true; + this.subForm.onSubmissionError(err); + return Promise.reject(err); + }); }); } return this.getSubFormData(); @@ -670,7 +707,7 @@ export default class FormComponent extends Component { } isSubFormLazyLoad() { - return this.root?._form?.display === 'wizard' && this.component.lazyLoad; + return this.root?._form?.display === 'wizard' && this.component.lazyLoad; } isHidden() { @@ -686,18 +723,18 @@ export default class FormComponent extends Component { this.valueChanged = true; if (this.subForm) { const revisionPath = submission._frid ? '_frid' : '_vid'; - const shouldLoadOriginalRevision = this.useOriginalRevision - && (_.isNumber(submission[revisionPath]) || _.isNumber(submission._fvid)) - && _.isNumber(this.subForm.form?.[revisionPath]) - && submission._fvid !== this.subForm.form[revisionPath]; + const shouldLoadOriginalRevision = + this.useOriginalRevision && + (_.isNumber(submission[revisionPath]) || _.isNumber(submission._fvid)) && + _.isNumber(this.subForm.form?.[revisionPath]) && + submission._fvid !== this.subForm.form[revisionPath]; if (shouldLoadOriginalRevision) { - this.setFormRevision( submission._frid || submission._fvid); + this.setFormRevision(submission._frid || submission._fvid); this.createSubForm().then(() => { this.attach(this.element); }); - } - else { + } else { this.setSubFormValue(submission, flags); } } @@ -705,27 +742,26 @@ export default class FormComponent extends Component { } setSubFormValue(submission, flags) { - const shouldLoadSubmissionById = submission - && submission._id - && this.subForm.formio - && _.isEmpty(submission.data); - const shouldLoadDraftById = this.options.saveDraft && _.isEmpty(submission.data) && _.get(this.subForm, 'submission._id'); + const shouldLoadSubmissionById = + submission && submission._id && this.subForm.formio && _.isEmpty(submission.data); + const shouldLoadDraftById = + this.options.saveDraft && _.isEmpty(submission.data) && _.get(this.subForm, 'submission._id'); if (shouldLoadSubmissionById || shouldLoadDraftById) { const formId = submission.form || this.formObj.form || this.component.form; const submissionUrl = `${this.subForm.formio.formsUrl}/${formId}/submission/${submission._id || this.subForm.submission._id}`; - const options = this.root?.formio?.base && this.root?.formio?.projectUrl - ? { - base: this.root.formio.base, - project: this.root.formio.projectUrl, - } - : {}; + const options = + this.root?.formio?.base && this.root?.formio?.projectUrl + ? { + base: this.root.formio.base, + project: this.root.formio.projectUrl, + } + : {}; this.subForm.setUrl(submissionUrl, { ...this.options, ...options }); this.subForm.loadSubmission().catch((err) => { console.error(`Unable to load subform submission ${submission._id}:`, err); }); - } - else { + } else { this.onSetSubFormValue(submission, flags); } } @@ -740,7 +776,11 @@ export default class FormComponent extends Component { } isEmpty(value = this.dataValue) { - return value === null || _.isEqual(value, this.emptyValue) || (this.areAllComponentsEmpty(value?.data) && !value?._id); + return ( + value === null || + _.isEqual(value, this.emptyValue) || + (this.areAllComponentsEmpty(value?.data) && !value?._id) + ); } areAllComponentsEmpty(data) { @@ -750,8 +790,7 @@ export default class FormComponent extends Component { const componentValue = _.get(data, comp.key); res &= comp.isEmpty(componentValue); }); - } - else { + } else { res = false; } return res; @@ -784,7 +823,9 @@ export default class FormComponent extends Component { * @returns {boolean} - TRUE if this form is a Nested Wizard, FALSE otherwise */ get isNestedWizard() { - return this.subForm?._form?.display === 'wizard' && this.parent?.parent?._form?.display === 'wizard'; + return ( + this.subForm?._form?.display === 'wizard' && this.parent?.parent?._form?.display === 'wizard' + ); } get visible() { @@ -874,7 +915,7 @@ export default class FormComponent extends Component { const emitter = new EventEmitter(); const nativeEmit = emitter.emit; const that = this; - emitter.emit = function(event, ...args) { + emitter.emit = function (event, ...args) { const eventType = event.replace(`${that.options.namespace}.`, ''); nativeEmit.call(this, event, ...args); if (!that.isInternalEvent(eventType)) { @@ -888,7 +929,7 @@ export default class FormComponent extends Component { deleteValue() { super.setValue(null, { noUpdateEvent: true, - noDefault: true + noDefault: true, }); this.unset(); } diff --git a/src/components/form/editForm/Form.edit.data.js b/src/components/form/editForm/Form.edit.data.js index fd428e9427..2aed87206a 100644 --- a/src/components/form/editForm/Form.edit.data.js +++ b/src/components/form/editForm/Form.edit.data.js @@ -1,13 +1,21 @@ import EditFormUtils from '../../_classes/component/editForm/utils'; - + export default [ - EditFormUtils.javaScriptValue('Custom Default Value', 'customDefaultValue', 'customDefaultValue', 120, + EditFormUtils.javaScriptValue( + 'Custom Default Value', + 'customDefaultValue', + 'customDefaultValue', + 120, '

    Example:

    value = data.firstName + " " + data.lastName;

    ', - '

    Example:

    {"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}
    ' + '

    Example:

    {"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}
    ', ), - EditFormUtils.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 130, + EditFormUtils.javaScriptValue( + 'Calculated Value', + 'calculateValue', + 'calculateValue', + 130, '

    Example:

    value = data.a + data.b + data.c;

    ', - '

    Example:

    {"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}

    Click here for an example

    ' + '

    Example:

    {"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}

    Click here for an example

    ', ), { weight: 140, @@ -16,7 +24,6 @@ export default [ key: 'clearOnHide', defaultValue: true, tooltip: 'When a field is hidden, clear the value.', - input: true + input: true, }, ]; - diff --git a/src/components/form/editForm/Form.edit.display.js b/src/components/form/editForm/Form.edit.display.js index b01a3138de..ca1977a929 100644 --- a/src/components/form/editForm/Form.edit.display.js +++ b/src/components/form/editForm/Form.edit.display.js @@ -1,27 +1,26 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'tabIndex', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, ]; - diff --git a/src/components/form/editForm/Form.edit.form.js b/src/components/form/editForm/Form.edit.form.js index 575f7a793f..9d0ef25478 100644 --- a/src/components/form/editForm/Form.edit.form.js +++ b/src/components/form/editForm/Form.edit.form.js @@ -4,7 +4,7 @@ export default [ input: true, dataSrc: 'url', data: { - url: '/form?limit=1000000&select=_id,title,display' + url: '/form?limit=1000000&select=_id,title,display', }, searchField: 'title__regex', template: '{{ item.title }}', @@ -27,13 +27,20 @@ export default [ errorLabel: '', key: 'lazyLoad', type: 'checkbox', - tooltip: 'if it is checked, the subform is loaded after navigation to the page with this component within the wizard.', + tooltip: + 'if it is checked, the subform is loaded after navigation to the page with this component within the wizard.', input: true, - customConditional( { instance, data }) { - const formInfo = instance.root?.getComponent('form')?.defaultDownloadedResources.find(res => res._id === data.form); + customConditional({ instance, data }) { + const formInfo = instance.root + ?.getComponent('form') + ?.defaultDownloadedResources.find((res) => res._id === data.form); const displayMode = 'wizard'; - return instance.options?.editForm?.display === displayMode && formInfo && formInfo.display !== displayMode; + return ( + instance.options?.editForm?.display === displayMode && + formInfo && + formInfo.display !== displayMode + ); }, }, { @@ -41,7 +48,7 @@ export default [ input: true, dataSrc: 'url', data: { - url: '/form/{{ data.form }}/v' + url: '/form/{{ data.form }}/v', }, searchField: 'title__regex', template: '{{ item._vid }}', @@ -51,8 +58,9 @@ export default [ key: 'revision', weight: 10, lazyLoad: true, - tooltip: 'You can lock the nested form to a specific revision by choosing the revision number here.', - customConditional: 'show = !!data.form' + tooltip: + 'You can lock the nested form to a specific revision by choosing the revision number here.', + customConditional: 'show = !!data.form', }, { type: 'checkbox', @@ -60,7 +68,8 @@ export default [ weight: 19, key: 'useOriginalRevision', label: 'Use Original Revision while Submissions Viewing', - tooltip: 'Using this option will make form load the original revision (the one which was used to make a submission) when viewing a submission.' + tooltip: + 'Using this option will make form load the original revision (the one which was used to make a submission) when viewing a submission.', }, { type: 'checkbox', @@ -68,6 +77,7 @@ export default [ weight: 20, key: 'reference', label: 'Save as reference', - tooltip: 'Using this option will save this field as a reference and link its value to the value of the origin record.' - } + tooltip: + 'Using this option will save this field as a reference and link its value to the value of the origin record.', + }, ]; diff --git a/src/components/hidden/Hidden.form.js b/src/components/hidden/Hidden.form.js index 552f4ba1eb..d4ba8c0260 100644 --- a/src/components/hidden/Hidden.form.js +++ b/src/components/hidden/Hidden.form.js @@ -7,23 +7,26 @@ import HiddenEditData from './editForm/Hidden.edit.data'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: HiddenEditDisplay - }, - { - key: 'data', - components: HiddenEditData - }, - { - key: 'validation', - ignore: true - }, - { - key: 'conditional', - ignore: true - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: HiddenEditDisplay, + }, + { + key: 'data', + components: HiddenEditData, + }, + { + key: 'validation', + ignore: true, + }, + { + key: 'conditional', + ignore: true, + }, + ], + ...extend, + ); } diff --git a/src/components/hidden/Hidden.js b/src/components/hidden/Hidden.js index 977152ac2a..4dd77ac269 100644 --- a/src/components/hidden/Hidden.js +++ b/src/components/hidden/Hidden.js @@ -2,11 +2,14 @@ import Input from '../_classes/input/Input'; export default class HiddenComponent extends Input { static schema(...extend) { - return Input.schema({ - type: 'hidden', - tableView: false, - inputType: 'hidden' - }, ...extend); + return Input.schema( + { + type: 'hidden', + tableView: false, + inputType: 'hidden', + }, + ...extend, + ); } static get builderInfo() { @@ -17,7 +20,7 @@ export default class HiddenComponent extends Input { weight: 0, documentation: '/userguide/form-building/data-components#hidden', showPreview: false, - schema: HiddenComponent.schema() + schema: HiddenComponent.schema(), }; } diff --git a/src/components/hidden/editForm/Hidden.edit.data.js b/src/components/hidden/editForm/Hidden.edit.data.js index 1f1b9c78f8..66ac07fc77 100644 --- a/src/components/hidden/editForm/Hidden.edit.data.js +++ b/src/components/hidden/editForm/Hidden.edit.data.js @@ -1,14 +1,14 @@ export default [ { key: 'multiple', - ignore: true + ignore: true, }, { key: 'clearOnHide', - ignore: true + ignore: true, }, { key: 'allowCalculateOverride', - ignore: true + ignore: true, }, ]; diff --git a/src/components/hidden/editForm/Hidden.edit.display.js b/src/components/hidden/editForm/Hidden.edit.display.js index 2b10976da1..317fa27c18 100644 --- a/src/components/hidden/editForm/Hidden.edit.display.js +++ b/src/components/hidden/editForm/Hidden.edit.display.js @@ -1,42 +1,42 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'hidden', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, ]; diff --git a/src/components/html/HTML.form.js b/src/components/html/HTML.form.js index 84e3707323..a5bcfb2b9b 100644 --- a/src/components/html/HTML.form.js +++ b/src/components/html/HTML.form.js @@ -7,23 +7,26 @@ import HTMLEditLogic from './editForm/HTML.edit.logic'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: HTMLEditDisplay, - }, - { - key: 'data', - ignore: true, - }, - { - key: 'validation', - ignore: true, - }, - { - key: 'logic', - components: HTMLEditLogic, - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: HTMLEditDisplay, + }, + { + key: 'data', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, + { + key: 'logic', + components: HTMLEditLogic, + }, + ], + ...extend, + ); } diff --git a/src/components/html/HTML.js b/src/components/html/HTML.js index c2f7a60a51..3dbb0504f8 100644 --- a/src/components/html/HTML.js +++ b/src/components/html/HTML.js @@ -3,15 +3,18 @@ import _ from 'lodash'; export default class HTMLComponent extends Component { static schema(...extend) { - return Component.schema({ - label: 'HTML', - type: 'htmlelement', - tag: 'div', - attrs: [], - content: '', - input: false, - persistent: false - }, ...extend); + return Component.schema( + { + label: 'HTML', + type: 'htmlelement', + tag: 'div', + attrs: [], + content: '', + input: false, + persistent: false, + }, + ...extend, + ); } static get builderInfo() { @@ -22,7 +25,7 @@ export default class HTMLComponent extends Component { weight: 0, documentation: '/userguide/form-building/layout-components#html-element', showPreview: false, - schema: HTMLComponent.schema() + schema: HTMLComponent.schema(), }; } @@ -45,14 +48,14 @@ export default class HTMLComponent extends Component { } const submission = _.get(this.root, 'submission', {}); - const content = this.component.content ? this.interpolate( - this.sanitize(this.component.content, this.shouldSanitizeValue), - { - metadata: submission.metadata || {}, - submission: submission, - data: this.rootValue, - row: this.data - }) : ''; + const content = this.component.content + ? this.interpolate(this.sanitize(this.component.content, this.shouldSanitizeValue), { + metadata: submission.metadata || {}, + submission: submission, + data: this.rootValue, + row: this.data, + }) + : ''; return content; } @@ -62,9 +65,14 @@ export default class HTMLComponent extends Component { checkRefreshOn(changed) { super.checkRefreshOn(changed); - if (!this.builderMode && this.component.refreshOnChange && this.element && - !_.isUndefined(changed) && ((_.isBoolean(changed) && changed) || !_.isEmpty(changed)) && - this.conditionallyVisible(this.data, this.row)) { + if ( + !this.builderMode && + this.component.refreshOnChange && + this.element && + !_.isUndefined(changed) && + ((_.isBoolean(changed) && changed) || !_.isEmpty(changed)) && + this.conditionallyVisible(this.data, this.row) + ) { this.setContent(this.element, this.renderContent()); } } @@ -81,8 +89,8 @@ export default class HTMLComponent extends Component { metadata: submission.metadata || {}, submission: submission, data: this.rootValue, - row: this.data - }) + row: this.data, + }), }; }), content: this.content, diff --git a/src/components/html/editForm/HTML.edit.display.js b/src/components/html/editForm/HTML.edit.display.js index 3e02c68270..3198f07ec0 100644 --- a/src/components/html/editForm/HTML.edit.display.js +++ b/src/components/html/editForm/HTML.edit.display.js @@ -1,39 +1,39 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { type: 'textfield', @@ -42,7 +42,7 @@ export default [ weight: 50, label: 'HTML Tag', placeholder: 'HTML Element Tag', - tooltip: 'The tag of this HTML element.' + tooltip: 'The tag of this HTML element.', }, { type: 'textfield', @@ -51,29 +51,30 @@ export default [ weight: 60, label: 'CSS Class', placeholder: 'CSS Class', - tooltip: 'The CSS class for this HTML element.' + tooltip: 'The CSS class for this HTML element.', }, { type: 'datagrid', input: true, label: 'Attributes', key: 'attrs', - tooltip: 'The attributes for this HTML element. Only safe attributes are allowed, such as src, href, and title.', + tooltip: + 'The attributes for this HTML element. Only safe attributes are allowed, such as src, href, and title.', weight: 70, components: [ { label: 'Attribute', key: 'attr', input: true, - type: 'textfield' + type: 'textfield', }, { label: 'Value', key: 'value', input: true, - type: 'textfield' - } - ] + type: 'textfield', + }, + ], }, { type: 'textarea', @@ -85,7 +86,7 @@ export default [ tooltip: 'The content of this HTML element.', defaultValue: '
    Content
    ', key: 'content', - weight: 80 + weight: 80, }, { weight: 85, @@ -93,6 +94,6 @@ export default [ label: 'Refresh On Change', tooltip: 'Rerender the field whenever a value on the form changes.', key: 'refreshOnChange', - input: true + input: true, }, ]; diff --git a/src/components/html/editForm/HTML.edit.logic.js b/src/components/html/editForm/HTML.edit.logic.js index e71f4596c7..3f33b5c4fb 100644 --- a/src/components/html/editForm/HTML.edit.logic.js +++ b/src/components/html/editForm/HTML.edit.logic.js @@ -83,10 +83,12 @@ export default [ weight: 30, input: true, customConditional(context) { - return context.row.type === 'property' && + return ( + context.row.type === 'property' && context.row.hasOwnProperty('property') && context.row.property.type === 'string' && - context.row.property.component === 'content'; + context.row.property.component === 'content' + ); }, }, ], diff --git a/src/components/number/Number.form.js b/src/components/number/Number.form.js index 61b80d23d5..b586dcd483 100644 --- a/src/components/number/Number.form.js +++ b/src/components/number/Number.form.js @@ -9,19 +9,22 @@ import NumberEditValidation from './editForm/Number.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return textEditForm([ - { - key: 'display', - components: NumberEditDisplay - }, - { - key: 'data', - components: NumberEditData - }, - { - key: 'validation', - components: NumberEditValidation - }, - ], ...extend); +export default function (...extend) { + return textEditForm( + [ + { + key: 'display', + components: NumberEditDisplay, + }, + { + key: 'data', + components: NumberEditData, + }, + { + key: 'validation', + components: NumberEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/number/Number.js b/src/components/number/Number.js index 812793a282..deae1d845c 100644 --- a/src/components/number/Number.js +++ b/src/components/number/Number.js @@ -1,22 +1,30 @@ import { createNumberMask } from '@formio/text-mask-addons'; -import { conformToMask,maskInput } from '@formio/vanilla-text-mask'; +import { conformToMask, maskInput } from '@formio/vanilla-text-mask'; import _ from 'lodash'; import Input from '../_classes/input/Input'; -import { getNumberSeparators, getNumberDecimalLimit, componentValueTypes, getComponentSavedTypes } from '../../utils/utils'; +import { + getNumberSeparators, + getNumberDecimalLimit, + componentValueTypes, + getComponentSavedTypes, +} from '../../utils/utils'; export default class NumberComponent extends Input { static schema(...extend) { - return Input.schema({ - type: 'number', - label: 'Number', - key: 'number', - validate: { - min: '', - max: '', - step: 'any', - integer: '' - } - }, ...extend); + return Input.schema( + { + type: 'number', + label: 'Number', + key: 'number', + validate: { + min: '', + max: '', + step: 'any', + integer: '', + }, + }, + ...extend, + ); } static get builderInfo() { @@ -26,7 +34,7 @@ export default class NumberComponent extends Input { group: 'basic', documentation: '/userguide/form-building/form-components#number', weight: 30, - schema: NumberComponent.schema() + schema: NumberComponent.schema(), }; } @@ -37,10 +45,16 @@ export default class NumberComponent extends Input { static get conditionOperatorsSettings() { return { ...super.conditionOperatorsSettings, - operators: [...super.conditionOperatorsSettings.operators, 'lessThan', 'greaterThan', 'lessThanOrEqual','greaterThanOrEqual'], + operators: [ + ...super.conditionOperatorsSettings.operators, + 'lessThan', + 'greaterThan', + 'lessThanOrEqual', + 'greaterThanOrEqual', + ], valueComponent(classComp) { - return { ... classComp, type: 'number' }; - } + return { ...classComp, type: 'number' }; + }, }; } @@ -49,21 +63,32 @@ export default class NumberComponent extends Input { return getComponentSavedTypes(schema) || [componentValueTypes.number]; } - constructor(...args) { + constructor(...args) { super(...args); const separators = getNumberSeparators(this.options.language || navigator.language); - this.decimalSeparator = this.options.decimalSeparator = this.component.decimalSymbol || this.options.decimalSeparator - || this.options.properties?.decimalSeparator - || separators.decimalSeparator; + this.decimalSeparator = this.options.decimalSeparator = + this.component.decimalSymbol || + this.options.decimalSeparator || + this.options.properties?.decimalSeparator || + separators.decimalSeparator; if (this.component.delimiter) { - this.delimiter = this.component.thousandsSeparator || this.options.properties?.thousandsSeparator || this.options.thousandsSeparator || separators.delimiter; - } - else { - if (this.component.thousandsSeparator || this.options.properties?.thousandsSeparator || this.options.thousandsSeparator){ - console.warn('In order for thousands separator to work properly, you must set the delimiter to true in the component json'); + this.delimiter = + this.component.thousandsSeparator || + this.options.properties?.thousandsSeparator || + this.options.thousandsSeparator || + separators.delimiter; + } else { + if ( + this.component.thousandsSeparator || + this.options.properties?.thousandsSeparator || + this.options.thousandsSeparator + ) { + console.warn( + 'In order for thousands separator to work properly, you must set the delimiter to true in the component json', + ); } this.delimiter = ''; } @@ -103,7 +128,7 @@ export default class NumberComponent extends Input { get defaultValue() { let defaultValue = super.defaultValue; - if (typeof defaultValue === 'string'){ + if (typeof defaultValue === 'string') { // Default value may be a string or have custom thousands separators or decimal symbols, so we need to call // parseNumber on it defaultValue = this.parseNumber(defaultValue); @@ -113,13 +138,17 @@ export default class NumberComponent extends Input { } if (!this.component.multiple && _.isArray(defaultValue)) { - defaultValue = !defaultValue[0] && defaultValue[0] !== 0 ? null : defaultValue[0]; + defaultValue = !defaultValue[0] && defaultValue[0] !== 0 ? null : defaultValue[0]; } return defaultValue; } isDecimalAllowed() { - return _.get(this.component, 'allowDecimal', !(this.component.validate && this.component.validate.integer)); + return _.get( + this.component, + 'allowDecimal', + !(this.component.validate && this.component.validate.integer), + ); } /** @@ -134,8 +163,7 @@ export default class NumberComponent extends Input { if (this.component.validate && this.component.validate.integer) { return parseInt(value, 10); - } - else { + } else { return parseFloat(value); } } @@ -157,8 +185,7 @@ export default class NumberComponent extends Input { const info = super.inputInfo; if (this.component.mask) { info.attr.type = 'password'; - } - else { + } else { info.attr.type = 'text'; } info.attr.inputmode = this.isDecimalAllowed() ? 'decimal' : 'numeric'; @@ -201,8 +228,7 @@ export default class NumberComponent extends Input { } else { value = String(value).replace('.', this.decimalSeparator); } - } - else { + } else { value = null; } @@ -212,8 +238,7 @@ export default class NumberComponent extends Input { formatValue(value) { if (this.component.requireDecimal && value && !value.includes(this.decimalSeparator)) { return `${value}${this.decimalSeparator}${_.repeat('0', this.decimalLimit)}`; - } - else if (this.component.requireDecimal && value && value.includes(this.decimalSeparator)) { + } else if (this.component.requireDecimal && value && value.includes(this.decimalSeparator)) { return `${value}${_.repeat('0', this.decimalLimit - value.split(this.decimalSeparator)[1].length)}`; } @@ -231,7 +256,7 @@ export default class NumberComponent extends Input { getMaskedValue(value) { value = value === null ? '0' : value.toString(); - if (value.includes('.') && '.'!== this.decimalSeparator) { + if (value.includes('.') && '.' !== this.decimalSeparator) { value = value.replace('.', this.decimalSeparator); } diff --git a/src/components/number/editForm/Number.edit.data.js b/src/components/number/editForm/Number.edit.data.js index 1c937e491b..08e53f94ed 100644 --- a/src/components/number/editForm/Number.edit.data.js +++ b/src/components/number/editForm/Number.edit.data.js @@ -5,7 +5,7 @@ export default [ weight: 70, key: 'delimiter', label: 'Use Thousands Separator', - tooltip: 'Separate thousands by local delimiter.' + tooltip: 'Separate thousands by local delimiter.', }, { type: 'number', @@ -13,7 +13,7 @@ export default [ weight: 80, key: 'decimalLimit', label: 'Decimal Places', - tooltip: 'The maximum number of decimal places.' + tooltip: 'The maximum number of decimal places.', }, { type: 'checkbox', @@ -21,7 +21,7 @@ export default [ weight: 90, key: 'requireDecimal', label: 'Require Decimal', - tooltip: 'Always show decimals, even if trailing zeros.' + tooltip: 'Always show decimals, even if trailing zeros.', }, { key: 'case', diff --git a/src/components/number/editForm/Number.edit.display.js b/src/components/number/editForm/Number.edit.display.js index 06689713fe..5e3927c84c 100644 --- a/src/components/number/editForm/Number.edit.display.js +++ b/src/components/number/editForm/Number.edit.display.js @@ -1,15 +1,15 @@ export default [ { key: 'spellcheck', - ignore: true + ignore: true, }, { key: 'inputMask', - ignore: true + ignore: true, }, { key: 'allowMultipleMasks', - ignore: true + ignore: true, }, { key: 'showWordCount', @@ -18,5 +18,5 @@ export default [ { key: 'showCharCount', ignore: true, - } + }, ]; diff --git a/src/components/number/editForm/Number.edit.validation.js b/src/components/number/editForm/Number.edit.validation.js index 458e4b795d..e3558ffd64 100644 --- a/src/components/number/editForm/Number.edit.validation.js +++ b/src/components/number/editForm/Number.edit.validation.js @@ -1,27 +1,27 @@ export default [ { key: 'unique', - ignore: true + ignore: true, }, { key: 'validate.minLength', - ignore: true + ignore: true, }, { key: 'validate.maxLength', - ignore: true + ignore: true, }, { key: 'validate.minWords', - ignore: true + ignore: true, }, { key: 'validate.maxWords', - ignore: true + ignore: true, }, { key: 'validate.pattern', - ignore: true + ignore: true, }, { type: 'number', @@ -30,7 +30,7 @@ export default [ input: true, placeholder: 'Minimum Value', tooltip: 'The minimum value this field must have before the form can be submitted.', - weight: 150 + weight: 150, }, { type: 'number', @@ -39,6 +39,6 @@ export default [ input: true, placeholder: 'Maximum Value', tooltip: 'The maximum value this field can have before the form can be submitted.', - weight: 160 - } + weight: 160, + }, ]; diff --git a/src/components/panel/Panel.form.js b/src/components/panel/Panel.form.js index ed92335bfa..b6a641dabf 100644 --- a/src/components/panel/Panel.form.js +++ b/src/components/panel/Panel.form.js @@ -8,15 +8,18 @@ import PanelEditConditional from './editForm/Panel.edit.conditional'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: PanelEditDisplay - }, - { - key: 'conditional', - components: PanelEditConditional, - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: PanelEditDisplay, + }, + { + key: 'conditional', + components: PanelEditConditional, + }, + ], + ...extend, + ); } diff --git a/src/components/panel/Panel.js b/src/components/panel/Panel.js index 3d0d6bb7d5..a78855b410 100644 --- a/src/components/panel/Panel.js +++ b/src/components/panel/Panel.js @@ -3,19 +3,22 @@ import { isChildOf } from '../../utils/utils'; export default class PanelComponent extends NestedComponent { static schema(...extend) { - return NestedComponent.schema({ - label: 'Panel', - type: 'panel', - key: 'panel', - title: 'Panel', - theme: 'default', - breadcrumb: 'default', - components: [], - clearOnHide: false, - input: false, - tableView: false, - persistent: false - }, ...extend); + return NestedComponent.schema( + { + label: 'Panel', + type: 'panel', + key: 'panel', + title: 'Panel', + theme: 'default', + breadcrumb: 'default', + components: [], + clearOnHide: false, + input: false, + tableView: false, + persistent: false, + }, + ...extend, + ); } static get builderInfo() { @@ -26,7 +29,7 @@ export default class PanelComponent extends NestedComponent { documentation: '/userguide/form-building/layout-components#panel', showPreview: false, weight: 30, - schema: PanelComponent.schema() + schema: PanelComponent.schema(), }; } diff --git a/src/components/panel/editForm/Panel.edit.conditional.js b/src/components/panel/editForm/Panel.edit.conditional.js index f32c3c885a..54ea5db972 100644 --- a/src/components/panel/editForm/Panel.edit.conditional.js +++ b/src/components/panel/editForm/Panel.edit.conditional.js @@ -3,19 +3,19 @@ import _isEqual from 'lodash/isEqual'; import _omit from 'lodash/omit'; import _difference from 'lodash/difference'; import _keys from 'lodash/keys'; - + const title = 'Advanced Next Page'; const jsonProp = 'nextPage'; const jsProp = 'nextPage'; -const jsDocHTML = (` +const jsDocHTML = `

    You must assign the next variable with the API key of the next page.

    The global variable data is provided, and allows you to access the data of any form component, by using its API key.

    Also moment library is available, and allows you to manipulate dates in a convenient way.

    Example
    next = data.addComment ? 'page3' : 'page4';
    -`); -const jsonDocHTML = (` +`; +const jsonDocHTML = `

    Submission data is available as JsonLogic variables, with the same api key as your components.

    -`); +`; const settingComponent = EditFormUtils.javaScriptValue( title, @@ -23,7 +23,7 @@ const settingComponent = EditFormUtils.javaScriptValue( jsonProp, 110, jsDocHTML, - jsonDocHTML + jsonDocHTML, ); export default [ @@ -43,7 +43,6 @@ export default [ } } return isWizardPanel; - } - } + }, + }, ]; - diff --git a/src/components/panel/editForm/Panel.edit.display.js b/src/components/panel/editForm/Panel.edit.display.js index 72076c705d..f428dd2b53 100644 --- a/src/components/panel/editForm/Panel.edit.display.js +++ b/src/components/panel/editForm/Panel.edit.display.js @@ -5,30 +5,30 @@ import _keys from 'lodash/keys'; export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'label', hidden: true, calculateValue(context) { return context.data.title; - } + }, }, { key: 'tabindex', @@ -41,7 +41,7 @@ export default [ placeholder: 'Panel Title', label: 'Title', key: 'title', - tooltip: 'The title text that appears in the header of this panel.' + tooltip: 'The title text that appears in the header of this panel.', }, { weight: 20, @@ -50,7 +50,7 @@ export default [ key: 'tooltip', label: 'Tooltip', placeholder: 'To add a tooltip to this field, enter text here.', - tooltip: 'Adds a tooltip to the side of this field.' + tooltip: 'Adds a tooltip to the side of this field.', }, { weight: 30, @@ -66,9 +66,9 @@ export default [ { label: 'Info', value: 'info' }, { label: 'Success', value: 'success' }, { label: 'Danger', value: 'danger' }, - { label: 'Warning', value: 'warning' } - ] - } + { label: 'Warning', value: 'warning' }, + ], + }, }, { weight: 40, @@ -84,7 +84,7 @@ export default [ customConditional({ data = {}, buildingForm = {} }) { const formSettings = buildingForm.settings || {}; return ![data.breadcrumb, formSettings.wizardBreadcrumbsType].includes('none'); - } + }, }, { input: true, @@ -94,8 +94,8 @@ export default [ defaultValue: false, tooltip: 'Determines if the breadcrumb bar is clickable or not for visited tabs.', conditional: { - json: { '===': [{ var: 'data.breadcrumbClickable' }, false] } - } + json: { '===': [{ var: 'data.breadcrumbClickable' }, false] }, + }, }, { weight: 50, @@ -113,7 +113,7 @@ export default [ { label: 'Next', value: 'next', - } + }, ], inline: true, type: 'selectboxes', @@ -123,7 +123,7 @@ export default [ defaultValue: { previous: true, cancel: true, - next: true + next: true, }, }, { @@ -134,7 +134,7 @@ export default [ input: true, inputType: 'checkbox', defaultValue: false, - tooltip: 'Use the Enter key to go forward through pages.' + tooltip: 'Use the Enter key to go forward through pages.', }, { weight: 56, @@ -144,7 +144,7 @@ export default [ input: true, inputType: 'checkbox', defaultValue: false, - tooltip: 'Use the Enter key to submit form on last page.' + tooltip: 'Use the Enter key to submit form on last page.', }, { weight: 60, @@ -154,8 +154,8 @@ export default [ input: true, inputType: 'checkbox', defaultValue: false, - tooltip: 'Scroll to the top of the wizard page when user navigates to it' - } + tooltip: 'Scroll to the top of the wizard page when user navigates to it', + }, ], customConditional(context) { let isWizardPanel = false; @@ -171,7 +171,7 @@ export default [ } } return isWizardPanel; - } + }, }, { weight: 650, @@ -179,7 +179,7 @@ export default [ label: 'Collapsible', tooltip: 'If checked, this will turn this Panel into a collapsible panel.', key: 'collapsible', - input: true + input: true, }, { weight: 651, @@ -189,7 +189,7 @@ export default [ key: 'collapsed', input: true, conditional: { - json: { '===': [{ var: 'data.collapsible' }, true] } - } - } + json: { '===': [{ var: 'data.collapsible' }, true] }, + }, + }, ]; diff --git a/src/components/password/Password.form.js b/src/components/password/Password.form.js index c57f94aa3f..effdca6ed3 100644 --- a/src/components/password/Password.form.js +++ b/src/components/password/Password.form.js @@ -9,19 +9,22 @@ import PasswordEditValidation from './editForm/Password.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return textEditForm([ - { - key: 'data', - components: PasswordEditData - }, - { - key: 'display', - components: PasswordEditDisplay - }, - { - key: 'validation', - components: PasswordEditValidation - }, - ], ...extend); +export default function (...extend) { + return textEditForm( + [ + { + key: 'data', + components: PasswordEditData, + }, + { + key: 'display', + components: PasswordEditDisplay, + }, + { + key: 'validation', + components: PasswordEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/password/Password.js b/src/components/password/Password.js index 3f7fae6e2c..7208446666 100644 --- a/src/components/password/Password.js +++ b/src/components/password/Password.js @@ -3,13 +3,16 @@ import _ from 'lodash'; export default class PasswordComponent extends TextFieldComponent { static schema(...extend) { - return TextFieldComponent.schema({ - type: 'password', - label: 'Password', - key: 'password', - protected: true, - tableView: false, - }, ...extend); + return TextFieldComponent.schema( + { + type: 'password', + label: 'Password', + key: 'password', + protected: true, + tableView: false, + }, + ...extend, + ); } static get builderInfo() { @@ -19,7 +22,7 @@ export default class PasswordComponent extends TextFieldComponent { group: 'basic', documentation: '/userguide/form-building/form-components#password', weight: 40, - schema: PasswordComponent.schema() + schema: PasswordComponent.schema(), }; } diff --git a/src/components/password/editForm/Password.edit.data.js b/src/components/password/editForm/Password.edit.data.js index acea1bd282..b5f0ccdbf7 100644 --- a/src/components/password/editForm/Password.edit.data.js +++ b/src/components/password/editForm/Password.edit.data.js @@ -1,39 +1,39 @@ export default [ { key: 'inputFormat', - ignore: true + ignore: true, }, { key: 'persistent', - ignore: true + ignore: true, }, { key: 'protected', - ignore: true + ignore: true, }, { key: 'dbIndex', - ignore: true + ignore: true, }, { key: 'encrypted', - ignore: true + ignore: true, }, { key: 'multiple', - ignore: true + ignore: true, }, { key: 'defaultValue', - ignore: true + ignore: true, }, { key: 'customDefaultValuePanel', - ignore: true + ignore: true, }, { key: 'calculateValuePanel', - ignore: true + ignore: true, }, { key: 'passwordInfo', @@ -41,6 +41,7 @@ export default [ type: 'htmlelement', tag: 'div', className: 'alert alert-info', - content: 'Password fields are automatically encrypted using 1-way salted bcrypt hashes. These hashes are also protected and not returned in the API.' - } + content: + 'Password fields are automatically encrypted using 1-way salted bcrypt hashes. These hashes are also protected and not returned in the API.', + }, ]; diff --git a/src/components/password/editForm/Password.edit.display.js b/src/components/password/editForm/Password.edit.display.js index 73ddba3fa2..67d990876f 100644 --- a/src/components/password/editForm/Password.edit.display.js +++ b/src/components/password/editForm/Password.edit.display.js @@ -5,10 +5,10 @@ export default [ }, { key: 'inputMask', - ignore: true + ignore: true, }, { key: 'allowMultipleMasks', - ignore: true - } + ignore: true, + }, ]; diff --git a/src/components/password/editForm/Password.edit.validation.js b/src/components/password/editForm/Password.edit.validation.js index 3943fe1686..a7dc82fef5 100644 --- a/src/components/password/editForm/Password.edit.validation.js +++ b/src/components/password/editForm/Password.edit.validation.js @@ -1,14 +1,14 @@ export default [ { key: 'unique', - ignore: true + ignore: true, }, { key: 'validate.minWords', - ignore: true + ignore: true, }, { key: 'validate.maxWords', - ignore: true + ignore: true, }, ]; diff --git a/src/components/phonenumber/PhoneNumber.form.js b/src/components/phonenumber/PhoneNumber.form.js index a8b0ba6cf1..5af99feb3d 100644 --- a/src/components/phonenumber/PhoneNumber.form.js +++ b/src/components/phonenumber/PhoneNumber.form.js @@ -7,33 +7,36 @@ import PhoneNumberEditValidation from './editForm/PhoneNumber.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return textEditForm([ - { - key: 'display', - components: [ - { - key: 'showWordCount', - ignore: true - }, - { - key: 'showCharCount', - ignore: true - } - ] - }, - { - key: 'data', - components: [ - { - key: 'case', - ignore: true - } - ] - }, - { - key: 'validation', - components: PhoneNumberEditValidation - }, - ], ...extend); +export default function (...extend) { + return textEditForm( + [ + { + key: 'display', + components: [ + { + key: 'showWordCount', + ignore: true, + }, + { + key: 'showCharCount', + ignore: true, + }, + ], + }, + { + key: 'data', + components: [ + { + key: 'case', + ignore: true, + }, + ], + }, + { + key: 'validation', + components: PhoneNumberEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/phonenumber/PhoneNumber.js b/src/components/phonenumber/PhoneNumber.js index c927b94596..da28b2ffd4 100644 --- a/src/components/phonenumber/PhoneNumber.js +++ b/src/components/phonenumber/PhoneNumber.js @@ -3,15 +3,18 @@ import _ from 'lodash'; export default class PhoneNumberComponent extends TextFieldComponent { static schema(...extend) { - return TextFieldComponent.schema({ - type: 'phoneNumber', - label: 'Phone Number', - key: 'phoneNumber', - inputType: 'tel', - inputMask: '(999) 999-9999', - inputMode: 'decimal', - displayMask: '', - }, ...extend); + return TextFieldComponent.schema( + { + type: 'phoneNumber', + label: 'Phone Number', + key: 'phoneNumber', + inputType: 'tel', + inputMask: '(999) 999-9999', + inputMode: 'decimal', + displayMask: '', + }, + ...extend, + ); } static get builderInfo() { @@ -21,7 +24,7 @@ export default class PhoneNumberComponent extends TextFieldComponent { icon: 'phone-square', weight: 30, documentation: '/userguide/form-building/advanced-components#phone-number', - schema: PhoneNumberComponent.schema() + schema: PhoneNumberComponent.schema(), }; } @@ -31,7 +34,7 @@ export default class PhoneNumberComponent extends TextFieldComponent { getValueAsString(value, options) { if (options?.email && this.visible && !this.skipInEmail && _.isObject(value)) { - const result = (` + const result = ` @@ -40,7 +43,7 @@ export default class PhoneNumberComponent extends TextFieldComponent {
    - `); + `; return result; } diff --git a/src/components/phonenumber/editForm/PhoneNumber.edit.validation.js b/src/components/phonenumber/editForm/PhoneNumber.edit.validation.js index a455b2bbc5..1c7ac76bcc 100644 --- a/src/components/phonenumber/editForm/PhoneNumber.edit.validation.js +++ b/src/components/phonenumber/editForm/PhoneNumber.edit.validation.js @@ -1,22 +1,22 @@ export default [ { key: 'validate.minLength', - ignore: true + ignore: true, }, { key: 'validate.maxLength', - ignore: true + ignore: true, }, { key: 'validate.pattern', - ignore: true + ignore: true, }, { key: 'validate.minWords', - ignore: true + ignore: true, }, { key: 'validate.maxWords', - ignore: true - } + ignore: true, + }, ]; diff --git a/src/components/radio/Radio.form.js b/src/components/radio/Radio.form.js index 44d0ec86c6..d0ccf6b478 100644 --- a/src/components/radio/Radio.form.js +++ b/src/components/radio/Radio.form.js @@ -8,19 +8,22 @@ import RadioEditValidation from './editForm/Radio.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return listComponentForm([ - { - key: 'display', - components: RadioEditDisplay - }, - { - key: 'data', - components: RadioEditData - }, - { - key: 'validation', - components: RadioEditValidation - }, - ], ...extend); +export default function (...extend) { + return listComponentForm( + [ + { + key: 'display', + components: RadioEditDisplay, + }, + { + key: 'data', + components: RadioEditData, + }, + { + key: 'validation', + components: RadioEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/radio/Radio.js b/src/components/radio/Radio.js index 1299021087..edeb04e76e 100644 --- a/src/components/radio/Radio.js +++ b/src/components/radio/Radio.js @@ -5,17 +5,20 @@ import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../ut export default class RadioComponent extends ListComponent { static schema(...extend) { - return ListComponent.schema({ - type: 'radio', - inputType: 'radio', - label: 'Radio', - key: 'radio', - values: [{ label: '', value: '' }], - data: { - url: '', + return ListComponent.schema( + { + type: 'radio', + inputType: 'radio', + label: 'Radio', + key: 'radio', + values: [{ label: '', value: '' }], + data: { + url: '', + }, + fieldSet: false, }, - fieldSet: false - }, ...extend); + ...extend, + ); } static get builderInfo() { @@ -25,7 +28,7 @@ export default class RadioComponent extends ListComponent { icon: 'dot-circle-o', weight: 80, documentation: '/userguide/form-building/form-components#radio', - schema: RadioComponent.schema() + schema: RadioComponent.schema(), }; } @@ -42,13 +45,13 @@ export default class RadioComponent extends ListComponent { dataType: classComp.dataType || '', data: { custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`, - } + }, } : { ...classComp, type: 'select', - } - } + }; + }, }; } @@ -98,7 +101,7 @@ export default class RadioComponent extends ListComponent { this.setValue(this.emptyValue, { noUpdateEvent: true, noValidate: true, - resetValue: true + resetValue: true, }); } @@ -174,7 +177,7 @@ export default class RadioComponent extends ListComponent { } beforeSubmit() { - return new Promise(res => { + return new Promise((res) => { this.dataReady.then(() => res(true)); }); } @@ -183,13 +186,15 @@ export default class RadioComponent extends ListComponent { if (!this.optionsLoaded) { return super.render(this.renderTemplate('loader')); } - return super.render(this.renderTemplate('radio', { - input: this.inputInfo, - inline: this.component.inline, - values: this.component.dataSrc === 'values' ? this.component.values : this.loadedOptions, - value: this.dataValue, - row: this.row, - })); + return super.render( + this.renderTemplate('radio', { + input: this.inputInfo, + inline: this.component.inline, + values: this.component.dataSrc === 'values' ? this.component.values : this.loadedOptions, + value: this.dataValue, + row: this.row, + }), + ); } attach(element) { @@ -212,11 +217,14 @@ export default class RadioComponent extends ListComponent { } if (this.isSelectURL && _.isObject(this.loadedOptions[index].value)) { - const optionValue = this.component.dataType === 'string' ? JSON.stringify(this.loadedOptions[index].value) : this.loadedOptions[index].value; + const optionValue = + this.component.dataType === 'string' + ? JSON.stringify(this.loadedOptions[index].value) + : this.loadedOptions[index].value; input.checked = _.isEqual(optionValue, this.dataValue); - } - else { - input.checked = (dataValue === input.value && (input.value || this.component.dataSrc !== 'url')); + } else { + input.checked = + dataValue === input.value && (input.value || this.component.dataSrc !== 'url'); } this.addEventListener(input, 'keyup', (event) => { if (event.key === ' ' && dataValue === input.value) { @@ -253,9 +261,10 @@ export default class RadioComponent extends ListComponent { let value = this.component.inputType === 'checkbox' ? '' : this.dataValue; this.refs.input.forEach((input, index) => { if (input.checked) { - value = (this.isSelectURL && _.isObject(this.loadedOptions[index].value)) ? - this.loadedOptions[index].value : - input.value; + value = + this.isSelectURL && _.isObject(this.loadedOptions[index].value) + ? this.loadedOptions[index].value + : input.value; } }); return value; @@ -266,7 +275,10 @@ export default class RadioComponent extends ListComponent { return true; } - return !_.some(this.refs.wrapper, (wrapper, index) => this.refs.input[index].checked && this.loadedOptions[index].invalid); + return !_.some( + this.refs.wrapper, + (wrapper, index) => this.refs.input[index].checked && this.loadedOptions[index].invalid, + ); } validateValueAvailability(setting, value) { @@ -276,7 +288,10 @@ export default class RadioComponent extends ListComponent { const values = this.component.dataSrc === 'values' ? this.component.values : this.loadedOptions; if (values) { - return values.findIndex(({ value: optionValue }) => this.normalizeValue(optionValue) === value) !== -1; + return ( + values.findIndex(({ value: optionValue }) => this.normalizeValue(optionValue) === value) !== + -1 + ); } return false; @@ -285,21 +300,25 @@ export default class RadioComponent extends ListComponent { getValueAsString(value, options = {}) { if (_.isObject(value)) { value = JSON.stringify(value); - } - else if (!_.isString(value)) { + } else if (!_.isString(value)) { value = _.toString(value); } - const shouldUseSelectData = (options.modalPreview || this.inDataTable) - && this.component.dataSrc === 'url' && (this.loadedOptions.length || this.selectData); + const shouldUseSelectData = + (options.modalPreview || this.inDataTable) && + this.component.dataSrc === 'url' && + (this.loadedOptions.length || this.selectData); if (this.component.dataSrc !== 'values' && !shouldUseSelectData) { return value; } const values = shouldUseSelectData ? this.loadedOptions : this.component.values; - const option = !values?.length && shouldUseSelectData ? { - label: this.itemTemplate(this.selectData), - } : _.find(values, (v) => v.value === value); + const option = + !values?.length && shouldUseSelectData + ? { + label: this.itemTemplate(this.selectData), + } + : _.find(values, (v) => v.value === value); if (!value) { return _.get(option, 'label', ''); @@ -311,7 +330,7 @@ export default class RadioComponent extends ListComponent { setValueAt(index, value) { if (this.refs.input && this.refs.input[index] && value !== null && value !== undefined) { const inputValue = this.refs.input[index].value; - this.refs.input[index].checked = (inputValue === value.toString()); + this.refs.input[index].checked = inputValue === value.toString(); } } @@ -347,13 +366,16 @@ export default class RadioComponent extends ListComponent { const skip = this.isScrollLoading ? this.selectOptions.length : 0; // Allow for url interpolation. - url = this.sanitize(this.interpolate(url, { - formioBase: Formio.getBaseUrl(), - search, - limit, - skip, - page: Math.abs(Math.floor(skip / limit)) - }), this.shouldSanitizeValue); + url = this.sanitize( + this.interpolate(url, { + formioBase: Formio.getBaseUrl(), + search, + limit, + skip, + page: Math.abs(Math.floor(skip / limit)), + }), + this.shouldSanitizeValue, + ); // Set ignoreCache if it is options.ignoreCache = this.component.ignoreCache; @@ -362,23 +384,23 @@ export default class RadioComponent extends ListComponent { this.loading = true; Formio.makeRequest(this.options.formio, 'select', url, method, body, options) - .then((response) => { - this.loading = false; - this.setItems(response); - }) - .catch((err) => { - this.handleLoadingError(err); - }) - .finally(() => { - this.optionsLoaded = true; - this.redraw(); - }); + .then((response) => { + this.loading = false; + this.setItems(response); + }) + .catch((err) => { + this.handleLoadingError(err); + }) + .finally(() => { + this.optionsLoaded = true; + this.redraw(); + }); } loadItemsFromMetadata() { this.listData.forEach((item, i) => { this.loadedOptions[i] = { - label: this.itemTemplate(item) + label: this.itemTemplate(item), }; if (_.isEqual(item, this.selectData || _.pick(this.dataValue, _.keys(item)))) { this.loadedOptions[i].value = this.dataValue; @@ -394,14 +416,14 @@ export default class RadioComponent extends ListComponent { const valueAtProperty = _.get(item, this.component.valueProperty); this.loadedOptions[i] = { value: this.component.valueProperty ? valueAtProperty : item, - label: this.component.valueProperty ? this.itemTemplate(item, valueAtProperty) : this.itemTemplate(item, item, i) + label: this.component.valueProperty + ? this.itemTemplate(item, valueAtProperty) + : this.itemTemplate(item, item, i), }; listData.push(this.templateData[this.component.valueProperty ? valueAtProperty : i]); const value = this.loadedOptions[i].value; - if (!this.isRadio && ( - _.isObject(value) || _.isBoolean(value) || _.isUndefined(value) - )) { + if (!this.isRadio && (_.isObject(value) || _.isBoolean(value) || _.isUndefined(value))) { this.loadedOptions[i].invalid = true; } }); @@ -426,14 +448,16 @@ export default class RadioComponent extends ListComponent { const value = this.dataValue; this.refs.wrapper.forEach((wrapper, index) => { const input = this.refs.input[index]; - const checked = (input.type === 'checkbox') ? value[input.value] || input.checked : (input.value.toString() === value.toString()); + const checked = + input.type === 'checkbox' + ? value[input.value] || input.checked + : input.value.toString() === value.toString(); if (checked) { //add class to container when selected this.addClass(wrapper, this.optionSelectedClass); //change "checked" attribute input.setAttribute('checked', 'true'); - } - else { + } else { this.removeClass(wrapper, this.optionSelectedClass); input.removeAttribute('checked'); } @@ -457,7 +481,8 @@ export default class RadioComponent extends ListComponent { // If they clicked on the radio that is currently selected, it needs to reset the value. this.currentValue = this.dataValue; - const shouldResetValue = flags && flags.modified && !flags.noUpdateEvent && this.previousValue === this.currentValue; + const shouldResetValue = + flags && flags.modified && !flags.noUpdateEvent && this.previousValue === this.currentValue; if (shouldResetValue) { this.resetValue(); this.triggerChange(flags); @@ -480,8 +505,11 @@ export default class RadioComponent extends ListComponent { switch (dataType) { case 'auto': - - if (!isNaN(parseFloat(value)) && isFinite(value) && _.toString(value) === Number(value).toString()) { + if ( + !isNaN(parseFloat(value)) && + isFinite(value) && + _.toString(value) === Number(value).toString() + ) { value = +value; } if (value === 'true') { @@ -497,15 +525,14 @@ export default class RadioComponent extends ListComponent { case 'string': if (typeof value === 'object') { value = JSON.stringify(value); - } - else { + } else { value = String(value); } break; case 'boolean': value = !(!value || value.toString() === 'false'); break; - } + } if (this.isSelectURL && this.templateData && this.templateData[value]) { const submission = this.root.submission; diff --git a/src/components/radio/editForm/Radio.edit.data.js b/src/components/radio/editForm/Radio.edit.data.js index bcf084468b..bd1a3cb424 100644 --- a/src/components/radio/editForm/Radio.edit.data.js +++ b/src/components/radio/editForm/Radio.edit.data.js @@ -14,8 +14,8 @@ export default [ { label: 'URL', value: 'url' }, ], }, - 'validate': { - 'required': true + validate: { + required: true, }, onChange(context) { if (context && context.flags && context.flags && context.flags.modified) { @@ -28,7 +28,8 @@ export default [ input: true, label: 'Values', key: 'values', - tooltip: 'The radio button values that can be picked for this field. Values are text submitted with the form data. Labels are text that appears next to the radio buttons on the form.', + tooltip: + 'The radio button values that can be picked for this field. Values are text submitted with the form data. Labels are text that appears next to the radio buttons on the form.', weight: 10, reorder: true, defaultValue: [{ label: '', value: '' }], @@ -47,8 +48,8 @@ export default [ allowCalculateOverride: true, calculateValue: 'value = _.camelCase(row.label);', validate: { - required: true - } + required: true, + }, }, { type: 'select', @@ -65,7 +66,7 @@ export default [ custom(context) { return BuilderUtils.getAvailableShortcuts( _.get(context, 'instance.options.editForm', {}), - _.get(context, 'instance.options.editComponent', {}) + _.get(context, 'instance.options.editComponent', {}), ); }, }, @@ -81,7 +82,8 @@ export default [ label: 'Storage Type', key: 'dataType', clearOnHide: true, - tooltip: 'The type to store the data. If you select something other than autotype, it will force it to that type.', + tooltip: + 'The type to store the data. If you select something other than autotype, it will force it to that type.', weight: 12, template: '{{ item.label }}', dataSrc: 'values', @@ -100,5 +102,5 @@ export default [ conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, }, - } + }, ]; diff --git a/src/components/radio/editForm/Radio.edit.display.js b/src/components/radio/editForm/Radio.edit.display.js index f540db7a49..f662fa5e53 100644 --- a/src/components/radio/editForm/Radio.edit.display.js +++ b/src/components/radio/editForm/Radio.edit.display.js @@ -1,7 +1,7 @@ export default [ { key: 'placeholder', - ignore: true + ignore: true, }, { type: 'select', @@ -17,9 +17,9 @@ export default [ { label: 'Top', value: 'top' }, { label: 'Left', value: 'left' }, { label: 'Right', value: 'right' }, - { label: 'Bottom', value: 'bottom' } - ] - } + { label: 'Bottom', value: 'bottom' }, + ], + }, }, { type: 'checkbox', @@ -27,6 +27,6 @@ export default [ key: 'inline', label: 'Inline Layout', tooltip: 'Displays the checkboxes/radios horizontally.', - weight: 650 - } + weight: 650, + }, ]; diff --git a/src/components/radio/editForm/Radio.edit.validation.js b/src/components/radio/editForm/Radio.edit.validation.js index 64be4ae030..728d4f1357 100644 --- a/src/components/radio/editForm/Radio.edit.validation.js +++ b/src/components/radio/editForm/Radio.edit.validation.js @@ -1,17 +1,18 @@ export default [ { key: 'validateOn', - ignore: true + ignore: true, }, { key: 'unique', - ignore: true + ignore: true, }, { weight: 52, type: 'checkbox', label: 'Allow only available values', - tooltip: 'Check this if you would like to perform a validation check to ensure the selected value is an available option.', + tooltip: + 'Check this if you would like to perform a validation check to ensure the selected value is an available option.', key: 'validate.onlyAvailableItems', input: true, }, diff --git a/src/components/recaptcha/ReCaptcha.form.js b/src/components/recaptcha/ReCaptcha.form.js index 0869cc61dd..7168a8f4fa 100644 --- a/src/components/recaptcha/ReCaptcha.form.js +++ b/src/components/recaptcha/ReCaptcha.form.js @@ -6,27 +6,30 @@ import ReCaptchaEditDisplay from './editForm/ReCaptcha.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: ReCaptchaEditDisplay - }, - { - key: 'data', - ignore: true - }, - { - key: 'validation', - ignore: true - }, - { - key: 'conditional', - ignore: true - }, - { - key: 'logic', - ignore: true - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: ReCaptchaEditDisplay, + }, + { + key: 'data', + ignore: true, + }, + { + key: 'validation', + ignore: true, + }, + { + key: 'conditional', + ignore: true, + }, + { + key: 'logic', + ignore: true, + }, + ], + ...extend, + ); } diff --git a/src/components/recaptcha/ReCaptcha.js b/src/components/recaptcha/ReCaptcha.js index 66ce6ed793..927bb2fd41 100644 --- a/src/components/recaptcha/ReCaptcha.js +++ b/src/components/recaptcha/ReCaptcha.js @@ -6,11 +6,14 @@ import _debounce from 'lodash/debounce'; export default class ReCaptchaComponent extends Component { static schema(...extend) { - return Component.schema({ - type: 'recaptcha', - key: 'recaptcha', - label: 'reCAPTCHA' - }, ...extend); + return Component.schema( + { + type: 'recaptcha', + key: 'recaptcha', + label: 'reCAPTCHA', + }, + ...extend, + ); } static get builderInfo() { @@ -36,8 +39,7 @@ export default class ReCaptchaComponent extends Component { this.recaptchaResult = null; if (this.builderMode) { return super.render('reCAPTCHA'); - } - else { + } else { return super.render('', true); } } @@ -46,14 +48,17 @@ export default class ReCaptchaComponent extends Component { if (this.builderMode) { // We need to see it in builder mode. this.append(this.text(this.name)); - } - else { + } else { const siteKey = _get(this.root.form, 'settings.recaptcha.siteKey'); if (siteKey) { const recaptchaApiScriptUrl = `https://www.google.com/recaptcha/api.js?render=${siteKey}`; - this.recaptchaApiReady = Formio.requireLibrary('googleRecaptcha', 'grecaptcha', recaptchaApiScriptUrl, true); - } - else { + this.recaptchaApiReady = Formio.requireLibrary( + 'googleRecaptcha', + 'grecaptcha', + recaptchaApiScriptUrl, + true, + ); + } else { console.warn('There is no Site Key specified in settings in form JSON'); } } @@ -75,42 +80,46 @@ export default class ReCaptchaComponent extends Component { } if (!this.recaptchaApiReady) { const recaptchaApiScriptUrl = `https://www.google.com/recaptcha/api.js?render=${_get(this.root.form, 'settings.recaptcha.siteKey')}`; - this.recaptchaApiReady = Formio.requireLibrary('googleRecaptcha', 'grecaptcha', recaptchaApiScriptUrl, true); + this.recaptchaApiReady = Formio.requireLibrary( + 'googleRecaptcha', + 'grecaptcha', + recaptchaApiScriptUrl, + true, + ); } try { await this.recaptchaApiReady; this.recaptchaVerifiedPromise = new Promise((resolve, reject) => { if (!this.isLoading) { - this.isLoading= true; - grecaptcha.ready(_debounce(async() => { - try { - const token = await grecaptcha.execute(siteKey, { action: actionName }); - const verificationResult = await this.sendVerificationRequest(token); - this.recaptchaResult = { - ...verificationResult, - token, - }; - this.updateValue(this.recaptchaResult); - this.isLoading = false; - return resolve(verificationResult); - } - catch (err) { - this.isLoading = false; - reject(err); - } - }, 1000)); + this.isLoading = true; + grecaptcha.ready( + _debounce(async () => { + try { + const token = await grecaptcha.execute(siteKey, { action: actionName }); + const verificationResult = await this.sendVerificationRequest(token); + this.recaptchaResult = { + ...verificationResult, + token, + }; + this.updateValue(this.recaptchaResult); + this.isLoading = false; + return resolve(verificationResult); + } catch (err) { + this.isLoading = false; + reject(err); + } + }, 1000), + ); } }); - } - catch (ignoreErr) { + } catch (ignoreErr) { this.loading = false; } } beforeSubmit() { if (this.recaptchaVerifiedPromise) { - return this.recaptchaVerifiedPromise - .then(() => super.beforeSubmit()); + return this.recaptchaVerifiedPromise.then(() => super.beforeSubmit()); } return super.beforeSubmit(); } diff --git a/src/components/recaptcha/editForm/ReCaptcha.edit.display.js b/src/components/recaptcha/editForm/ReCaptcha.edit.display.js index 90f965041b..a0da06c877 100644 --- a/src/components/recaptcha/editForm/ReCaptcha.edit.display.js +++ b/src/components/recaptcha/editForm/ReCaptcha.edit.display.js @@ -6,27 +6,29 @@ export default [ type: 'htmlelement', tag: 'div', className: 'alert alert-danger', - content: 'This component has been deprecated and will be removed. Use the CAPTCHA component instead.', + content: + 'This component has been deprecated and will be removed. Use the CAPTCHA component instead.', }, { key: 'eventType', label: 'Type of event', - tooltip: 'Specify type of event that this CAPTCHA would react to. If Button Click is selected, then the CAPTCHA widget will be displayed and verification will occur after clicking on the button.', + tooltip: + 'Specify type of event that this CAPTCHA would react to. If Button Click is selected, then the CAPTCHA widget will be displayed and verification will occur after clicking on the button.', type: 'radio', values: [ { label: 'Form Load', - value: 'formLoad' + value: 'formLoad', }, { label: 'Button Click', - value: 'buttonClick' - } + value: 'buttonClick', + }, ], validate: { - required: true + required: true, }, - weight: 650 + weight: 650, }, { type: 'select', @@ -43,75 +45,75 @@ export default [ data: { custom(context) { return getContextButtons(context); - } - } + }, + }, }, { key: 'label', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'errorLabel', - ignore: true + ignore: true, }, { key: 'customClass', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'multiple', - ignore: true + ignore: true, }, { key: 'clearOnHide', - ignore: true + ignore: true, }, { key: 'hidden', - ignore: true + ignore: true, }, { key: 'mask', - ignore: true + ignore: true, }, { key: 'dataGridLabel', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, ]; diff --git a/src/components/select/Select.form.js b/src/components/select/Select.form.js index 7a223be7d0..d8b76521be 100644 --- a/src/components/select/Select.form.js +++ b/src/components/select/Select.form.js @@ -8,19 +8,22 @@ import SelectEditValidation from './editForm/Select.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return listComponentForm([ - { - key: 'display', - components: SelectEditDisplay - }, - { - key: 'data', - components: SelectEditData - }, - { - key: 'validation', - components: SelectEditValidation - }, - ], ...extend); +export default function (...extend) { + return listComponentForm( + [ + { + key: 'display', + components: SelectEditDisplay, + }, + { + key: 'data', + components: SelectEditData, + }, + { + key: 'validation', + components: SelectEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/select/Select.js b/src/components/select/Select.js index 814454c664..80f28c6aec 100644 --- a/src/components/select/Select.js +++ b/src/components/select/Select.js @@ -2,48 +2,59 @@ import _ from 'lodash'; import { Formio } from '../../Formio'; import ListComponent from '../_classes/list/ListComponent'; import Form from '../../Form'; -import { getRandomComponentId, boolValue, isPromise, componentValueTypes, getComponentSavedTypes, isSelectResourceWithObjectValue, removeHTML } from '../../utils/utils'; +import { + getRandomComponentId, + boolValue, + isPromise, + componentValueTypes, + getComponentSavedTypes, + isSelectResourceWithObjectValue, + removeHTML, +} from '../../utils/utils'; import Choices from '../../utils/ChoicesWrapper'; export default class SelectComponent extends ListComponent { static schema(...extend) { - return ListComponent.schema({ - type: 'select', - label: 'Select', - key: 'select', - idPath: 'id', - data: { - values: [{ label: '', value: '' }], - json: '', - url: '', - resource: '', - custom: '' - }, - clearOnRefresh: false, - limit: 100, - valueProperty: '', - lazyLoad: true, - filter: '', - searchEnabled: true, - searchDebounce: 0.3, - searchField: '', - minSearch: 0, - readOnlyValue: false, - selectFields: '', - selectThreshold: 0.3, - uniqueOptions: false, - tableView: true, - fuseOptions: { - include: 'score', - threshold: 0.3, - }, - indexeddb: { - filter: {} + return ListComponent.schema( + { + type: 'select', + label: 'Select', + key: 'select', + idPath: 'id', + data: { + values: [{ label: '', value: '' }], + json: '', + url: '', + resource: '', + custom: '', + }, + clearOnRefresh: false, + limit: 100, + valueProperty: '', + lazyLoad: true, + filter: '', + searchEnabled: true, + searchDebounce: 0.3, + searchField: '', + minSearch: 0, + readOnlyValue: false, + selectFields: '', + selectThreshold: 0.3, + uniqueOptions: false, + tableView: true, + fuseOptions: { + include: 'score', + threshold: 0.3, + }, + indexeddb: { + filter: {}, + }, + customOptions: {}, + useExactSearch: false, }, - customOptions: {}, - useExactSearch: false, - }, ...extend); + ...extend, + ); } static get builderInfo() { @@ -53,7 +64,7 @@ export default class SelectComponent extends ListComponent { icon: 'th-list', weight: 70, documentation: '/userguide/form-building/form-components#select', - schema: SelectComponent.schema() + schema: SelectComponent.schema(), }; } @@ -67,7 +78,7 @@ export default class SelectComponent extends ListComponent { return { ...super.conditionOperatorsSettings, valueComponent(classComp) { - const valueComp = { ... classComp, type: 'select' }; + const valueComp = { ...classComp, type: 'select' }; if (isSelectResourceWithObjectValue(classComp)) { valueComp.reference = false; @@ -190,14 +201,12 @@ export default class SelectComponent extends ListComponent { let firstValue; if (this.valueProperty) { firstValue = _.get(firstItem, this.valueProperty); - } - else { + } else { firstValue = firstItem; } if (firstValue && typeof firstValue === 'string') { return ''; - } - else { + } else { return {}; } } @@ -242,11 +251,13 @@ export default class SelectComponent extends ListComponent { } get shouldInitialLoad() { - if (this.component.widget === 'html5' && - this.isEntireObjectDisplay() && - this.component.searchField && - this.dataValue) { - return false; + if ( + this.component.widget === 'html5' && + this.isEntireObjectDisplay() && + this.component.searchField && + this.dataValue + ) { + return false; } return super.shouldLoad; @@ -265,10 +276,15 @@ export default class SelectComponent extends ListComponent { } selectValueAndLabel(data) { - const value = this.getOptionValue((this.isEntireObjectDisplay() && !this.itemValue(data)) ? data : this.itemValue(data)); + const value = this.getOptionValue( + this.isEntireObjectDisplay() && !this.itemValue(data) ? data : this.itemValue(data), + ); return { value, - label: this.itemTemplate((this.isEntireObjectDisplay() && !_.isObject(data.data)) ? { data: data } : data, value) + label: this.itemTemplate( + this.isEntireObjectDisplay() && !_.isObject(data.data) ? { data: data } : data, + value, + ), }; } @@ -284,14 +300,16 @@ export default class SelectComponent extends ListComponent { // Perform a fast interpretation if we should not use the template. if (data && !this.component.template) { const itemLabel = data.label || data; - const value = (typeof itemLabel === 'string') ? this.t(itemLabel, { _userInput: true }) : itemLabel; + const value = + typeof itemLabel === 'string' ? this.t(itemLabel, { _userInput: true }) : itemLabel; return this.sanitize(value, this.shouldSanitizeValue); } // Inside DataTable component won't have dataValue set - const shouldUseSelectData = (this.component.multiple && _.isArray(this.dataValue) - ? this.dataValue.find((val) => this.normalizeSingleValue(value) === val) - : (this.dataValue === this.normalizeSingleValue(value))) || this.inDataTable; + const shouldUseSelectData = + (this.component.multiple && _.isArray(this.dataValue) + ? this.dataValue.find((val) => this.normalizeSingleValue(value) === val) + : this.dataValue === this.normalizeSingleValue(value)) || this.inDataTable; if (shouldUseSelectData) { const selectData = this.selectData; @@ -304,8 +322,7 @@ export default class SelectComponent extends ListComponent { if (selectData[templateValue]) { data = selectData[templateValue]; } - } - else { + } else { data = selectData; } } @@ -326,9 +343,10 @@ export default class SelectComponent extends ListComponent { if (data.data) { // checking additional fields in the template for the selected Entire Object option const hasNestedFields = /item\.data\.\w*/g.test(this.component.template); - data.data = this.isEntireObjectDisplay() && _.isObject(data.data) && !hasNestedFields - ? JSON.stringify(data.data) - : data.data; + data.data = + this.isEntireObjectDisplay() && _.isObject(data.data) && !hasNestedFields + ? JSON.stringify(data.data) + : data.data; } return super.itemTemplate(data, value); } @@ -348,7 +366,7 @@ export default class SelectComponent extends ListComponent { const option = { value: this.getOptionValue(value), label, - ...idPath + ...idPath, }; const skipOption = this.component.uniqueOptions @@ -363,20 +381,24 @@ export default class SelectComponent extends ListComponent { this.selectOptions.push(option); } - if (this.refs.selectContainer && (this.component.widget === 'html5')) { + if (this.refs.selectContainer && this.component.widget === 'html5') { // Replace an empty Object value to an empty String. if (option.value && _.isObject(option.value) && _.isEmpty(option.value)) { option.value = ''; } // Add element to option so we can reference it later. const div = document.createElement('div'); - div.innerHTML = this.sanitize(this.renderTemplate('selectOption', { - selected: _.isEqual(this.getOptionValue(this.dataValue), option.value), - option, - attrs, - id, - useId: (this.valueProperty === '' || this.isEntireObjectDisplay()) && _.isObject(value) && id, - }), this.shouldSanitizeValue).trim(); + div.innerHTML = this.sanitize( + this.renderTemplate('selectOption', { + selected: _.isEqual(this.getOptionValue(this.dataValue), option.value), + option, + attrs, + id, + useId: + (this.valueProperty === '' || this.isEntireObjectDisplay()) && _.isObject(value) && id, + }), + this.shouldSanitizeValue, + ).trim(); option.element = div.firstChild; this.refs.selectContainer.appendChild(option.element); @@ -389,9 +411,14 @@ export default class SelectComponent extends ListComponent { let data = this.dataValue; // preset submission value with value property before request. - if (this.options.pdf && !items.length && this.component.dataSrc === 'url' && this.valueProperty) { + if ( + this.options.pdf && + !items.length && + this.component.dataSrc === 'url' && + this.valueProperty + ) { data = Array.isArray(data) - ? data.map(item => _.set({}, this.valueProperty, item)) + ? data.map((item) => _.set({}, this.valueProperty, item)) : _.set({}, this.valueProperty, data); } @@ -415,15 +442,13 @@ export default class SelectComponent extends ListComponent { this.serverCount = this.downloadedResources.length; } - setItems(items, fromSearch) { this.selectItems = items; // If the items is a string, then parse as JSON. if (typeof items == 'string') { try { items = JSON.parse(items); - } - catch (err) { + } catch (err) { console.warn(err.message); items = []; } @@ -431,9 +456,10 @@ export default class SelectComponent extends ListComponent { // Allow js processing (needed for form builder) if (this.component.onSetItems) { - const newItems = typeof this.component.onSetItems === 'function' - ? this.component.onSetItems(this, items) - : this.evaluate(this.component.onSetItems, { items: items }, 'items'); + const newItems = + typeof this.component.onSetItems === 'function' + ? this.component.onSetItems(this, items) + : this.evaluate(this.component.onSetItems, { items: items }, 'items'); if (newItems) { items = newItems; } @@ -454,17 +480,16 @@ export default class SelectComponent extends ListComponent { areItemsEqual = this.isSelectURL ? _.isEqual(items, this.downloadedResources) : false; const areItemsEnded = this.component.limit > items.length; - const areItemsDownloaded = areItemsEqual - && this.downloadedResources - && this.downloadedResources.length === items.length; + const areItemsDownloaded = + areItemsEqual && + this.downloadedResources && + this.downloadedResources.length === items.length; if (areItemsEnded) { this.disableInfiniteScroll(); - } - else if (areItemsDownloaded) { + } else if (areItemsDownloaded) { this.selectOptions = []; - } - else { + } else { this.serverCount = items.serverCount; } } @@ -476,19 +501,21 @@ export default class SelectComponent extends ListComponent { : items; } - this.downloadedResources.serverCount = items.serverCount || this.downloadedResources.serverCount; - } - else { + this.downloadedResources.serverCount = + items.serverCount || this.downloadedResources.serverCount; + } else { this.downloadedResources = items || []; this.selectOptions = []; // If there is new select option with same id as already selected, set the new one if (!_.isEmpty(this.dataValue) && this.component.idPath) { const selectedOptionId = _.get(this.dataValue, this.component.idPath, null); - const newOptionWithSameId = !_.isNil(selectedOptionId) && items.find(item => { - const itemId = _.get(item, this.component.idPath); + const newOptionWithSameId = + !_.isNil(selectedOptionId) && + items.find((item) => { + const itemId = _.get(item, this.component.idPath); - return itemId === selectedOptionId; - }); + return itemId === selectedOptionId; + }); if (newOptionWithSameId) { this.setValue(newOptionWithSameId); @@ -508,15 +535,25 @@ export default class SelectComponent extends ListComponent { // Iterate through each of the items. _.each(items, (item, index) => { // preventing references of the components inside the form to the parent form when building forms - if (this.root && this.root.options.editForm && this.root.options.editForm._id && this.root.options.editForm._id === item._id) return; + if ( + this.root && + this.root.options.editForm && + this.root.options.editForm._id && + this.root.options.editForm._id === item._id + ) + return; const itemValueAndLabel = this.selectValueAndLabel(item); - this.addOption(itemValueAndLabel.value, itemValueAndLabel.label, {}, _.get(item, this.component.idPath, String(index))); + this.addOption( + itemValueAndLabel.value, + itemValueAndLabel.label, + {}, + _.get(item, this.component.idPath, String(index)), + ); }); if (this.choices) { this.choices.setChoices(this.selectOptions, 'value', 'label', true); - } - else if (this.loading) { + } else if (this.loading) { // Re-attach select input. // this.appendTo(this.refs.input[0], this.selectContainer); } @@ -531,10 +568,9 @@ export default class SelectComponent extends ListComponent { // If a value is provided, then select it. if (!this.isEmpty() || this.isRemoveButtonPressed) { this.setValue(this.dataValue, { - noUpdateEvent: true + noUpdateEvent: true, }); - } - else if (this.shouldAddDefaultValue && !this.options.readOnly) { + } else if (this.shouldAddDefaultValue && !this.options.readOnly) { // If a default value is provided then select it. const defaultValue = this.defaultValue; if (!this.isEmpty(defaultValue)) { @@ -562,9 +598,11 @@ export default class SelectComponent extends ListComponent { } if (Array.isArray(value)) { - const values = value.map(item => Array.isArray(item) - ? this.itemValueForHTMLMode(item) - : this.getSingleItemValueForHTMLMode(item)); + const values = value.map((item) => + Array.isArray(item) + ? this.itemValueForHTMLMode(item) + : this.getSingleItemValueForHTMLMode(item), + ); return values.join(', '); } @@ -572,11 +610,12 @@ export default class SelectComponent extends ListComponent { return this.getSingleItemValueForHTMLMode(value); } - - get defaultValue() { let defaultValue = super.defaultValue; - if (!defaultValue && (this.component.defaultValue === false || this.component.defaultValue === 0)) { + if ( + !defaultValue && + (this.component.defaultValue === false || this.component.defaultValue === 0) + ) { defaultValue = this.component.defaultValue; } return defaultValue; @@ -599,11 +638,7 @@ export default class SelectComponent extends ListComponent { // See if they have not met the minimum search requirements. const minSearch = parseInt(this.component.minSearch, 10); - if ( - this.component.searchField && - (minSearch > 0) && - (!search || (search.length < minSearch)) - ) { + if (this.component.searchField && minSearch > 0 && (!search || search.length < minSearch)) { // Set empty items. return this.setItems([]); } @@ -616,19 +651,24 @@ export default class SelectComponent extends ListComponent { const limit = this.component.limit || 100; const skip = this.isScrollLoading ? this.selectOptions.length : 0; - const query = this.component.disableLimit ? {} : { - limit, - skip, - }; + const query = this.component.disableLimit + ? {} + : { + limit, + skip, + }; // Allow for url interpolation. - url = this.sanitize(this.interpolate(url, { - formioBase: Formio.getBaseUrl(), - search, - limit, - skip, - page: Math.abs(Math.floor(skip / limit)) - }), this.shouldSanitizeValue); + url = this.sanitize( + this.interpolate(url, { + formioBase: Formio.getBaseUrl(), + search, + limit, + skip, + page: Math.abs(Math.floor(skip / limit)), + }), + this.shouldSanitizeValue, + ); // Add search capability. if (this.component.searchField && search) { @@ -655,7 +695,9 @@ export default class SelectComponent extends ListComponent { if (!_.isEmpty(query)) { // Add the query string. - url += (!url.includes('?') ? '?' : '&') + Formio.serialize(query, (item) => this.interpolate(item)); + url += + (!url.includes('?') ? '?' : '&') + + Formio.serialize(query, (item) => this.interpolate(item)); } // Add filter capability @@ -714,8 +756,7 @@ export default class SelectComponent extends ListComponent { headers.set(header.key, this.interpolate(header.value)); } }); - } - catch (err) { + } catch (err) { console.warn(err.message); } } @@ -724,9 +765,13 @@ export default class SelectComponent extends ListComponent { } getCustomItems() { - const customItems = this.evaluate(this.component.data.custom, { - values: [] - }, 'values'); + const customItems = this.evaluate( + this.component.data.custom, + { + values: [], + }, + 'values', + ); this.asyncValues = isPromise(customItems); @@ -750,15 +795,14 @@ export default class SelectComponent extends ListComponent { this.loading = true; this.getCustomItems() - .then(items => { + .then((items) => { this.loading = false; this.setItems(items || []); }) - .catch(err => { + .catch((err) => { this.handleLoadingError(err); }); - } - else { + } else { this.setItems(this.getCustomItems() || []); } } @@ -768,7 +812,7 @@ export default class SelectComponent extends ListComponent { } refresh(value, { instance }) { - if (this.component.clearOnRefresh && (instance && !instance.pristine)) { + if (this.component.clearOnRefresh && instance && !instance.pristine) { this.setValue(this.emptyValue); } @@ -776,7 +820,7 @@ export default class SelectComponent extends ListComponent { } get additionalResourcesAvailable() { - return _.isNil(this.serverCount) || (this.serverCount > this.downloadedResources.length); + return _.isNil(this.serverCount) || this.serverCount > this.downloadedResources.length; } get serverCount() { @@ -790,8 +834,7 @@ export default class SelectComponent extends ListComponent { set serverCount(value) { if (this.isFromSearch) { this.searchServerCount = value; - } - else { + } else { this.defaultServerCount = value; } } @@ -807,8 +850,7 @@ export default class SelectComponent extends ListComponent { set downloadedResources(value) { if (this.isFromSearch) { this.searchDownloadedResources = value; - } - else { + } else { this.defaultDownloadedResources = value; } } @@ -838,21 +880,32 @@ export default class SelectComponent extends ListComponent { setLoadingItem(addToCurrentList = false) { if (this.choices) { if (addToCurrentList) { - this.choices.setChoices([{ - value: `${this.id}-loading`, - label: 'Loading...', - disabled: true, - }], 'value', 'label'); + this.choices.setChoices( + [ + { + value: `${this.id}-loading`, + label: 'Loading...', + disabled: true, + }, + ], + 'value', + 'label', + ); + } else { + this.choices.setChoices( + [ + { + value: '', + label: ``, + disabled: true, + }, + ], + 'value', + 'label', + true, + ); } - else { - this.choices.setChoices([{ - value: '', - label: ``, - disabled: true, - }], 'value', 'label', true); - } - } - else if (this.component.dataSrc === 'url' || this.component.dataSrc === 'resource') { + } else if (this.component.dataSrc === 'url' || this.component.dataSrc === 'resource') { this.addOption('', this.t('loading...')); } } @@ -865,32 +918,35 @@ export default class SelectComponent extends ListComponent { const info = this.inputInfo; info.attr = info.attr || {}; info.multiple = this.component.multiple; - return super.render(this.wrapElement(this.renderTemplate('select', { - input: info, - selectOptions: '', - index: null, - }))); + return super.render( + this.wrapElement( + this.renderTemplate('select', { + input: info, + selectOptions: '', + index: null, + }), + ), + ); } wrapElement(element) { return this.component.addResource && !this.options.readOnly - ? ( - this.renderTemplate('resourceAdd', { - element + ? this.renderTemplate('resourceAdd', { + element, }) - ) : element; } choicesOptions() { - const useSearch = this.component.hasOwnProperty('searchEnabled') ? this.component.searchEnabled : true; + const useSearch = this.component.hasOwnProperty('searchEnabled') + ? this.component.searchEnabled + : true; const placeholderValue = this.t(this.component.placeholder, { _userInput: true }); let customOptions = this.component.customOptions || {}; if (typeof customOptions == 'string') { try { customOptions = JSON.parse(customOptions); - } - catch (err) { + } catch (err) { console.warn(err.message); customOptions = {}; } @@ -902,11 +958,13 @@ export default class SelectComponent extends ListComponent { }; return { - removeItemButton: this.component.disabled ? false : _.get(this.component, 'removeItemButton', true), + removeItemButton: this.component.disabled + ? false + : _.get(this.component, 'removeItemButton', true), itemSelectText: '', classNames: { containerOuter: 'choices form-group formio-choices', - containerInner: this.transform('class', 'form-control ui fluid selection dropdown') + containerInner: this.transform('class', 'form-control ui fluid selection dropdown'), }, addItemText: false, allowHTML: true, @@ -916,39 +974,34 @@ export default class SelectComponent extends ListComponent { noChoicesText: this.t('No choices to choose from'), searchPlaceholderValue: this.t('Type to search'), shouldSort: false, - position: (this.component.dropdown || 'auto'), + position: this.component.dropdown || 'auto', searchEnabled: useSearch, searchChoices: !this.component.searchField, searchFields: _.get(this, 'component.searchFields', ['label']), shadowRoot: this.root ? this.root.shadowRoot : null, fuseOptions: this.component.useExactSearch ? { - tokenize: true, - matchAllTokens: true, - ...commonFuseOptions - } - : Object.assign( - {}, - _.get(this, 'component.fuseOptions', {}), - { - include: 'score', - threshold: _.get(this, 'component.selectThreshold', 0.3), - ...commonFuseOptions - } - ), + tokenize: true, + matchAllTokens: true, + ...commonFuseOptions, + } + : Object.assign({}, _.get(this, 'component.fuseOptions', {}), { + include: 'score', + threshold: _.get(this, 'component.selectThreshold', 0.3), + ...commonFuseOptions, + }), valueComparer: _.isEqual, resetScrollPosition: false, ...customOptions, }; } - attach(element) { const superAttach = super.attach(element); this.loadRefs(element, { selectContainer: 'single', addResource: 'single', - autocompleteInput: 'single' + autocompleteInput: 'single', }); //enable autocomplete for select const autocompleteInput = this.refs.autocompleteInput; @@ -961,9 +1014,11 @@ export default class SelectComponent extends ListComponent { if (!input) { return; } - this.addEventListener(input, this.inputInfo.changeEvent, () => this.updateValue(null, { - modified: true - })); + this.addEventListener(input, this.inputInfo.changeEvent, () => + this.updateValue(null, { + modified: true, + }), + ); this.attachRefreshOnBlur(); if (this.component.widget === 'html5') { @@ -1011,11 +1066,12 @@ export default class SelectComponent extends ListComponent { if (this.component.multiple) { this.focusableElement = this.choices.input.element; - } - else { + } else { this.focusableElement = this.choices.containerInner.element; this.choices.containerOuter.element.setAttribute('tabIndex', '-1'); - this.addEventListener(this.choices.containerOuter.element, 'focus', () => this.focusableElement.focus()); + this.addEventListener(this.choices.containerOuter.element, 'focus', () => + this.focusableElement.focus(), + ); } this.addFocusBlurEvents(this.choices.input.element); @@ -1033,9 +1089,15 @@ export default class SelectComponent extends ListComponent { } if (window && this.choices && this.shouldPositionDropdown) { - this.addEventListener(window.document, 'scroll', () => { - this.positionDropdown(true); - }, false, true); + this.addEventListener( + window.document, + 'scroll', + () => { + this.positionDropdown(true); + }, + false, + true, + ); } this.focusableElement.setAttribute('tabIndex', tabIndex); @@ -1049,8 +1111,7 @@ export default class SelectComponent extends ListComponent { if (!event.target.value) { this.triggerUpdate(); - } - else { + } else { this.serverCount = null; this.downloadedResources = []; } @@ -1064,17 +1125,24 @@ export default class SelectComponent extends ListComponent { this.isFromSearch = false; }); // avoid spamming the resource/url endpoint when we have server side filtering enabled. - const debounceTimeout = this.component.searchField && (this.isSelectResource || this.isSelectURL) ? - (this.component.searchDebounce === 0 ? 0 : this.component.searchDebounce || this.defaultSchema.searchDebounce) * 1000 - : 0; + const debounceTimeout = + this.component.searchField && (this.isSelectResource || this.isSelectURL) + ? (this.component.searchDebounce === 0 + ? 0 + : this.component.searchDebounce || this.defaultSchema.searchDebounce) * 1000 + : 0; const updateComponent = (evt) => { this.triggerUpdate(evt.detail.value); }; - this.addEventListener(input, 'search', _.debounce((e) => { - updateComponent(e); - this.positionDropdown(); - }, debounceTimeout)); + this.addEventListener( + input, + 'search', + _.debounce((e) => { + updateComponent(e); + this.positionDropdown(); + }, debounceTimeout), + ); this.addEventListener(input, 'stopSearch', () => this.triggerUpdate()); this.addEventListener(input, 'hideDropdown', () => { @@ -1118,20 +1186,19 @@ export default class SelectComponent extends ListComponent { const projectUrl = _.get(this.root, 'formio.projectUrl', Formio.getProjectUrl()); const formUrl = `${projectUrl}/form/${this.component.data.resource}`; - new Form(formioForm, formUrl, {}).ready - .then((form) => { - form.on('submit', (submission) => { - // If valueProperty is set, replace the submission with the corresponding value - let value = this.valueProperty ? _.get(submission, this.valueProperty) : submission; - - if (this.component.multiple) { - value = [...this.dataValue, value]; - } - this.setValue(value); - this.triggerUpdate(); - dialog.close(); - }); + new Form(formioForm, formUrl, {}).ready.then((form) => { + form.on('submit', (submission) => { + // If valueProperty is set, replace the submission with the corresponding value + let value = this.valueProperty ? _.get(submission, this.valueProperty) : submission; + + if (this.component.multiple) { + value = [...this.dataValue, value]; + } + this.setValue(value); + this.triggerUpdate(); + dialog.close(); }); + }); }); } @@ -1167,17 +1234,19 @@ export default class SelectComponent extends ListComponent { if (comp.inDataGrid || comp.type === 'datagrid') { return true; - } - else if (comp.parent) { + } else if (comp.parent) { return this.hasDataGridAncestor(comp.parent); - } - else { + } else { return false; } } positionDropdown(scroll) { - if (!this.shouldPositionDropdown || !this.choices || (!this.choices.dropdown?.isActive && scroll)) { + if ( + !this.shouldPositionDropdown || + !this.choices || + (!this.choices.dropdown?.isActive && scroll) + ) { return; } @@ -1218,12 +1287,11 @@ export default class SelectComponent extends ListComponent { groupId: -1, customProperties: null, placeholder: true, - keyCode: null + keyCode: null, }); } } - update() { if (this.component.dataSrc === 'custom') { this.updateCustomItems(); @@ -1241,8 +1309,7 @@ export default class SelectComponent extends ListComponent { this.setDisabled(this.choices.containerInner.element, true); this.focusableElement.removeAttribute('tabIndex'); this.choices.disable(); - } - else { + } else { this.setDisabled(this.choices.containerInner.element, false); this.focusableElement.setAttribute('tabIndex', this.component.tabindex || 0); this.choices.enable(); @@ -1255,7 +1322,7 @@ export default class SelectComponent extends ListComponent { set visible(value) { // If we go from hidden to visible, trigger a refresh. - if (value && (!this._visible !== !value)) { + if (value && !this._visible !== !value) { this.triggerUpdate(); } super.visible = value; @@ -1285,7 +1352,7 @@ export default class SelectComponent extends ListComponent { const isSelectOptions = items === this.selectOptions; if (items && items.length) { _.each(items, (choice) => { - if (choice._id && value._id && (choice._id === value._id)) { + if (choice._id && value._id && choice._id === value._id) { found = true; return false; } @@ -1307,7 +1374,7 @@ export default class SelectComponent extends ListComponent { if (this.choices) { this.choices.setChoices(notFoundValuesToAdd, 'value', 'label'); } - notFoundValuesToAdd.map(notFoundValue => { + notFoundValuesToAdd.map((notFoundValue) => { this.addOption(notFoundValue.value, notFoundValue.label); }); } @@ -1315,7 +1382,7 @@ export default class SelectComponent extends ListComponent { } getValueAsString(data, options) { - return (this.component.multiple && Array.isArray(data)) + return this.component.multiple && Array.isArray(data) ? data.map((v) => this.asString(v, options)).join(', ') : this.asString(data, options); } @@ -1323,9 +1390,10 @@ export default class SelectComponent extends ListComponent { getValue() { // If the widget isn't active. if ( - this.viewOnly || this.loading - || (!this.component.lazyLoad && !this.selectOptions.length) - || !this.element + this.viewOnly || + this.loading || + (!this.component.lazyLoad && !this.selectOptions.length) || + !this.element ) { return this.dataValue; } @@ -1338,12 +1406,11 @@ export default class SelectComponent extends ListComponent { if ( !this.component.multiple && this.component.placeholder && - (value === this.t(this.component.placeholder, { _userInput: true })) + value === this.t(this.component.placeholder, { _userInput: true }) ) { value = this.emptyValue; } - } - else if (this.refs.selectContainer) { + } else if (this.refs.selectContainer) { value = this.refs.selectContainer.value; if (this.valueProperty === '' || this.isEntireObjectDisplay()) { @@ -1351,14 +1418,13 @@ export default class SelectComponent extends ListComponent { return {}; } - const option = this.selectOptions[value] || - this.selectOptions.find(option => option.id === value); + const option = + this.selectOptions[value] || this.selectOptions.find((option) => option.id === value); if (option && _.isObject(option.value)) { value = option.value; } } - } - else { + } else { value = this.dataValue; } // Choices will return undefined if nothing is selected. We really want '' to be empty. @@ -1392,7 +1458,12 @@ export default class SelectComponent extends ListComponent { const numberValue = Number(this.value); const isEquivalent = value.toString() === numberValue.toString(); - if (!Number.isNaN(numberValue) && Number.isFinite(numberValue) && value !== '' && isEquivalent) { + if ( + !Number.isNaN(numberValue) && + Number.isFinite(numberValue) && + value !== '' && + isEquivalent + ) { this.value = numberValue; } @@ -1401,11 +1472,10 @@ export default class SelectComponent extends ListComponent { boolean() { if ( - _.isString(this.value) - && (this.value.toLowerCase() === 'true' - || this.value.toLowerCase() === 'false') + _.isString(this.value) && + (this.value.toLowerCase() === 'true' || this.value.toLowerCase() === 'false') ) { - this.value = (this.value.toLowerCase() === 'true'); + this.value = this.value.toLowerCase() === 'true'; } return this; @@ -1423,19 +1493,17 @@ export default class SelectComponent extends ListComponent { auto() { if (_.isObject(this.value)) { this.value = this.object().value; - } - else { + } else { this.value = this.string().number().boolean().value; } return this; - } + }, }; try { return normalize[dataType]().value; - } - catch (err) { + } catch (err) { console.warn('Failed to normalize value', err); return value; } @@ -1466,7 +1534,13 @@ export default class SelectComponent extends ListComponent { // Check to see if we need to save off the template data into our metadata. const templateValue = this.component.reference && value?._id ? value._id.toString() : value; const shouldSaveData = (!valueIsObject || this.component.reference) && !this.inDataTable; - if (!_.isNil(templateValue) && shouldSaveData && this.templateData && this.templateData[templateValue] && this.root?.submission) { + if ( + !_.isNil(templateValue) && + shouldSaveData && + this.templateData && + this.templateData[templateValue] && + this.root?.submission + ) { const submission = this.root.submission; if (!submission.metadata) { submission.metadata = {}; @@ -1481,7 +1555,9 @@ export default class SelectComponent extends ListComponent { const dataValue = this.dataValue; if (dataValue && _.isArray(dataValue) && dataValue.length) { dataValue.forEach((dataValueItem) => { - const dataValueItemValue = this.component.reference ? dataValueItem._id.toString() : dataValueItem; + const dataValueItemValue = this.component.reference + ? dataValueItem._id.toString() + : dataValueItem; templateData[dataValueItemValue] = this.templateData[dataValueItemValue]; }); } @@ -1503,9 +1579,8 @@ export default class SelectComponent extends ListComponent { const changed = super.updateValue(value, flags); if (changed || !this.selectMetadata || flags.resetValue) { if (this.component.multiple && Array.isArray(this.dataValue)) { - this.dataValue.forEach(singleValue => this.setMetadata(singleValue, flags)); - } - else { + this.dataValue.forEach((singleValue) => this.setMetadata(singleValue, flags)); + } else { this.setMetadata(this.dataValue, flags); } } @@ -1515,14 +1590,13 @@ export default class SelectComponent extends ListComponent { undoValueTyping(value) { let untypedValue = value; if (this.component.multiple && Array.isArray(value)) { - untypedValue = value.map(v => { + untypedValue = value.map((v) => { if (typeof v === 'boolean' || typeof v === 'number') { return v.toString(); } return v; }); - } - else { + } else { if (typeof value === 'boolean' || typeof value === 'number') { untypedValue = value.toString(); } @@ -1534,7 +1608,11 @@ export default class SelectComponent extends ListComponent { setValue(value, flags = {}) { const previousValue = this.dataValue; const changed = this.updateValue(value, flags); - if (this.component.widget === 'html5' && (_.isEqual(value, previousValue) || _.isEqual(previousValue, {}) && _.isEqual(flags, {})) && !flags.fromSubmission ) { + if ( + this.component.widget === 'html5' && + (_.isEqual(value, previousValue) || (_.isEqual(previousValue, {}) && _.isEqual(flags, {}))) && + !flags.fromSubmission + ) { return false; } value = this.dataValue; @@ -1576,18 +1654,21 @@ export default class SelectComponent extends ListComponent { } isInitApiCallNeeded(hasValue) { - return this.component.lazyLoad && + return ( + this.component.lazyLoad && !this.lazyLoadInit && !this.active && !this.selectOptions.length && hasValue && this.shouldInitialLoad && - this.visible && (this.component.searchField || this.component.valueProperty); + this.visible && + (this.component.searchField || this.component.valueProperty) + ); } setChoicesValue(value, hasPreviousValue, flags = {}) { const hasValue = !this.isEmpty(value) || flags.fromSubmission; - hasPreviousValue = (hasPreviousValue === undefined) ? true : hasPreviousValue; + hasPreviousValue = hasPreviousValue === undefined ? true : hasPreviousValue; if (this.choices) { // Now set the value. if (hasValue) { @@ -1598,16 +1679,16 @@ export default class SelectComponent extends ListComponent { this.choices.setChoices(this.selectOptions, 'value', 'label', true); } this.choices.setChoiceByValue(currentChoices); - } - else if (hasPreviousValue || flags.resetValue) { + } else if (hasPreviousValue || flags.resetValue) { this.choices.removeActiveItems(); } - } - else { + } else { if (hasValue) { const values = Array.isArray(value) ? value : [value]; - if (!_.isEqual(this.dataValue, this.defaultValue) && this.selectOptions.length < 2 - || (this.selectData && flags.fromSubmission)) { + if ( + (!_.isEqual(this.dataValue, this.defaultValue) && this.selectOptions.length < 2) || + (this.selectData && flags.fromSubmission) + ) { const { value, label } = this.selectValueAndLabel(this.dataValue); this.addOption(value, label); } @@ -1623,8 +1704,7 @@ export default class SelectComponent extends ListComponent { } }); }); - } - else { + } else { _.each(this.selectOptions, (selectOption) => { if (selectOption.element) { selectOption.element.selected = false; @@ -1652,9 +1732,8 @@ export default class SelectComponent extends ListComponent { } try { - return (JSON.stringify(normalizedOptionValue) === JSON.stringify(value)); - } - catch (err) { + return JSON.stringify(normalizedOptionValue) === JSON.stringify(value); + } catch (err) { console.warn.error('Error while comparing items', err); return false; } @@ -1663,7 +1742,9 @@ export default class SelectComponent extends ListComponent { return values.findIndex((optionValue) => compareComplexValues(optionValue)) !== -1; } - return values.findIndex((optionValue) => this.normalizeSingleValue(optionValue) === value) !== -1; + return ( + values.findIndex((optionValue) => this.normalizeSingleValue(optionValue) === value) !== -1 + ); } return false; } @@ -1675,14 +1756,17 @@ export default class SelectComponent extends ListComponent { */ getOptionValue(value) { return _.isObject(value) && this.isEntireObjectDisplay() - ? this.normalizeSingleValue(value) - : _.isObject(value) && (this.valueProperty || this.component.key !== 'resource') - ? value - : _.isObject(value) && !this.valueProperty - ? this.interpolate(this.component.template, { item: value }).replace(/<\/?[^>]+(>|$)/g, '') - : _.isNull(value) - ? this.emptyValue - : String(this.normalizeSingleValue(value)); + ? this.normalizeSingleValue(value) + : _.isObject(value) && (this.valueProperty || this.component.key !== 'resource') + ? value + : _.isObject(value) && !this.valueProperty + ? this.interpolate(this.component.template, { item: value }).replace( + /<\/?[^>]+(>|$)/g, + '', + ) + : _.isNull(value) + ? this.emptyValue + : String(this.normalizeSingleValue(value)); } /** @@ -1709,8 +1793,7 @@ export default class SelectComponent extends ListComponent { if (typeof rawItems === 'string') { try { rawItems = JSON.parse(rawItems); - } - catch (err) { + } catch (err) { console.warn(err.message); rawItems = []; } @@ -1728,7 +1811,7 @@ export default class SelectComponent extends ListComponent { */ deleteValue() { this.setValue('', { - noUpdateEvent: true + noUpdateEvent: true, }); this.unset(); } @@ -1755,9 +1838,10 @@ export default class SelectComponent extends ListComponent { if (!this.component || !this.component.data || !this.component.data.values) { return; } - return this.component.data.values.map( - value => ({ label: value.label, value: String(this.normalizeSingleValue(value.value)) }) - ); + return this.component.data.values.map((value) => ({ + label: value.label, + value: String(this.normalizeSingleValue(value.value)), + })); } asString(value, options = {}) { @@ -1767,7 +1851,8 @@ export default class SelectComponent extends ListComponent { if (this.inDataTable) { value = this.undoValueTyping(value); } - const templateValue = (this.isEntireObjectDisplay() && !_.isObject(value.data)) ? { data: value } : value; + const templateValue = + this.isEntireObjectDisplay() && !_.isObject(value.data) ? { data: value } : value; const template = this.itemTemplate(templateValue, value, options); return template; } @@ -1775,9 +1860,8 @@ export default class SelectComponent extends ListComponent { const convertToString = (data, valueProperty) => { if (valueProperty) { if (Array.isArray(data)) { - data.forEach((item) => item[valueProperty] = item[valueProperty].toString()); - } - else if (_.isObject(data)) { + data.forEach((item) => (item[valueProperty] = item[valueProperty].toString())); + } else if (_.isObject(data)) { data[valueProperty] = data[valueProperty].toString(); } return data; @@ -1787,8 +1871,8 @@ export default class SelectComponent extends ListComponent { data = data.toString(); } - if (Array.isArray(data) && data.some(item => this.isBooleanOrNumber(item))) { - data = data.map(item => this.isBooleanOrNumber(item) ? item.toString() : item); + if (Array.isArray(data) && data.some((item) => this.isBooleanOrNumber(item))) { + data = data.map((item) => (this.isBooleanOrNumber(item) ? item.toString() : item)); } return data; @@ -1797,29 +1881,28 @@ export default class SelectComponent extends ListComponent { value = convertToString(value); if (['values', 'custom'].includes(this.component.dataSrc) && !this.asyncCustomValues()) { - const { - items, - valueProperty, - } = this.component.dataSrc === 'values' + const { items, valueProperty } = + this.component.dataSrc === 'values' ? { - items: convertToString(this.getNormalizedValues(), 'value'), - valueProperty: 'value', - } + items: convertToString(this.getNormalizedValues(), 'value'), + valueProperty: 'value', + } : { - items: convertToString(this.getCustomItems(), this.valueProperty), - valueProperty: this.valueProperty, - }; + items: convertToString(this.getCustomItems(), this.valueProperty), + valueProperty: this.valueProperty, + }; const getFromValues = () => { const initialValue = _.find(items, [valueProperty, value]); const values = this.defaultSchema.data.values || []; return _.isEqual(initialValue, values[0]) ? '-' : initialValue; }; - value = (this.component.multiple && Array.isArray(value)) - ? _.filter(items, (item) => value.includes(item.value)) - : (valueProperty && items) - ? getFromValues() ?? { value, label: value } - : value; + value = + this.component.multiple && Array.isArray(value) + ? _.filter(items, (item) => value.includes(item.value)) + : valueProperty && items + ? (getFromValues() ?? { value, label: value }) + : value; } if (_.isString(value)) { @@ -1828,21 +1911,17 @@ export default class SelectComponent extends ListComponent { const getTemplateValue = (v) => { const itemTemplate = this.itemTemplate(v); - return options.csv && itemTemplate - ? removeHTML(itemTemplate) - : itemTemplate; + return options.csv && itemTemplate ? removeHTML(itemTemplate) : itemTemplate; }; if (Array.isArray(value)) { const items = []; - value.forEach(item => items.push(getTemplateValue(item))); - if (this.component.dataSrc === 'resource' && items.length > 0 ) { + value.forEach((item) => items.push(getTemplateValue(item))); + if (this.component.dataSrc === 'resource' && items.length > 0) { return items.join(', '); - } - else if (items.length > 0) { + } else if (items.length > 0) { return items.join('
    '); - } - else { + } else { return '-'; } } @@ -1851,9 +1930,7 @@ export default class SelectComponent extends ListComponent { return JSON.stringify(value); } - return !_.isNil(value) - ? getTemplateValue(value) - : '-'; + return !_.isNil(value) ? getTemplateValue(value) : '-'; } detach() { @@ -1877,9 +1954,14 @@ export default class SelectComponent extends ListComponent { setErrorClasses(elements, dirty, hasError, hasMessages, element = this.element) { super.setErrorClasses(elements, dirty, hasError, hasMessages, element); if (this.choices) { - super.setErrorClasses([this.choices.containerInner.element], dirty, hasError, hasMessages, element); - } - else { + super.setErrorClasses( + [this.choices.containerInner.element], + dirty, + hasError, + hasMessages, + element, + ); + } else { super.setErrorClasses([this.refs.selectContainer], dirty, hasError, hasMessages, element); } } diff --git a/src/components/select/editForm/Select.edit.data.js b/src/components/select/editForm/Select.edit.data.js index f1c41fd010..a0fdf05421 100644 --- a/src/components/select/editForm/Select.edit.data.js +++ b/src/components/select/editForm/Select.edit.data.js @@ -3,11 +3,17 @@ import { eachComponent } from '../../../utils/utils'; const calculateSingleSelectData = (context, defaultValue) => { const { instance, data } = context; - const rawDefaultValue = instance.downloadedResources.find(resource => _.get(resource, data.valueProperty) === defaultValue); + const rawDefaultValue = instance.downloadedResources.find( + (resource) => _.get(resource, data.valueProperty) === defaultValue, + ); const options = { data: {}, noeval: true }; - instance.interpolate(data.template, { - item: rawDefaultValue, - }, options); + instance.interpolate( + data.template, + { + item: rawDefaultValue, + }, + options, + ); return options.data.item; }; @@ -20,8 +26,7 @@ const calculateSelectData = (context) => { multiSelectData[defaultValueItem] = calculateSingleSelectData(context, defaultValueItem); }); return multiSelectData; - } - else { + } else { return calculateSingleSelectData(context, defaultValue); } }; @@ -33,7 +38,7 @@ const setSelectData = (context) => { const selectDataComponent = instance?.root?.getComponent('selectData'); // clear selectData if conditions are not met or clearing default value if (selectDataComponent && (!selectDataComponent.visible || !data.defaultValue)) { - selectDataComponent.setValue(null, { resetValue: true}); + selectDataComponent.setValue(null, { resetValue: true }); return; } // nothing can set if don't have downloaded resources @@ -41,9 +46,11 @@ const setSelectData = (context) => { return; } const shouldCalculateUrlData = data.dataSrc === 'url' && data.data.url && data.valueProperty; - const shouldCalculateResourceData = data.dataSrc === 'resource' && data.data.resource && data.valueProperty; - const newValue = shouldCalculateUrlData || shouldCalculateResourceData ? calculateSelectData(context) : null; - selectDataComponent.setValue(newValue, { resetValue: newValue === null}); + const shouldCalculateResourceData = + data.dataSrc === 'resource' && data.data.resource && data.valueProperty; + const newValue = + shouldCalculateUrlData || shouldCalculateResourceData ? calculateSelectData(context) : null; + selectDataComponent.setValue(newValue, { resetValue: newValue === null }); }, 0); }; @@ -80,7 +87,7 @@ export default [ tooltip: 'The name of table in the indexeddb database.', conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'indexeddb'] }, - } + }, }, { type: 'textarea', @@ -105,7 +112,8 @@ export default [ key: 'data.json', label: 'Data Source Raw JSON', tooltip: 'A valid JSON array to use as a data source.', - description: '
    Example:
    ["apple", "banana", "orange"].
    Example 2:
    [{"name": "John", "email": "john.doe@test.com"}, {"name": "Jane", "email": "jane.doe@test.com"}].
    ', + description: + '
    Example:
    ["apple", "banana", "orange"].
    Example 2:
    [{"name": "John", "email": "john.doe@test.com"}, {"name": "Jane", "email": "jane.doe@test.com"}].
    ', conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'json'] }, }, @@ -115,27 +123,19 @@ export default [ input: true, label: 'Lazy Load Data', key: 'lazyLoad', - tooltip: 'When set, this will not fire off the request to the URL until this control is within focus. This can improve performance if you have many Select dropdowns on your form where the API\'s will only fire when the control is activated.', + tooltip: + "When set, this will not fire off the request to the URL until this control is within focus. This can improve performance if you have many Select dropdowns on your form where the API's will only fire when the control is activated.", weight: 11, conditional: { json: { and: [ { - in: [ - { var: 'data.dataSrc' }, - [ - 'resource', - 'url', - ], - ], + in: [{ var: 'data.dataSrc' }, ['resource', 'url']], }, { - '!==': [ - { var: 'data.widget' }, - 'html5' - ] - } - ] + '!==': [{ var: 'data.widget' }, 'html5'], + }, + ], }, }, }, @@ -144,7 +144,8 @@ export default [ input: true, label: 'Data Source Values', key: 'data.values', - tooltip: 'Values to use as the data source. Labels are shown in the select field. Values are the corresponding values saved with the submission.', + tooltip: + 'Values to use as the data source. Labels are shown in the select field. Values are the corresponding values saved with the submission.', weight: 10, reorder: true, defaultValue: [{ label: '', value: '' }], @@ -195,7 +196,8 @@ export default [ key: 'selectValues', weight: 12, description: 'The object path to the iterable items.', - tooltip: 'The property within the source data, where iterable items reside. For example: results.items or results[0].items', + tooltip: + 'The property within the source data, where iterable items reside. For example: results.items or results[0].items', conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, }, @@ -215,18 +217,21 @@ export default [ dataSrc: 'url', lazyLoad: false, onSetItems(component, form) { - const newItems = form.type === 'resource' - ? [{ - label: '{Entire Object}', - key: 'data', - }] - : []; + const newItems = + form.type === 'resource' + ? [ + { + label: '{Entire Object}', + key: 'data', + }, + ] + : []; eachComponent(form.components, (component, path) => { if (component.input) { newItems.push({ label: component.label || component.key, - key: `data.${path}` + key: `data.${path}`, }); } }); @@ -261,7 +266,8 @@ export default [ label: 'Storage Type', key: 'dataType', clearOnHide: true, - tooltip: 'The type to store the data. If you select something other than autotype, it will force it to that type.', + tooltip: + 'The type to store the data. If you select something other than autotype, it will force it to that type.', weight: 12, template: '{{ item.label }}', dataSrc: 'values', @@ -282,14 +288,15 @@ export default [ weight: 12, label: 'ID Path', placeholder: 'id', - tooltip: 'Path to the select option id.' + tooltip: 'Path to the select option id.', }, { type: 'textfield', input: true, label: 'Select Fields', key: 'selectFields', - tooltip: 'The properties on the resource to return as part of the options. Separate property names by commas. If left blank, all properties will be returned.', + tooltip: + 'The properties on the resource to return as part of the options. Separate property names by commas. If left blank, all properties will be returned.', placeholder: 'Comma separated list of fields to select.', weight: 14, conditional: { @@ -306,7 +313,8 @@ export default [ input: true, key: 'disableLimit', label: 'Disable limiting response', - tooltip: 'When enabled the request will not include the limit and skip options in the query string', + tooltip: + 'When enabled the request will not include the limit and skip options in the query string', weight: 15, conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'url'] }, @@ -319,16 +327,11 @@ export default [ label: 'Search Query Name', weight: 16, description: 'Name of URL query parameter', - tooltip: 'The name of the search querystring parameter used when sending a request to filter results with. The server at the URL must handle this query parameter.', + tooltip: + 'The name of the search querystring parameter used when sending a request to filter results with. The server at the URL must handle this query parameter.', conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource']], }, }, }, @@ -339,7 +342,8 @@ export default [ label: 'Search request delay', weight: 16, description: 'The delay (in seconds) before the search request is sent.', - tooltip: 'The delay in seconds before the search request is sent, measured from the last character input in the search field.', + tooltip: + 'The delay in seconds before the search request is sent, measured from the last character input in the search field.', validate: { min: 0, customMessage: '', @@ -352,13 +356,7 @@ export default [ defaultValue: 0.3, conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource']], }, }, }, @@ -389,13 +387,7 @@ export default [ tooltip: 'Use this to provide additional filtering using query parameters.', conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource']], }, }, }, @@ -409,13 +401,7 @@ export default [ tooltip: 'Use this to provide additional sorting using query parameters', conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource']], }, }, }, @@ -431,15 +417,9 @@ export default [ conditional: { json: { and: [ - { in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource' - ], - ] }, - { '!==': [{ var: 'data.disableLimit' }, true] } - ] + { in: [{ var: 'data.dataSrc' }, ['url', 'resource']] }, + { '!==': [{ var: 'data.disableLimit' }, true] }, + ], }, }, }, @@ -452,7 +432,8 @@ export default [ rows: 10, weight: 14, placeholder: "values = data['mykey'] or values = Promise.resolve(['myValue'])", - tooltip: 'Write custom code to return the value options or a promise with value options. The form data object is available.', + tooltip: + 'Write custom code to return the value options or a promise with value options. The form data object is available.', conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'custom'] }, }, @@ -470,28 +451,23 @@ export default [ custom(context) { var values = []; values.push({ label: 'Any Change', value: 'data' }); - context.utils.eachComponent(context.instance.options.editForm.components, function(component, path) { - if (component.key !== context.data.key) { - values.push({ - label: component.label || component.key, - value: path - }); - } - }); + context.utils.eachComponent( + context.instance.options.editForm.components, + function (component, path) { + if (component.key !== context.data.key) { + values.push({ + label: component.label || component.key, + value: path, + }); + } + }, + ); return values; - } + }, }, conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - 'values', - 'custom' - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource', 'values', 'custom']], }, }, }, @@ -508,27 +484,23 @@ export default [ custom(context) { var values = []; values.push({ label: 'Any Change', value: 'data' }); - context.utils.eachComponent(context.instance.options.editForm.components, function(component, path) { - if (component.key !== context.data.key) { - values.push({ - label: component.label || component.key, - value: path - }); - } - }); + context.utils.eachComponent( + context.instance.options.editForm.components, + function (component, path) { + if (component.key !== context.data.key) { + values.push({ + label: component.label || component.key, + value: path, + }); + } + }, + ); return values; - } + }, }, conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - 'values' - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource', 'values']], }, }, }, @@ -542,15 +514,7 @@ export default [ tooltip: 'When the Refresh On field is changed, clear this components value.', conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource', - 'values', - 'custom' - ], - ], + in: [{ var: 'data.dataSrc' }, ['url', 'resource', 'values', 'custom']], }, }, }, @@ -561,7 +525,8 @@ export default [ key: 'searchEnabled', label: 'Enable Static Search', defaultValue: true, - tooltip: 'When checked, the select dropdown will allow for searching within the static list of items provided.', + tooltip: + 'When checked, the select dropdown will allow for searching within the static list of items provided.', }, { type: 'checkbox', @@ -570,19 +535,14 @@ export default [ key: 'noRefreshOnScroll', label: 'Disable Options Refresh When Scrolling', defaultValue: false, - tooltip: 'When checked, the select with search input won\'t perform new api requests when scrolling through the list of options.', + tooltip: + "When checked, the select with search input won't perform new api requests when scrolling through the list of options.", conditional: { json: { and: [ - { in: [ - { var: 'data.dataSrc' }, - [ - 'url', - 'resource' - ], - ] }, - { '===': [{ var: 'data.searchEnabled' }, true] } - ] + { in: [{ var: 'data.dataSrc' }, ['url', 'resource']] }, + { '===': [{ var: 'data.searchEnabled' }, true] }, + ], }, }, }, @@ -605,7 +565,8 @@ export default [ encrypted: false, defaultValue: 0.3, weight: 22, - tooltip: 'At what point does the match algorithm give up. A threshold of 0.0 requires a perfect match, a threshold of 1.0 would match anything.', + tooltip: + 'At what point does the match algorithm give up. A threshold of 0.0 requires a perfect match, a threshold of 1.0 would match anything.', }, { type: 'checkbox', @@ -641,7 +602,8 @@ export default [ weight: 25, key: 'reference', label: 'Save as reference', - tooltip: 'Using this option will save this field as a reference and link its value to the value of the origin record.', + tooltip: + 'Using this option will save this field as a reference and link its value to the value of the origin record.', conditional: { json: { '===': [{ var: 'data.dataSrc' }, 'resource'] }, }, @@ -691,7 +653,7 @@ export default [ json: { and: [ { var: 'data.valueProperty' }, - { '===': [{ var: 'data.lazyLoad' }, true]}, + { '===': [{ var: 'data.lazyLoad' }, true] }, { '!==': [{ var: 'data.widget' }, 'html5'] }, { or: [ @@ -702,10 +664,10 @@ export default [ // 'data' means entire object from resource will be used { '!==': [{ var: 'data.valueProperty' }, 'data'] }, ], - } - ] - } - ] + }, + ], + }, + ], }, }, }, diff --git a/src/components/select/editForm/Select.edit.display.js b/src/components/select/editForm/Select.edit.display.js index cd6e222f5d..95e6669e5e 100644 --- a/src/components/select/editForm/Select.edit.display.js +++ b/src/components/select/editForm/Select.edit.display.js @@ -3,7 +3,7 @@ export default [ type: 'select', input: true, weight: 20, - tooltip: 'Select the type of widget you\'d like to use.', + tooltip: "Select the type of widget you'd like to use.", key: 'widget', defaultValue: 'choicesjs', label: 'Widget Type', @@ -21,6 +21,6 @@ export default [ label: 'Unique Options', tooltip: 'Display only unique dropdown options.', key: 'uniqueOptions', - input: true + input: true, }, ]; diff --git a/src/components/select/editForm/Select.edit.validation.js b/src/components/select/editForm/Select.edit.validation.js index 40751945fc..badeaf5da8 100644 --- a/src/components/select/editForm/Select.edit.validation.js +++ b/src/components/select/editForm/Select.edit.validation.js @@ -3,32 +3,26 @@ export default [ weight: 50, type: 'checkbox', label: 'Perform server validation of remote value', - tooltip: 'Check this if you would like for the server to perform a validation check to ensure the selected value is an available option. This requires a Search query to ensure a record is found.', + tooltip: + 'Check this if you would like for the server to perform a validation check to ensure the selected value is an available option. This requires a Search query to ensure a record is found.', key: 'validate.select', input: true, conditional: { - json: { var: 'data.searchField' } - } + json: { var: 'data.searchField' }, + }, }, { weight: 52, type: 'checkbox', label: 'Allow only available values', - tooltip: 'Check this if you would like to perform a validation check to ensure the selected value is an available option (only for synchronous values).', + tooltip: + 'Check this if you would like to perform a validation check to ensure the selected value is an available option (only for synchronous values).', key: 'validate.onlyAvailableItems', input: true, conditional: { json: { - in: [ - { var: 'data.dataSrc' }, - [ - 'values', - 'json', - 'custom', - 'url' - ], - ], + in: [{ var: 'data.dataSrc' }, ['values', 'json', 'custom', 'url']], }, }, - } + }, ]; diff --git a/src/components/selectboxes/SelectBoxes.form.js b/src/components/selectboxes/SelectBoxes.form.js index 296c0a1e5f..adb9a6a0d0 100644 --- a/src/components/selectboxes/SelectBoxes.form.js +++ b/src/components/selectboxes/SelectBoxes.form.js @@ -6,20 +6,23 @@ import SelectBoxesEditValidation from './editForm/SelectBoxes.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return radioEditForm([ - { - key: 'data', - components: [ - { - key: 'dataType', - ignore: true, - } - ] - }, - { - key: 'validation', - components: SelectBoxesEditValidation - }, - ], ...extend); +export default function (...extend) { + return radioEditForm( + [ + { + key: 'data', + components: [ + { + key: 'dataType', + ignore: true, + }, + ], + }, + { + key: 'validation', + components: SelectBoxesEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/selectboxes/SelectBoxes.js b/src/components/selectboxes/SelectBoxes.js index 9dce6cb829..2c280d90dd 100644 --- a/src/components/selectboxes/SelectBoxes.js +++ b/src/components/selectboxes/SelectBoxes.js @@ -1,15 +1,23 @@ import _ from 'lodash'; -import { componentValueTypes, getComponentSavedTypes, boolValue, getComponent } from '../../utils/utils'; +import { + componentValueTypes, + getComponentSavedTypes, + boolValue, + getComponent, +} from '../../utils/utils'; import RadioComponent from '../radio/Radio'; export default class SelectBoxesComponent extends RadioComponent { static schema(...extend) { - return RadioComponent.schema({ - type: 'selectboxes', - label: 'Select Boxes', - key: 'selectBoxes', - inline: false - }, ...extend); + return RadioComponent.schema( + { + type: 'selectboxes', + label: 'Select Boxes', + key: 'selectBoxes', + inline: false, + }, + ...extend, + ); } static get builderInfo() { @@ -19,7 +27,7 @@ export default class SelectBoxesComponent extends RadioComponent { icon: 'plus-square', weight: 60, documentation: '/userguide/form-building/form-components#select-box', - schema: SelectBoxesComponent.schema() + schema: SelectBoxesComponent.schema(), }; } @@ -33,26 +41,26 @@ export default class SelectBoxesComponent extends RadioComponent { valueComponent(classComp) { const isValuesSrc = !classComp.dataSrc || classComp.dataSrc === 'values'; return isValuesSrc - ? { - type: 'select', - dataSrc: 'custom', - valueProperty: 'value', - dataType: 'string', - data: { - custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}` - }, - } - : { - ...classComp, - dataType: 'string', - type: 'select', - } - } + ? { + type: 'select', + dataSrc: 'custom', + valueProperty: 'value', + dataType: 'string', + data: { + custom: `values = ${classComp && classComp.values ? JSON.stringify(classComp.values) : []}`, + }, + } + : { + ...classComp, + dataType: 'string', + type: 'select', + }; + }, }; } static savedValueTypes(schema) { - return getComponentSavedTypes(schema) || [componentValueTypes.object]; + return getComponentSavedTypes(schema) || [componentValueTypes.object]; } constructor(...args) { @@ -92,11 +100,7 @@ export default class SelectBoxesComponent extends RadioComponent { defaultValue = this.component.defaultValue; } if (this.component.customDefaultValue && !this.options.preview) { - defaultValue = this.evaluate( - this.component.customDefaultValue, - { value: '' }, - 'value' - ); + defaultValue = this.evaluate(this.component.customDefaultValue, { value: '' }, 'value'); } return defaultValue; @@ -140,10 +144,9 @@ export default class SelectBoxesComponent extends RadioComponent { if (typeof value !== 'object') { if (typeof value === 'string') { value = { - [value]: true + [value]: true, }; - } - else { + } else { value = {}; } } @@ -154,7 +157,11 @@ export default class SelectBoxesComponent extends RadioComponent { } const checkedValues = _.keys(_.pickBy(value, (val) => val)); - if (this.isSelectURL && this.templateData && _.every(checkedValues, (val) => this.templateData[val])) { + if ( + this.isSelectURL && + this.templateData && + _.every(checkedValues, (val) => this.templateData[val]) + ) { const submission = this.root.submission; if (!submission.metadata.selectData) { submission.metadata.selectData = {}; @@ -189,8 +196,7 @@ export default class SelectBoxesComponent extends RadioComponent { if (changed) { this.redraw(); } - } - else { + } else { _.each(this.refs.input, (input) => { if (_.isUndefined(value[input.value])) { value[input.value] = false; @@ -211,12 +217,18 @@ export default class SelectBoxesComponent extends RadioComponent { if (options.modalPreview || this.options.readOnly || this.inDataTable) { const checkedItems = _.keys(_.pickBy(value, (val) => val)); if (this.selectData?.length === checkedItems.length) { - return this.selectData.map(item => this.itemTemplate(item)).join(', '); + return this.selectData.map((item) => this.itemTemplate(item)).join(', '); } else if (this.loadedOptions?.length) { - return this.loadedOptions.filter((option) => value[option.value]).map((option) => option.label).join(', '); + return this.loadedOptions + .filter((option) => value[option.value]) + .map((option) => option.label) + .join(', '); } } - return _(value).pickBy((val) => val).keys().join(', '); + return _(value) + .pickBy((val) => val) + .keys() + .join(', '); } return _(this.component.values || []) .filter((v) => value[v.value]) @@ -237,13 +249,18 @@ export default class SelectBoxesComponent extends RadioComponent { key = valuesKeys.find((k) => input?.value.toString() === k); } const isChecked = value[key]; - if ((isChecked && key) || (this.isSelectURL && !this.shouldLoad && this.listData && _.findIndex(this.selectData, this.listData[index]) !== -1)) { + if ( + (isChecked && key) || + (this.isSelectURL && + !this.shouldLoad && + this.listData && + _.findIndex(this.selectData, this.listData[index]) !== -1) + ) { //add class to container when selected this.addClass(wrapper, this.optionSelectedClass); //change "checked" attribute input.setAttribute('checked', 'true'); - } - else if (!isChecked && key) { + } else if (!isChecked && key) { this.removeClass(wrapper, this.optionSelectedClass); input.removeAttribute('checked'); } @@ -253,8 +270,8 @@ export default class SelectBoxesComponent extends RadioComponent { setInputsDisabled(value, onlyUnchecked) { if (this.refs.input) { - this.refs.input.forEach(item => { - if (onlyUnchecked && !item.checked || !onlyUnchecked) { + this.refs.input.forEach((item) => { + if ((onlyUnchecked && !item.checked) || !onlyUnchecked) { item.disabled = value; } }); @@ -266,7 +283,7 @@ export default class SelectBoxesComponent extends RadioComponent { const maxCount = this.component.validate.maxSelectedCount; if (!this.shouldSkipValidation(data, rowData, options)) { const isValid = this.isValid(data, dirty); - if ((maxCount || minCount)) { + if (maxCount || minCount) { const count = Object.keys(this.validationValue).reduce((total, key) => { if (this.validationValue[key]) { total++; @@ -277,25 +294,24 @@ export default class SelectBoxesComponent extends RadioComponent { // Disable the rest of inputs if the max amount is already checked if (maxCount && count >= maxCount) { this.setInputsDisabled(true, true); - } - else if (maxCount && !this.shouldDisabled) { + } else if (maxCount && !this.shouldDisabled) { this.setInputsDisabled(false); } if (!isValid && maxCount && count > maxCount) { const message = this.t( - this.component.maxSelectedCountMessage || 'You may only select up to {{maxCount}} items', - { maxCount } + this.component.maxSelectedCountMessage || + 'You may only select up to {{maxCount}} items', + { maxCount }, ); this.errors.push({ message }); this.setCustomValidity(message, dirty); return false; - } - else if (!isValid && minCount && count < minCount) { + } else if (!isValid && minCount && count < minCount) { this.setInputsDisabled(false); const message = this.t( this.component.minSelectedCountMessage || 'You must select at least {{minCount}} items', - { minCount } + { minCount }, ); this.errors.push({ message }); this.setCustomValidity(message, dirty); @@ -308,14 +324,19 @@ export default class SelectBoxesComponent extends RadioComponent { } setCustomValidity(messages, dirty, external) { - if (this.options.building && _.find(messages, {ruleName: 'invalidValueProperty'})) { + if (this.options.building && _.find(messages, { ruleName: 'invalidValueProperty' })) { setTimeout(() => { - this.root && getComponent(this.root.components, 'valueProperty').setCustomValidity(messages, dirty); + this.root && + getComponent(this.root.components, 'valueProperty').setCustomValidity(messages, dirty); }, 0); - return super.setCustomValidity(_.filter(messages, (message) => message.ruleName !=='invalidValueProperty'), dirty, external); + return super.setCustomValidity( + _.filter(messages, (message) => message.ruleName !== 'invalidValueProperty'), + dirty, + external, + ); } else { return super.setCustomValidity(messages, dirty, external); - }; + } } validateValueAvailability(setting, value) { diff --git a/src/components/selectboxes/editForm/SelectBoxes.edit.validation.js b/src/components/selectboxes/editForm/SelectBoxes.edit.validation.js index 5e0ac2ce35..ce980d9abc 100644 --- a/src/components/selectboxes/editForm/SelectBoxes.edit.validation.js +++ b/src/components/selectboxes/editForm/SelectBoxes.edit.validation.js @@ -5,7 +5,7 @@ export default [ key: 'validate.minSelectedCount', label: 'Minimum checked number', tooltip: 'Minimum checkboxes required before form can be submitted.', - weight: 250 + weight: 250, }, { type: 'number', @@ -13,7 +13,7 @@ export default [ key: 'validate.maxSelectedCount', label: 'Maximum checked number', tooltip: 'Maximum checkboxes possible before form can be submitted.', - weight: 250 + weight: 250, }, { type: 'textfield', @@ -21,7 +21,7 @@ export default [ key: 'minSelectedCountMessage', label: 'Minimum checked error message', tooltip: 'Error message displayed if minimum number of items not checked.', - weight: 250 + weight: 250, }, { type: 'textfield', @@ -29,6 +29,6 @@ export default [ key: 'maxSelectedCountMessage', label: 'Maximum checked error message', tooltip: 'Error message displayed if maximum number of items checked.', - weight: 250 - } + weight: 250, + }, ]; diff --git a/src/components/signature/Signature.form.js b/src/components/signature/Signature.form.js index 4b66dd970b..09930e7a94 100644 --- a/src/components/signature/Signature.form.js +++ b/src/components/signature/Signature.form.js @@ -8,19 +8,22 @@ import SignatureEditValidation from './editForm/Signature.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: SignatureEditDisplay - }, - { - key: 'data', - components: SignatureEditData - }, - { - key: 'validation', - components: SignatureEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: SignatureEditDisplay, + }, + { + key: 'data', + components: SignatureEditData, + }, + { + key: 'validation', + components: SignatureEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/signature/Signature.js b/src/components/signature/Signature.js index 866b38d89c..4ffe5b8dbd 100644 --- a/src/components/signature/Signature.js +++ b/src/components/signature/Signature.js @@ -5,19 +5,22 @@ import { componentValueTypes, getComponentSavedTypes } from '../../utils/utils'; export default class SignatureComponent extends Input { static schema(...extend) { - return Input.schema({ - type: 'signature', - label: 'Signature', - key: 'signature', - footer: 'Sign above', - width: '100%', - height: '150px', - penColor: 'black', - backgroundColor: 'rgb(245,245,235)', - minWidth: '0.5', - maxWidth: '2.5', - keepOverlayRatio: true, - }, ...extend); + return Input.schema( + { + type: 'signature', + label: 'Signature', + key: 'signature', + footer: 'Sign above', + width: '100%', + height: '150px', + penColor: 'black', + backgroundColor: 'rgb(245,245,235)', + minWidth: '0.5', + maxWidth: '2.5', + keepOverlayRatio: true, + }, + ...extend, + ); } static get builderInfo() { @@ -27,7 +30,7 @@ export default class SignatureComponent extends Input { icon: 'pencil', weight: 120, documentation: '/developers/integrations/esign/esign-integrations#signature-component', - schema: SignatureComponent.schema() + schema: SignatureComponent.schema(), }; } @@ -60,10 +63,10 @@ export default class SignatureComponent extends Input { } if ( - this.component.keepOverlayRatio - && this.options?.display === 'pdf' - && this.component.overlay?.width - && this.component.overlay?.height + this.component.keepOverlayRatio && + this.options?.display === 'pdf' && + this.component.overlay?.width && + this.component.overlay?.height ) { this.ratio = this.component.overlay?.width / this.component.overlay?.height; this.component.width = '100%'; @@ -103,8 +106,7 @@ export default class SignatureComponent extends Input { if (this.signaturePad) { if (!value) { this.signaturePad.clear(); - } - else if (changed) { + } else if (changed) { this.triggerChange(); } } @@ -124,8 +126,7 @@ export default class SignatureComponent extends Input { if (this.refs.signatureImage) { this.refs.signatureImage.style.display = 'none'; } - } - else { + } else { if (this.refs.canvas) { this.refs.canvas.style.display = 'none'; } @@ -147,8 +148,7 @@ export default class SignatureComponent extends Input { if (this.refs.signatureImage && this.dataValue) { this.refs.signatureImage.setAttribute('src', this.dataValue); } - } - else { + } else { this.signaturePad.on(); if (this.refs.refresh) { this.refs.refresh.classList.remove('disabled'); @@ -158,7 +158,10 @@ export default class SignatureComponent extends Input { } checkSize(force, scale) { - if (this.refs.padBody && (force || this.refs.padBody && this.refs.padBody.offsetWidth !== this.currentWidth)) { + if ( + this.refs.padBody && + (force || (this.refs.padBody && this.refs.padBody.offsetWidth !== this.currentWidth)) + ) { this.scale = force ? scale : this.scale; this.currentWidth = this.refs.padBody.offsetWidth; const width = this.currentWidth * this.scale; @@ -171,7 +174,7 @@ export default class SignatureComponent extends Input { this.refs.canvas.style.maxHeight = `${maxHeight}px`; const ctx = this.refs.canvas.getContext('2d'); ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.scale((1 / this.scale), (1 / this.scale)); + ctx.scale(1 / this.scale, 1 / this.scale); ctx.fillStyle = this.signaturePad.backgroundColor; ctx.fillRect(0, 0, this.refs.canvas.width, this.refs.canvas.height); this.signaturePad.clear(); @@ -199,14 +202,19 @@ export default class SignatureComponent extends Input { getModalPreviewTemplate() { return this.renderModalPreview({ - previewText: this.dataValue ? - `` : - this.t('Click to Sign') + previewText: this.dataValue + ? `` + : this.t('Click to Sign'), }); } attach(element) { - this.loadRefs(element, { canvas: 'single', refresh: 'single', padBody: 'single', signatureImage: 'single' }); + this.loadRefs(element, { + canvas: 'single', + refresh: 'single', + padBody: 'single', + signatureImage: 'single', + }); const superAttach = super.attach(element); if (this.refs.refresh && this.options.readOnly) { @@ -219,10 +227,12 @@ export default class SignatureComponent extends Input { minWidth: this.component.minWidth, maxWidth: this.component.maxWidth, penColor: this.component.penColor, - backgroundColor: this.component.backgroundColor + backgroundColor: this.component.backgroundColor, }); - this.signaturePad.addEventListener('endStroke', () => this.setValue(this.signaturePad.toDataURL())); + this.signaturePad.addEventListener('endStroke', () => + this.setValue(this.signaturePad.toDataURL()), + ); this.refs.signatureImage.setAttribute('src', this.signaturePad.toDataURL()); this.onDisabled(); @@ -239,18 +249,24 @@ export default class SignatureComponent extends Input { }); this.observer.observe(this.refs.padBody); - } - - this.addEventListener(window, 'resize', _.debounce(() => this.checkSize(), 10)); + } - setTimeout(function checkWidth() { - if (this.refs.padBody && this.refs.padBody.offsetWidth) { - this.checkSize(); - } - else { - setTimeout(checkWidth.bind(this), 20); - } - }.bind(this), 20); + this.addEventListener( + window, + 'resize', + _.debounce(() => this.checkSize(), 10), + ); + + setTimeout( + function checkWidth() { + if (this.refs.padBody && this.refs.padBody.offsetWidth) { + this.checkSize(); + } else { + setTimeout(checkWidth.bind(this), 20); + } + }.bind(this), + 20, + ); } } this.addEventListener(this.refs.refresh, 'click', (event) => { @@ -262,7 +278,6 @@ export default class SignatureComponent extends Input { this.setValue(this.dataValue); return superAttach; } - detach() { if (this.observer) { diff --git a/src/components/signature/editForm/Signature.edit.display.js b/src/components/signature/editForm/Signature.edit.display.js index 8d273e0418..c4e98c7bb2 100644 --- a/src/components/signature/editForm/Signature.edit.display.js +++ b/src/components/signature/editForm/Signature.edit.display.js @@ -6,7 +6,7 @@ export default [ label: 'Footer Label', tooltip: 'The footer text that appears below the signature area.', placeholder: 'Footer Label', - weight: 10 + weight: 10, }, { type: 'textfield', @@ -16,9 +16,9 @@ export default [ tooltip: 'The width of the signature area.', placeholder: 'Width', conditional: { - json: { '!' : [{ var: 'data.keepOverlayRatio' }] }, + json: { '!': [{ var: 'data.keepOverlayRatio' }] }, }, - weight: 50 + weight: 50, }, { type: 'textfield', @@ -26,10 +26,11 @@ export default [ key: 'height', label: 'Height', tooltip: 'The height of the signature area.', - placeholder: 'Height', conditional: { - json: { '!' : [{ var: 'data.keepOverlayRatio' }] }, + placeholder: 'Height', + conditional: { + json: { '!': [{ var: 'data.keepOverlayRatio' }] }, }, - weight: 51 + weight: 51, }, { weight: 52, @@ -37,7 +38,7 @@ export default [ label: 'Keep Overlay Aspect Ratio', tooltip: 'If checked, the field will have the same aspect ratio as its preview.', key: 'keepOverlayRatio', - input: true + input: true, }, { type: 'textfield', @@ -46,7 +47,7 @@ export default [ label: 'Background Color', tooltip: 'The background color of the signature area.', placeholder: 'Background Color', - weight: 52 + weight: 52, }, { type: 'textfield', @@ -55,7 +56,7 @@ export default [ label: 'Pen Color', tooltip: 'The ink color for the signature area.', placeholder: 'Pen Color', - weight: 53 + weight: 53, }, { key: 'placeholder', diff --git a/src/components/survey/Survey.form.js b/src/components/survey/Survey.form.js index 6724e35739..b725aaefa7 100644 --- a/src/components/survey/Survey.form.js +++ b/src/components/survey/Survey.form.js @@ -8,19 +8,22 @@ import SurveyEditValidation from './editForm/Survey.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: SurveyEditDisplay - }, - { - key: 'data', - components: SurveyEditData - }, - { - key: 'validation', - components: SurveyEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: SurveyEditDisplay, + }, + { + key: 'data', + components: SurveyEditData, + }, + { + key: 'validation', + components: SurveyEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/survey/Survey.js b/src/components/survey/Survey.js index db2274bcbe..be01f09288 100644 --- a/src/components/survey/Survey.js +++ b/src/components/survey/Survey.js @@ -4,13 +4,16 @@ import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../ut export default class SurveyComponent extends Field { static schema(...extend) { - return Field.schema({ - type: 'survey', - label: 'Survey', - key: 'survey', - questions: [], - values: [] - }, ...extend); + return Field.schema( + { + type: 'survey', + label: 'Survey', + key: 'survey', + questions: [], + values: [], + }, + ...extend, + ); } static get builderInfo() { @@ -20,7 +23,7 @@ export default class SurveyComponent extends Field { icon: 'list', weight: 110, documentation: '/userguide/form-building/advanced-components#survey', - schema: SurveyComponent.schema() + schema: SurveyComponent.schema(), }; } @@ -53,11 +56,12 @@ export default class SurveyComponent extends Field { this.refs.input.forEach((input) => { if (this.disabled) { input.setAttribute('disabled', 'disabled'); - } - else { - this.addEventListener(input, 'change', () => this.updateValue(null, { - modified: true - })); + } else { + this.addEventListener(input, 'change', () => + this.updateValue(null, { + modified: true, + }), + ); } }); this.setValue(this.dataValue); @@ -72,7 +76,7 @@ export default class SurveyComponent extends Field { _.each(this.component.questions, (question) => { _.each(this.refs.input, (input) => { if (input.name === this.getInputName(question)) { - input.checked = (input.value === value[question.value]); + input.checked = input.value === value[question.value]; } }); }); @@ -93,10 +97,14 @@ export default class SurveyComponent extends Field { get defaultValue() { const defaultValue = super.defaultValue; //support for default values created in old formio.js versions - if (defaultValue && !_.isObject(defaultValue) && this.component.values.some(value => value.value === defaultValue)) { + if ( + defaultValue && + !_.isObject(defaultValue) && + this.component.values.some((value) => value.value === defaultValue) + ) { const adoptedDefaultValue = {}; - this.component.questions.forEach(question => { + this.component.questions.forEach((question) => { adoptedDefaultValue[question.value] = defaultValue; }); @@ -113,7 +121,7 @@ export default class SurveyComponent extends Field { const value = {}; _.each(this.component.questions, (question) => { _.each(this.refs.input, (input) => { - if (input.checked && (input.name === this.getInputName(question))) { + if (input.checked && input.name === this.getInputName(question)) { value[question.value] = input.value; return false; } @@ -137,8 +145,10 @@ export default class SurveyComponent extends Field { if (!boolValue(setting)) { return true; } - return this.component.questions.reduce((result, question) => - result && Boolean(value[question.value]), true); + return this.component.questions.reduce( + (result, question) => result && Boolean(value[question.value]), + true, + ); } getInputName(question) { @@ -147,7 +157,7 @@ export default class SurveyComponent extends Field { getValueAsString(value, options) { if (options?.email) { - let result = (` + let result = ` @@ -156,38 +166,46 @@ export default class SurveyComponent extends Field { - `); + `; - _.forIn(value, (value, key) => { - const question = _.find(this.component.questions, ['value', key]); - const answer = _.find(this.component.values, ['value', value]); + _.forIn(value, (value, key) => { + const question = _.find(this.component.questions, ['value', key]); + const answer = _.find(this.component.values, ['value', value]); - if (!question || !answer) { - return; - } + if (!question || !answer) { + return; + } - result += (` + result += ` - `); - }); + `; + }); - result += '
    ${question.label} ${answer.label}
    '; + result += ''; - return result; + return result; } if (_.isPlainObject(value)) { const { values = [], questions = [] } = this.component; return _.isEmpty(value) ? '' - : _.map(value,(v, q) => { - const valueLabel = _.get(_.find(values, val => _.isEqual(val.value, v)), 'label', v); - const questionLabel = _.get(_.find(questions, quest => _.isEqual(quest.value, q)), 'label', q); - return `${questionLabel}: ${valueLabel}`; - }).join('; '); + : _.map(value, (v, q) => { + const valueLabel = _.get( + _.find(values, (val) => _.isEqual(val.value, v)), + 'label', + v, + ); + const questionLabel = _.get( + _.find(questions, (quest) => _.isEqual(quest.value, q)), + 'label', + q, + ); + return `${questionLabel}: ${valueLabel}`; + }).join('; '); } return super.getValueAsString(value, options); diff --git a/src/components/survey/editForm/Survey.edit.data.js b/src/components/survey/editForm/Survey.edit.data.js index ffb60b364b..4e573f2290 100644 --- a/src/components/survey/editForm/Survey.edit.data.js +++ b/src/components/survey/editForm/Survey.edit.data.js @@ -1,7 +1,7 @@ export default [ { key: 'multiple', - ignore: true + ignore: true, }, { type: 'datagrid', @@ -17,7 +17,7 @@ export default [ label: 'Label', key: 'label', input: true, - type: 'textfield' + type: 'textfield', }, { label: 'Value', @@ -25,7 +25,7 @@ export default [ input: true, type: 'textfield', allowCalculateOverride: true, - calculateValue: { _camelCase: [{ var: 'row.label' }] } + calculateValue: { _camelCase: [{ var: 'row.label' }] }, }, { label: 'Tooltip', @@ -33,14 +33,15 @@ export default [ input: true, type: 'textfield', }, - ] + ], }, { type: 'datagrid', input: true, label: 'Values', key: 'values', - tooltip: 'The values that can be selected per question. Example: \'Satisfied\', \'Very Satisfied\', etc.', + tooltip: + "The values that can be selected per question. Example: 'Satisfied', 'Very Satisfied', etc.", weight: 1, reorder: true, defaultValue: [{ label: '', value: '' }], @@ -49,7 +50,7 @@ export default [ label: 'Label', key: 'label', input: true, - type: 'textfield' + type: 'textfield', }, { label: 'Value', @@ -57,7 +58,7 @@ export default [ input: true, type: 'textfield', allowCalculateOverride: true, - calculateValue: { _camelCase: [{ var: 'row.label' }] } + calculateValue: { _camelCase: [{ var: 'row.label' }] }, }, { label: 'Tooltip', @@ -65,6 +66,6 @@ export default [ input: true, type: 'textfield', }, - ] - } + ], + }, ]; diff --git a/src/components/survey/editForm/Survey.edit.display.js b/src/components/survey/editForm/Survey.edit.display.js index 2e7810dd7b..66b1dfe31c 100644 --- a/src/components/survey/editForm/Survey.edit.display.js +++ b/src/components/survey/editForm/Survey.edit.display.js @@ -1,6 +1,6 @@ export default [ { key: 'placeholder', - ignore: true + ignore: true, }, ]; diff --git a/src/components/survey/editForm/Survey.edit.validation.js b/src/components/survey/editForm/Survey.edit.validation.js index bbb7e1349d..c8c0a57cfc 100644 --- a/src/components/survey/editForm/Survey.edit.validation.js +++ b/src/components/survey/editForm/Survey.edit.validation.js @@ -1,6 +1,6 @@ export default [ { key: 'validateOn', - ignore: true + ignore: true, }, ]; diff --git a/src/components/table/Table.form.js b/src/components/table/Table.form.js index 08dde4bd11..304aefbe5f 100644 --- a/src/components/table/Table.form.js +++ b/src/components/table/Table.form.js @@ -7,11 +7,14 @@ import TableEditDisplay from './editForm/Table.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: TableEditDisplay - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: TableEditDisplay, + }, + ], + ...extend, + ); } diff --git a/src/components/table/Table.js b/src/components/table/Table.js index 33a9269ae8..95133b89a3 100644 --- a/src/components/table/Table.js +++ b/src/components/table/Table.js @@ -16,23 +16,26 @@ export default class TableComponent extends NestedComponent { } static schema(...extend) { - return NestedComponent.schema({ - label: 'Table', - type: 'table', - input: false, - key: 'table', - numRows: 3, - numCols: 3, - rows: TableComponent.emptyTable(3, 3), - header: [], - caption: '', - cloneRows: false, - striped: false, - bordered: false, - hover: false, - condensed: false, - persistent: false - }, ...extend); + return NestedComponent.schema( + { + label: 'Table', + type: 'table', + input: false, + key: 'table', + numRows: 3, + numCols: 3, + rows: TableComponent.emptyTable(3, 3), + header: [], + caption: '', + cloneRows: false, + striped: false, + bordered: false, + hover: false, + condensed: false, + persistent: false, + }, + ...extend, + ); } static get builderInfo() { @@ -43,7 +46,7 @@ export default class TableComponent extends NestedComponent { weight: 40, documentation: '/userguide/form-building/layout-components#table', showPreview: false, - schema: TableComponent.schema() + schema: TableComponent.schema(), }; } @@ -115,9 +118,14 @@ export default class TableComponent extends NestedComponent { for (let rowIndex = 0; rowIndex < this.component.numRows; rowIndex++) { this.component.rows[rowIndex] = this.component.rows[rowIndex] || []; for (let colIndex = 0; colIndex < this.component.numCols; colIndex++) { - this.component.rows[rowIndex][colIndex] = this.component.rows[rowIndex][colIndex] || { components: [] }; + this.component.rows[rowIndex][colIndex] = this.component.rows[rowIndex][colIndex] || { + components: [], + }; } - this.component.rows[rowIndex] = this.component.rows[rowIndex].slice(0, this.component.numCols); + this.component.rows[rowIndex] = this.component.rows[rowIndex].slice( + 0, + this.component.numCols, + ); } this.component.rows = this.component.rows.slice(0, this.component.numRows); @@ -130,8 +138,7 @@ export default class TableComponent extends NestedComponent { if (this.component.cloneRows) { if (column.components.length) { lastNonEmptyRow[colIndex] = column; - } - else if (lastNonEmptyRow[colIndex]) { + } else if (lastNonEmptyRow[colIndex]) { column.components = _.cloneDeep(lastNonEmptyRow[colIndex].components); BuilderUtils.uniquify(this.root._form.components, column); } @@ -142,9 +149,8 @@ export default class TableComponent extends NestedComponent { if (this.builderMode) { comp.id = comp.id + rowIndex; columnComponent = comp; - } - else { - columnComponent = { ...comp, id: (comp.id + rowIndex) }; + } else { + columnComponent = { ...comp, id: comp.id + rowIndex }; } const component = this.createComponent(columnComponent); @@ -157,16 +163,16 @@ export default class TableComponent extends NestedComponent { } render() { - return super.render(this.renderTemplate('table', { - cellClassName: this.cellClassName, - tableKey: this.tableKey, - colWidth: this.colWidth, - tableComponents: this.table.map(row => - row.map(column => - this.renderComponents(column) - ) - ) - })); + return super.render( + this.renderTemplate('table', { + cellClassName: this.cellClassName, + tableKey: this.tableKey, + colWidth: this.colWidth, + tableComponents: this.table.map((row) => + row.map((column) => this.renderComponents(column)), + ), + }), + ); } attach(element) { @@ -178,7 +184,11 @@ export default class TableComponent extends NestedComponent { const superAttach = super.attach(element); this.table.forEach((row, rowIndex) => { row.forEach((column, columnIndex) => { - this.attachComponents(this.refs[`${this.tableKey}-${rowIndex}`][columnIndex], this.table[rowIndex][columnIndex], this.component.rows[rowIndex][columnIndex].components); + this.attachComponents( + this.refs[`${this.tableKey}-${rowIndex}`][columnIndex], + this.table[rowIndex][columnIndex], + this.component.rows[rowIndex][columnIndex].components, + ); }); }); return superAttach; diff --git a/src/components/table/editForm/Table.edit.display.js b/src/components/table/editForm/Table.edit.display.js index 634e000e4b..d9a59bfc86 100644 --- a/src/components/table/editForm/Table.edit.display.js +++ b/src/components/table/editForm/Table.edit.display.js @@ -1,39 +1,39 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { weight: 0, @@ -44,10 +44,10 @@ export default [ placeholder: 'Field Label', tooltip: 'The label for this field.', validate: { - required: true + required: true, }, autofocus: true, - overrideEditForm: true + overrideEditForm: true, }, { type: 'number', @@ -56,7 +56,7 @@ export default [ input: true, weight: 1, placeholder: 'Number of Rows', - tooltip: 'Enter the number or rows that should be displayed by this table.' + tooltip: 'Enter the number or rows that should be displayed by this table.', }, { type: 'number', @@ -65,7 +65,7 @@ export default [ input: true, weight: 2, placeholder: 'Number of Columns', - tooltip: 'Enter the number or columns that should be displayed by this table.' + tooltip: 'Enter the number or columns that should be displayed by this table.', }, { type: 'checkbox', @@ -73,7 +73,8 @@ export default [ key: 'cloneRows', input: true, weight: 3, - tooltip: 'Check this if you would like to \'clone\' the first row of components to all additional empty rows of the table.' + tooltip: + "Check this if you would like to 'clone' the first row of components to all additional empty rows of the table.", }, { type: 'select', @@ -86,11 +87,11 @@ export default [ values: [ { label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }, - { label: 'Right', value: 'right' } - ] + { label: 'Right', value: 'right' }, + ], }, defaultValue: 'left', - weight: 3 + weight: 3, }, { type: 'checkbox', @@ -98,7 +99,7 @@ export default [ key: 'striped', tooltip: 'This will stripe the table if checked.', input: true, - weight: 701 + weight: 701, }, { type: 'checkbox', @@ -106,7 +107,7 @@ export default [ key: 'bordered', input: true, tooltip: 'This will border the table if checked.', - weight: 702 + weight: 702, }, { type: 'checkbox', @@ -114,7 +115,7 @@ export default [ key: 'hover', input: true, tooltip: 'Highlight a row on hover.', - weight: 703 + weight: 703, }, { type: 'checkbox', @@ -122,10 +123,10 @@ export default [ key: 'condensed', input: true, tooltip: 'Condense the size of the table.', - weight: 704 + weight: 704, }, { key: 'hideLabel', - ignore: true + ignore: true, }, ]; diff --git a/src/components/tabs/Tabs.form.js b/src/components/tabs/Tabs.form.js index 87e842f4d2..1ecc84f7d0 100644 --- a/src/components/tabs/Tabs.form.js +++ b/src/components/tabs/Tabs.form.js @@ -7,11 +7,14 @@ import TabsEditDisplay from './editForm/Tabs.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: TabsEditDisplay - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: TabsEditDisplay, + }, + ], + ...extend, + ); } diff --git a/src/components/tabs/Tabs.js b/src/components/tabs/Tabs.js index 1672e91896..4bbf0a9cf1 100644 --- a/src/components/tabs/Tabs.js +++ b/src/components/tabs/Tabs.js @@ -3,22 +3,25 @@ import NestedComponent from '../_classes/nested/NestedComponent'; export default class TabsComponent extends NestedComponent { static schema(...extend) { - return NestedComponent.schema({ - label: 'Tabs', - type: 'tabs', - input: false, - key: 'tabs', - persistent: false, - tableView: false, - components: [ - { - label: 'Tab 1', - key: 'tab1', - components: [], - }, - ], - verticalLayout: false, - }, ...extend); + return NestedComponent.schema( + { + label: 'Tabs', + type: 'tabs', + input: false, + key: 'tabs', + persistent: false, + tableView: false, + components: [ + { + label: 'Tab 1', + key: 'tab1', + components: [], + }, + ], + verticalLayout: false, + }, + ...extend, + ); } static get builderInfo() { @@ -87,31 +90,28 @@ export default class TabsComponent extends NestedComponent { } render() { - return super.render(this.renderTemplate( - 'tab', - { - tabKey: this.tabKey, - tabLikey: this.tabLikey, - tabLinkKey: this.tabLinkKey, - currentTab: this.currentTab, - tabComponents: this.tabs.map(tab => this.renderComponents(tab)), - }, - ( - this.options.flatten || this.options.pdf ? 'flat' : null + return super.render( + this.renderTemplate( + 'tab', + { + tabKey: this.tabKey, + tabLikey: this.tabLikey, + tabLinkKey: this.tabLinkKey, + currentTab: this.currentTab, + tabComponents: this.tabs.map((tab) => this.renderComponents(tab)), + }, + this.options.flatten || this.options.pdf ? 'flat' : null, ), - )); + ); } attach(element) { - this.loadRefs( - element, - { - [this.tabLinkKey]: 'multiple', - [this.tabKey]: 'multiple', - [this.tabLikey]: 'multiple', - }, - ); - ['change', 'error'].forEach(event => this.on(event, this.handleTabsValidation.bind(this))); + this.loadRefs(element, { + [this.tabLinkKey]: 'multiple', + [this.tabKey]: 'multiple', + [this.tabLikey]: 'multiple', + }); + ['change', 'error'].forEach((event) => this.on(event, this.handleTabsValidation.bind(this))); const superAttach = super.attach(element); this.refs[this.tabLinkKey].forEach((tabLink, index) => { this.addEventListener(tabLink, 'click', (event) => { @@ -134,7 +134,12 @@ export default class TabsComponent extends NestedComponent { * @param {number} index - The index of the tab to set. */ setTab(index) { - if (!this.tabs || !this.tabs[index] || !this.refs[this.tabKey] || !this.refs[this.tabKey][index]) { + if ( + !this.tabs || + !this.tabs[index] || + !this.refs[this.tabKey] || + !this.refs[this.tabKey][index] + ) { return; } @@ -191,8 +196,7 @@ export default class TabsComponent extends NestedComponent { if (element.getAttribute('ref') !== 'openModal') { if (this.options.highlightErrors) { this.addClass(element, 'tab-error'); - } - else { + } else { this.addClass(element, 'has-error'); } } @@ -205,7 +209,8 @@ export default class TabsComponent extends NestedComponent { } if (this.component.modalEdit) { - const element = Array.isArray(elements) || elements instanceof NodeList ? this.element : elements; + const element = + Array.isArray(elements) || elements instanceof NodeList ? this.element : elements; super.clearErrorClasses(element); } @@ -226,7 +231,7 @@ export default class TabsComponent extends NestedComponent { this.clearErrorClasses(this.refs[this.tabLinkKey]); const invalidTabsIndexes = this.tabs.reduce((invalidTabs, tab, tabIndex) => { - const hasComponentWithError = tab.some(comp => !!comp.error); + const hasComponentWithError = tab.some((comp) => !!comp.error); return hasComponentWithError ? [...invalidTabs, tabIndex] : invalidTabs; }, []); @@ -234,7 +239,9 @@ export default class TabsComponent extends NestedComponent { return; } - const invalidTabs = [...this.refs[this.tabLinkKey]].filter((_, tabIndex) => invalidTabsIndexes.includes(tabIndex)); + const invalidTabs = [...this.refs[this.tabLinkKey]].filter((_, tabIndex) => + invalidTabsIndexes.includes(tabIndex), + ); this.setErrorClasses(invalidTabs); } } diff --git a/src/components/tabs/editForm/Tabs.edit.display.js b/src/components/tabs/editForm/Tabs.edit.display.js index 1f1fb19b0d..f619b82a4a 100644 --- a/src/components/tabs/editForm/Tabs.edit.display.js +++ b/src/components/tabs/editForm/Tabs.edit.display.js @@ -1,39 +1,39 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'disabled', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { weight: 0, @@ -44,10 +44,10 @@ export default [ placeholder: 'Field Label', tooltip: 'The label for this field.', validate: { - required: true + required: true, }, autofocus: true, - overrideEditForm: true + overrideEditForm: true, }, { key: 'components', @@ -61,7 +61,7 @@ export default [ type: 'textfield', input: true, key: 'label', - label: 'Label' + label: 'Label', }, { type: 'textfield', @@ -69,9 +69,9 @@ export default [ key: 'key', label: 'Key', allowCalculateOverride: true, - calculateValue: { _camelCase: [{ var: 'row.label' }] } - } - ] + calculateValue: { _camelCase: [{ var: 'row.label' }] }, + }, + ], }, { weight: 1100, @@ -79,10 +79,10 @@ export default [ label: 'Vertical Layout', tooltip: 'Make this field display in vertical orientation.', key: 'verticalLayout', - input: true + input: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, ]; diff --git a/src/components/tags/Tags.form.js b/src/components/tags/Tags.form.js index bf70a95b10..b2339dcebe 100644 --- a/src/components/tags/Tags.form.js +++ b/src/components/tags/Tags.form.js @@ -7,11 +7,14 @@ import TagsEditData from './editForm/Tags.edit.data'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'data', - components: TagsEditData - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'data', + components: TagsEditData, + }, + ], + ...extend, + ); } diff --git a/src/components/tags/Tags.js b/src/components/tags/Tags.js index 2b104ef994..4262c56f95 100644 --- a/src/components/tags/Tags.js +++ b/src/components/tags/Tags.js @@ -4,14 +4,17 @@ import Choices from '@formio/choices.js'; export default class TagsComponent extends Input { static schema(...extend) { - return Input.schema({ - type: 'tags', - label: 'Tags', - key: 'tags', - delimeter: ',', - storeas: 'string', - maxTags: 0 - }, ...extend); + return Input.schema( + { + type: 'tags', + label: 'Tags', + key: 'tags', + delimeter: ',', + storeas: 'string', + maxTags: 0, + }, + ...extend, + ); } static get builderInfo() { @@ -21,7 +24,7 @@ export default class TagsComponent extends Input { group: 'advanced', documentation: '/userguide/form-building/advanced-components#tags', weight: 30, - schema: TagsComponent.schema() + schema: TagsComponent.schema(), }; } @@ -39,7 +42,11 @@ export default class TagsComponent extends Input { static savedValueTypes(schema) { schema = schema || {}; - return getComponentSavedTypes(schema) ||[componentValueTypes[schema.storeas] || componentValueTypes.string]; + return ( + getComponentSavedTypes(schema) || [ + componentValueTypes[schema.storeas] || componentValueTypes.string, + ] + ); } init() { @@ -47,7 +54,7 @@ export default class TagsComponent extends Input { } get emptyValue() { - return (this.component.storeas === 'string') ? '' : []; + return this.component.storeas === 'string' ? '' : []; } get defaultSchema() { @@ -93,7 +100,9 @@ export default class TagsComponent extends Input { duplicateItemsAllowed: false, shadowRoot: this.root ? this.root.shadowRoot : null, placeholder: hasPlaceholder, - placeholderValue: hasPlaceholder ? this.t(this.component.placeholder, { _userInput: true }) : null, + placeholderValue: hasPlaceholder + ? this.t(this.component.placeholder, { _userInput: true }) + : null, }); this.choices.itemList.element.tabIndex = element.tabIndex; this.addEventListener(this.choices.input.element, 'blur', () => { @@ -102,22 +111,22 @@ export default class TagsComponent extends Input { const value = this.choices.input.value; const maxTagsNumber = this.component.maxTags; const valuesCount = this.choices.getValue(true).length; - const isRepeatedValue = this.choices.getValue(true).some(existingValue => existingValue.trim() === value.trim()); + const isRepeatedValue = this.choices + .getValue(true) + .some((existingValue) => existingValue.trim() === value.trim()); if (value) { if (maxTagsNumber && valuesCount === maxTagsNumber) { this.choices.addItems = false; this.choices.clearInput(); - } - else if (isRepeatedValue) { + } else if (isRepeatedValue) { this.choices.clearInput(); - } - else { + } else { this.choices.setValue([value]); this.choices.clearInput(); this.choices.hideDropdown(true); this.updateValue(null, { - modified: true + modified: true, }); } } @@ -135,9 +144,8 @@ export default class TagsComponent extends Input { normalizeValue(value) { if (this.component.storeas === 'string' && Array.isArray(value)) { return super.normalizeValue(value.join(this.delimiter)); - } - else if (this.component.storeas === 'array' && typeof value === 'string') { - return super.normalizeValue(value.split(this.delimiter).filter(result => result)); + } else if (this.component.storeas === 'array' && typeof value === 'string') { + return super.normalizeValue(value.split(this.delimiter).filter((result) => result)); } return super.normalizeValue(value); } @@ -149,7 +157,7 @@ export default class TagsComponent extends Input { this.choices.removeActiveItems(); if (dataValue) { if (typeof dataValue === 'string') { - dataValue = dataValue.split(this.delimiter).filter(result => result); + dataValue = dataValue.split(this.delimiter).filter((result) => result); } const value = Array.isArray(dataValue) ? dataValue : [dataValue]; this.choices.setValue(value.map((val) => this.sanitize(val, this.shouldSanitizeValue))); @@ -165,8 +173,7 @@ export default class TagsComponent extends Input { } if (disabled) { this.choices.disable(); - } - else { + } else { this.choices.enable(); } } diff --git a/src/components/tags/editForm/Tags.edit.data.js b/src/components/tags/editForm/Tags.edit.data.js index 0f3fb73f8f..b42d062326 100644 --- a/src/components/tags/editForm/Tags.edit.data.js +++ b/src/components/tags/editForm/Tags.edit.data.js @@ -1,7 +1,7 @@ export default [ { key: 'multiple', - ignore: true + ignore: true, }, { weight: 20, @@ -9,7 +9,7 @@ export default [ input: true, key: 'delimeter', label: 'Delimiter', - tooltip: 'What is used to separate the tags.' + tooltip: 'What is used to separate the tags.', }, { weight: 22, @@ -18,7 +18,7 @@ export default [ key: 'maxTags', label: 'Max Tags', defaultValue: 0, - tooltip: 'The maximum amount of tags that can be added. 0 for infinity.' + tooltip: 'The maximum amount of tags that can be added. 0 for infinity.', }, { weight: 24, @@ -30,8 +30,8 @@ export default [ data: { values: [ { label: 'String (CSV)', value: 'string' }, - { label: 'Array of Tags', value: 'array' } - ] - } - } + { label: 'Array of Tags', value: 'array' }, + ], + }, + }, ]; diff --git a/src/components/textarea/TextArea.form.js b/src/components/textarea/TextArea.form.js index de42a3eb1e..35fcc3d087 100644 --- a/src/components/textarea/TextArea.form.js +++ b/src/components/textarea/TextArea.form.js @@ -7,15 +7,18 @@ import TextAreaEditValidation from './editForm/TextArea.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return textEditForm([ - { - key: 'display', - components: TextAreaEditDisplay - }, - { - key: 'validation', - components: TextAreaEditValidation - }, - ], ...extend); +export default function (...extend) { + return textEditForm( + [ + { + key: 'display', + components: TextAreaEditDisplay, + }, + { + key: 'validation', + components: TextAreaEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/textarea/TextArea.js b/src/components/textarea/TextArea.js index d426cd61cb..c2aa202929 100644 --- a/src/components/textarea/TextArea.js +++ b/src/components/textarea/TextArea.js @@ -5,20 +5,23 @@ import { uniqueName, getBrowserInfo } from '../../utils/utils'; export default class TextAreaComponent extends TextFieldComponent { static schema(...extend) { - return TextFieldComponent.schema({ - type: 'textarea', - label: 'Text Area', - key: 'textArea', - rows: 3, - wysiwyg: false, - editor: '', - fixedSize: true, - inputFormat: 'html', - validate: { - minWords: '', - maxWords: '' - } - }, ...extend); + return TextFieldComponent.schema( + { + type: 'textarea', + label: 'Text Area', + key: 'textArea', + rows: 3, + wysiwyg: false, + editor: '', + fixedSize: true, + inputFormat: 'html', + validate: { + minWords: '', + maxWords: '', + }, + }, + ...extend, + ); } static get builderInfo() { @@ -28,7 +31,7 @@ export default class TextAreaComponent extends TextFieldComponent { icon: 'font', documentation: '/userguide/form-building/form-components#text-area', weight: 20, - schema: TextAreaComponent.schema() + schema: TextAreaComponent.schema(), }; } @@ -70,7 +73,7 @@ export default class TextAreaComponent extends TextFieldComponent { return this.renderTemplate('well', { children, nestedKey: this.key, - value + value, }); } @@ -79,7 +82,7 @@ export default class TextAreaComponent extends TextFieldComponent { suffix: this.suffix, input: info, value, - index + index, }); } @@ -101,10 +104,14 @@ export default class TextAreaComponent extends TextFieldComponent { newValue = newArray; } - if ((!_.isEqual(newValue, dataValue)) && (!_.isEmpty(newValue) || !_.isEmpty(dataValue))) { - this.updateValue(newValue, { - modified: !this.autoModified - }, index); + if (!_.isEqual(newValue, dataValue) && (!_.isEmpty(newValue) || !_.isEmpty(dataValue))) { + this.updateValue( + newValue, + { + modified: !this.autoModified, + }, + index, + ); } this.autoModified = false; } @@ -124,8 +131,8 @@ export default class TextAreaComponent extends TextFieldComponent { this.component.editor = 'ckeditor'; } - let settings = _.isEmpty(this.component.wysiwyg) ? - this.wysiwygDefault[this.component.editor] || this.wysiwygDefault.default + let settings = _.isEmpty(this.component.wysiwyg) + ? this.wysiwygDefault[this.component.editor] || this.wysiwygDefault.default : this.component.wysiwyg; // Keep track of when this editor is ready. @@ -136,81 +143,93 @@ export default class TextAreaComponent extends TextFieldComponent { if (!settings) { settings = {}; } - settings.mode = this.component.as ? `ace/mode/${this.component.as}` : 'ace/mode/javascript'; - this.addAce(element, settings, (newValue) => this.updateEditorValue(index, newValue)).then((ace) => { - this.editors[index] = ace; - let dataValue = this.dataValue; - dataValue = (this.component.multiple && Array.isArray(dataValue)) ? dataValue[index] : dataValue; - ace.setValue(this.setConvertedValue(dataValue, index)); - editorReady(ace); - return ace; - }).catch(err => console.warn(err)); + settings.mode = this.component.as + ? `ace/mode/${this.component.as}` + : 'ace/mode/javascript'; + this.addAce(element, settings, (newValue) => this.updateEditorValue(index, newValue)) + .then((ace) => { + this.editors[index] = ace; + let dataValue = this.dataValue; + dataValue = + this.component.multiple && Array.isArray(dataValue) ? dataValue[index] : dataValue; + ace.setValue(this.setConvertedValue(dataValue, index)); + editorReady(ace); + return ace; + }) + .catch((err) => console.warn(err)); break; case 'quill': // Normalize the configurations for quill. if (settings.hasOwnProperty('toolbarGroups') || settings.hasOwnProperty('toolbar')) { - console.warn('The WYSIWYG settings are configured for CKEditor. For this renderer, you will need to use configurations for the Quill Editor. See https://quilljs.com/docs/configuration for more information.'); + console.warn( + 'The WYSIWYG settings are configured for CKEditor. For this renderer, you will need to use configurations for the Quill Editor. See https://quilljs.com/docs/configuration for more information.', + ); settings = this.wysiwygDefault.quill; } // Add the quill editor. - this.addQuill( - element, - settings, () => this.updateEditorValue(index, this.editors[index].root.innerHTML) - ).then((quill) => { - this.editors[index] = quill; - if (this.component.isUploadEnabled) { - const _this = this; - quill.getModule('uploader').options.handler = function(...args) { - //we need initial 'this' because quill calls this method with its own context and we need some inner quill methods exposed in it - //we also need current component instance as we use some fields and methods from it as well - _this.imageHandler.call(_this, this, ...args); - }; - } - quill.root.spellcheck = this.component.spellcheck; - if (this.options.readOnly || this.disabled) { - quill.disable(); - } + this.addQuill(element, settings, () => + this.updateEditorValue(index, this.editors[index].root.innerHTML), + ) + .then((quill) => { + this.editors[index] = quill; + if (this.component.isUploadEnabled) { + const _this = this; + quill.getModule('uploader').options.handler = function (...args) { + //we need initial 'this' because quill calls this method with its own context and we need some inner quill methods exposed in it + //we also need current component instance as we use some fields and methods from it as well + _this.imageHandler.call(_this, this, ...args); + }; + } + quill.root.spellcheck = this.component.spellcheck; + if (this.options.readOnly || this.disabled) { + quill.disable(); + } - let dataValue = this.dataValue; - dataValue = (this.component.multiple && Array.isArray(dataValue)) ? dataValue[index] : dataValue; - quill.setContents(quill.clipboard.convert({ html: this.setConvertedValue(dataValue, index) })); - editorReady(quill); - return quill; - }).catch(err => console.warn(err)); + let dataValue = this.dataValue; + dataValue = + this.component.multiple && Array.isArray(dataValue) ? dataValue[index] : dataValue; + quill.setContents( + quill.clipboard.convert({ html: this.setConvertedValue(dataValue, index) }), + ); + editorReady(quill); + return quill; + }) + .catch((err) => console.warn(err)); break; case 'ckeditor': settings = settings || {}; settings.rows = this.component.rows; - this.addCKE(element, settings, (newValue) => this.updateEditorValue(index, newValue)) - .then((editor) => { - this.editors[index] = editor; - let dataValue = this.dataValue; - dataValue = (this.component.multiple && Array.isArray(dataValue)) ? dataValue[index] : dataValue; - const value = this.setConvertedValue(dataValue, index); - const isReadOnly = this.options.readOnly || this.disabled; - // Use ckeditor 4 in IE browser - if (getBrowserInfo().ie) { - editor.on('instanceReady', () => { - editor.setReadOnly(isReadOnly); - editor.setData(value); - }); - } - else { - const numRows = parseInt(this.component.rows, 10); - - if (_.isFinite(numRows) && _.has(editor, 'ui.view.editable.editableElement')) { - // Default height is 21px with 10px margin + a 14px top margin. - const editorHeight = (numRows * 31) + 14; - editor.ui.view.editable.editableElement.style.height = `${(editorHeight)}px`; - } - editor.isReadOnly = isReadOnly; - editor.data.set(value); + this.addCKE(element, settings, (newValue) => + this.updateEditorValue(index, newValue), + ).then((editor) => { + this.editors[index] = editor; + let dataValue = this.dataValue; + dataValue = + this.component.multiple && Array.isArray(dataValue) ? dataValue[index] : dataValue; + const value = this.setConvertedValue(dataValue, index); + const isReadOnly = this.options.readOnly || this.disabled; + // Use ckeditor 4 in IE browser + if (getBrowserInfo().ie) { + editor.on('instanceReady', () => { + editor.setReadOnly(isReadOnly); + editor.setData(value); + }); + } else { + const numRows = parseInt(this.component.rows, 10); + + if (_.isFinite(numRows) && _.has(editor, 'ui.view.editable.editableElement')) { + // Default height is 21px with 10px margin + a 14px top margin. + const editorHeight = numRows * 31 + 14; + editor.ui.view.editable.editableElement.style.height = `${editorHeight}px`; } + editor.isReadOnly = isReadOnly; + editor.data.set(value); + } - editorReady(editor); - return editor; - }); + editorReady(editor); + return editor; + }); break; default: super.attachElement(element, index); @@ -248,35 +267,39 @@ export default class TextAreaComponent extends TextFieldComponent { null, uploadUrl, uploadOptions, - fileKey + fileKey, ) - .then(result => { + .then((result) => { requestData = result; return this.fileService.downloadFile(result); }) - .then(result => { + .then((result) => { quillInstance.enable(true); const Delta = Quill.import('delta'); - quillInstance.updateContents(new Delta() + quillInstance.updateContents( + new Delta() .retain(range.index) .delete(range.length) .insert( { - image: result.url + image: result.url, }, { alt: JSON.stringify(requestData), - }) - , Quill.sources.USER); - }).catch(error => { - console.warn('Quill image upload failed'); - console.warn(error); - quillInstance.enable(true); - }); + }, + ), + Quill.sources.USER, + ); + }) + .catch((error) => { + console.warn('Quill image upload failed'); + console.warn(error); + quillInstance.enable(true); + }); } get isPlain() { - return (!this.component.wysiwyg && !this.component.editor); + return !this.component.wysiwyg && !this.component.editor; } get htmlView() { @@ -296,13 +319,11 @@ export default class TextAreaComponent extends TextFieldComponent { break; case 'quill': if (this.component.isUploadEnabled) { - this.setAsyncConvertedValue(value) - .then(result => { - const content = editor.clipboard.convert({ html: result }); - editor.setContents(content); - }); - } - else { + this.setAsyncConvertedValue(value).then((result) => { + const content = editor.clipboard.convert({ html: result }); + editor.setContents(content); + }); + } else { const convertedValue = this.setConvertedValue(value, index); const content = editor.clipboard.convert({ html: convertedValue }); editor.setContents(content); @@ -321,12 +342,14 @@ export default class TextAreaComponent extends TextFieldComponent { setValue(value, flags = {}) { if (this.isPlain || this.options.readOnly || this.disabled) { - value = (this.component.multiple && Array.isArray(value)) ? - value.map((val, index) => this.setConvertedValue(val, index)) : - this.setConvertedValue(value); + value = + this.component.multiple && Array.isArray(value) + ? value.map((val, index) => this.setConvertedValue(val, index)) + : this.setConvertedValue(value); return super.setValue(value, flags); } - flags.skipWysiwyg = value === '' && flags.resetValue ? false : _.isEqual(value, this.getValue()); + flags.skipWysiwyg = + value === '' && flags.resetValue ? false : _.isEqual(value, this.getValue()); return super.setValue(value, flags); } @@ -342,10 +365,15 @@ export default class TextAreaComponent extends TextFieldComponent { if (this.options.readOnly || this.disabled) { if (this.refs.input && this.refs.input[index]) { if (this.component.inputFormat === 'plain') { - this.refs.input[index].innerText = this.isPlain ? value : this.interpolate(value, {}, { noeval: true }); - } - else { - this.setContent(this.refs.input[index], this.isPlain ? value : this.interpolate(value, {}, { noeval: true }), this.shouldSanitizeValue); + this.refs.input[index].innerText = this.isPlain + ? value + : this.interpolate(value, {}, { noeval: true }); + } else { + this.setContent( + this.refs.input[index], + this.isPlain ? value : this.interpolate(value, {}, { noeval: true }), + this.shouldSanitizeValue, + ); } } } @@ -384,8 +412,7 @@ export default class TextAreaComponent extends TextFieldComponent { if (this.isJsonValue && !_.isNil(value)) { try { value = JSON.stringify(value, null, 2); - } - catch (err) { + } catch (err) { console.warn(err); } } @@ -402,8 +429,7 @@ export default class TextAreaComponent extends TextFieldComponent { if (this.isJsonValue && value) { try { value = JSON.stringify(value, null, 2); - } - catch (err) { + } catch (err) { console.warn(err); } } @@ -412,35 +438,33 @@ export default class TextAreaComponent extends TextFieldComponent { value = ''; } - const htmlDoc = new DOMParser().parseFromString(value,'text/html'); + const htmlDoc = new DOMParser().parseFromString(value, 'text/html'); const images = htmlDoc.getElementsByTagName('img'); if (images.length) { - return this.setImagesUrl(images) - .then( () => { - value = htmlDoc.getElementsByTagName('body')[0].innerHTML; - return value; - }); - } - else { + return this.setImagesUrl(images).then(() => { + value = htmlDoc.getElementsByTagName('body')[0].innerHTML; + return value; + }); + } else { return Promise.resolve(value); } } setImagesUrl(images) { - return Promise.all(_.map(images, image => { - let requestData; - try { - requestData = JSON.parse(image.getAttribute('alt')); - } - catch (error) { - console.warn(error); - } + return Promise.all( + _.map(images, (image) => { + let requestData; + try { + requestData = JSON.parse(image.getAttribute('alt')); + } catch (error) { + console.warn(error); + } - return this.fileService.downloadFile(requestData) - .then((result) => { + return this.fileService.downloadFile(requestData).then((result) => { image.setAttribute('src', result.url); }); - })); + }), + ); } addAutoExpanding(textarea, index) { @@ -495,8 +519,7 @@ export default class TextAreaComponent extends TextFieldComponent { let currentHeight = textarea.offsetHeight; if (currentHeight < styleHeight && computed.overflowY === 'hidden') { changeOverflow('scroll'); - } - else if (computed.overflowY !== 'hidden') { + } else if (computed.overflowY !== 'hidden') { changeOverflow('hidden'); } @@ -510,7 +533,8 @@ export default class TextAreaComponent extends TextFieldComponent { const computedStyle = window.getComputedStyle(textarea, null); textarea.style.resize = 'none'; - heightOffset = parseFloat(computedStyle.borderTopWidth) + parseFloat(computedStyle.borderBottomWidth) || 0; + heightOffset = + parseFloat(computedStyle.borderTopWidth) + parseFloat(computedStyle.borderBottomWidth) || 0; if (window) { this.addEventListener(window, 'resize', update); @@ -539,8 +563,7 @@ export default class TextAreaComponent extends TextFieldComponent { value.forEach((input, index) => { value[index] = trimBlanks(input); }); - } - else { + } else { value = trimBlanks(value); } return value; @@ -548,7 +571,7 @@ export default class TextAreaComponent extends TextFieldComponent { onChange(flags, fromRoot) { const changed = super.onChange(flags, fromRoot); - this.updateSizes.forEach(updateSize => updateSize()); + this.updateSizes.forEach((updateSize) => updateSize()); return changed; } @@ -572,8 +595,7 @@ export default class TextAreaComponent extends TextFieldComponent { if (this.isJsonValue && value) { try { value = JSON.parse(value); - } - catch (ignoreErr) { + } catch (ignoreErr) { // console.warn(err); } } @@ -582,14 +604,16 @@ export default class TextAreaComponent extends TextFieldComponent { detach() { // Destroy all editors. - this.editors.forEach(editor => { + this.editors.forEach((editor) => { if (editor.destroy) { editor.destroy(); } }); this.editors = []; this.editorsReady = []; - this.updateSizes.forEach(updateSize => this.removeEventListener(window, 'resize', updateSize)); + this.updateSizes.forEach((updateSize) => + this.removeEventListener(window, 'resize', updateSize), + ); this.updateSizes = []; super.detach(); } @@ -607,31 +631,37 @@ export default class TextAreaComponent extends TextFieldComponent { switch (this.component.editor) { case 'ckeditor': { // Wait for the editor to be ready. - this.editorsReady[0]?.then(() => { - if (this.editors[0].editing?.view?.focus) { - this.editors[0].editing.view.focus(); - } - this.element.scrollIntoView(); - }).catch((err) => { - console.warn('An editor did not initialize properly when trying to focus:', err); - }); + this.editorsReady[0] + ?.then(() => { + if (this.editors[0].editing?.view?.focus) { + this.editors[0].editing.view.focus(); + } + this.element.scrollIntoView(); + }) + .catch((err) => { + console.warn('An editor did not initialize properly when trying to focus:', err); + }); break; } case 'ace': { - this.editorsReady[0]?.then(() => { - this.editors[0].focus(); - this.element.scrollIntoView(); - }).catch((err) => { - console.warn('An editor did not initialize properly when trying to focus:', err); - }); + this.editorsReady[0] + ?.then(() => { + this.editors[0].focus(); + this.element.scrollIntoView(); + }) + .catch((err) => { + console.warn('An editor did not initialize properly when trying to focus:', err); + }); break; } case 'quill': { - this.editorsReady[0]?.then(() => { - this.editors[0].focus(); - }).catch((err) => { - console.warn('An editor did not initialize properly when trying to focus:', err); - }); + this.editorsReady[0] + ?.then(() => { + this.editors[0].focus(); + }) + .catch((err) => { + console.warn('An editor did not initialize properly when trying to focus:', err); + }); break; } } diff --git a/src/components/textarea/editForm/TextArea.edit.display.js b/src/components/textarea/editForm/TextArea.edit.display.js index 99e3ee96f6..b9b87140a2 100644 --- a/src/components/textarea/editForm/TextArea.edit.display.js +++ b/src/components/textarea/editForm/TextArea.edit.display.js @@ -4,15 +4,15 @@ import { Formio } from '../../../Formio'; export default [ { key: 'inputMask', - ignore: true + ignore: true, }, { key: 'allowMultipleMasks', - ignore: true + ignore: true, }, { key: 'mask', - ignore: true + ignore: true, }, { type: 'number', @@ -21,7 +21,7 @@ export default [ label: 'Rows', weight: 210, tooltip: 'This allows control over how many rows are visible in the text area.', - placeholder: 'Enter the amount of rows' + placeholder: 'Enter the amount of rows', }, { weight: 1350, @@ -29,7 +29,7 @@ export default [ input: true, key: 'spellcheck', defaultValue: true, - label: 'Allow Spellcheck' + label: 'Allow Spellcheck', }, { type: 'select', @@ -44,25 +44,23 @@ export default [ { label: 'ACE', value: 'ace' }, { label: 'CKEditor', value: 'ckeditor' }, { label: 'Quill', value: 'quill' }, - ] + ], }, - weight: 415 + weight: 415, }, { type: 'checkbox', input: true, key: 'autoExpand', label: 'Auto Expand', - tooltip: 'This will make the TextArea auto expand it\'s height as the user is typing into the area.', + tooltip: + "This will make the TextArea auto expand it's height as the user is typing into the area.", weight: 415, conditional: { json: { - '==': [ - { var: 'data.editor' }, - '' - ] - } - } + '==': [{ var: 'data.editor' }, ''], + }, + }, }, { type: 'checkbox', @@ -74,20 +72,14 @@ export default [ json: { or: [ { - '===': [ - { var: 'data.editor' }, - 'quill' - ], + '===': [{ var: 'data.editor' }, 'quill'], }, { - '===': [ - { var: 'data.editor' }, - 'ckeditor' - ], - } - ] - } - } + '===': [{ var: 'data.editor' }, 'ckeditor'], + }, + ], + }, + }, }, { type: 'select', @@ -103,18 +95,15 @@ export default [ custom() { return _.map(Formio.Providers.getProviders('storage'), (storage, key) => ({ label: storage.title, - value: key + value: key, })); - } + }, }, conditional: { json: { - '===': [ - { var: 'data.isUploadEnabled' }, - true - ] - } - } + '===': [{ var: 'data.isUploadEnabled' }, true], + }, + }, }, { type: 'textfield', @@ -123,10 +112,11 @@ export default [ label: 'Image Upload Url', weight: 415.3, placeholder: 'Enter the url to post the files to.', - tooltip: 'See https://github.com/danialfarid/ng-file-upload#server-side for how to set up the server.', + tooltip: + "See https://github.com/danialfarid/ng-file-upload#server-side for how to set up the server.", conditional: { - json: { '===': [{ var: 'data.uploadStorage' }, 'url'] } - } + json: { '===': [{ var: 'data.uploadStorage' }, 'url'] }, + }, }, { type: 'textarea', @@ -142,11 +132,14 @@ export default [ }`, conditional: { json: { - '===': [{ - var: 'data.uploadStorage' - }, 'url'] - } - } + '===': [ + { + var: 'data.uploadStorage', + }, + 'url', + ], + }, + }, }, { type: 'textfield', @@ -158,12 +151,9 @@ export default [ weight: 415.5, conditional: { json: { - '===': [ - { var: 'data.isUploadEnabled' }, - true - ] - } - } + '===': [{ var: 'data.isUploadEnabled' }, true], + }, + }, }, { type: 'textfield', @@ -177,21 +167,12 @@ export default [ conditional: { json: { and: [ - { '===': [ - { var: 'data.editor' }, - 'quill' - ] }, - { '===': [ - { var: 'data.isUploadEnabled' }, - true - ] }, - { '===': [ - { var: 'data.uploadStorage' }, - 'url' - ] }, - ] - } - } + { '===': [{ var: 'data.editor' }, 'quill'] }, + { '===': [{ var: 'data.isUploadEnabled' }, true] }, + { '===': [{ var: 'data.uploadStorage' }, 'url'] }, + ], + }, + }, }, { type: 'select', @@ -205,24 +186,18 @@ export default [ values: [ { label: 'String', value: 'string' }, { label: 'JSON', value: 'json' }, - { label: 'HTML', value: 'html' } - ] + { label: 'HTML', value: 'html' }, + ], }, conditional: { json: { or: [ - { '===': [ - { var: 'data.editor' }, - 'quill' - ] }, - { '===': [ - { var: 'data.editor' }, - 'ace' - ] } - ] - } + { '===': [{ var: 'data.editor' }, 'quill'] }, + { '===': [{ var: 'data.editor' }, 'ace'] }, + ], + }, }, - weight: 416 + weight: 416, }, { type: 'textarea', @@ -239,21 +214,12 @@ export default [ conditional: { json: { or: [ - { '===': [ - { var: 'data.editor' }, - 'ace' - ] }, - { '===': [ - { var: 'data.editor' }, - 'ckeditor' - ] }, - { '===': [ - { var: 'data.editor' }, - 'quill' - ] }, - ] - } + { '===': [{ var: 'data.editor' }, 'ace'] }, + { '===': [{ var: 'data.editor' }, 'ckeditor'] }, + { '===': [{ var: 'data.editor' }, 'quill'] }, + ], + }, }, - weight: 417 - } + weight: 417, + }, ]; diff --git a/src/components/textarea/editForm/TextArea.edit.validation.js b/src/components/textarea/editForm/TextArea.edit.validation.js index 9261c911eb..1c15143ca6 100644 --- a/src/components/textarea/editForm/TextArea.edit.validation.js +++ b/src/components/textarea/editForm/TextArea.edit.validation.js @@ -6,7 +6,7 @@ export default [ placeholder: 'Minimum Word Length', type: 'number', tooltip: 'The minimum amount of words that can be added to this field.', - input: true + input: true, }, { weight: 126, @@ -15,6 +15,6 @@ export default [ placeholder: 'Maximum Word Length', type: 'number', tooltip: 'The maximum amount of words that can be added to this field.', - input: true - } + input: true, + }, ]; diff --git a/src/components/textfield/TextField.form.js b/src/components/textfield/TextField.form.js index 2c752e7601..0f43b43991 100644 --- a/src/components/textfield/TextField.form.js +++ b/src/components/textfield/TextField.form.js @@ -9,19 +9,22 @@ import TextFieldEditValidation from './editForm/TextField.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'display', - components: TextFieldEditDisplay - }, - { - key: 'data', - components: TextFieldEditData - }, - { - key: 'validation', - components: TextFieldEditValidation - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'display', + components: TextFieldEditDisplay, + }, + { + key: 'data', + components: TextFieldEditData, + }, + { + key: 'validation', + components: TextFieldEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/textfield/TextField.js b/src/components/textfield/TextField.js index 69ffbf0cb9..de535dad09 100644 --- a/src/components/textfield/TextField.js +++ b/src/components/textfield/TextField.js @@ -6,24 +6,27 @@ import _ from 'lodash'; export default class TextFieldComponent extends Input { static schema(...extend) { - return Input.schema({ - label: 'Text Field', - key: 'textField', - type: 'textfield', - mask: false, - inputType: 'text', - inputFormat: 'plain', - inputMask: '', - displayMask: '', - tableView: true, - spellcheck: true, - truncateMultipleSpaces: false, - validate: { - minLength: '', - maxLength: '', - pattern: '' - } - }, ...extend); + return Input.schema( + { + label: 'Text Field', + key: 'textField', + type: 'textfield', + mask: false, + inputType: 'text', + inputFormat: 'plain', + inputMask: '', + displayMask: '', + tableView: true, + spellcheck: true, + truncateMultipleSpaces: false, + validate: { + minLength: '', + maxLength: '', + pattern: '', + }, + }, + ...extend, + ); } static get builderInfo() { @@ -33,7 +36,7 @@ export default class TextFieldComponent extends Input { group: 'basic', documentation: '/userguide/form-building/form-components#text-field', weight: 0, - schema: TextFieldComponent.schema() + schema: TextFieldComponent.schema(), }; } @@ -44,18 +47,24 @@ export default class TextFieldComponent extends Input { static get conditionOperatorsSettings() { return { ...super.conditionOperatorsSettings, - operators: [...super.conditionOperatorsSettings.operators, 'includes', 'notIncludes', 'endsWith', 'startsWith'], + operators: [ + ...super.conditionOperatorsSettings.operators, + 'includes', + 'notIncludes', + 'endsWith', + 'startsWith', + ], valueComponent(classComp) { return { ...classComp, type: 'textfield', }; - } + }, }; } static savedValueTypes(schema) { - return FormioUtils.getComponentSavedTypes(schema) || [FormioUtils.componentValueTypes.string]; + return FormioUtils.getComponentSavedTypes(schema) || [FormioUtils.componentValueTypes.string]; } get defaultSchema() { @@ -72,11 +81,10 @@ export default class TextFieldComponent extends Input { if (this.component.mask) { info.attr.type = 'password'; + } else { + info.attr.type = this.component.inputType === 'password' ? 'password' : 'text'; } - else { - info.attr.type = (this.component.inputType === 'password') ? 'password' : 'text'; - } - info.changeEvent = (this.component.applyMaskOn === 'blur') ? 'blur' : 'input'; + info.changeEvent = this.component.applyMaskOn === 'blur' ? 'blur' : 'input'; return info; } @@ -87,8 +95,8 @@ export default class TextFieldComponent extends Input { constructor(component, options, data) { super(component, options, data); - const timezone = (this.component.widget?.timezone || this.options.timezone); - const displayInTimezone = (this.component.widget?.displayInTimezone || 'viewer'); + const timezone = this.component.widget?.timezone || this.options.timezone; + const displayInTimezone = this.component.widget?.displayInTimezone || 'viewer'; if (this.component.widget?.type === 'calendar') { this.component.widget = { @@ -97,7 +105,7 @@ export default class TextFieldComponent extends Input { timezone, displayInTimezone, locale: this.component.widget.locale || this.options.language, - saveAs: 'text' + saveAs: 'text', }; } } @@ -117,10 +125,10 @@ export default class TextFieldComponent extends Input { */ maskValue(value, flags = {}) { // Convert it into the correct format. - if (!value || (typeof value !== 'object')) { + if (!value || typeof value !== 'object') { value = { value, - maskName: this.component.inputMasks[0].label + maskName: this.component.inputMasks[0].label, }; } @@ -163,7 +171,7 @@ export default class TextFieldComponent extends Input { value = this.maskValue(value, flags); const textValue = value.value || ''; const textInput = this.refs.mask ? this.refs.mask[index] : null; - const maskInput = this.refs.select ? this.refs.select[index]: null; + const maskInput = this.refs.select ? this.refs.select[index] : null; const mask = this.getMaskPattern(value.maskName); if (textInput && maskInput && mask) { // We need to set the maskInput (select dropdown) value before calling inputmask.setValue because, this @@ -172,13 +180,13 @@ export default class TextFieldComponent extends Input { if (textInput.inputmask) { this.setInputMask(textInput, mask); textInput.inputmask.setValue(textValue); - } - else { + } else { const placeholderChar = this.placeholderChar; - textInput.value = conformToMask(textValue, FormioUtils.getInputMask(mask), { placeholderChar }).conformedValue; + textInput.value = conformToMask(textValue, FormioUtils.getInputMask(mask), { + placeholderChar, + }).conformedValue; } - } - else { + } else { return super.setValueAt(index, textValue, flags); } } @@ -202,7 +210,7 @@ export default class TextFieldComponent extends Input { // If the input has only the valueMask or the displayMask is the same as the valueMask, // just return the value which is already formatted - if (valueMask && !displayMask || displayMask === valueMask) { + if ((valueMask && !displayMask) || displayMask === valueMask) { return value; } @@ -223,30 +231,32 @@ export default class TextFieldComponent extends Input { return value; } const textInput = this.refs.mask ? this.refs.mask[index] : null; - const maskInput = this.refs.select ? this.refs.select[index]: null; + const maskInput = this.refs.select ? this.refs.select[index] : null; return { value: textInput ? textInput.value : undefined, - maskName: maskInput ? maskInput.value : undefined + maskName: maskInput ? maskInput.value : undefined, }; } checkInputMaskValue(inputMask) { let valid = true; - const maskValues = _.values(inputMask.split('').reduce((acc, el, i, mask) => { - if (el === '{' || el === '}') { - if (mask[i+1] === '{' || mask[i+1] === '}') { - valid = false; + const maskValues = _.values( + inputMask.split('').reduce((acc, el, i, mask) => { + if (el === '{' || el === '}') { + if (mask[i + 1] === '{' || mask[i + 1] === '}') { + valid = false; + } + acc[el] = (acc[el] ?? 0) + 1; } - acc[el] = (acc[el] ?? 0) + 1; - } - return acc; - },{})); + return acc; + }, {}), + ); if (maskValues[0] !== maskValues[1]) { valid = false; } return valid; } - setInputMask(input, inputMask, usePlaceholder) { + setInputMask(input, inputMask, usePlaceholder) { if (this.type !== 'textfield') { super.setInputMask(input, inputMask, usePlaceholder); return; @@ -269,8 +279,7 @@ export default class TextFieldComponent extends Input { placeholder: this.placeholderChar || '', }).mask(input); } - } - catch (e) { + } catch (e) { console.warn(e); } if (mask.numeric) { @@ -284,17 +293,22 @@ export default class TextFieldComponent extends Input { } isHtmlRenderMode() { - return super.isHtmlRenderMode() || + return ( + super.isHtmlRenderMode() || ((this.options.readOnly || this.disabled) && - this.component.inputFormat === 'html' && - this.type === 'textfield'); + this.component.inputFormat === 'html' && + this.type === 'textfield') + ); } isEmpty(value = this.dataValue) { if (!this.isMultipleMasksField) { return super.isEmpty((value || '').toString().trim()); } - return super.isEmpty(value) || (this.component.multiple ? value.length === 0 : (!value.maskName || !value.value)); + return ( + super.isEmpty(value) || + (this.component.multiple ? value.length === 0 : !value.maskName || !value.value) + ); } truncateMultipleSpaces(value) { @@ -325,7 +339,7 @@ export default class TextFieldComponent extends Input { getValueAsString(value, options) { if (options?.email && this.visible && !this.skipInEmail && _.isObject(value)) { - const result = (` + const result = ` @@ -334,13 +348,13 @@ export default class TextFieldComponent extends Input {
    - `); + `; return result; } if (value && this.component.inputFormat === 'plain' && /<[^<>]+>/g.test(value)) { - value = value.replaceAll('<','<').replaceAll('>', '>'); + value = value.replaceAll('<', '<').replaceAll('>', '>'); } return super.getValueAsString(value, options); } diff --git a/src/components/textfield/editForm/TextField.edit.data.js b/src/components/textfield/editForm/TextField.edit.data.js index 9ed4427abd..2ceb53b81a 100644 --- a/src/components/textfield/editForm/TextField.edit.data.js +++ b/src/components/textfield/editForm/TextField.edit.data.js @@ -11,19 +11,20 @@ export default [ values: [ { value: 'plain', - label: 'Plain' + label: 'Plain', }, { value: 'html', - label: 'HTML' - },{ + label: 'HTML', + }, + { value: 'raw', - label: 'Raw (Insecure)' - } - ] + label: 'Raw (Insecure)', + }, + ], }, defaultValue: 'plain', - input: true + input: true, }, { weight: 200, @@ -35,16 +36,17 @@ export default [ values: [ { value: 'mixed', - label: 'Mixed (Allow upper and lower case)' + label: 'Mixed (Allow upper and lower case)', }, { value: 'uppercase', - label: 'Uppercase' - },{ + label: 'Uppercase', + }, + { value: 'lowercase', - label: 'Lowercase' - } - ] + label: 'Lowercase', + }, + ], }, { weight: 205, diff --git a/src/components/textfield/editForm/TextField.edit.display.js b/src/components/textfield/editForm/TextField.edit.display.js index 9804113859..7f74042f14 100644 --- a/src/components/textfield/editForm/TextField.edit.display.js +++ b/src/components/textfield/editForm/TextField.edit.display.js @@ -18,11 +18,11 @@ export default [ values: [ { label: 'Input Field', value: 'input' }, { label: 'Calendar Picker', value: 'calendar' }, - ] + ], }, conditional: { - json: { '===': [{ var: 'data.type' }, 'textfield'] } - } + json: { '===': [{ var: 'data.type' }, 'textfield'] }, + }, }, { weight: 405, @@ -47,8 +47,7 @@ export default [ const existWidget = context.instance._currentForm.options.editComponent.widget; if (existWidget && !_.isEmpty(_.omit(existWidget, 'type')) && type === existWidget.type) { return _.omit(existWidget, 'language'); - } - else if (type) { + } else if (type) { return _.omit(Widgets[type].defaultSettings, 'language'); } } @@ -59,8 +58,8 @@ export default [ editor: 'ace', as: 'json', conditional: { - json: { '!==': [{ var: 'data.widget.type' }, 'input'] } - } + json: { '!==': [{ var: 'data.widget.type' }, 'input'] }, + }, }, { weight: 410, @@ -68,7 +67,8 @@ export default [ input: true, key: 'inputMask', label: 'Input Mask', - tooltip: 'An input mask helps the user with input by ensuring a predefined format.

    9: numeric
    a: alphabetical
    *: alphanumeric

    Example telephone mask: (999) 999-9999

    See the jquery.inputmask documentation for more information.', + tooltip: + "An input mask helps the user with input by ensuring a predefined format.

    9: numeric
    a: alphabetical
    *: alphanumeric

    Example telephone mask: (999) 999-9999

    See the jquery.inputmask documentation for more information.", customConditional(context) { return !context.data.allowMultipleMasks; }, @@ -79,7 +79,8 @@ export default [ input: true, key: 'displayMask', label: 'Display Mask', - tooltip: 'A display mask helps to display the input in a readable way, this won\'t affect the value which will be saved (to affect both view and saved value, delete Display Mask and use Input Mask).

    9: numeric
    a: alphabetical
    *: alphanumeric

    Example telephone mask: (999) 999-9999

    See the jquery.inputmask documentation for more information.', + tooltip: + "A display mask helps to display the input in a readable way, this won't affect the value which will be saved (to affect both view and saved value, delete Display Mask and use Input Mask).

    9: numeric
    a: alphabetical
    *: alphanumeric

    Example telephone mask: (999) 999-9999

    See the jquery.inputmask documentation for more information.", customConditional(context) { return !context.data.allowMultipleMasks; }, @@ -109,20 +110,21 @@ export default [ input: true, key: 'inputMaskPlaceholderChar', label: 'Input Mask Placeholder Char', - tooltip: 'You can specify a char which will be used as a placeholder in the field.
    E.g., \u02cd
    Make note that placeholder char will be replaced by a space if it is used inside the mask', + tooltip: + 'You can specify a char which will be used as a placeholder in the field.
    E.g., \u02cd
    Make note that placeholder char will be replaced by a space if it is used inside the mask', validation: { - maxLength: 1 + maxLength: 1, }, customConditional(context) { return context.data.inputMask || context.data.displayMask; - } + }, }, { weight: 413, type: 'checkbox', input: true, key: 'allowMultipleMasks', - label: 'Allow Multiple Masks' + label: 'Allow Multiple Masks', }, { weight: 1350, @@ -130,7 +132,7 @@ export default [ input: true, key: 'spellcheck', defaultValue: true, - label: 'Allow Spellcheck' + label: 'Allow Spellcheck', }, { weight: 417, @@ -147,29 +149,29 @@ export default [ type: 'textfield', key: 'label', label: 'Label', - input: true + input: true, }, { type: 'textfield', key: 'mask', label: 'Mask', - input: true - } - ] + input: true, + }, + ], }, { weight: 320, type: 'textfield', input: true, key: 'prefix', - label: 'Prefix' + label: 'Prefix', }, { weight: 330, type: 'textfield', input: true, key: 'suffix', - label: 'Suffix' + label: 'Suffix', }, { weight: 700, @@ -178,15 +180,17 @@ export default [ key: 'autocomplete', label: 'Autocomplete', placeholder: 'on', - tooltip: 'Indicates whether input elements can by default have their values automatically completed by the browser. See the MDN documentation on autocomplete for more information.' + tooltip: + "Indicates whether input elements can by default have their values automatically completed by the browser. See the MDN documentation on autocomplete for more information.", }, { weight: 1300, type: 'checkbox', label: 'Hide Input', - tooltip: 'Hide the input in the browser. This does not encrypt on the server. Do not use for passwords.', + tooltip: + 'Hide the input in the browser. This does not encrypt on the server. Do not use for passwords.', key: 'mask', - input: true + input: true, }, { weight: 1200, @@ -194,7 +198,7 @@ export default [ label: 'Show Word Counter', tooltip: 'Show a live count of the number of words.', key: 'showWordCount', - input: true + input: true, }, { weight: 1201, @@ -202,6 +206,6 @@ export default [ label: 'Show Character Counter', tooltip: 'Show a live count of the number of characters.', key: 'showCharCount', - input: true + input: true, }, ]; diff --git a/src/components/textfield/editForm/TextField.edit.validation.js b/src/components/textfield/editForm/TextField.edit.validation.js index b9926d5aa5..7495b39906 100644 --- a/src/components/textfield/editForm/TextField.edit.validation.js +++ b/src/components/textfield/editForm/TextField.edit.validation.js @@ -6,7 +6,7 @@ export default [ placeholder: 'Minimum Length', type: 'number', tooltip: 'The minimum length requirement this field must meet.', - input: true + input: true, }, { weight: 120, @@ -15,7 +15,7 @@ export default [ placeholder: 'Maximum Length', type: 'number', tooltip: 'The maximum length requirement this field must meet.', - input: true + input: true, }, { weight: 125, @@ -24,7 +24,7 @@ export default [ placeholder: 'Minimum Word Length', type: 'number', tooltip: 'The minimum amount of words that can be added to this field.', - input: true + input: true, }, { weight: 126, @@ -33,7 +33,7 @@ export default [ placeholder: 'Maximum Word Length', type: 'number', tooltip: 'The maximum amount of words that can be added to this field.', - input: true + input: true, }, { weight: 130, @@ -41,7 +41,8 @@ export default [ label: 'Regular Expression Pattern', placeholder: 'Regular Expression Pattern', type: 'textfield', - tooltip: 'The regular expression pattern test that the field value must pass before the form can be submitted.', - input: true - } + tooltip: + 'The regular expression pattern test that the field value must pass before the form can be submitted.', + input: true, + }, ]; diff --git a/src/components/time/Time.form.js b/src/components/time/Time.form.js index bb5d5dbf5a..4d06d9817d 100644 --- a/src/components/time/Time.form.js +++ b/src/components/time/Time.form.js @@ -8,15 +8,18 @@ import TimeEditDisplay from './editForm/Time.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return Components.baseEditForm([ - { - key: 'data', - components: TimeEditData, - }, - { - key: 'display', - components: TimeEditDisplay, - }, - ], ...extend); +export default function (...extend) { + return Components.baseEditForm( + [ + { + key: 'data', + components: TimeEditData, + }, + { + key: 'display', + components: TimeEditDisplay, + }, + ], + ...extend, + ); } diff --git a/src/components/time/Time.js b/src/components/time/Time.js index c762985cfa..4a449ba9e9 100644 --- a/src/components/time/Time.js +++ b/src/components/time/Time.js @@ -6,25 +6,29 @@ const defaultDataFormat = 'HH:mm:ss'; export default class TimeComponent extends TextFieldComponent { static schema(...extend) { - return TextFieldComponent.schema({ - type: 'time', - label: 'Time', - key: 'time', - inputType: 'time', - format: 'HH:mm', - dataFormat: defaultDataFormat, - }, ...extend); + return TextFieldComponent.schema( + { + type: 'time', + label: 'Time', + key: 'time', + inputType: 'time', + format: 'HH:mm', + dataFormat: defaultDataFormat, + }, + ...extend, + ); } constructor(component, options, data) { super(component, options, data); const { edge: isEdgeBrowser, version: edgeVersion } = getBrowserInfo(); this.component.inputMask = this.getInputMaskFromFormat(this.component.format); - this.component.inputType = isEdgeBrowser && edgeVersion <= 18 - ? 'text' - : (this.component.inputType || 'time'); + this.component.inputType = + isEdgeBrowser && edgeVersion <= 18 ? 'text' : this.component.inputType || 'time'; // If default value is given then the raw data needs to be set - this.rawData = this.component.multiple ? [] : this.getValueAsString(this.defaultValue) || this.emptyValue; + this.rawData = this.component.multiple + ? [] + : this.getValueAsString(this.defaultValue) || this.emptyValue; } static get builderInfo() { @@ -49,9 +53,8 @@ export default class TimeComponent extends TextFieldComponent { get defaultValue() { let value = super.defaultValue; if (this.component.multiple && Array.isArray(value)) { - value = value.map(item => item ? this.getStringAsValue(item) : item); - } - else { + value = value.map((item) => (item ? this.getStringAsValue(item) : item)); + } else { if (value) { value = this.getStringAsValue(value); } @@ -59,7 +62,6 @@ export default class TimeComponent extends TextFieldComponent { return value; } - get inputInfo() { const info = super.inputInfo; info.attr.type = this.component.inputType; @@ -75,15 +77,16 @@ export default class TimeComponent extends TextFieldComponent { } removeValue(index) { - this.rawData = Array.isArray(this.rawData) ? [...this.rawData.slice(0, index), ...this.rawData.slice(index + 1)] : this.emptyValue; + this.rawData = Array.isArray(this.rawData) + ? [...this.rawData.slice(0, index), ...this.rawData.slice(index + 1)] + : this.emptyValue; super.removeValue(index); } resetRawData(index) { if (index) { this.setRawValue(this.emptyValue, index); - } - else { + } else { this.rawData = []; } } @@ -91,8 +94,7 @@ export default class TimeComponent extends TextFieldComponent { setRawValue(value, index) { if (Array.isArray(this.rawData)) { this.rawData[index] = value; - } - else { + } else { this.rawData = value; } } @@ -100,8 +102,7 @@ export default class TimeComponent extends TextFieldComponent { getRawValue(index) { if (index && Array.isArray(this.rawData)) { return this.rawData[index] || this.emptyValue; - } - else { + } else { return this.rawData; } } @@ -133,9 +134,13 @@ export default class TimeComponent extends TextFieldComponent { getValueAsString(value) { if (Array.isArray(value) && this.component.multiple) { - return value.map(item => moment(item, this.component.dataFormat).format(this.component.format)).join(', '); + return value + .map((item) => moment(item, this.component.dataFormat).format(this.component.format)) + .join(', '); } - return (value ? moment(value, this.component.dataFormat).format(this.component.format) : value) || ''; + return ( + (value ? moment(value, this.component.dataFormat).format(this.component.format) : value) || '' + ); } getInputMaskFromFormat(format) { @@ -145,8 +150,7 @@ export default class TimeComponent extends TextFieldComponent { if (format === 'LTS') { return '99:99:99 AA'; } - return format.replace(/[hHmMsSk]/g, '9') - .replace(/[aA]/, 'AA'); + return format.replace(/[hHmMsSk]/g, '9').replace(/[aA]/, 'AA'); } addFocusBlurEvents(element) { diff --git a/src/components/time/editForm/Time.edit.display.js b/src/components/time/editForm/Time.edit.display.js index 4a622866bd..8e3d578c9a 100644 --- a/src/components/time/editForm/Time.edit.display.js +++ b/src/components/time/editForm/Time.edit.display.js @@ -3,7 +3,7 @@ export default [ type: 'select', input: true, weight: 40, - tooltip: 'Select the type of widget you\'d like to use.', + tooltip: "Select the type of widget you'd like to use.", key: 'inputType', defaultValue: 'time', label: 'Input Type', @@ -26,15 +26,12 @@ export default [ defaultValue: 'HH:mm', conditional: { json: { - '===': [ - { var: 'data.inputType' }, - 'text', - ], + '===': [{ var: 'data.inputType' }, 'text'], }, }, }, { key: 'placeholder', ignore: true, - } + }, ]; diff --git a/src/components/unknown/Unknown.form.js b/src/components/unknown/Unknown.form.js index 400082577e..6db734f9e3 100644 --- a/src/components/unknown/Unknown.form.js +++ b/src/components/unknown/Unknown.form.js @@ -4,7 +4,7 @@ import UnknownEditDisplay from './editForm/Unknown.edit.display'; * Unknown Component schema. * @returns {object} - The Unknown Component edit form. */ -export default function() { +export default function () { return { components: [ { @@ -15,10 +15,10 @@ export default function() { label: 'Custom', key: 'display', weight: 0, - components: UnknownEditDisplay - } - ] - } - ] + components: UnknownEditDisplay, + }, + ], + }, + ], }; } diff --git a/src/components/unknown/Unknown.js b/src/components/unknown/Unknown.js index 4c8ec12f5a..3d41efe175 100644 --- a/src/components/unknown/Unknown.js +++ b/src/components/unknown/Unknown.js @@ -6,7 +6,7 @@ export default class UnknownComponent extends Component { type: 'custom', key: 'custom', protected: false, - persistent: true + persistent: true, }; } @@ -17,7 +17,7 @@ export default class UnknownComponent extends Component { group: 'premium', documentation: '/userguide/form-building/premium-components#custom', weight: 120, - schema: UnknownComponent.schema() + schema: UnknownComponent.schema(), }; } diff --git a/src/components/unknown/editForm/Unknown.edit.display.js b/src/components/unknown/editForm/Unknown.edit.display.js index e6042d03b0..17a74f470e 100644 --- a/src/components/unknown/editForm/Unknown.edit.display.js +++ b/src/components/unknown/editForm/Unknown.edit.display.js @@ -4,13 +4,14 @@ export default [ label: 'Custom component description', input: false, tag: 'p', - content: 'Custom components can be used to render special fields or widgets inside your app. ' + + content: + 'Custom components can be used to render special fields or widgets inside your app. ' + 'For information on how to display in an app, see ' + '' + 'custom component documentation' + '.', type: 'htmlelement', - weight: 5 + weight: 5, }, { type: 'textarea', @@ -20,6 +21,6 @@ export default [ input: true, key: 'componentJson', label: 'Custom Element JSON', - tooltip: 'Enter the JSON for this custom element.' - } + tooltip: 'Enter the JSON for this custom element.', + }, ]; diff --git a/src/components/url/Url.form.js b/src/components/url/Url.form.js index 451538ebe1..692ba841e1 100644 --- a/src/components/url/Url.form.js +++ b/src/components/url/Url.form.js @@ -9,19 +9,22 @@ import UrlEditValidation from './editForm/Url.edit.validation'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return textEditForm([ - { - key: 'display', - components: UrlEditDisplay - }, - { - key: 'data', - components: UrlEditData - }, - { - key: 'validation', - components: UrlEditValidation - }, - ], ...extend); +export default function (...extend) { + return textEditForm( + [ + { + key: 'display', + components: UrlEditDisplay, + }, + { + key: 'data', + components: UrlEditData, + }, + { + key: 'validation', + components: UrlEditValidation, + }, + ], + ...extend, + ); } diff --git a/src/components/url/Url.js b/src/components/url/Url.js index 4a18297fa5..851d7403cd 100644 --- a/src/components/url/Url.js +++ b/src/components/url/Url.js @@ -2,12 +2,15 @@ import TextFieldComponent from '../textfield/TextField'; export default class UrlComponent extends TextFieldComponent { static schema(...extend) { - return TextFieldComponent.schema({ - type: 'url', - label: 'Url', - key: 'url', - inputType: 'url' - }, ...extend); + return TextFieldComponent.schema( + { + type: 'url', + label: 'Url', + key: 'url', + inputType: 'url', + }, + ...extend, + ); } static get builderInfo() { @@ -17,7 +20,7 @@ export default class UrlComponent extends TextFieldComponent { icon: 'link', documentation: '/userguide/form-building/advanced-components#url', weight: 20, - schema: UrlComponent.schema() + schema: UrlComponent.schema(), }; } diff --git a/src/components/url/editForm/Url.edit.display.js b/src/components/url/editForm/Url.edit.display.js index 3310b2ac63..ee6493548b 100644 --- a/src/components/url/editForm/Url.edit.display.js +++ b/src/components/url/editForm/Url.edit.display.js @@ -1,11 +1,11 @@ export default [ { key: 'inputMask', - ignore: true + ignore: true, }, { key: 'allowMultipleMasks', - ignore: true + ignore: true, }, { key: 'showWordCount', @@ -14,5 +14,5 @@ export default [ { key: 'showCharCount', ignore: true, - } + }, ]; diff --git a/src/components/url/editForm/Url.edit.validation.js b/src/components/url/editForm/Url.edit.validation.js index 27ef9e7c3d..3f9e6aede9 100644 --- a/src/components/url/editForm/Url.edit.validation.js +++ b/src/components/url/editForm/Url.edit.validation.js @@ -5,6 +5,6 @@ export default [ }, { key: 'validate.maxWords', - ignore: true + ignore: true, }, ]; diff --git a/src/components/well/Well.form.js b/src/components/well/Well.form.js index e5924360ff..c8d25903ca 100644 --- a/src/components/well/Well.form.js +++ b/src/components/well/Well.form.js @@ -7,11 +7,14 @@ import WellEditDisplay from './editForm/Well.edit.display'; * @param {...any} extend - The components that extend the edit form. * @returns {import('@formio/core').Component[]} - The edit form components. */ -export default function(...extend) { - return nestedComponentForm([ - { - key: 'display', - components: WellEditDisplay - }, - ], ...extend); +export default function (...extend) { + return nestedComponentForm( + [ + { + key: 'display', + components: WellEditDisplay, + }, + ], + ...extend, + ); } diff --git a/src/components/well/Well.js b/src/components/well/Well.js index c981995935..943c487b3a 100644 --- a/src/components/well/Well.js +++ b/src/components/well/Well.js @@ -2,13 +2,16 @@ import NestedComponent from '../_classes/nested/NestedComponent'; export default class WellComponent extends NestedComponent { static schema(...extend) { - return NestedComponent.schema({ - type: 'well', - key: 'well', - input: false, - persistent: false, - components: [] - }, ...extend); + return NestedComponent.schema( + { + type: 'well', + key: 'well', + input: false, + persistent: false, + components: [], + }, + ...extend, + ); } static get builderInfo() { @@ -19,7 +22,7 @@ export default class WellComponent extends NestedComponent { documentation: '/userguide/form-building/layout-components#well', showPreview: false, weight: 60, - schema: WellComponent.schema() + schema: WellComponent.schema(), }; } diff --git a/src/components/well/editForm/Well.edit.display.js b/src/components/well/editForm/Well.edit.display.js index ec0e46dba3..6595b450ed 100644 --- a/src/components/well/editForm/Well.edit.display.js +++ b/src/components/well/editForm/Well.edit.display.js @@ -1,35 +1,35 @@ export default [ { key: 'labelPosition', - ignore: true + ignore: true, }, { key: 'placeholder', - ignore: true + ignore: true, }, { key: 'description', - ignore: true + ignore: true, }, { key: 'autofocus', - ignore: true + ignore: true, }, { key: 'tooltip', - ignore: true + ignore: true, }, { key: 'tabindex', - ignore: true + ignore: true, }, { key: 'tableView', - ignore: true + ignore: true, }, { key: 'hideLabel', - ignore: true + ignore: true, }, { weight: 0, @@ -40,9 +40,9 @@ export default [ placeholder: 'Field Label', tooltip: 'The label for this field.', validate: { - required: true + required: true, }, autofocus: true, - overrideEditForm: true + overrideEditForm: true, }, ]; diff --git a/src/formio.embed.js b/src/formio.embed.js index 9d693a95db..d911f60da2 100644 --- a/src/formio.embed.js +++ b/src/formio.embed.js @@ -1,2 +1,2 @@ import { embed } from './InlineEmbed'; -embed(); \ No newline at end of file +embed(); diff --git a/src/formio.form.js b/src/formio.form.js index 479d53a32d..722421401d 100644 --- a/src/formio.form.js +++ b/src/formio.form.js @@ -13,11 +13,13 @@ import Licenses from './licenses'; import EventEmitter from './EventEmitter'; import Webform from './Webform'; -Formio.loadModules = (path = `${Formio.getApiUrl() }/externalModules.js`, name = 'externalModules') => { - Formio.requireLibrary(name, name, path, true) - .then((modules) => { - Formio.use(modules); - }); +Formio.loadModules = ( + path = `${Formio.getApiUrl()}/externalModules.js`, + name = 'externalModules', +) => { + Formio.requireLibrary(name, name, path, true).then((modules) => { + Formio.use(modules); + }); }; // This is needed to maintain correct imports using the "dist" file. @@ -115,9 +117,8 @@ export function useModule(defaultFn = null) { plugins.forEach((plugin) => { if (Array.isArray(plugin)) { - plugin.forEach(p => registerModule(p, defaultFn, options)); - } - else { + plugin.forEach((p) => registerModule(p, defaultFn, options)); + } else { registerModule(plugin, defaultFn, options); } }); @@ -134,4 +135,16 @@ Formio.use = useModule(); export { Formio as FormioCore } from './Formio'; // Export the components. -export { Components, Displays, Providers, Widgets, Templates, Utils, Form, Formio, Licenses, EventEmitter, Webform }; +export { + Components, + Displays, + Providers, + Widgets, + Templates, + Utils, + Form, + Formio, + Licenses, + EventEmitter, + Webform, +}; diff --git a/src/i18n.js b/src/i18n.js index ead24f9fae..9a5a7944f3 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,7 +1,5 @@ import enTranslation from './translations/en'; -import { - fastCloneDeep -} from './utils/utils'; +import { fastCloneDeep } from './utils/utils'; export default { lng: 'en', nsSeparator: '::', @@ -10,7 +8,7 @@ export default { contextSeparator: '._.', resources: { en: { - translation: fastCloneDeep(enTranslation) - } - } + translation: fastCloneDeep(enTranslation), + }, + }, }; diff --git a/src/index.js b/src/index.js index 9275765fe3..d700bc3a3c 100644 --- a/src/index.js +++ b/src/index.js @@ -4,11 +4,11 @@ import { Formio, useModule } from './formio.form'; Formio.Builders = Builders; Formio.isBuilder = true; Formio.use = useModule((key, mod) => { - if (key === 'builders') { - Formio.Builders.addBuilders(mod.builders); - return true; - } - return false; + if (key === 'builders') { + Formio.Builders.addBuilders(mod.builders); + return true; + } + return false; }); export * from './formio.form'; export { FormBuilder, Builders, Formio }; diff --git a/src/providers/Providers.js b/src/providers/Providers.js index 1fca4aa910..872fcac88d 100644 --- a/src/providers/Providers.js +++ b/src/providers/Providers.js @@ -4,7 +4,6 @@ import address from './address'; import auth from './auth'; import storage from './storage'; - /** * @class Providers * @classdesc Represents a collection of providers. diff --git a/src/providers/address/AddressProvider.js b/src/providers/address/AddressProvider.js index 9e6988fa30..a062e20ca6 100644 --- a/src/providers/address/AddressProvider.js +++ b/src/providers/address/AddressProvider.js @@ -28,7 +28,6 @@ export class AddressProvider { * @description The name of the address provider. */ static get name() { - return 'address'; } @@ -38,7 +37,6 @@ export class AddressProvider { * @description The display name of the address provider. */ static get displayName() { - return 'Address'; } @@ -47,7 +45,6 @@ export class AddressProvider { * @param {object} options - The options for the address provider. */ constructor(options = {}) { - this.beforeMergeOptions(options); this.options = _.merge({}, this.defaultOptions, options); } @@ -57,7 +54,6 @@ export class AddressProvider { * @description Executes before merging the options. */ beforeMergeOptions() { - return; } @@ -80,7 +76,6 @@ export class AddressProvider { return 'query'; } - /** * @private * @type {string|null} @@ -90,7 +85,6 @@ export class AddressProvider { return null; } - /** * @private * @type {string|null} @@ -106,7 +100,9 @@ export class AddressProvider { * @returns {string} The serialized parameters. */ serialize(params) { - return _.toPairs(params).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); + return _.toPairs(params) + .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) + .join('&'); } /** @@ -147,10 +143,11 @@ export class AddressProvider { */ search(query, options = {}) { const requestOptions = this.getRequestOptions(options); - const params = requestOptions.params = requestOptions.params || {}; + const params = (requestOptions.params = requestOptions.params || {}); params[this.queryProperty] = query; - return this.makeRequest(requestOptions) - .then((result) => this.responseProperty ? _.get(result, this.responseProperty, []) : result); + return this.makeRequest(requestOptions).then((result) => + this.responseProperty ? _.get(result, this.responseProperty, []) : result, + ); } /** @@ -159,6 +156,8 @@ export class AddressProvider { * @returns {string} The display value of the address. */ getDisplayValue(address) { - return this.displayValueProperty ? _.get(address, this.displayValueProperty, '') : String(address); + return this.displayValueProperty + ? _.get(address, this.displayValueProperty, '') + : String(address); } } diff --git a/src/providers/address/AzureAddressProvider.js b/src/providers/address/AzureAddressProvider.js index 86d83657c4..85abe17258 100644 --- a/src/providers/address/AzureAddressProvider.js +++ b/src/providers/address/AzureAddressProvider.js @@ -1,6 +1,5 @@ import { AddressProvider } from './AddressProvider'; - /** * @typedef {object} AzureAddressProviderOptionsParams * @property {string} 'api-version' - The version of the Azure Maps API. diff --git a/src/providers/address/GoogleAddressProvider.js b/src/providers/address/GoogleAddressProvider.js index ac157766a5..2ac67488bb 100644 --- a/src/providers/address/GoogleAddressProvider.js +++ b/src/providers/address/GoogleAddressProvider.js @@ -45,13 +45,11 @@ export class GoogleAddressProvider extends AddressProvider { return 'google'; } - /** * @returns {string} The display name of the provider. */ static get displayName() { - return 'Google Maps'; } @@ -71,7 +69,6 @@ export class GoogleAddressProvider extends AddressProvider { Formio.requireLibrary(this.getLibraryName(), 'google.maps.places', src); } - /** * get display value property * @returns {string} The property to use for display value. @@ -81,14 +78,12 @@ export class GoogleAddressProvider extends AddressProvider { return 'formattedPlace'; } - /** * @returns {string} The alternative property to use for display value. */ get alternativeDisplayValueProperty() { return 'formatted_address'; - } /** @@ -98,12 +93,10 @@ export class GoogleAddressProvider extends AddressProvider { this._autocompleteOptions = options; } - /** * @returns {AutocompleteOptions} The autocomplete options. */ get autocompleteOptions() { - return this._autocompleteOptions; } @@ -133,7 +126,6 @@ export class GoogleAddressProvider extends AddressProvider { this.convertRegionToAutocompleteOption(options); } - /** * @returns {string} The name of the library. */ @@ -146,13 +138,12 @@ export class GoogleAddressProvider extends AddressProvider { * @param {ProviderOptions} options - The provider options. */ convertRegionToAutocompleteOption(options) { - const providerOptions = options; let region = _.get(providerOptions, 'params.region', ''); if (region && !_.has(options, 'params.autocompleteOptions')) { region = region.toUpperCase().trim(); // providing compatibility with ISO 3166-1 Alpha-2 county codes (for checking compatibility https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) - const countryCodes = { 'UK': 'GB' }; + const countryCodes = { UK: 'GB' }; if (countryCodes[region]) { region = countryCodes[region]; } @@ -164,7 +155,14 @@ export class GoogleAddressProvider extends AddressProvider { * @returns {string[]} The required address properties. */ getRequiredAddressProperties() { - return ['address_components', 'formatted_address','geometry','place_id', 'plus_code', 'types']; + return [ + 'address_components', + 'formatted_address', + 'geometry', + 'place_id', + 'plus_code', + 'types', + ]; } /** @@ -172,11 +170,10 @@ export class GoogleAddressProvider extends AddressProvider { * @param {AutocompleteOptions} options - The autocomplete options. */ addRequiredProviderOptions(options) { - const addressProperties = this.getRequiredAddressProperties(); - if (_.isArray(options.fields) && options.fields.length > 0 ) { - options.fields.forEach(optionalField => { - if (!addressProperties.some(addressProp => optionalField === addressProp)) { + if (_.isArray(options.fields) && options.fields.length > 0) { + options.fields.forEach((optionalField) => { + if (!addressProperties.some((addressProp) => optionalField === addressProp)) { addressProperties.push(optionalField); } }); @@ -189,7 +186,7 @@ export class GoogleAddressProvider extends AddressProvider { const filteredPlace = {}; if (this.autocompleteOptions) { - this.autocompleteOptions.fields.forEach(field => { + this.autocompleteOptions.fields.forEach((field) => { if (place[field]) { filteredPlace[field] = place[field]; } @@ -203,9 +200,13 @@ export class GoogleAddressProvider extends AddressProvider { Formio.libraryReady(this.getLibraryName()).then(() => { const autocomplete = new google.maps.places.Autocomplete(elem, this.autocompleteOptions); - autocomplete.addListener('place_changed', ()=>{ + autocomplete.addListener('place_changed', () => { const place = this.filterPlace(autocomplete.getPlace()); - place.formattedPlace = _.get(autocomplete, 'gm_accessors_.place.se.formattedPrediction', place[this.alternativeDisplayValueProperty]); + place.formattedPlace = _.get( + autocomplete, + 'gm_accessors_.place.se.formattedPrediction', + place[this.alternativeDisplayValueProperty], + ); onSelectAddress(place, elem, index); }); @@ -238,12 +239,17 @@ export class GoogleAddressProvider extends AddressProvider { } const existingScript = document.querySelector(`script[src^="${GOOGLE_MAPS_JS_URL}"]`); - if (existingScript && options.params?.key && !existingScript.attributes.src.value.endsWith(options.params.key)) { - const googleMapsScripts = document.querySelectorAll(`script[src^="${GOOGLE_MAPS_BASE_URL}"]`) ?? []; - googleMapsScripts.forEach(script => script.parentNode.removeChild(script)); - delete Formio.libraries[this.getLibraryName()]; - delete global?.google?.maps; - delete global[`${this.getLibraryName()}Callback`]; + if ( + existingScript && + options.params?.key && + !existingScript.attributes.src.value.endsWith(options.params.key) + ) { + const googleMapsScripts = + document.querySelectorAll(`script[src^="${GOOGLE_MAPS_BASE_URL}"]`) ?? []; + googleMapsScripts.forEach((script) => script.parentNode.removeChild(script)); + delete Formio.libraries[this.getLibraryName()]; + delete global?.google?.maps; + delete global[`${this.getLibraryName()}Callback`]; } } } diff --git a/src/providers/processor/fileProcessor.js b/src/providers/processor/fileProcessor.js index 23adcc1450..a9fc075f5f 100644 --- a/src/providers/processor/fileProcessor.js +++ b/src/providers/processor/fileProcessor.js @@ -25,8 +25,7 @@ const fileProcessor = (formio, config) => (file, options) => if (xhr.status >= 200 && xhr.status < 300) { const mimetype = xhr.getResponseHeader('Content-Type') || file.type; resolve(new File([xhr.response], file.name, { type: mimetype })); - } - else { + } else { reject(xhr.response || 'Unable to process file'); } }; diff --git a/src/providers/storage/azure.js b/src/providers/storage/azure.js index 5476fb18a6..c49c4dd025 100644 --- a/src/providers/storage/azure.js +++ b/src/providers/storage/azure.js @@ -1,4 +1,3 @@ - import XHR from './xhr'; /** @@ -7,15 +6,36 @@ import XHR from './xhr'; * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js. */ function azure(formio) { - return { - uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback) { - return XHR.upload(formio, 'azure', (xhr, response) => { - xhr.openAndSetHeaders('PUT', response.url); - xhr.setRequestHeader('Content-Type', file.type); - xhr.setRequestHeader('x-ms-blob-type', 'BlockBlob'); - return file; - }, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback).then((response) => { + uploadFile( + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + abortCallback, + ) { + return XHR.upload( + formio, + 'azure', + (xhr, response) => { + xhr.openAndSetHeaders('PUT', response.url); + xhr.setRequestHeader('Content-Type', file.type); + xhr.setRequestHeader('x-ms-blob-type', 'BlockBlob'); + return file; + }, + file, + fileName, + dir, + progressCallback, + groupPermissions, + groupId, + abortCallback, + ).then((response) => { return { storage: 'azure', name: XHR.path([dir, fileName]), @@ -28,17 +48,19 @@ function azure(formio) { }); }, downloadFile(file) { - return formio.makeRequest('file', `${formio.formUrl}/storage/azure?name=${XHR.trim(file.name)}`, 'GET'); + return formio.makeRequest( + 'file', + `${formio.formUrl}/storage/azure?name=${XHR.trim(file.name)}`, + 'GET', + ); }, deleteFile: function deleteFile(fileInfo) { var url = `${formio.formUrl}/storage/azure?name=${XHR.trim(fileInfo.name)}&key=${XHR.trim(fileInfo.key)}`; return formio.makeRequest('', url, 'delete'); - } + }, }; } azure.title = 'Azure File Services'; - - export default azure; diff --git a/src/providers/storage/dropbox.js b/src/providers/storage/dropbox.js index 2d97cb819d..1c363f6a8b 100644 --- a/src/providers/storage/dropbox.js +++ b/src/providers/storage/dropbox.js @@ -6,8 +6,19 @@ import { setXhrHeaders } from './xhr'; */ function dropbox(formio) { return { - uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback) { - return new Promise(((resolve, reject) => { + uploadFile( + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + abortCallback, + ) { + return new Promise((resolve, reject) => { // Send the file with data. const xhr = new XMLHttpRequest(); @@ -40,8 +51,7 @@ function dropbox(formio) { response.groupPermissions = groupPermissions; response.url = response.path_lower; resolve(response); - } - else { + } else { reject(xhr.response || 'Unable to upload file'); } }; @@ -57,14 +67,13 @@ function dropbox(formio) { xhr.setRequestHeader('x-jwt-token', token); } xhr.send(fd); - })); + }); }, downloadFile(file) { const token = formio.getToken(); - file.url = - `${formio.formUrl}/storage/dropbox?path_lower=${file.path_lower}${token ? `&x-jwt-token=${token}` : ''}`; + file.url = `${formio.formUrl}/storage/dropbox?path_lower=${file.path_lower}${token ? `&x-jwt-token=${token}` : ''}`; return Promise.resolve(file); - } + }, }; } dropbox.title = 'Dropbox'; diff --git a/src/providers/storage/googleDrive.js b/src/providers/storage/googleDrive.js index b97a46a8c8..0f45eed3e5 100644 --- a/src/providers/storage/googleDrive.js +++ b/src/providers/storage/googleDrive.js @@ -1,15 +1,26 @@ import { setXhrHeaders } from './xhr'; /** - * + * * Google Drive provider for file storage. * @param {object} formio - formio instance * @returns {import('./typedefs').FileProvider} The FileProvider interface defined in index.js. */ function googledrive(formio) { return { - uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback) { - return new Promise(((resolve, reject) => { + uploadFile( + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + abortCallback, + ) { + return new Promise((resolve, reject) => { // Send the file with data. const xhr = new XMLHttpRequest(); @@ -41,8 +52,7 @@ function googledrive(formio) { response.groupId = groupId; response.groupPermissions = groupPermissions; resolve(response); - } - else { + } else { reject(xhr.response || 'Unable to upload file'); } }; @@ -58,16 +68,18 @@ function googledrive(formio) { xhr.setRequestHeader('x-jwt-token', token); } xhr.send(fd); - })); + }); }, downloadFile(file) { const token = formio.getToken(); - file.url = - `${formio.formUrl}/storage/gdrive?fileId=${file.id}&fileName=${file.originalName}${token ? `&x-jwt-token=${token}` : ''}`; + file.url = `${formio.formUrl}/storage/gdrive?fileId=${file.id}&fileName=${file.originalName}${token ? `&x-jwt-token=${token}` : ''}`; return Promise.resolve(file); }, deleteFile: function deleteFile(fileInfo) { - var url = ''.concat(formio.formUrl, `/storage/gdrive?id=${fileInfo.id}&name=${fileInfo.originalName}`); + var url = ''.concat( + formio.formUrl, + `/storage/gdrive?id=${fileInfo.id}&name=${fileInfo.originalName}`, + ); return formio.makeRequest('', url, 'delete'); }, }; diff --git a/src/providers/storage/index.js b/src/providers/storage/index.js index ace6103ab4..356afaccb7 100644 --- a/src/providers/storage/index.js +++ b/src/providers/storage/index.js @@ -5,13 +5,11 @@ import url from './url'; import indexeddb from './indexeddb'; import googledrive from './googleDrive'; - - export default { base64, s3, url, azure, indexeddb, - googledrive + googledrive, }; diff --git a/src/providers/storage/indexeddb.js b/src/providers/storage/indexeddb.js index 21c0fc6aa0..fd16e109b5 100644 --- a/src/providers/storage/indexeddb.js +++ b/src/providers/storage/indexeddb.js @@ -9,17 +9,17 @@ function indexeddb() { name: 'indexeddb', uploadFile(file, fileName, dir, progressCallback, url, options) { if (!('indexedDB' in window)) { - console.log('This browser doesn\'t support IndexedDB'); + console.log("This browser doesn't support IndexedDB"); return; } return new Promise((resolve) => { const request = indexedDB.open(options.indexeddb); - request.onsuccess = function(event) { + request.onsuccess = function (event) { const db = event.target.result; resolve(db); }; - request.onupgradeneeded = function(e) { + request.onupgradeneeded = function (e) { const db = e.target.result; db.createObjectStore(options.indexeddbTable); }; @@ -44,12 +44,12 @@ function indexeddb() { const trans = db.transaction([options.indexeddbTable], 'readwrite'); const addReq = trans.objectStore(options.indexeddbTable).put(data, id); - addReq.onerror = function(e) { + addReq.onerror = function (e) { console.log('error storing data'); console.error(e); }; - trans.oncomplete = function() { + trans.oncomplete = function () { resolve({ storage: 'indexeddb', name: file.name, @@ -73,7 +73,7 @@ function indexeddb() { return new Promise((resolve) => { const request = indexedDB.open(options.indexeddb); - request.onsuccess = function(event) { + request.onsuccess = function (event) { const db = event.target.result; resolve(db); }; @@ -113,7 +113,7 @@ function indexeddb() { return new Promise((resolve) => { const request = indexedDB.open(options.indexeddb); - request.onsuccess = function(event) { + request.onsuccess = function (event) { const db = event.target.result; resolve(db); }; diff --git a/src/providers/storage/s3.js b/src/providers/storage/s3.js index c50e62c9a1..711c8c274e 100644 --- a/src/providers/storage/s3.js +++ b/src/providers/storage/s3.js @@ -1,7 +1,7 @@ import XHR from './xhr'; import { withRetries } from './util'; -const loadAbortControllerPolyfill = async() => { +const loadAbortControllerPolyfill = async () => { if (typeof AbortController === 'undefined') { await import('abortcontroller-polyfill/dist/polyfill-patch-fetch'); } @@ -14,8 +14,20 @@ const loadAbortControllerPolyfill = async() => { */ function s3(formio) { return { - async uploadFile(file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback, multipartOptions) { - const xhrCallback = async(xhr, response, abortCallback) => { + async uploadFile( + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + abortCallback, + multipartOptions, + ) { + const xhrCallback = async (xhr, response, abortCallback) => { response.data.fileName = fileName; response.data.key = XHR.path([response.data.key, dir, fileName]); if (response.signed) { @@ -34,20 +46,22 @@ function s3(formio) { response.data.headers, response.partSizeActual, multipartOptions, - abortSignal + abortSignal, + ); + await withRetries( + this.completeMultipartUpload, + [response, parts, multipartOptions], + 3, ); - await withRetries(this.completeMultipartUpload, [response, parts, multipartOptions], 3); return; - } - catch (err) { + } catch (err) { // abort in-progress fetch requests abortController.abort(); // attempt to cancel the multipart upload this.abortMultipartUpload(response); throw err; } - } - else { + } else { xhr.openAndSetHeaders('PUT', response.signed); xhr.setRequestHeader('Content-Type', file.type); if (response.data.headers) { @@ -57,8 +71,7 @@ function s3(formio) { } return file; } - } - else { + } else { const fd = new FormData(); for (const key in response.data) { fd.append(key, response.data[key]); @@ -79,7 +92,7 @@ function s3(formio) { groupPermissions, groupId, abortCallback, - multipartOptions + multipartOptions, ); return { storage: 's3', @@ -89,7 +102,7 @@ function s3(formio) { url: XHR.path([response.url, response.data.key]), acl: response.data.acl, size: file.size, - type: file.type + type: file.type, }; }, async completeMultipartUpload(serverResponse, parts, multipart) { @@ -100,9 +113,9 @@ function s3(formio) { method: 'POST', headers: { 'Content-Type': 'application/json', - ...(token ? { 'x-jwt-token': token } : {}) + ...(token ? { 'x-jwt-token': token } : {}), }, - body: JSON.stringify({ parts, uploadId: serverResponse.uploadId, key: serverResponse.key }) + body: JSON.stringify({ parts, uploadId: serverResponse.uploadId, key: serverResponse.key }), }); const message = await response.text(); if (!response.ok) { @@ -111,7 +124,7 @@ function s3(formio) { // the AWS S3 SDK CompleteMultipartUpload command can return a HTTP 200 status header but still error; // we need to parse, and according to AWS, to retry if (message.match(/Error/)) { - throw new Error(message); + throw new Error(message); } }, abortMultipartUpload(serverResponse) { @@ -121,9 +134,9 @@ function s3(formio) { method: 'POST', headers: { 'Content-Type': 'application/json', - ...(token ? { 'x-jwt-token': token } : {}) + ...(token ? { 'x-jwt-token': token } : {}), }, - body: JSON.stringify({ uploadId, key }) + body: JSON.stringify({ uploadId, key }), }).catch((err) => console.error('Error while aborting multipart upload:', err)); }, uploadParts(file, urls, headers, partSize, multipart, abortSignal) { @@ -144,11 +157,12 @@ function s3(formio) { progressCallback(urls.length); const eTag = res.headers.get('etag'); if (!eTag) { - throw new Error('ETag header not found; it must be exposed in S3 bucket CORS settings'); + throw new Error( + 'ETag header not found; it must be exposed in S3 bucket CORS settings', + ); } return { ETag: eTag, PartNumber: i + 1 }; - } - else { + } else { throw new Error(`Part no ${i} failed with status ${res.status}`); } }); @@ -158,9 +172,12 @@ function s3(formio) { }, downloadFile(file) { if (file.acl !== 'public-read') { - return formio.makeRequest('file', `${formio.formUrl}/storage/s3?bucket=${XHR.trim(file.bucket)}&key=${XHR.trim(file.key)}`, 'GET'); - } - else { + return formio.makeRequest( + 'file', + `${formio.formUrl}/storage/s3?bucket=${XHR.trim(file.bucket)}&key=${XHR.trim(file.key)}`, + 'GET', + ); + } else { return Promise.resolve(file); } }, diff --git a/src/providers/storage/uploadAdapter.js b/src/providers/storage/uploadAdapter.js index b0e177cb5f..32e1dfd94b 100644 --- a/src/providers/storage/uploadAdapter.js +++ b/src/providers/storage/uploadAdapter.js @@ -11,38 +11,45 @@ class FormioUploadAdapter { } upload() { - return this.loader.file - .then(file => new Promise((resolve, reject) => { - const { uploadStorage, uploadUrl, uploadOptions, uploadDir, fileKey } = this.component.component; - const uploadParams = [ - uploadStorage, - file, - uniqueName(file.name), - uploadDir || '', //should pass empty string if undefined - (evt) => this.onUploadProgress(evt), - uploadUrl, - uploadOptions, - fileKey, - null, - null - ]; + return this.loader.file.then( + (file) => + new Promise((resolve, reject) => { + const { uploadStorage, uploadUrl, uploadOptions, uploadDir, fileKey } = + this.component.component; + const uploadParams = [ + uploadStorage, + file, + uniqueName(file.name), + uploadDir || '', //should pass empty string if undefined + (evt) => this.onUploadProgress(evt), + uploadUrl, + uploadOptions, + fileKey, + null, + null, + ]; - const uploadPromise = this.fileService.uploadFile( - ...uploadParams, - () => this.component.emit('fileUploadingStart', uploadPromise) - ).then((result) => { - return this.fileService.downloadFile(result); - }).then((result) => { - return resolve({ - default: result.url - }); - }).catch((err) => { - console.warn('An Error occured while uploading file', err); - reject(err); - }).finally(() => { - this.component.emit('fileUploadingEnd', uploadPromise); - }); - })); + const uploadPromise = this.fileService + .uploadFile(...uploadParams, () => + this.component.emit('fileUploadingStart', uploadPromise), + ) + .then((result) => { + return this.fileService.downloadFile(result); + }) + .then((result) => { + return resolve({ + default: result.url, + }); + }) + .catch((err) => { + console.warn('An Error occured while uploading file', err); + reject(err); + }) + .finally(() => { + this.component.emit('fileUploadingEnd', uploadPromise); + }); + }), + ); } abort() {} diff --git a/src/providers/storage/url.js b/src/providers/storage/url.js index 18fc087248..174c256bce 100644 --- a/src/providers/storage/url.js +++ b/src/providers/storage/url.js @@ -17,8 +17,7 @@ function url(formio) { for (const header in headers) { xhr.setRequestHeader(header, headers[header]); } - } - else { + } else { xhr[prop] = parsedOptions[prop]; } } @@ -27,7 +26,7 @@ function url(formio) { const xhrRequest = (url, name, query, data, options, progressCallback, abortCallback) => { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); - const json = (typeof data === 'string'); + const json = typeof data === 'string'; const fd = new FormData(); if (typeof progressCallback === 'function') { @@ -49,23 +48,23 @@ function url(formio) { // Need to test if xhr.response is decoded or not. let respData = {}; try { - respData = (typeof xhr.response === 'string') ? JSON.parse(xhr.response) : {}; - respData = (respData && respData.data) ? respData.data : respData; - } - catch (ignoreErr) { + respData = typeof xhr.response === 'string' ? JSON.parse(xhr.response) : {}; + respData = respData && respData.data ? respData.data : respData; + } catch (ignoreErr) { respData = {}; } // Get the url of the file. - let respUrl = respData.hasOwnProperty('url') ? respData.url : `${xhr.responseURL}/${name}`; + let respUrl = respData.hasOwnProperty('url') + ? respData.url + : `${xhr.responseURL}/${name}`; // If they provide relative url, then prepend the url. if (respUrl && respUrl[0] === '/') { respUrl = `${url}${respUrl}`; } resolve({ url: respUrl, data: respData }); - } - else { + } else { reject(xhr.response || 'Unable to upload file'); } }; @@ -101,17 +100,36 @@ function url(formio) { return { title: 'Url', name: 'url', - uploadFile(file, name, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, abortCallback) { - const uploadRequest = function(form) { - return xhrRequest(url, name, { - baseUrl: encodeURIComponent(formio.projectUrl), - project: form ? form.project : '', - form: form ? form._id : '' - }, { - [fileKey]:file, + uploadFile( + file, + name, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + abortCallback, + ) { + const uploadRequest = function (form) { + return xhrRequest( + url, name, - dir - }, options, progressCallback, abortCallback).then(response => { + { + baseUrl: encodeURIComponent(formio.projectUrl), + project: form ? form.project : '', + form: form ? form._id : '', + }, + { + [fileKey]: file, + name, + dir, + }, + options, + progressCallback, + abortCallback, + ).then((response) => { // Store the project and form url along with the metadata. response.data = response.data || {}; response.data.baseUrl = formio.projectUrl; @@ -123,14 +141,13 @@ function url(formio) { url: response.url, size: file.size, type: file.type, - data: response.data + data: response.data, }; }); }; if (file.private && formio.formId) { return formio.loadForm().then((form) => uploadRequest(form)); - } - else { + } else { return uploadRequest(); } }, @@ -141,8 +158,7 @@ function url(formio) { xhr.onload = () => { if (xhr.status >= 200 && xhr.status < 300) { resolve('File deleted'); - } - else { + } else { reject(xhr.response || 'Unable to delete file'); } }; @@ -158,12 +174,14 @@ function url(formio) { if (formio.submissionId && file.data) { file.data.submission = formio.submissionId; } - return xhrRequest(file.url, file.name, {}, JSON.stringify(file)).then(response => response.data); + return xhrRequest(file.url, file.name, {}, JSON.stringify(file)).then( + (response) => response.data, + ); } // Return the original as there is nothing to do. return Promise.resolve(file); - } + }, }; } diff --git a/src/providers/storage/xhr.js b/src/providers/storage/xhr.js index cb15e70299..3711c60cf7 100644 --- a/src/providers/storage/xhr.js +++ b/src/providers/storage/xhr.js @@ -4,7 +4,7 @@ export const setXhrHeaders = (formio, xhr) => { if (headers) { const ValidHeaders = { 'Content-Disposition': true, - 'Authorization': true, + Authorization: true, }; for (const header in headers) { @@ -19,9 +19,24 @@ const XHR = { return _trim(text, '/'); }, path(items) { - return items.filter(item => !!item).map(XHR.trim).join('/'); + return items + .filter((item) => !!item) + .map(XHR.trim) + .join('/'); }, - async upload(formio, type, xhrCallback, file, fileName, dir, progressCallback, groupPermissions, groupId, abortCallback, multipartOptions) { + async upload( + formio, + type, + xhrCallback, + file, + fileName, + dir, + progressCallback, + groupPermissions, + groupId, + abortCallback, + multipartOptions, + ) { // make request to Form.io server const token = formio.getToken(); let response; @@ -29,7 +44,7 @@ const XHR = { response = await fetch(`${formio.formUrl}/storage/${type}`, { method: 'POST', headers: { - 'Accept': 'application/json', + Accept: 'application/json', 'Content-Type': 'application/json; charset=UTF-8', ...(token ? { 'x-jwt-token': token } : {}), }, @@ -39,11 +54,10 @@ const XHR = { type: file.type, groupPermissions, groupId, - multipart: multipartOptions - }) + multipart: multipartOptions, + }), }); - } - catch (err) { + } catch (err) { // only throws on network errors err.networkError = true; throw err; @@ -59,7 +73,13 @@ const XHR = { throw new Error(message || 'Unable to sign file.'); } const serverResponse = await response.json(); - return await XHR.makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback); + return await XHR.makeXhrRequest( + formio, + xhrCallback, + serverResponse, + progressCallback, + abortCallback, + ); }, makeXhrRequest(formio, xhrCallback, serverResponse, progressCallback, abortCallback) { return new Promise((resolve, reject) => { @@ -69,53 +89,53 @@ const XHR = { xhr.open(...params); setXhrHeaders(formio, xhr); }; - Promise.resolve(xhrCallback(xhr, serverResponse, abortCallback)).then((payload) => { - // if payload is nullish we can assume the provider took care of the entire upload process - if (!payload) { - return resolve(serverResponse); - } - // Fire on network error. - xhr.onerror = (err) => { - err.networkError = true; - reject(err); - }; - - // Fire on network abort. - xhr.onabort = (err) => { - err.networkError = true; - reject(err); - }; + Promise.resolve(xhrCallback(xhr, serverResponse, abortCallback)) + .then((payload) => { + // if payload is nullish we can assume the provider took care of the entire upload process + if (!payload) { + return resolve(serverResponse); + } + // Fire on network error. + xhr.onerror = (err) => { + err.networkError = true; + reject(err); + }; - // Set the onabort error callback. - xhr.onabort = reject; + // Fire on network abort. + xhr.onabort = (err) => { + err.networkError = true; + reject(err); + }; - if (typeof progressCallback === 'function') { - xhr.upload.onprogress = progressCallback; - } + // Set the onabort error callback. + xhr.onabort = reject; - if (typeof abortCallback === 'function') { - abortCallback(() => xhr.abort()); - } - // Fired when the response has made it back from the server. - xhr.onload = () => { - if (xhr.status >= 200 && xhr.status < 300) { - resolve(serverResponse); - } - else if (xhr.status === 504) { - const error = new Error('Network request failed'); - error.networkError = true; - reject(error); + if (typeof progressCallback === 'function') { + xhr.upload.onprogress = progressCallback; } - else { - reject(xhr.response || 'Unable to upload file'); + + if (typeof abortCallback === 'function') { + abortCallback(() => xhr.abort()); } - }; + // Fired when the response has made it back from the server. + xhr.onload = () => { + if (xhr.status >= 200 && xhr.status < 300) { + resolve(serverResponse); + } else if (xhr.status === 504) { + const error = new Error('Network request failed'); + error.networkError = true; + reject(error); + } else { + reject(xhr.response || 'Unable to upload file'); + } + }; - // Get the request and send it to the server. - xhr.send(payload); - }).catch(reject); + // Get the request and send it to the server. + xhr.send(payload); + }) + .catch(reject); }); - } + }, }; export default XHR; diff --git a/src/sass/formio.embed.scss b/src/sass/formio.embed.scss index 54c1fd832c..93c1e816d7 100644 --- a/src/sass/formio.embed.scss +++ b/src/sass/formio.embed.scss @@ -1,45 +1,49 @@ .formio-loader { - position: relative; - min-height: 100px; + position: relative; + min-height: 100px; } - + .loader-wrapper { - z-index: 1000; - position:absolute; - top: 0px; - left: 0px; - bottom: 0px; - right: 0px; - background-color:rgba(0, 0, 0, 0); + z-index: 1000; + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; + background-color: rgba(0, 0, 0, 0); } .loader { - position:absolute; - left: 50%; - top: 50%; - margin-left: -30px; - margin-top: -30px; - z-index: 10000; - display: inline-block; - border: 6px solid #f3f3f3; /* Light grey */ - border-top: 6px solid #3498db; /* Blue */ - border-radius: 50%; - width: 60px; - height: 60px; - animation: spin 2s linear infinite; + position: absolute; + left: 50%; + top: 50%; + margin-left: -30px; + margin-top: -30px; + z-index: 10000; + display: inline-block; + border: 6px solid #f3f3f3; /* Light grey */ + border-top: 6px solid #3498db; /* Blue */ + border-radius: 50%; + width: 60px; + height: 60px; + animation: spin 2s linear infinite; } .alert-success { - position: relative; - padding: 1rem; - margin-bottom: 1rem; - color: #0a3622; - background-color: #d1e7dd; - border: #a3cfbb; - border-radius: 0.375rem; + position: relative; + padding: 1rem; + margin-bottom: 1rem; + color: #0a3622; + background-color: #d1e7dd; + border: #a3cfbb; + border-radius: 0.375rem; } @keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} \ No newline at end of file + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/src/sass/formio.form.builder.scss b/src/sass/formio.form.builder.scss index 7ae7b97bc6..02362deb3c 100644 --- a/src/sass/formio.form.builder.scss +++ b/src/sass/formio.form.builder.scss @@ -1,4 +1,3 @@ - .formbuilder { position: relative; } @@ -38,7 +37,7 @@ margin-bottom: 15px; .formio-component-htmlelement { border: dotted 2px #e8e8e8; - [ref=html]:empty:before { + [ref='html']:empty:before { content: 'HTML Content'; color: #aaa; } @@ -64,9 +63,9 @@ z-index: 1001; margin: 4px 4px 0 0; z-index: 1001; - -webkit-box-shadow: 0px 0px 10px 1px rgba(48,113,169,0.6); - -moz-box-shadow: 0px 0px 10px 1px rgba(48,113,169,0.6); - box-shadow: 0px 0px 10px 1px rgba(48,113,169,0.6); + -webkit-box-shadow: 0px 0px 10px 1px rgba(48, 113, 169, 0.6); + -moz-box-shadow: 0px 0px 10px 1px rgba(48, 113, 169, 0.6); + box-shadow: 0px 0px 10px 1px rgba(48, 113, 169, 0.6); } .formbuilder .formio-component-hidden, @@ -85,7 +84,9 @@ padding-top: 0.5em; } -.btn-xxs, .btn-group-xxs > .btn, .component-btn-group .component-settings-button { +.btn-xxs, +.btn-group-xxs > .btn, +.component-btn-group .component-settings-button { padding: 2px 2px; font-size: 10px; line-height: 1.2em; @@ -112,13 +113,13 @@ } .formio-pdf-builder { - position:relative; + position: relative; } .formio-drop-zone { display: none; position: absolute; - z-index:10; + z-index: 10; background-color: #0d87e9; opacity: 0.1; } @@ -166,8 +167,8 @@ } .formio-wizard-builder-component-title { - color:#6c757d; - text-align:center; + color: #6c757d; + text-align: center; padding: 0.5rem; } diff --git a/src/sass/formio.form.scss b/src/sass/formio.form.scss index 4d0767d9d9..b8acbaa342 100644 --- a/src/sass/formio.form.scss +++ b/src/sass/formio.form.scss @@ -17,11 +17,11 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; border-color: #f5c6cb; .formio-errors .error { - color: #C20000; + color: #c20000; } .field-required:after { - color:#C20000; + color: #c20000; } } @@ -40,7 +40,7 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; .formio-component.alert-danger .invalid-feedback, .formio-component.has-message .invalid-feedback, .formio-component-modal-wrapper.has-message .invalid-feedback, -.formio-component-modal-wrapper.has-error .invalid-feedback { +.formio-component-modal-wrapper.has-error .invalid-feedback { display: block; color: inherit; margin-top: 4px; @@ -71,7 +71,7 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; padding-right: 10px; } -.has-feedback .form-control[type=hidden] { +.has-feedback .form-control[type='hidden'] { padding-right: 0px; } @@ -80,7 +80,7 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; } .ql-source:after { - content: "[source]"; + content: '[source]'; white-space: nowrap; } @@ -94,21 +94,22 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; outline: none; padding: 20px; line-height: 24px; - font-family: Consolas, Menlo, Monaco, "Courier New", monospace; + font-family: Consolas, Menlo, Monaco, 'Courier New', monospace; position: absolute; top: 0; bottom: 0; border: none; - display:none; + display: none; } .formio-component-tags tags { background-color: #fff; } -.field-required:after, .tab-error::after { - content:" *"; - color:#EB0000; +.field-required:after, +.tab-error::after { + content: ' *'; + color: #eb0000; } .field-required:after { @@ -197,7 +198,7 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; flex-basis: 85%; } -.card.card-vertical ul>li>.nav-link-vertical { +.card.card-vertical ul > li > .nav-link-vertical { border-right-color: transparent; border-radius: 4px 0 0 4px; margin-right: 0; @@ -212,7 +213,7 @@ $autocomplete-in-dialog-z-index: $dialog-z-index + 1000; } } -.nav-tabs-vertical>li { +.nav-tabs-vertical > li { margin: 0 -1px 0 0; } @@ -260,7 +261,7 @@ td > .formio-form-group { } .btn.signature-pad-refresh { - position:absolute; + position: absolute; left: 0; top: 0; z-index: 1000; @@ -268,7 +269,7 @@ td > .formio-form-group { line-height: 0; } -[dir="rtl"] .btn.signature-pad-refresh { +[dir='rtl'] .btn.signature-pad-refresh { left: unset; right: 0; } @@ -278,14 +279,14 @@ td > .formio-form-group { } .formio-component-multiple .is-invalid { - border-color: #F04124; + border-color: #f04124; } .formio-component-multiple :not(.is-invalid) { border-color: #ccc; } -.choices__list--dropdown .choices__item--selectable{ +.choices__list--dropdown .choices__item--selectable { padding-right: 0px; } @@ -295,7 +296,7 @@ td > .formio-form-group { .signature-pad-footer { text-align: center; - color: #C3C3C3; + color: #c3c3c3; } .is-active.choices__list--dropdown { @@ -325,18 +326,18 @@ td > .formio-form-group { } /* fix for choices.js .choices__input container in rtl */ -.choices[dir="rtl"] > * { +.choices[dir='rtl'] > * { text-align: right; } /* end fix for choices.js .choices__input container in rtl */ /* fix for choices.js deletable items in rtl */ -.choices[dir="rtl"] .choices__list--multiple .choices__item[data-deletable] { +.choices[dir='rtl'] .choices__list--multiple .choices__item[data-deletable] { padding-left: 5px; float: right; } -.choices[dir="rtl"] .choices__list--multiple .choices__item[data-deletable] .choices__button { +.choices[dir='rtl'] .choices__list--multiple .choices__item[data-deletable] .choices__button { float: left; margin: 0 8px 0 -4px; padding-left: unset; @@ -391,12 +392,14 @@ td > .formio-form-group { border-color: #127abe; } -.formio-component-file .fileSelector .glyphicon, .formio-component-file .fileSelector .fa { +.formio-component-file .fileSelector .glyphicon, +.formio-component-file .fileSelector .fa { font-size: 20px; margin-right: 5px; } -[dir="rtl"] .formio-component-file .fileSelector .fa, [dir="rtl"] .formio-component-file .fileSelector .glyphicon { +[dir='rtl'] .formio-component-file .fileSelector .fa, +[dir='rtl'] .formio-component-file .fileSelector .glyphicon { margin-right: unset; margin-left: 5px; } @@ -479,8 +482,8 @@ td > .formio-form-group { .formio-dialog.formio-dialog-disabled-animation, .formio-dialog.formio-dialog-disabled-animation .formio-dialog-overlay, .formio-dialog.formio-dialog-disabled-animation .formio-dialog-content { - -webkit-animation: none!important; - animation: none!important; + -webkit-animation: none !important; + animation: none !important; } .formio-dialog-overlay { @@ -614,16 +617,16 @@ body.formio-dialog-open { } .formio-dialog.formio-dialog-theme-default.formio-dialog-closing .formio-dialog-content { - -webkit-animation: formio-dialog-flyout .5s; - animation: formio-dialog-flyout .5s; + -webkit-animation: formio-dialog-flyout 0.5s; + animation: formio-dialog-flyout 0.5s; } .formio-dialog.formio-dialog-theme-default .formio-dialog-content { - -webkit-animation: formio-dialog-flyin .5s; - animation: formio-dialog-flyin .5s; + -webkit-animation: formio-dialog-flyin 0.5s; + animation: formio-dialog-flyin 0.5s; background: #f0f0f0; border-radius: 5px; - font-family: 'Helvetica',sans-serif; + font-family: 'Helvetica', sans-serif; font-size: 1.1em; line-height: 1.5em; margin: 0 auto; @@ -647,7 +650,7 @@ body.formio-dialog-open { cursor: pointer; } -.component-settings .nav>li>a { +.component-settings .nav > li > a { padding: 8px 10px; } @@ -669,7 +672,7 @@ body.formio-dialog-open { } .formio-dialog.formio-dialog-theme-default .formio-dialog-message { - margin-bottom: .5em; + margin-bottom: 0.5em; } .formio-dialog.formio-dialog-theme-default .formio-dialog-input { @@ -677,27 +680,27 @@ body.formio-dialog-open { } .formio-dialog.formio-dialog-theme-default .formio-dialog-input textarea, -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="text"], -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="password"], -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="email"], -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="url"] { +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='text'], +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='password'], +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='email'], +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='url'] { background: #fff; border: 0; border-radius: 3px; font-family: inherit; font-size: inherit; font-weight: inherit; - margin: 0 0 .25em; + margin: 0 0 0.25em; min-height: 2.5em; - padding: .25em .67em; + padding: 0.25em 0.67em; width: 100%; } .formio-dialog.formio-dialog-theme-default .formio-dialog-input textarea:focus, -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="text"]:focus, -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="password"]:focus, -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="email"]:focus, -.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type="url"]:focus { +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='text']:focus, +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='password']:focus, +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='email']:focus, +.formio-dialog.formio-dialog-theme-default .formio-dialog-input input[type='url']:focus { box-shadow: inset 0 0 0 2px #8dbdf1; outline: none; } @@ -719,11 +722,11 @@ body.formio-dialog-open { cursor: pointer; float: right; font-family: inherit; - font-size: .8em; - letter-spacing: .1em; + font-size: 0.8em; + letter-spacing: 0.1em; line-height: 1em; - margin: 0 0 0 .5em; - padding: .75em 2em; + margin: 0 0 0 0.5em; + padding: 0.75em 2em; text-transform: uppercase; } @@ -754,12 +757,12 @@ body.formio-dialog-open { margin: 0; } -.formio-dialog-content [ref="dialogHeader"] { +.formio-dialog-content [ref='dialogHeader'] { padding-right: 15px; } .formio-placeholder { - position:absolute; + position: absolute; color: #999; } @@ -781,11 +784,11 @@ body.formio-dialog-open { opacity: 1; } -.tooltip[x-placement="right"] .tooltip-arrow { +.tooltip[x-placement='right'] .tooltip-arrow { border-right: 5px solid black; } -.tooltip[x-placement="right"] .tooltip-inner { +.tooltip[x-placement='right'] .tooltip-inner { margin-left: 8px; } @@ -836,12 +839,16 @@ body.formio-dialog-open { .formio-component-radio.formio-component-label-hidden.required .form-check-label:before, .formio-component-selectboxes.formio-component-label-hidden.required .form-check-label:before { position: relative; - content: "* "; - color:#EB0000; + content: '* '; + color: #eb0000; } -.formio-component-radio.formio-component-label-hidden.required .form-check .label-position-right.form-check-label:before, -.formio-component-selectboxes.formio-component-label-hidden.required .form-check .label-position-right.form-check-label:before { +.formio-component-radio.formio-component-label-hidden.required + .form-check + .label-position-right.form-check-label:before, +.formio-component-selectboxes.formio-component-label-hidden.required + .form-check + .label-position-right.form-check-label:before { right: 20px; } @@ -862,7 +869,7 @@ body.formio-dialog-open { overflow-wrap: break-word; } -.formio-component-submit button[disabled]+.has-error { +.formio-component-submit button[disabled] + .has-error { display: block; } @@ -871,7 +878,7 @@ body.formio-dialog-open { margin-bottom: 0; } -.formio-choices[data-type=select-multiple] .form-control { +.formio-choices[data-type='select-multiple'] .form-control { height: auto; } @@ -896,9 +903,9 @@ body.formio-dialog-open { .formio-component-htmlelement { word-wrap: break-word; - ol, ul { + ol, + ul { margin-left: 10px; - } } @@ -945,13 +952,13 @@ body.formio-dialog-open { margin-right: 4px; } -[dir="rtl"] .formio-collapse-icon { +[dir='rtl'] .formio-collapse-icon { margin-right: unset; margin-left: 4px; } -.formio-component-datetime .form-control[type="datetime-local"] ~ .input-group-addon, -.formio-component-dateTime .form-control[type="datetime-local"] ~ .input-group-addon { +.formio-component-datetime .form-control[type='datetime-local'] ~ .input-group-addon, +.formio-component-dateTime .form-control[type='datetime-local'] ~ .input-group-addon { width: auto; } @@ -961,7 +968,9 @@ body.formio-dialog-open { right: 0; visibility: hidden; opacity: 0; - transition: opacity 200ms linear, visibility 0ms 200ms; + transition: + opacity 200ms linear, + visibility 0ms 200ms; } .formio-component-datagrid { @@ -970,19 +979,23 @@ body.formio-dialog-open { height: auto; .datagrid-table { - &, td, th { + &, + td, + th { border: 3px solid #ddd !important; padding: 10px; } - &>tbody>tr>td:last-child { + & > tbody > tr > td:last-child { position: relative; } - &>tbody>tr:hover>td:last-child .formio-datagrid-remove { + & > tbody > tr:hover > td:last-child .formio-datagrid-remove { visibility: visible; opacity: 1; - transition: visibility 0ms, opacity 200ms linear; + transition: + visibility 0ms, + opacity 200ms linear; } } @@ -992,7 +1005,7 @@ body.formio-dialog-open { } .datagrid-table { - &>tbody>tr>td { + & > tbody > tr > td { word-break: auto-phrase; } } @@ -1017,13 +1030,17 @@ body.formio-dialog-open { left: 0; visibility: hidden; opacity: 0; - transition: opacity 200ms linear, visibility 0ms 200ms; + transition: + opacity 200ms linear, + visibility 0ms 200ms; } .formio-modaledit-view-container:hover .formio-modaledit-edit { visibility: visible; opacity: 1; - transition: visibility 0ms, opacity 200ms linear; + transition: + visibility 0ms, + opacity 200ms linear; } } @@ -1037,20 +1054,88 @@ body.formio-dialog-open { } .reset-margins { - html, body, div, span, applet, object, iframe, - h1, h2, h3, h4, h5, h6, p, blockquote, pre, - a, abbr, acronym, address, big, cite, code, - del, dfn, em, img, ins, kbd, q, s, samp, - small, strike, strong, sub, sup, tt, var, - b, u, i, center, - dl, dt, dd, ol, ul, li, - fieldset, form, label, legend, - table, caption, tbody, tfoot, thead, tr, th, td, - article, aside, canvas, details, embed, - figure, figcaption, footer, header, hgroup, - menu, nav, output, ruby, section, summary, - time, mark, audio, video { - margin: 0; + html, + body, + div, + span, + applet, + object, + iframe, + h1, + h2, + h3, + h4, + h5, + h6, + p, + blockquote, + pre, + a, + abbr, + acronym, + address, + big, + cite, + code, + del, + dfn, + em, + img, + ins, + kbd, + q, + s, + samp, + small, + strike, + strong, + sub, + sup, + tt, + var, + b, + u, + i, + center, + dl, + dt, + dd, + ol, + ul, + li, + fieldset, + form, + label, + legend, + table, + caption, + tbody, + tfoot, + thead, + tr, + th, + td, + article, + aside, + canvas, + details, + embed, + figure, + figcaption, + footer, + header, + hgroup, + menu, + nav, + output, + ruby, + section, + summary, + time, + mark, + audio, + video { + margin: 0; } } @@ -1060,15 +1145,15 @@ body.formio-dialog-open { } } -.formio-component-select select[disabled="disabled"] { +.formio-component-select select[disabled='disabled'] { -webkit-appearance: none; -moz-appearance: none; text-indent: 1px; text-overflow: ''; } -.formio-component-select div[disabled="disabled"] button, -.formio-component-select .choices.is-disabled[data-type*=select-one]:after { +.formio-component-select div[disabled='disabled'] button, +.formio-component-select .choices.is-disabled[data-type*='select-one']:after { display: none; } @@ -1119,11 +1204,7 @@ body.formio-dialog-open { margin-bottom: 10px; } -.no-top-border-table - > .table - > tbody - > tr:first-child - > td { +.no-top-border-table > .table > tbody > tr:first-child > td { border-top: none; } @@ -1150,7 +1231,7 @@ body.formio-dialog-open { } } -.table-responsive[ref=component] { +.table-responsive[ref='component'] { overflow-x: visible; } @@ -1164,7 +1245,8 @@ body.formio-dialog-open { } .ck.ck-editor { - ul, ol { + ul, + ol { margin-left: 10px; } } @@ -1174,36 +1256,45 @@ div[data-oembed-url] { width: 100%; } -.radio label.label-position-left, .checkbox label.label-position-left, -.radio label.label-position-top, .checkbox label.label-position-top, -.radio label.label-position-bottom, .checkbox label.label-position-bottom { +.radio label.label-position-left, +.checkbox label.label-position-left, +.radio label.label-position-top, +.checkbox label.label-position-top, +.radio label.label-position-bottom, +.checkbox label.label-position-bottom { padding-left: 0; } -.radio label.label-position-top span, .checkbox label.label-position-top span, -.radio label.label-position-bottom span, .checkbox label.label-position-bottom span { +.radio label.label-position-top span, +.checkbox label.label-position-top span, +.radio label.label-position-bottom span, +.checkbox label.label-position-bottom span { display: block; } -.radio label.label-position-top input[type="radio"], .checkbox label.label-position-top input[type="checkbox"], -.radio label.label-position-bottom input[type="radio"], .checkbox label.label-position-bottom input[type="checkbox"] { +.radio label.label-position-top input[type='radio'], +.checkbox label.label-position-top input[type='checkbox'], +.radio label.label-position-bottom input[type='radio'], +.checkbox label.label-position-bottom input[type='checkbox'] { position: relative; margin-left: 0; } -.radio label.label-position-top input[type="radio"], .checkbox label.label-position-top input[type="checkbox"] { +.radio label.label-position-top input[type='radio'], +.checkbox label.label-position-top input[type='checkbox'] { margin-top: 4px; } -.radio label.label-position-bottom input[type="radio"], .checkbox label.label-position-bottom input[type="checkbox"] { +.radio label.label-position-bottom input[type='radio'], +.checkbox label.label-position-bottom input[type='checkbox'] { margin-bottom: 8px; } -.radio label.label-position-left input[type="radio"] { +.radio label.label-position-left input[type='radio'] { margin-left: 10px; } -.checkbox label.label-position-left input[type=checkbox] { +.checkbox label.label-position-left input[type='checkbox'] { margin-left: 4px; position: relative; } @@ -1228,7 +1319,7 @@ div[data-oembed-url] { display: table; clear: both; text-align: center; - margin: 1em auto + margin: 1em auto; } /* ckeditor5-image/theme/image.css */ .formio-component-content .image > img { @@ -1244,15 +1335,15 @@ div[data-oembed-url] { word-break: break-word; color: hsl(0, 0%, 20%); background-color: hsl(0, 0%, 97%); - padding: .6em; - font-size: .75em; + padding: 0.6em; + font-size: 0.75em; outline-offset: -1px; } /* ckeditor5-image/theme/imageresize.css */ .formio-component-content .image.image_resized { max-width: 100%; display: block; - box-sizing: border-box + box-sizing: border-box; } /* ckeditor5-image/theme/imageresize.css */ .formio-component-content .image.image_resized img { @@ -1270,19 +1361,31 @@ div[data-oembed-url] { min-width: 15em; } /* ckeditor5-image/theme/imagestyle.css */ -.formio-component-content .image-style-side:not(.image_resized), .formio-component-content .image-style-align-left:not(.image_resized), .formio-component-content .image-style-align-center:not(.image_resized), .formio-component-content .image-style-align-right:not(.image_resized) { +.formio-component-content .image-style-side:not(.image_resized), +.formio-component-content .image-style-align-left:not(.image_resized), +.formio-component-content .image-style-align-center:not(.image_resized), +.formio-component-content .image-style-align-right:not(.image_resized) { max-width: 50%; } /* ckeditor5-image/theme/imagestyle.css */ -.formio-component-content .image-style-side:not(.image_resized), .formio-component-content .image-style-align-left:not(.image_resized), .formio-component-content .image-style-align-center:not(.image_resized), .formio-component-content .image-style-align-right:not(.image_resized) { +.formio-component-content .image-style-side:not(.image_resized), +.formio-component-content .image-style-align-left:not(.image_resized), +.formio-component-content .image-style-align-center:not(.image_resized), +.formio-component-content .image-style-align-right:not(.image_resized) { max-width: 50%; } /* ckeditor5-image/theme/imagestyle.css */ -.formio-component-content .image-style-side:not(.image_resized), .formio-component-content .image-style-align-left:not(.image_resized), .formio-component-content .image-style-align-center:not(.image_resized), .formio-component-content .image-style-align-right:not(.image_resized) { +.formio-component-content .image-style-side:not(.image_resized), +.formio-component-content .image-style-align-left:not(.image_resized), +.formio-component-content .image-style-align-center:not(.image_resized), +.formio-component-content .image-style-align-right:not(.image_resized) { max-width: 50%; } /* ckeditor5-image/theme/imagestyle.css */ -.formio-component-content .image-style-side:not(.image_resized), .formio-component-content .image-style-align-left:not(.image_resized), .formio-component-content .image-style-align-center:not(.image_resized), .formio-component-content .image-style-align-right:not(.image_resized) { +.formio-component-content .image-style-side:not(.image_resized), +.formio-component-content .image-style-align-left:not(.image_resized), +.formio-component-content .image-style-align-center:not(.image_resized), +.formio-component-content .image-style-align-right:not(.image_resized) { max-width: 50%; } /* ckeditor5-image/theme/imagestyle.css */ @@ -1316,7 +1419,7 @@ div[data-oembed-url] { border-left: solid 5px hsl(0, 0%, 80%); } /* ckeditor5-block-quote/theme/blockquote.css */ -.formio-component-content[dir="rtl"] blockquote { +.formio-component-content[dir='rtl'] blockquote { border-left: 0; border-right: solid 5px hsl(0, 0%, 80%); } @@ -1371,7 +1474,14 @@ div[data-oembed-url] { .autocomplete { background: white; - font: 14px/22px "-apple-system", BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font: + 14px/22px '-apple-system', + BlinkMacSystemFont, + 'Segoe UI', + Roboto, + 'Helvetica Neue', + Arial, + sans-serif; overflow: auto; box-sizing: border-box; border: 1px solid rgba(50, 50, 50, 0.6); @@ -1413,7 +1523,7 @@ div[data-oembed-url] { //show textarea submission in read-only mode and PDF view with initial line and space formatting .formio-component-textarea { - div.formio-editor-read-only-content[ref="input"] { + div.formio-editor-read-only-content[ref='input'] { white-space: pre-wrap; } } @@ -1423,19 +1533,19 @@ div[data-oembed-url] { max-width: 100%; } - li[data-list="bullet"] { + li[data-list='bullet'] { list-style-type: none; - .ql-ui{ + .ql-ui { padding-right: 0.5rem; &::before { - content: "\2022"; + content: '\2022'; } } } - li[data-list="ordered"] { + li[data-list='ordered'] { list-style-type: none; counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; counter-increment: list-0; @@ -1458,9 +1568,10 @@ div[data-oembed-url] { border: 1px double #b3b3b3; table-layout: fixed; - th, td { + th, + td { min-width: 2em; - padding: .4em; + padding: 0.4em; border: 1px solid #bfbfbf; } } @@ -1481,13 +1592,13 @@ div[data-oembed-url] { .page-link { cursor: pointer; - color: #1C74D9; + color: #1c74d9; } .page-item.active .page-link { color: #fff; - background-color: #1C74D9; - border-color: #1C74D9; + background-color: #1c74d9; + border-color: #1c74d9; } } @@ -1531,7 +1642,8 @@ div[data-oembed-url] { } } - .progress, &-progress { + .progress, + &-progress { position: relative; border-radius: 0px; height: 8px; @@ -1552,46 +1664,52 @@ div[data-oembed-url] { .classic-pagination-page { &.complete { - .progress-bar, .classic-pagination-progress-bar { + .progress-bar, + .classic-pagination-progress-bar { width: 100%; } } &.active { - .progress-bar, .classic-pagination-progress-bar { + .progress-bar, + .classic-pagination-progress-bar { width: 50%; } } &.disabled { .classic-pagination-dot { background-color: #f5f5f5; - &::after{ + &::after { opacity: 0; } } } } -.classic-pagination-page { +.classic-pagination-page { &:first-child { - .progress, .classic-pagination-progress { + .progress, + .classic-pagination-progress { left: 50%; width: 50%; } &.active { - .progress-bar, .classic-pagination-progress-bar { + .progress-bar, + .classic-pagination-progress-bar { width: 0%; } } } &:last-child { - .progress, .classic-pagination-progress { + .progress, + .classic-pagination-progress { width: 50%; } &.active { - .progress-bar, .classic-pagination-progress-bar { + .progress-bar, + .classic-pagination-progress-bar { width: 100%; } } @@ -1606,7 +1724,7 @@ div[data-oembed-url] { cursor: pointer; } -[ref="passwordStrengthIndicator"] { +[ref='passwordStrengthIndicator'] { display: inline; } @@ -1614,7 +1732,7 @@ div[data-oembed-url] { display: flex; height: 5px; - [class^="security-"] { + [class^='security-'] { width: 100%; height: 100%; } @@ -1656,7 +1774,7 @@ div[data-oembed-url] { } } -.formio-component [ref="valueMaskInput"] { +.formio-component [ref='valueMaskInput'] { display: none; } @@ -1735,11 +1853,13 @@ div[data-oembed-url] { } } -.ace_editor, .ace_editor div, .ace_editor span { - font-family: "Monaco", "Menlo", "Ubuntu Mono", "Droid Sans Mono", "Consolas", monospace !important; +.ace_editor, +.ace_editor div, +.ace_editor span { + font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Droid Sans Mono', 'Consolas', monospace !important; } -span[role="link"] { +span[role='link'] { text-decoration: underline; cursor: pointer; } diff --git a/src/templates/index.js b/src/templates/index.js index 44b9ba1e02..4f53c4cc71 100644 --- a/src/templates/index.js +++ b/src/templates/index.js @@ -1,4 +1,4 @@ import bootstrap from '@formio/bootstrap/bootstrap5'; export default { - bootstrap: bootstrap.templates.bootstrap5 + bootstrap: bootstrap.templates.bootstrap5, }; diff --git a/src/translations/en.js b/src/translations/en.js index 49d8ac2488..b353762499 100644 --- a/src/translations/en.js +++ b/src/translations/en.js @@ -14,7 +14,7 @@ export default { required: '{{field}} is required', unique: '{{field}} must be unique', array: '{{field}} must be an array', - array_nonempty: '{{field}} must be a non-empty array', + array_nonempty: '{{field}} must be a non-empty array', nonarray: '{{field}} must not be an array', select: '{{field}} contains an invalid selection', pattern: '{{field}} does not match the pattern {{pattern}}', @@ -30,11 +30,11 @@ export default { minYear: '{{field}} should not contain year less than {{minYear}}', minSelectedCount: 'You must select at least {{minCount}} items', maxSelectedCount: 'You may only select up to {{maxCount}} items', - invalid_email: '{{field}} must be a valid email.', - invalid_url: '{{field}} must be a valid url.', - invalid_regex: '{{field}} does not match the pattern {{regex}}.', - invalid_date: '{{field}} is not a valid date.', - invalid_day: '{{field}} is not a valid day.', + invalid_email: '{{field}} must be a valid email.', + invalid_url: '{{field}} must be a valid url.', + invalid_regex: '{{field}} does not match the pattern {{regex}}.', + invalid_date: '{{field}} is not a valid date.', + invalid_day: '{{field}} is not a valid day.', invalidValueProperty: 'Invalid Value Property', mask: '{{field}} does not match the mask.', valueIsNotAvailable: '{{ field }} is an invalid value.', @@ -66,9 +66,9 @@ export default { restoreDraftError: 'Unable to restore draft.', time: 'Invalid time', cancelButtonAriaLabel: 'Cancel button. Click to reset the form', - previousButtonAriaLabel:'Previous button. Click to go back to the previous tab', - nextButtonAriaLabel:'Next button. Click to go to the next tab', - submitButtonAriaLabel:'Submit Form button. Click to submit the form', + previousButtonAriaLabel: 'Previous button. Click to go back to the previous tab', + nextButtonAriaLabel: 'Next button. Click to go to the next tab', + submitButtonAriaLabel: 'Submit Form button. Click to submit the form', reCaptchaTokenValidationError: 'ReCAPTCHA: Token validation error', reCaptchaTokenNotSpecifiedError: 'ReCAPTCHA: Token is not specified in submission', apiKey: 'API Key is not unique: {{key}}', @@ -77,5 +77,5 @@ export default { requiredDayField: '{{ field }} is required', requiredDayEmpty: '{{ field }} is required', requiredMonthField: '{{ field }} is required', - requiredYearField: '{{ field }} is required' + requiredYearField: '{{ field }} is required', }; diff --git a/src/utils/ChoicesWrapper.js b/src/utils/ChoicesWrapper.js index 9ae4d9829c..bee10e62f4 100644 --- a/src/utils/ChoicesWrapper.js +++ b/src/utils/ChoicesWrapper.js @@ -9,7 +9,7 @@ import Choices from '@formio/choices.js'; * @type {Choices._generatePlaceholderValue} * @private */ -Choices.prototype._generatePlaceholderValue = function() { +Choices.prototype._generatePlaceholderValue = function () { if (this._isSelectElement && this.passedElement.placeholderOption) { const { placeholderOption } = this.passedElement; return placeholderOption ? placeholderOption.text : false; @@ -58,12 +58,12 @@ class ChoicesWrapper extends Choices { var target = (event || event.touches[0]).target; var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target); if (touchWasWithinContainer) { - var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element; + var containerWasExactTarget = + target === this.containerOuter.element || target === this.containerInner.element; if (containerWasExactTarget) { if (this._isTextElement) { this.input.focus(); - } - else if (this._isSelectMultipleElement) { + } else if (this._isSelectMultipleElement) { this.input.focus(); this.showDropdown(); } @@ -79,12 +79,7 @@ class ChoicesWrapper extends Choices { return super._handleButtonAction(activeItems, element); } - if ( - !activeItems || - !element || - !this.config.removeItems || - !this.config.removeItemButton - ) { + if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) { return; } @@ -123,9 +118,7 @@ class ChoicesWrapper extends Choices { } _selectHighlightedChoice() { - const highlightedChoice = this.dropdown.getChild( - `.${this.config.classNames.highlightedState}`, - ); + const highlightedChoice = this.dropdown.getChild(`.${this.config.classNames.highlightedState}`); if (highlightedChoice) { const id = highlightedChoice.dataset.id; @@ -137,7 +130,7 @@ class ChoicesWrapper extends Choices { groupId: choice.groupId, customProperties: choice.customProperties, placeholder: choice.placeholder, - keyCode: choice.keyCode + keyCode: choice.keyCode, }); this._triggerChange(choice.value); } @@ -152,10 +145,7 @@ class ChoicesWrapper extends Choices { const { target, keyCode, ctrlKey, metaKey } = event; - if ( - target !== this.input.element && - !this.containerOuter.element.contains(target) - ) { + if (target !== this.input.element && !this.containerOuter.element.contains(target)) { return; } @@ -181,7 +171,7 @@ class ChoicesWrapper extends Choices { // If a user is typing and the dropdown is not active if (!hasActiveDropdown && !this._isTextElement && /[a-zA-Z0-9-_ ]/.test(keyString)) { - const currentValue = this.input.element.value; + const currentValue = this.input.element.value; this.input.element.value = currentValue ? `${currentValue}${keyString}` : keyString; this.showDropdown(); } @@ -218,9 +208,8 @@ class ChoicesWrapper extends Choices { onSelectValue({ event, activeItems, hasActiveDropdown }) { if (hasActiveDropdown) { - this._selectHighlightedChoice(activeItems); - } - else if (this._isSelectOneElement) { + this._selectHighlightedChoice(activeItems); + } else if (this._isSelectOneElement) { this.showDropdown(); event.preventDefault(); } diff --git a/src/utils/Evaluator.js b/src/utils/Evaluator.js index c1098e8509..4cda5d432b 100644 --- a/src/utils/Evaluator.js +++ b/src/utils/Evaluator.js @@ -15,8 +15,7 @@ export class Evaluator extends CoreEvaluator { // Ensure we handle copied templates from the ejs files. template = template.replace(/ctx\./g, ''); return (Evaluator.cache[hash] = _.template(template, Evaluator.templateSettings)); - } - catch (err) { + } catch (err) { console.warn('Error while processing template', err, template); } } @@ -26,8 +25,7 @@ export class Evaluator extends CoreEvaluator { if (typeof rawTemplate === 'function') { try { return rawTemplate(data); - } - catch (err) { + } catch (err) { console.warn('Error interpolating template', err, data); return err.message; } @@ -37,15 +35,13 @@ export class Evaluator extends CoreEvaluator { let template; if (Evaluator.noeval || options.noeval) { return CoreEvaluator.interpolateString(rawTemplate, data, _options); - } - else { + } else { template = Evaluator.template(rawTemplate); } if (typeof template === 'function') { try { return template(data); - } - catch (err) { + } catch (err) { console.warn('Error interpolating template', err, rawTemplate, data); return err.message; } diff --git a/src/utils/builder.js b/src/utils/builder.js index e983777414..c5046f163a 100644 --- a/src/utils/builder.js +++ b/src/utils/builder.js @@ -10,33 +10,53 @@ export default { uniquify(container, component) { let changed = false; const formKeys = {}; - eachComponent(container, (comp) => { - formKeys[comp.key] = true; + eachComponent( + container, + (comp) => { + formKeys[comp.key] = true; - if (['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes(comp.type) || comp.tree || comp.arrayTree) { - return true; - } - }, true); + if ( + ['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes( + comp.type, + ) || + comp.tree || + comp.arrayTree + ) { + return true; + } + }, + true, + ); // Recurse into all child components. - eachComponent([component], (component) => { - // Skip key uniquification if this component doesn't have a key. - if (!component.key) { - return; - } + eachComponent( + [component], + (component) => { + // Skip key uniquification if this component doesn't have a key. + if (!component.key) { + return; + } - const newKey = uniqueKey(formKeys, component.key); - if (newKey !== component.key) { - component.key = newKey; - changed = true; - } + const newKey = uniqueKey(formKeys, component.key); + if (newKey !== component.key) { + component.key = newKey; + changed = true; + } - formKeys[newKey] = true; + formKeys[newKey] = true; - if (['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes(component.type) || component.tree || component.arrayTree) { - return true; - } - }, true); + if ( + ['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes( + component.type, + ) || + component.tree || + component.arrayTree + ) { + return true; + } + }, + true, + ); return changed; }, @@ -44,10 +64,7 @@ export default { * Additional shortcuts for the builder. */ additionalShortcuts: { - button: [ - 'Enter', - 'Esc' - ] + button: ['Enter', 'Esc'], }, /** @@ -55,7 +72,9 @@ export default { * @returns {string[]} - An array of shortcuts of alpha characters. */ getAlphaShortcuts() { - return _.range('A'.charCodeAt(), 'Z'.charCodeAt() + 1).map((charCode) => String.fromCharCode(charCode)); + return _.range('A'.charCodeAt(), 'Z'.charCodeAt() + 1).map((charCode) => + String.fromCharCode(charCode), + ); }, getAdditionalShortcuts(type) { @@ -65,22 +84,26 @@ export default { getBindedShortcuts(components, input) { const result = []; - eachComponent(components, (component) => { - if (component === input) { - return; - } + eachComponent( + components, + (component) => { + if (component === input) { + return; + } - if (component.shortcut) { - result.push(component.shortcut); - } - if (component.values) { - component.values.forEach((value) => { - if (value.shortcut) { - result.push(value.shortcut); - } - }); - } - }, true); + if (component.shortcut) { + result.push(component.shortcut); + } + if (component.values) { + component.values.forEach((value) => { + if (value.shortcut) { + result.push(value.shortcut); + } + }); + } + }, + true, + ); return result; }, @@ -89,12 +112,16 @@ export default { if (!component) { return []; } - return [''].concat(_.difference( - this.getAlphaShortcuts().concat(this.getAdditionalShortcuts(component.type)), - this.getBindedShortcuts(form.components, component)), - ).map((shortcut) => ({ - label: shortcut, - value: shortcut, - })); - } + return [''] + .concat( + _.difference( + this.getAlphaShortcuts().concat(this.getAdditionalShortcuts(component.type)), + this.getBindedShortcuts(form.components, component), + ), + ) + .map((shortcut) => ({ + label: shortcut, + value: shortcut, + })); + }, }; diff --git a/src/utils/calendarUtils.js b/src/utils/calendarUtils.js index ff33374646..ae8a1be0f3 100644 --- a/src/utils/calendarUtils.js +++ b/src/utils/calendarUtils.js @@ -5,11 +5,11 @@ export const CALENDAR_ERROR_MESSAGES = { INVALID: 'You entered the Invalid Date', INCOMPLETE: 'You entered an incomplete date.', greater(date, format) { - return `The entered date is greater than ${ date.format(format)}`; + return `The entered date is greater than ${date.format(format)}`; }, less(date, format) { return `The entered date is less than ${date.format(format)}`; - } + }, }; /** @@ -23,7 +23,7 @@ export const CALENDAR_ERROR_MESSAGES = { function buildResponse(message, result) { return { message, - result + result, }; } @@ -46,7 +46,7 @@ export function lessOrGreater(value, format, maxDate, minDate) { if (maxDate && value.isValid()) { const maxDateMoment = moment(maxDate, format); - if (value > maxDateMoment) { + if (value > maxDateMoment) { message = CALENDAR_ERROR_MESSAGES.greater(maxDateMoment, format); result = false; } @@ -63,7 +63,7 @@ export function lessOrGreater(value, format, maxDate, minDate) { return { message, - result + result, }; } @@ -84,12 +84,17 @@ export function checkInvalidDate(value, format, minDate, maxDate) { const delimetersRegEx = new RegExp(delimeters.join('|'), 'gi'); const inputParts = value.replace(/_*/gi, '').split(delimetersRegEx); - const formatParts = format[1] ? format[1].split(delimetersRegEx) : format[0].split(delimetersRegEx); + const formatParts = format[1] + ? format[1].split(delimetersRegEx) + : format[0].split(delimetersRegEx); - const timeIndex = _.findIndex(formatParts, (part, index) => part.length === 1 && index === formatParts.length - 1); - const yearIndex = _.findIndex(formatParts, part => part.match(/yyyy/gi)); + const timeIndex = _.findIndex( + formatParts, + (part, index) => part.length === 1 && index === formatParts.length - 1, + ); + const yearIndex = _.findIndex(formatParts, (part) => part.match(/yyyy/gi)); - if (inputParts[yearIndex]/ 1000 < 1) { + if (inputParts[yearIndex] / 1000 < 1) { return buildResponse(CALENDAR_ERROR_MESSAGES.INVALID, false); } @@ -98,8 +103,7 @@ export function checkInvalidDate(value, format, minDate, maxDate) { let partValue = part; if (!part && index === timeIndex) { partValue = 'AM'; - } - else if (!part) { + } else if (!part) { partValue = '01'; } if (delimeters[index]) { @@ -119,16 +123,13 @@ export function checkInvalidDate(value, format, minDate, maxDate) { } return buildResponse(CALENDAR_ERROR_MESSAGES.INCOMPLETE, false); - } - else { + } else { return buildResponse(CALENDAR_ERROR_MESSAGES.INVALID, false); } - } - else { + } else { return buildResponse(CALENDAR_ERROR_MESSAGES.INVALID, false); } - } - else if (isValidDate && value.indexOf('_') === -1) { + } else if (isValidDate && value.indexOf('_') === -1) { const checkedLessOrGreater = lessOrGreater(date, format[0], maxDate, minDate); if (!checkedLessOrGreater.result) { const { message, result } = checkedLessOrGreater; diff --git a/src/utils/conditionOperators/ConditionOperator.js b/src/utils/conditionOperators/ConditionOperator.js index 43d77d1e05..4dc1365eff 100644 --- a/src/utils/conditionOperators/ConditionOperator.js +++ b/src/utils/conditionOperators/ConditionOperator.js @@ -2,29 +2,29 @@ import _ from 'lodash'; /* eslint-disable no-unused-vars */ export default class ConditionOperator { - static get operatorKey() { - return ''; - } - - static get displayedName() { - return ''; - } + static get operatorKey() { + return ''; + } - static get requireValue() { - return true; - } + static get displayedName() { + return ''; + } - execute(options) { - return true; - } + static get requireValue() { + return true; + } - getResult(options = {}) { - const { value } = options; + execute(options) { + return true; + } - if (_.isArray(value)) { - return _.some(value, valueItem => this.execute({ ...options, value: valueItem })); - } + getResult(options = {}) { + const { value } = options; - return this.execute(options); + if (_.isArray(value)) { + return _.some(value, (valueItem) => this.execute({ ...options, value: valueItem })); } + + return this.execute(options); + } } diff --git a/src/utils/conditionOperators/DateGreaterThan.js b/src/utils/conditionOperators/DateGreaterThan.js index 8324ce7025..bb9c9377a9 100644 --- a/src/utils/conditionOperators/DateGreaterThan.js +++ b/src/utils/conditionOperators/DateGreaterThan.js @@ -1,41 +1,54 @@ import ConditionOperator from './ConditionOperator'; import moment from 'moment'; export default class DateGeaterThan extends ConditionOperator { - static get operatorKey() { - return 'dateGreaterThan'; + static get operatorKey() { + return 'dateGreaterThan'; + } + + static get displayedName() { + return 'Greater Than'; + } + + getFormattedDates({ value, comparedValue, conditionTriggerComponent }) { + const hasValidationFormat = conditionTriggerComponent + ? conditionTriggerComponent.getValidationFormat + : null; + const date = hasValidationFormat + ? moment(value, conditionTriggerComponent.getValidationFormat()) + : moment(value); + const comparedDate = hasValidationFormat + ? moment(comparedValue, conditionTriggerComponent.getValidationFormat()) + : moment(comparedValue); + + return { date, comparedDate }; + } + + execute(options, functionName = 'isAfter') { + const { value, instance, conditionComponentPath } = options; + + if (!value) { + return false; } - static get displayedName() { - return 'Greater Than'; - } - - getFormattedDates({ value, comparedValue, conditionTriggerComponent }) { - const hasValidationFormat = conditionTriggerComponent ? conditionTriggerComponent.getValidationFormat : null; - const date = hasValidationFormat ? moment(value, conditionTriggerComponent.getValidationFormat()) : moment(value); - const comparedDate = hasValidationFormat ? moment(comparedValue, conditionTriggerComponent.getValidationFormat()) : moment(comparedValue); + let conditionTriggerComponent = null; - return { date, comparedDate }; + if (instance?.root?.getComponent) { + conditionTriggerComponent = instance.root.getComponent(conditionComponentPath); } - execute(options, functionName = 'isAfter') { - const { value, instance, conditionComponentPath } = options; - - if (!value) { - return false; - } - - let conditionTriggerComponent = null; - - if (instance?.root?.getComponent) { - conditionTriggerComponent = instance.root.getComponent(conditionComponentPath); - } - - if ( conditionTriggerComponent && conditionTriggerComponent.isPartialDay && conditionTriggerComponent.isPartialDay(value)) { - return false; - } + if ( + conditionTriggerComponent && + conditionTriggerComponent.isPartialDay && + conditionTriggerComponent.isPartialDay(value) + ) { + return false; + } - const { date, comparedDate } = this.getFormattedDates({ ...options, conditionTriggerComponent }); + const { date, comparedDate } = this.getFormattedDates({ + ...options, + conditionTriggerComponent, + }); - return date[functionName](comparedDate); - } + return date[functionName](comparedDate); + } } diff --git a/src/utils/conditionOperators/DateGreaterThanOrEqual.js b/src/utils/conditionOperators/DateGreaterThanOrEqual.js index 7edc595a74..7c71f27273 100644 --- a/src/utils/conditionOperators/DateGreaterThanOrEqual.js +++ b/src/utils/conditionOperators/DateGreaterThanOrEqual.js @@ -1,15 +1,15 @@ import DateGeaterThan from './DateGreaterThan'; export default class DateGreaterThanOrEqual extends DateGeaterThan { - static get operatorKey() { - return 'dateGreaterThanOrEqual'; - } + static get operatorKey() { + return 'dateGreaterThanOrEqual'; + } - static get displayedName() { - return 'Greater Than Or Equal To'; - } + static get displayedName() { + return 'Greater Than Or Equal To'; + } - execute(options) { - return super.execute(options, 'isSameOrAfter'); - } + execute(options) { + return super.execute(options, 'isSameOrAfter'); + } } diff --git a/src/utils/conditionOperators/DateLessThan.js b/src/utils/conditionOperators/DateLessThan.js index 93cad088ea..4fbfca208f 100644 --- a/src/utils/conditionOperators/DateLessThan.js +++ b/src/utils/conditionOperators/DateLessThan.js @@ -1,15 +1,15 @@ import DateGeaterThan from './DateGreaterThan'; export default class DateLessThan extends DateGeaterThan { - static get operatorKey() { - return 'dateLessThan'; - } + static get operatorKey() { + return 'dateLessThan'; + } - static get displayedName() { - return 'Less Than'; - } + static get displayedName() { + return 'Less Than'; + } - execute(options) { - return super.execute(options, 'isBefore'); - } + execute(options) { + return super.execute(options, 'isBefore'); + } } diff --git a/src/utils/conditionOperators/DateLessThanOrEqual.js b/src/utils/conditionOperators/DateLessThanOrEqual.js index 0a4031e79b..8cc3b20df1 100644 --- a/src/utils/conditionOperators/DateLessThanOrEqual.js +++ b/src/utils/conditionOperators/DateLessThanOrEqual.js @@ -1,15 +1,15 @@ import DateGeaterThan from './DateGreaterThan'; export default class DateLessThanOrEqual extends DateGeaterThan { - static get operatorKey() { - return 'dateLessThanOrEqual'; - } + static get operatorKey() { + return 'dateLessThanOrEqual'; + } - static get displayedName() { - return 'Less Than Or Equal To'; - } + static get displayedName() { + return 'Less Than Or Equal To'; + } - execute(options) { - return super.execute(options, 'isSameOrBefore'); - } + execute(options) { + return super.execute(options, 'isSameOrBefore'); + } } diff --git a/src/utils/conditionOperators/EndsWith.js b/src/utils/conditionOperators/EndsWith.js index a69f58b2a8..8673b7888f 100644 --- a/src/utils/conditionOperators/EndsWith.js +++ b/src/utils/conditionOperators/EndsWith.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class EndsWith extends ConditionOperator { - static get operatorKey() { - return 'endsWith'; - } + static get operatorKey() { + return 'endsWith'; + } - static get displayedName() { - return 'Ends With'; - } + static get displayedName() { + return 'Ends With'; + } - execute({ value, comparedValue }) { - return _.endsWith(value, comparedValue); - } + execute({ value, comparedValue }) { + return _.endsWith(value, comparedValue); + } } diff --git a/src/utils/conditionOperators/GreaterThan.js b/src/utils/conditionOperators/GreaterThan.js index b04db5f41d..be448ee958 100644 --- a/src/utils/conditionOperators/GreaterThan.js +++ b/src/utils/conditionOperators/GreaterThan.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class GeaterThan extends ConditionOperator { - static get operatorKey() { - return 'greaterThan'; - } + static get operatorKey() { + return 'greaterThan'; + } - static get displayedName() { - return 'Greater Than'; - } + static get displayedName() { + return 'Greater Than'; + } - execute({ value, comparedValue }) { - return _.isNumber(value) && value > comparedValue; - } + execute({ value, comparedValue }) { + return _.isNumber(value) && value > comparedValue; + } } diff --git a/src/utils/conditionOperators/GreaterThanOrEqual.js b/src/utils/conditionOperators/GreaterThanOrEqual.js index 7a351a1dbe..32a4c9b753 100644 --- a/src/utils/conditionOperators/GreaterThanOrEqual.js +++ b/src/utils/conditionOperators/GreaterThanOrEqual.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class GreaterThanOrEqual extends ConditionOperator { - static get operatorKey() { - return 'greaterThanOrEqual'; - } + static get operatorKey() { + return 'greaterThanOrEqual'; + } - static get displayedName() { - return 'Greater Than Or Equal To'; - } + static get displayedName() { + return 'Greater Than Or Equal To'; + } - execute({ value, comparedValue }) { - return _.isNumber(value) && (value > comparedValue || _.isEqual(value, comparedValue)); - } + execute({ value, comparedValue }) { + return _.isNumber(value) && (value > comparedValue || _.isEqual(value, comparedValue)); + } } diff --git a/src/utils/conditionOperators/Includes.js b/src/utils/conditionOperators/Includes.js index 8ec7f69c20..6d4bce370b 100644 --- a/src/utils/conditionOperators/Includes.js +++ b/src/utils/conditionOperators/Includes.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class Includes extends ConditionOperator { - static get operatorKey() { - return 'includes'; - } + static get operatorKey() { + return 'includes'; + } - static get displayedName() { - return 'Includes'; - } + static get displayedName() { + return 'Includes'; + } - execute({ value, comparedValue }) { - return _.includes(value, comparedValue); - } + execute({ value, comparedValue }) { + return _.includes(value, comparedValue); + } } diff --git a/src/utils/conditionOperators/IsDateEqual.js b/src/utils/conditionOperators/IsDateEqual.js index 78ff98975b..88e1bd0775 100644 --- a/src/utils/conditionOperators/IsDateEqual.js +++ b/src/utils/conditionOperators/IsDateEqual.js @@ -1,15 +1,15 @@ import DateGeaterThan from './DateGreaterThan'; export default class IsDateEqual extends DateGeaterThan { - static get operatorKey() { - return 'isDateEqual'; - } + static get operatorKey() { + return 'isDateEqual'; + } - static get displayedName() { - return 'Is Equal To'; - } + static get displayedName() { + return 'Is Equal To'; + } - execute(options) { - return super.execute(options, 'isSame'); - } + execute(options) { + return super.execute(options, 'isSame'); + } } diff --git a/src/utils/conditionOperators/IsEmptyValue.js b/src/utils/conditionOperators/IsEmptyValue.js index 5514771721..2dfc0ba1fe 100644 --- a/src/utils/conditionOperators/IsEmptyValue.js +++ b/src/utils/conditionOperators/IsEmptyValue.js @@ -2,30 +2,32 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class IsEmptyValue extends ConditionOperator { - static get operatorKey() { - return 'isEmpty'; - } - - static get displayedName() { - return 'Is Empty'; - } + static get operatorKey() { + return 'isEmpty'; + } - static get requireValue() { - return false; - } + static get displayedName() { + return 'Is Empty'; + } - execute({ value, instance, conditionComponentPath }) { - const isEmptyValue = _.isEmpty(_.isNumber(value)? String(value): value); + static get requireValue() { + return false; + } - if (instance?.root?.getComponent) { - const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath); - return conditionTriggerComponent?.isEmpty ? conditionTriggerComponent.isEmpty() : isEmptyValue; - } + execute({ value, instance, conditionComponentPath }) { + const isEmptyValue = _.isEmpty(_.isNumber(value) ? String(value) : value); - return isEmptyValue; + if (instance?.root?.getComponent) { + const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath); + return conditionTriggerComponent?.isEmpty + ? conditionTriggerComponent.isEmpty() + : isEmptyValue; } - getResult(options) { - return this.execute(options); - } + return isEmptyValue; + } + + getResult(options) { + return this.execute(options); + } } diff --git a/src/utils/conditionOperators/IsEqualTo.js b/src/utils/conditionOperators/IsEqualTo.js index 32798baed1..850c3ba4d8 100644 --- a/src/utils/conditionOperators/IsEqualTo.js +++ b/src/utils/conditionOperators/IsEqualTo.js @@ -1,43 +1,54 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; -import { compareSelectResourceWithObjectTypeValues, isSelectResourceWithObjectValue } from '../utils'; +import { + compareSelectResourceWithObjectTypeValues, + isSelectResourceWithObjectValue, +} from '../utils'; export default class IsEqualTo extends ConditionOperator { - static get operatorKey() { - return 'isEqual'; - } - - static get displayedName() { - return 'Is Equal To'; - } + static get operatorKey() { + return 'isEqual'; + } - execute({ value, comparedValue, instance, conditionComponentPath }) { - if ((value || value === false) && comparedValue && typeof value !== typeof comparedValue && _.isString(comparedValue)) { - try { - comparedValue = JSON.parse(comparedValue); - } - catch (ignoreErr) { - // do nothing - } - } + static get displayedName() { + return 'Is Equal To'; + } - if (instance?.root?.getComponent) { - const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath); + execute({ value, comparedValue, instance, conditionComponentPath }) { + if ( + (value || value === false) && + comparedValue && + typeof value !== typeof comparedValue && + _.isString(comparedValue) + ) { + try { + comparedValue = JSON.parse(comparedValue); + } catch (ignoreErr) { + // do nothing + } + } - if ( - conditionTriggerComponent - && isSelectResourceWithObjectValue(conditionTriggerComponent.component) - && conditionTriggerComponent.component?.template - ) { - return compareSelectResourceWithObjectTypeValues(value, comparedValue, conditionTriggerComponent.component); - } - } + if (instance?.root?.getComponent) { + const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath); - //special check for select boxes - if (_.isObject(value) && comparedValue && _.isBoolean(value[comparedValue])) { - return value[comparedValue]; - } + if ( + conditionTriggerComponent && + isSelectResourceWithObjectValue(conditionTriggerComponent.component) && + conditionTriggerComponent.component?.template + ) { + return compareSelectResourceWithObjectTypeValues( + value, + comparedValue, + conditionTriggerComponent.component, + ); + } + } - return _.isEqual(value, comparedValue); + //special check for select boxes + if (_.isObject(value) && comparedValue && _.isBoolean(value[comparedValue])) { + return value[comparedValue]; } + + return _.isEqual(value, comparedValue); + } } diff --git a/src/utils/conditionOperators/IsNotDateEqual.js b/src/utils/conditionOperators/IsNotDateEqual.js index 28f0ab0d1f..5e7bbeebc4 100644 --- a/src/utils/conditionOperators/IsNotDateEqual.js +++ b/src/utils/conditionOperators/IsNotDateEqual.js @@ -1,15 +1,15 @@ import DateGeaterThan from './DateGreaterThan'; export default class IsNotDateEqual extends DateGeaterThan { - static get operatorKey() { - return 'isNotDateEqual'; - } + static get operatorKey() { + return 'isNotDateEqual'; + } - static get displayedName() { - return 'Is Not Equal To'; - } + static get displayedName() { + return 'Is Not Equal To'; + } - execute(options) { - return !super.execute(options, 'isSame'); - } + execute(options) { + return !super.execute(options, 'isSame'); + } } diff --git a/src/utils/conditionOperators/IsNotEmptyValue.js b/src/utils/conditionOperators/IsNotEmptyValue.js index f0eafb0dbf..437bbb05e8 100644 --- a/src/utils/conditionOperators/IsNotEmptyValue.js +++ b/src/utils/conditionOperators/IsNotEmptyValue.js @@ -1,15 +1,15 @@ -import IsEmptyValue from './IsEmptyValue'; +import IsEmptyValue from './IsEmptyValue'; export default class IsNotEmptyValue extends IsEmptyValue { - static get operatorKey() { - return 'isNotEmpty'; - } + static get operatorKey() { + return 'isNotEmpty'; + } - static get displayedName() { - return 'Is Not Empty'; - } + static get displayedName() { + return 'Is Not Empty'; + } - getResult(options) { - return !super.getResult(options); - } + getResult(options) { + return !super.getResult(options); + } } diff --git a/src/utils/conditionOperators/IsNotEqualTo.js b/src/utils/conditionOperators/IsNotEqualTo.js index 2daf0d6ee2..689093e806 100644 --- a/src/utils/conditionOperators/IsNotEqualTo.js +++ b/src/utils/conditionOperators/IsNotEqualTo.js @@ -1,15 +1,15 @@ import IsEqualTo from './IsEqualTo'; export default class IsNotEqualTo extends IsEqualTo { - static get operatorKey() { - return 'isNotEqual'; - } + static get operatorKey() { + return 'isNotEqual'; + } - static get displayedName() { - return 'Is Not Equal To'; - } + static get displayedName() { + return 'Is Not Equal To'; + } - execute(options) { - return !super.execute(options); - } + execute(options) { + return !super.execute(options); + } } diff --git a/src/utils/conditionOperators/LessThan.js b/src/utils/conditionOperators/LessThan.js index be06837c71..421ce9dc4f 100644 --- a/src/utils/conditionOperators/LessThan.js +++ b/src/utils/conditionOperators/LessThan.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class LessThan extends ConditionOperator { - static get operatorKey() { - return 'lessThan'; - } + static get operatorKey() { + return 'lessThan'; + } - static get displayedName() { - return 'Less Than'; - } + static get displayedName() { + return 'Less Than'; + } - execute({ value, comparedValue }) { - return _.isNumber(value) && value < comparedValue; - } + execute({ value, comparedValue }) { + return _.isNumber(value) && value < comparedValue; + } } diff --git a/src/utils/conditionOperators/LessThanOrEqual.js b/src/utils/conditionOperators/LessThanOrEqual.js index 682cfb407d..62f4b49001 100644 --- a/src/utils/conditionOperators/LessThanOrEqual.js +++ b/src/utils/conditionOperators/LessThanOrEqual.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class LessThanOrEqual extends ConditionOperator { - static get operatorKey() { - return 'lessThanOrEqual'; - } + static get operatorKey() { + return 'lessThanOrEqual'; + } - static get displayedName() { - return 'Less Than Or Equal To'; - } + static get displayedName() { + return 'Less Than Or Equal To'; + } - execute({ value, comparedValue }) { - return _.isNumber(value) && (value < comparedValue || _.isEqual(value, comparedValue)); - } + execute({ value, comparedValue }) { + return _.isNumber(value) && (value < comparedValue || _.isEqual(value, comparedValue)); + } } diff --git a/src/utils/conditionOperators/NotIncludes.js b/src/utils/conditionOperators/NotIncludes.js index 99a8ebcbf5..9ca8ca1e09 100644 --- a/src/utils/conditionOperators/NotIncludes.js +++ b/src/utils/conditionOperators/NotIncludes.js @@ -1,15 +1,15 @@ import Includes from './Includes'; export default class NotIncludes extends Includes { - static get operatorKey() { - return 'notIncludes'; - } + static get operatorKey() { + return 'notIncludes'; + } - static get displayedName() { - return 'Not Includes'; - } + static get displayedName() { + return 'Not Includes'; + } - execute(options) { - return !super.execute(options); - } + execute(options) { + return !super.execute(options); + } } diff --git a/src/utils/conditionOperators/StartsWith.js b/src/utils/conditionOperators/StartsWith.js index 7504ecf580..9cd14fa001 100644 --- a/src/utils/conditionOperators/StartsWith.js +++ b/src/utils/conditionOperators/StartsWith.js @@ -2,15 +2,15 @@ import ConditionOperator from './ConditionOperator'; import _ from 'lodash'; export default class StartsWith extends ConditionOperator { - static get operatorKey() { - return 'startsWith'; - } + static get operatorKey() { + return 'startsWith'; + } - static get displayedName() { - return 'Starts With'; - } + static get displayedName() { + return 'Starts With'; + } - execute({ value, comparedValue }) { - return _.startsWith(value, comparedValue); - } + execute({ value, comparedValue }) { + return _.startsWith(value, comparedValue); + } } diff --git a/src/utils/conditionOperators/index.js b/src/utils/conditionOperators/index.js index d47ca8482d..0e02f1805c 100644 --- a/src/utils/conditionOperators/index.js +++ b/src/utils/conditionOperators/index.js @@ -35,7 +35,7 @@ const ConditionOperators = { [`${LessThanOrEqual.operatorKey}`]: LessThanOrEqual, [`${GreaterThanOrEqual.operatorKey}`]: GreaterThanOrEqual, [`${IsDateEqual.operatorKey}`]: IsDateEqual, - [`${IsNotDateEqual.operatorKey}`]: IsNotDateEqual + [`${IsNotDateEqual.operatorKey}`]: IsNotDateEqual, }; export default ConditionOperators; diff --git a/src/utils/formUtils.js b/src/utils/formUtils.js index 4f7ac0eef7..6cc3c3e47f 100644 --- a/src/utils/formUtils.js +++ b/src/utils/formUtils.js @@ -38,7 +38,7 @@ const { isComponentDataEmpty, isSelectResourceWithObjectValue, compareSelectResourceWithObjectTypeValues, - getItemTemplateKeys + getItemTemplateKeys, } = Utils; /** @@ -91,5 +91,5 @@ export { isComponentDataEmpty, isSelectResourceWithObjectValue, compareSelectResourceWithObjectTypeValues, - getItemTemplateKeys + getItemTemplateKeys, }; diff --git a/src/utils/i18n.js b/src/utils/i18n.js index c92b2ce950..1eb8d82d7e 100644 --- a/src/utils/i18n.js +++ b/src/utils/i18n.js @@ -2,93 +2,93 @@ import { Evaluator } from '@formio/core/utils'; import i18n from '../i18n'; const i18Defaults = {}; for (const lang in i18n.resources) { - if (i18n.resources.hasOwnProperty(lang)) { - i18Defaults[lang] = i18n.resources[lang].translation; - } + if (i18n.resources.hasOwnProperty(lang)) { + i18Defaults[lang] = i18n.resources[lang].translation; + } } /** * This file is used to mimic the i18n library interface. */ export class I18n { - languages = i18Defaults; - language = 'en'; - currentLanguage = i18Defaults.en; - constructor(languages = {}) { - this.setLanguages(languages); - this.changeLanguage(this.language); - } + languages = i18Defaults; + language = 'en'; + currentLanguage = i18Defaults.en; + constructor(languages = {}) { + this.setLanguages(languages); + this.changeLanguage(this.language); + } - setLanguages(languages) { - if (languages.resources) { - for (const lang in languages.resources) { - if (languages.resources.hasOwnProperty(lang)) { - languages[lang] = languages.resources[lang].translation; - } - } - delete languages.resources; + setLanguages(languages) { + if (languages.resources) { + for (const lang in languages.resources) { + if (languages.resources.hasOwnProperty(lang)) { + languages[lang] = languages.resources[lang].translation; } - if (languages.lng) { - languages.language = languages.lng; - delete languages.lng; - } - // Do not use these configurations. - delete languages.nsSeparator; - delete languages.keySeparator; - delete languages.pluralSeparator; - delete languages.contextSeparator; + } + delete languages.resources; + } + if (languages.lng) { + languages.language = languages.lng; + delete languages.lng; + } + // Do not use these configurations. + delete languages.nsSeparator; + delete languages.keySeparator; + delete languages.pluralSeparator; + delete languages.contextSeparator; - // Now establish the languages default. - if (languages.language) { - this.language = languages.language; - } - for (const lang in languages) { - if (lang !== 'language' && languages.hasOwnProperty(lang)) { - if (!this.languages[lang]) { - this.languages[lang] = {}; - } - this.languages[lang] = { ...this.languages[lang], ...languages[lang] }; - } + // Now establish the languages default. + if (languages.language) { + this.language = languages.language; + } + for (const lang in languages) { + if (lang !== 'language' && languages.hasOwnProperty(lang)) { + if (!this.languages[lang]) { + this.languages[lang] = {}; } + this.languages[lang] = { ...this.languages[lang], ...languages[lang] }; + } } + } - static init(languages = {}) { - return new I18n(languages); - } + static init(languages = {}) { + return new I18n(languages); + } - dir(lang = '') { - lang = lang || this.language; - const rtls = ['ar', 'he', 'fa', 'ps', 'ur']; - return rtls.includes(lang) ? 'rtl' : 'ltr'; - } + dir(lang = '') { + lang = lang || this.language; + const rtls = ['ar', 'he', 'fa', 'ps', 'ur']; + return rtls.includes(lang) ? 'rtl' : 'ltr'; + } - static createInstance() { - return new I18n(); - } + static createInstance() { + return new I18n(); + } - changeLanguage(language, ready = null) { - if (!this.languages[language]) { - language = 'en'; - } - this.language = language; - this.currentLanguage = this.languages[language] ? this.languages[language] : {}; - if (ready) { - ready(); - } + changeLanguage(language, ready = null) { + if (!this.languages[language]) { + language = 'en'; } - - addResourceBundle(language, type, strings) { - this.languages[language] = strings; + this.language = language; + this.currentLanguage = this.languages[language] ? this.languages[language] : {}; + if (ready) { + ready(); } + } - t(text, ...args) { - if (this.currentLanguage[text]) { - const customTranslationFieldName = args[0]?.field; - if (customTranslationFieldName && this.currentLanguage[customTranslationFieldName]) { - args[0].field = this.currentLanguage[customTranslationFieldName] - } - return Evaluator.interpolateString(this.currentLanguage[text], ...args); - } - return Evaluator.interpolateString(text, ...args); + addResourceBundle(language, type, strings) { + this.languages[language] = strings; + } + + t(text, ...args) { + if (this.currentLanguage[text]) { + const customTranslationFieldName = args[0]?.field; + if (customTranslationFieldName && this.currentLanguage[customTranslationFieldName]) { + args[0].field = this.currentLanguage[customTranslationFieldName]; + } + return Evaluator.interpolateString(this.currentLanguage[text], ...args); } + return Evaluator.interpolateString(text, ...args); + } } diff --git a/src/utils/utils.js b/src/utils/utils.js index af4569d692..5c37331a3f 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -88,7 +88,7 @@ export function getElementRect(element) { x: getPropertyValue(style, 'left'), y: getPropertyValue(style, 'top'), width: getPropertyValue(style, 'width'), - height: getPropertyValue(style, 'height') + height: getPropertyValue(style, 'height'), }; } @@ -100,8 +100,13 @@ export function getElementRect(element) { export function getScriptPlugin(property) { const obj = window[property]; if ( - typeof HTMLElement === 'object' ? obj instanceof HTMLElement : //DOM2 - obj && typeof obj === 'object' && true && obj.nodeType === 1 && typeof obj.nodeName === 'string' + typeof HTMLElement === 'object' + ? obj instanceof HTMLElement //DOM2 + : obj && + typeof obj === 'object' && + true && + obj.nodeType === 1 && + typeof obj.nodeName === 'string' ) { return undefined; } @@ -116,11 +121,9 @@ export function getScriptPlugin(property) { export function boolValue(value) { if (_.isBoolean(value)) { return value; - } - else if (_.isString(value)) { - return (value.toLowerCase() === 'true'); - } - else { + } else if (_.isString(value)) { + return value.toLowerCase() === 'true'; + } else { return !!value; } } @@ -143,13 +146,21 @@ export function isMongoId(text) { export function checkCalculated(component, submission, rowData) { // Process calculated value stuff if present. if (component.calculateValue) { - _.set(rowData, component.key, evaluate(component.calculateValue, { - value: undefined, - data: submission ? submission.data : rowData, - row: rowData, - util: this, - component - }, 'value')); + _.set( + rowData, + component.key, + evaluate( + component.calculateValue, + { + value: undefined, + data: submission ? submission.data : rowData, + row: rowData, + util: this, + component, + }, + 'value', + ), + ); } } @@ -178,19 +189,20 @@ function getConditionalPathsRecursive(conditionPaths, data) { const currentData = _.get(data, currentPath); if (Array.isArray(currentData) && currentData.filter(Boolean).length > 0) { - if (currentData.some(element => typeof element !== 'object')) { + if (currentData.some((element) => typeof element !== 'object')) { return; } - const hasInnerDataArray = currentData.find(x => Array.isArray(x[conditionPaths[currentLocalIndex]])); + const hasInnerDataArray = currentData.find((x) => + Array.isArray(x[conditionPaths[currentLocalIndex]]), + ); if (hasInnerDataArray) { currentData.forEach((_, indexOutside) => { const innerCompDataPath = `${currentPath}[${indexOutside}].${conditionPaths[currentLocalIndex]}`; getConditionalPaths(data, innerCompDataPath, currentLocalIndex + 1); }); - } - else { + } else { currentData.forEach((x, index) => { if (!_.isNil(x[conditionPaths[currentLocalIndex]])) { const compDataPath = `${currentPath}[${index}].${conditionPaths[currentLocalIndex]}`; @@ -198,13 +210,16 @@ function getConditionalPathsRecursive(conditionPaths, data) { } }); } - } - else { + } else { if (!conditionPaths[currentGlobalIndex]) { return; } currentGlobalIndex = currentGlobalIndex + 1; - getConditionalPaths(data, `${currentPath}.${conditionPaths[currentGlobalIndex - 1]}`, currentGlobalIndex); + getConditionalPaths( + data, + `${currentPath}.${conditionPaths[currentGlobalIndex - 1]}`, + currentGlobalIndex, + ); } }; @@ -213,15 +228,15 @@ function getConditionalPathsRecursive(conditionPaths, data) { return conditionalPathsArray; } - /** - * - * @param component - * @param condition - * @param row - * @param data - * @param instance - */ - export function checkSimpleConditional(component, condition, row, data, instance) { +/** + * + * @param component + * @param condition + * @param row + * @param data + * @param instance + */ +export function checkSimpleConditional(component, condition, row, data, instance) { if (condition.when) { const value = getComponentActualValue(condition.when, data, row); @@ -238,9 +253,8 @@ function getConditionalPathsRecursive(conditionPaths, data) { } return (String(value) === eq) === (show === 'true'); - } - else { - const { conditions = [], conjunction = 'all', show = true } = condition; + } else { + const { conditions = [], conjunction = 'all', show = true } = condition; if (!conditions.length) { return true; @@ -254,23 +268,37 @@ function getConditionalPathsRecursive(conditionPaths, data) { const splittedConditionPath = conditionComponentPath.split('.'); - const conditionalPaths = instance?.parent?.type === 'datagrid' || instance?.parent?.type === 'editgrid' ? [] : getConditionalPathsRecursive(splittedConditionPath, data); + const conditionalPaths = + instance?.parent?.type === 'datagrid' || instance?.parent?.type === 'editgrid' + ? [] + : getConditionalPathsRecursive(splittedConditionPath, data); - if (conditionalPaths.length>0) { + if (conditionalPaths.length > 0) { return conditionalPaths.map((path) => { const value = getComponentActualValue(path, data, row); const ConditionOperator = ConditionOperators[operator]; return ConditionOperator - ? new ConditionOperator().getResult({ value, comparedValue, instance, component, conditionComponentPath }) + ? new ConditionOperator().getResult({ + value, + comparedValue, + instance, + component, + conditionComponentPath, + }) : true; }); - } - else { + } else { const value = getComponentActualValue(conditionComponentPath, data, row); const СonditionOperator = ConditionOperators[operator]; return СonditionOperator - ? new СonditionOperator().getResult({ value, comparedValue, instance, component, conditionComponentPath }) + ? new СonditionOperator().getResult({ + value, + comparedValue, + instance, + component, + conditionComponentPath, + }) : true; } }); @@ -279,10 +307,10 @@ function getConditionalPathsRecursive(conditionPaths, data) { switch (conjunction) { case 'any': - result = _.some(conditionsResult.flat(), res => !!res); + result = _.some(conditionsResult.flat(), (res) => !!res); break; default: - result = _.every(conditionsResult.flat(), res => !!res); + result = _.every(conditionsResult.flat(), (res) => !!res); } return show ? result : !result; @@ -326,13 +354,23 @@ export function getComponentActualValue(compPath, data, row) { * @param {import('../../src/components/_classes/component/Component').Component} instance - The component instance. * @returns {*} - The result of the evaulation. */ -export function checkCustomConditional(component, custom, row, data, form, variable, onError, instance) { +export function checkCustomConditional( + component, + custom, + row, + data, + form, + variable, + onError, + instance, +) { if (typeof custom === 'string') { custom = `var ${variable} = true; ${custom}; return ${variable};`; } - const value = (instance && instance.evaluate) ? - instance.evaluate(custom, { row, data, form }) : - evaluate(custom, { row, data, form }); + const value = + instance && instance.evaluate + ? instance.evaluate(custom, { row, data, form }) + : evaluate(custom, { row, data, form }); if (value === null) { return onError; } @@ -357,8 +395,7 @@ export function checkJsonConditional(component, json, row, data, form, onError) form, _, }); - } - catch (err) { + } catch (err) { console.warn(`An error occurred in jsonLogic advanced condition for ${component.key}`, err); return onError; } @@ -381,9 +418,10 @@ function getRow(component, row, instance, conditional) { } const dataParent = getDataParentComponent(instance); const parentPath = dataParent ? getComponentPath(dataParent) : null; - const isTriggerCondtionComponentPath = condition.when || !condition.conditions - ? condition.when?.startsWith(parentPath) - : _.some(condition.conditions, cond => cond.component.startsWith(parentPath)); + const isTriggerCondtionComponentPath = + condition.when || !condition.conditions + ? condition.when?.startsWith(parentPath) + : _.some(condition.conditions, (cond) => cond.component.startsWith(parentPath)); if (dataParent && isTriggerCondtionComponentPath) { const newRow = {}; @@ -406,13 +444,27 @@ function getRow(component, row, instance, conditional) { export function checkCondition(component, row, data, form, instance) { const { customConditional, conditional } = component; if (customConditional) { - return checkCustomConditional(component, customConditional, row, data, form, 'show', true, instance); - } - else if (conditional && (conditional.when || _.some(conditional.conditions || [], condition => condition.component && condition.operator))) { + return checkCustomConditional( + component, + customConditional, + row, + data, + form, + 'show', + true, + instance, + ); + } else if ( + conditional && + (conditional.when || + _.some( + conditional.conditions || [], + (condition) => condition.component && condition.operator, + )) + ) { row = getRow(component, row, instance); return checkSimpleConditional(component, conditional, row, data, instance); - } - else if (conditional && conditional.json) { + } else if (conditional && conditional.json) { return checkJsonConditional(component, conditional.json, row, data, form, true); } @@ -441,7 +493,16 @@ export function checkTrigger(component, trigger, row, data, form, instance) { row = getRow(component, row, instance, trigger.simple); return checkSimpleConditional(component, trigger.simple, row, data, instance); case 'javascript': - return checkCustomConditional(component, trigger.javascript, row, data, form, 'result', false, instance); + return checkCustomConditional( + component, + trigger.javascript, + row, + data, + form, + 'result', + false, + instance, + ); case 'json': return checkJsonConditional(component, trigger.json, row, data, form, false); } @@ -482,9 +543,10 @@ export function setActionProperty(component, action, result, row, data, instance }; const textValue = action.property.component ? action[action.property.component] : action.text; const currentValue = _.get(component, property, ''); - const newValue = (instance && instance.interpolate) - ? instance.interpolate(textValue, evalData) - : Evaluator.interpolate(textValue, evalData); + const newValue = + instance && instance.interpolate + ? instance.interpolate(textValue, evalData) + : Evaluator.interpolate(textValue, evalData); if (newValue !== currentValue) { _.set(component, property, newValue); @@ -547,17 +609,18 @@ export function uniqueName(name, template, evalContext) { } const parts = name.split('.'); let fileName = parts.slice(0, parts.length - 1).join('.'); - const extension = parts.length > 1 - ? `.${_.last(parts)}` - : ''; + const extension = parts.length > 1 ? `.${_.last(parts)}` : ''; //allow only 100 characters from original name to avoid issues with filename length restrictions fileName = fileName.substr(0, 100); evalContext = Object.assign(evalContext || {}, { fileName, - guid: guid() + guid: guid(), }); //only letters, numbers, dots, dashes, underscores and spaces are allowed. Anything else will be replaced with dash - const uniqueName = `${Evaluator.interpolate(template, evalContext)}${extension}`.replace(/[^0-9a-zA-Z.\-_ ]/g, '-'); + const uniqueName = `${Evaluator.interpolate(template, evalContext)}${extension}`.replace( + /[^0-9a-zA-Z.\-_ ]/g, + '-', + ); return uniqueName; } @@ -567,10 +630,8 @@ export function uniqueName(name, template, evalContext) { */ export function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { - const r = Math.random()*16|0; - const v = c === 'x' - ? r - : (r&0x3|0x8); + const r = (Math.random() * 16) | 0; + const v = c === 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); } @@ -587,12 +648,12 @@ export function getDateSetting(date) { if (date instanceof Date) { return date; - } - else if (typeof date.toDate === 'function') { + } else if (typeof date.toDate === 'function') { return date.isValid() ? date.toDate() : null; } - let dateSetting = ((typeof date !== 'string') || (date.indexOf('moment(') === -1)) ? moment(date) : null; + let dateSetting = + typeof date !== 'string' || date.indexOf('moment(') === -1 ? moment(date) : null; if (dateSetting && dateSetting.isValid()) { return dateSetting.toDate(); } @@ -602,15 +663,12 @@ export function getDateSetting(date) { const value = Evaluator.evaluator(`return ${date};`, 'moment')(moment); if (typeof value === 'string') { dateSetting = moment(value); - } - else if (typeof value.toDate === 'function') { + } else if (typeof value.toDate === 'function') { dateSetting = moment(value.toDate().toUTCString()); - } - else if (value instanceof Date) { + } else if (value instanceof Date) { dateSetting = moment(value); } - } - catch (ignoreErr) { + } catch (ignoreErr) { return null; } @@ -656,14 +714,14 @@ export function currentTimezone() { export function offsetDate(date, timezone) { if (timezone === 'UTC') { return { - date: new Date(date.getTime() + (date.getTimezoneOffset() * 60000)), - abbr: 'UTC' + date: new Date(date.getTime() + date.getTimezoneOffset() * 60000), + abbr: 'UTC', }; } const dateMoment = moment(date).tz(timezone); return { - date: new Date(date.getTime() + ((dateMoment.utcOffset() + date.getTimezoneOffset()) * 60000)), - abbr: dateMoment.format('z') + date: new Date(date.getTime() + (dateMoment.utcOffset() + date.getTimezoneOffset()) * 60000), + abbr: dateMoment.format('z'), }; } @@ -702,18 +760,19 @@ export function loadZones(url, timezone) { if (moment.zonesPromise) { return moment.zonesPromise; } - return moment.zonesPromise = fetch(url) - .then(resp => resp.json().then(zones => { - moment.tz.load(zones); - moment.zonesLoaded = true; + return (moment.zonesPromise = fetch(url).then((resp) => + resp.json().then((zones) => { + moment.tz.load(zones); + moment.zonesLoaded = true; - // Trigger a global event that the timezones have finished loading. - if (document && document.createEvent && document.body && document.body.dispatchEvent) { - var event = document.createEvent('Event'); - event.initEvent('zonesLoaded', true, true); - document.body.dispatchEvent(event); - } - })); + // Trigger a global event that the timezones have finished loading. + if (document && document.createEvent && document.body && document.body.dispatchEvent) { + var event = document.createEvent('Event'); + event.initEvent('zonesLoaded', true, true); + document.body.dispatchEvent(event); + } + }), + )); } /** @@ -731,7 +790,10 @@ export function momentDate(value, format, timezone) { if (timezone === 'UTC') { timezone = 'Etc/UTC'; } - if ((timezone !== currentTimezone() || (format && format.match(/\s(z$|z\s)/))) && moment.zonesLoaded) { + if ( + (timezone !== currentTimezone() || (format && format.match(/\s(z$|z\s)/))) && + moment.zonesLoaded + ) { return momentDate.tz(timezone); } return momentDate; @@ -754,8 +816,7 @@ export function formatDate(timezonesUrl, value, format, timezone, flatPickrInput loadZones(timezonesUrl); if (moment.zonesLoaded) { return momentDate.tz(timezone).format(convertFormatToMoment(format)); - } - else { + } else { return momentDate.format(convertFormatToMoment(format.replace(/\s(z$|z\s)/, ''))); } } @@ -772,8 +833,7 @@ export function formatDate(timezonesUrl, value, format, timezone, flatPickrInput loadZones(timezonesUrl); if (moment.zonesLoaded && timezone) { return momentDate.tz(timezone).format(`${convertFormatToMoment(format)} z`); - } - else { + } else { return momentDate.format(convertFormatToMoment(format)); } } @@ -800,8 +860,7 @@ export function formatOffset(timezonesUrl, formatFn, date, format, timezone) { if (moment.zonesLoaded) { const offset = offsetDate(date, timezone); return `${formatFn(offset.date, format)} ${offset.abbr}`; - } - else { + } else { return formatFn(date, format); } } @@ -829,35 +888,37 @@ export function getLocaleDateFormatInfo(locale) { * @returns {string} - The converted format. */ export function convertFormatToFlatpickr(format) { - return format - // Remove the Z timezone offset, not supported by flatpickr. - .replace(/Z/g, '') - - // Year conversion. - .replace(/y/g, 'Y') - .replace('YYYY', 'Y') - .replace('YY', 'y') - - // Month conversion. - .replace('MMMM', 'F') - .replace(/M/g, 'n') - .replace('nnn', 'M') - .replace('nn', 'm') - - // Day in month. - .replace(/d/g, 'j') - .replace(/jj/g, 'd') - - // Day in week. - .replace('EEEE', 'l') - .replace('EEE', 'D') - - // Hours, minutes, seconds - .replace('HH', 'H') - .replace('hh', 'G') - .replace('mm', 'i') - .replace('ss', 'S') - .replace(/a/g, 'K'); + return ( + format + // Remove the Z timezone offset, not supported by flatpickr. + .replace(/Z/g, '') + + // Year conversion. + .replace(/y/g, 'Y') + .replace('YYYY', 'Y') + .replace('YY', 'y') + + // Month conversion. + .replace('MMMM', 'F') + .replace(/M/g, 'n') + .replace('nnn', 'M') + .replace('nn', 'm') + + // Day in month. + .replace(/d/g, 'j') + .replace(/jj/g, 'd') + + // Day in week. + .replace('EEEE', 'l') + .replace('EEE', 'D') + + // Hours, minutes, seconds + .replace('HH', 'H') + .replace('hh', 'G') + .replace('mm', 'i') + .replace('ss', 'S') + .replace(/a/g, 'K') + ); } /** @@ -866,17 +927,19 @@ export function convertFormatToFlatpickr(format) { * @returns {string} - The converted format. */ export function convertFormatToMoment(format) { - return format - // Year conversion. - .replace(/y/g, 'Y') - // Day in month. - .replace(/d/g, 'D') - // Day in week. - .replace(/E/g, 'd') - // AM/PM marker - .replace(/a/g, 'A') - // Unix Timestamp - .replace(/U/g, 'X'); + return ( + format + // Year conversion. + .replace(/y/g, 'Y') + // Day in month. + .replace(/d/g, 'D') + // Day in week. + .replace(/E/g, 'd') + // AM/PM marker + .replace(/a/g, 'A') + // Unix Timestamp + .replace(/U/g, 'X') + ); } /** @@ -885,19 +948,21 @@ export function convertFormatToMoment(format) { * @returns {string} - The converted format. */ export function convertFormatToMask(format) { - return format - // Long month replacement. - .replace(/M{4}/g, 'MM') - // Initial short month conversion. - .replace(/M{3}/g, '***') - // Short month conversion if input as text. - .replace(/e/g, 'Q') - // Month number conversion. - .replace(/W/g, '99') - // Year conversion. - .replace(/[ydhmswHMG]/g, '9') - // AM/PM conversion. - .replace(/a/g, 'AA'); + return ( + format + // Long month replacement. + .replace(/M{4}/g, 'MM') + // Initial short month conversion. + .replace(/M{3}/g, '***') + // Short month conversion if input as text. + .replace(/e/g, 'Q') + // Month number conversion. + .replace(/W/g, '99') + // Year conversion. + .replace(/[ydhmswHMG]/g, '9') + // AM/PM conversion. + .replace(/a/g, 'AA') + ); } /** @@ -991,7 +1056,7 @@ export function matchInputMask(value, inputMask) { const char = value[i] || ''; const charPart = inputMask[i]; - if (!(_.isRegExp(charPart) && charPart.test(char) || charPart === char)) { + if (!((_.isRegExp(charPart) && charPart.test(char)) || charPart === char)) { return false; } } @@ -1010,12 +1075,12 @@ export function getNumberSeparators(lang = 'en') { if (!delimeters) { return { delimiter: ',', - decimalSeparator: '.' + decimalSeparator: '.', }; } return { - delimiter: (delimeters.length > 1) ? delimeters[1] : ',', - decimalSeparator: (delimeters.length > 2) ? delimeters[2] : '.', + delimiter: delimeters.length > 1 ? delimeters[1] : ',', + decimalSeparator: delimeters.length > 2 ? delimeters[2] : '.', }; } @@ -1052,28 +1117,26 @@ export function getNumberDecimalLimit(component, defaultLimit) { * @param {string} arg0.lang - The language code to use. * @returns {{prefix: string, suffix: string}} - The currency affixes. */ -export function getCurrencyAffixes({ - currency, - decimalLimit, - decimalSeparator, - lang, - }) { +export function getCurrencyAffixes({ currency, decimalLimit, decimalSeparator, lang }) { // Get the prefix and suffix from the localized string. let regex = `(.*)?${(100).toLocaleString(lang)}`; if (decimalLimit) { regex += `${decimalSeparator === '.' ? '\\.' : decimalSeparator}${(0).toLocaleString(lang)}{${decimalLimit}}`; } regex += '(.*)?'; - const parts = (100).toLocaleString(lang, { - style: 'currency', - currency: currency ? currency : 'USD', - useGrouping: true, - maximumFractionDigits: decimalLimit || 0, - minimumFractionDigits: decimalLimit || 0 - }).replace('.', decimalSeparator).match(new RegExp(regex)); + const parts = (100) + .toLocaleString(lang, { + style: 'currency', + currency: currency ? currency : 'USD', + useGrouping: true, + maximumFractionDigits: decimalLimit || 0, + minimumFractionDigits: decimalLimit || 0, + }) + .replace('.', decimalSeparator) + .match(new RegExp(regex)); return { prefix: parts?.[1] || '', - suffix: parts?.[2] || '' + suffix: parts?.[2] || '', }; } @@ -1116,8 +1179,7 @@ export function fieldData(data, component) { value = value[key]; } return value; - } - else { + } else { // Convert old single field data in submissions to multiple if (component.multiple && !Array.isArray(data[component.key])) { data[component.key] = [data[component.key]]; @@ -1176,7 +1238,7 @@ export function iterateKey(key) { return `${key}1`; } - return key.replace(/(\d+)$/, function(suffix) { + return key.replace(/(\d+)$/, function (suffix) { return Number(suffix) + 1; }); } @@ -1205,7 +1267,7 @@ export function bootstrapVersion(options) { if (options.bootstrap) { return options.bootstrap; } - if ((typeof jQuery === 'function') && (typeof jQuery().collapse === 'function')) { + if (typeof jQuery === 'function' && typeof jQuery().collapse === 'function') { return parseInt(jQuery.fn.collapse.Constructor.VERSION.split('.')[0], 10); } if (window.bootstrap && window.bootstrap.Collapse) { @@ -1235,7 +1297,7 @@ export function unfold(e) { */ export const firstNonNil = _.flow([ _.partialRight(_.map, unfold), - _.partialRight(_.find, v => !_.isUndefined(v)) + _.partialRight(_.find, (v) => !_.isUndefined(v)), ]); /** @@ -1281,7 +1343,7 @@ export function observeOverload(callback, options = {}) { let callCount = 0; let timeoutID = 0; - const reset = () => callCount = 0; + const reset = () => (callCount = 0); return () => { if (timeoutID !== 0) { @@ -1313,7 +1375,11 @@ export function getContextComponents(context, excludeNested, excludedTypes = []) context.utils.eachComponent(context.instance.options.editForm.components, (component, path) => { const addToContextComponents = excludeNested ? !component.tree : true; - if (component.key !== context.data.key && addToContextComponents && !_.includes(excludedTypes, component.type)) { + if ( + component.key !== context.data.key && + addToContextComponents && + !_.includes(excludedTypes, component.type) + ) { values.push({ label: `${component.label || component.key} (${path})`, value: path, @@ -1345,7 +1411,21 @@ export function getContextButtons(context) { } // Tags that could be in text, that should be ommited or handled in a special way -const inTextTags = ['#text', 'A', 'B', 'EM', 'I', 'SMALL', 'STRONG', 'SUB', 'SUP', 'INS', 'DEL', 'MARK', 'CODE']; +const inTextTags = [ + '#text', + 'A', + 'B', + 'EM', + 'I', + 'SMALL', + 'STRONG', + 'SUB', + 'SUP', + 'INS', + 'DEL', + 'MARK', + 'CODE', +]; /** * Helper function for 'translateHTMLTemplate'. Translates text value of the passed html element. @@ -1358,7 +1438,10 @@ function translateElemValue(elem, translate) { return elem.innerHTML; } - const elemValue = elem.innerText.replace(Evaluator.templateSettings.interpolate, '').replace(/\s\s+/g, ' ').trim(); + const elemValue = elem.innerText + .replace(Evaluator.templateSettings.interpolate, '') + .replace(/\s\s+/g, ' ') + .trim(); const translatedValue = translate(elemValue); if (elemValue !== translatedValue) { @@ -1369,19 +1452,17 @@ function translateElemValue(elem, translate) { return elem.innerHTML.replace(elemValue, translatedValue); } - const translatedLinks = links.map(link => { + const translatedLinks = links.map((link) => { const linkElem = document.createElement('a'); linkElem.innerHTML = link; return translateElemValue(linkElem, translate); }); return `${translatedValue} (${translatedLinks.join(', ')})`; - } - else { + } else { return elem.innerText.replace(elemValue, translatedValue); } - } - else { + } else { return elem.innerHTML; } } @@ -1394,16 +1475,16 @@ function translateElemValue(elem, translate) { */ function translateDeepTag(tag, translate) { const children = tag.children.length && [...tag.children]; - const shouldTranslateEntireContent = children && children.every(child => - child.children.length === 0 - && inTextTags.some(tag => child.nodeName === tag) - ); + const shouldTranslateEntireContent = + children && + children.every( + (child) => child.children.length === 0 && inTextTags.some((tag) => child.nodeName === tag), + ); if (!children || shouldTranslateEntireContent) { tag.innerHTML = translateElemValue(tag, translate); - } - else { - children.forEach(child => translateDeepTag(child, translate)); + } else { + children.forEach((child) => translateDeepTag(child, translate)); } } @@ -1444,39 +1525,61 @@ export function sanitize(string, options) { // Dompurify configuration const sanitizeOptions = { ADD_ATTR: ['ref', 'target'], - USE_PROFILES: { html: true } + USE_PROFILES: { html: true }, }; // Use profiles if (options.sanitizeConfig && options.sanitizeConfig.useProfiles) { - Object.keys(options.sanitizeConfig.useProfiles).forEach(key => { + Object.keys(options.sanitizeConfig.useProfiles).forEach((key) => { sanitizeOptions.USE_PROFILES[key] = options.sanitizeConfig.useProfiles[key]; }); } // Add attrs - if (options.sanitizeConfig && Array.isArray(options.sanitizeConfig.addAttr) && options.sanitizeConfig.addAttr.length > 0) { + if ( + options.sanitizeConfig && + Array.isArray(options.sanitizeConfig.addAttr) && + options.sanitizeConfig.addAttr.length > 0 + ) { options.sanitizeConfig.addAttr.forEach((attr) => { sanitizeOptions.ADD_ATTR.push(attr); }); } // Add tags - if (options.sanitizeConfig && Array.isArray(options.sanitizeConfig.addTags) && options.sanitizeConfig.addTags.length > 0) { + if ( + options.sanitizeConfig && + Array.isArray(options.sanitizeConfig.addTags) && + options.sanitizeConfig.addTags.length > 0 + ) { sanitizeOptions.ADD_TAGS = options.sanitizeConfig.addTags; } // Allow tags - if (options.sanitizeConfig && Array.isArray(options.sanitizeConfig.allowedTags) && options.sanitizeConfig.allowedTags.length > 0) { + if ( + options.sanitizeConfig && + Array.isArray(options.sanitizeConfig.allowedTags) && + options.sanitizeConfig.allowedTags.length > 0 + ) { sanitizeOptions.ALLOWED_TAGS = options.sanitizeConfig.allowedTags; } // Allow attributes - if (options.sanitizeConfig && Array.isArray(options.sanitizeConfig.allowedAttrs) && options.sanitizeConfig.allowedAttrs.length > 0) { + if ( + options.sanitizeConfig && + Array.isArray(options.sanitizeConfig.allowedAttrs) && + options.sanitizeConfig.allowedAttrs.length > 0 + ) { sanitizeOptions.ALLOWED_ATTR = options.sanitizeConfig.allowedAttrs; } // Allowd URI Regex if (options.sanitizeConfig && options.sanitizeConfig.allowedUriRegex) { const allowedUriRegex = options.sanitizeConfig.allowedUriRegex; - sanitizeOptions.ALLOWED_URI_REGEXP = _.isString(allowedUriRegex) ? new RegExp(allowedUriRegex) : allowedUriRegex; + sanitizeOptions.ALLOWED_URI_REGEXP = _.isString(allowedUriRegex) + ? new RegExp(allowedUriRegex) + : allowedUriRegex; } // Allow to extend the existing array of elements that are safe for URI-like values - if (options.sanitizeConfig && Array.isArray(options.sanitizeConfig.addUriSafeAttr) && options.sanitizeConfig.addUriSafeAttr.length > 0) { + if ( + options.sanitizeConfig && + Array.isArray(options.sanitizeConfig.addUriSafeAttr) && + options.sanitizeConfig.addUriSafeAttr.length > 0 + ) { sanitizeOptions.ADD_URI_SAFE_ATTR = options.sanitizeConfig.addUriSafeAttr; } return dompurify.sanitize(string, sanitizeOptions); @@ -1530,11 +1633,12 @@ export function getArrayFromComponentPath(pathStr) { } return pathStr; } - return pathStr.replace(/[[\]]/g, '.') + return pathStr + .replace(/[[\]]/g, '.') .replace(/\.\./g, '.') .replace(/(^\.)|(\.$)/g, '') .split('.') - .map(part => _.defaultTo(_.toNumber(part), part)); + .map((part) => _.defaultTo(_.toNumber(part), part)); } /** @@ -1566,8 +1670,7 @@ export function getStringFromComponentPath(path) { path.forEach((part, i) => { if (_.isNumber(part)) { strPath += `[${part}]`; - } - else { + } else { strPath += i === 0 ? part : `.${part}`; } }); @@ -1610,22 +1713,23 @@ export function getBrowserInfo() { } const ua = window.navigator.userAgent.toLowerCase(); - const match = /(edge|edg)\/([\w.]+)/.exec(ua) || - /(opr)[/]([\w.]+)/.exec(ua) || - /(yabrowser)[ /]([\w.]+)/.exec(ua) || - /(chrome)[ /]([\w.]+)/.exec(ua) || - /(iemobile)[/]([\w.]+)/.exec(ua) || - /(version)(applewebkit)[ /]([\w.]+).*(safari)[ /]([\w.]+)/.exec(ua) || - /(webkit)[ /]([\w.]+).*(version)[ /]([\w.]+).*(safari)[ /]([\w.]+)/.exec(ua) || - /(webkit)[ /]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ /]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua) || - ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; + const match = + /(edge|edg)\/([\w.]+)/.exec(ua) || + /(opr)[/]([\w.]+)/.exec(ua) || + /(yabrowser)[ /]([\w.]+)/.exec(ua) || + /(chrome)[ /]([\w.]+)/.exec(ua) || + /(iemobile)[/]([\w.]+)/.exec(ua) || + /(version)(applewebkit)[ /]([\w.]+).*(safari)[ /]([\w.]+)/.exec(ua) || + /(webkit)[ /]([\w.]+).*(version)[ /]([\w.]+).*(safari)[ /]([\w.]+)/.exec(ua) || + /(webkit)[ /]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ /]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + (ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua)) || + (ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || + []; const matched = { browser: match[5] || match[3] || match[1] || '', - version: match[4] || match[2] || '0' + version: match[4] || match[2] || '0', }; if (matched.browser) { @@ -1668,10 +1772,14 @@ export function getComponentPathWithoutIndicies(path = '') { * @returns {string} - Path to the component */ export function getComponentPath(component, path = '') { - if (!component || !component.key || component?._form?.display === 'wizard') { // unlike the Webform, the Wizard has the key and it is a duplicate of the panel key + if (!component || !component.key || component?._form?.display === 'wizard') { + // unlike the Webform, the Wizard has the key and it is a duplicate of the panel key return path; } - path = component.isInputComponent || component.input === true ? `${component.key}${path ? '.' : ''}${path}` : path; + path = + component.isInputComponent || component.input === true + ? `${component.key}${path ? '.' : ''}${path}` + : path; return getComponentPath(component.parent, path); } @@ -1687,8 +1795,7 @@ export function getDataParentComponent(componentInstance) { const { parent } = componentInstance; if (parent && (parent.isInputComponent || parent.input)) { return parent; - } - else { + } else { return getDataParentComponent(parent); } } @@ -1698,12 +1805,14 @@ export function getDataParentComponent(componentInstance) { * @param {any} value - The value to check * @returns {boolean} - TRUE if the value is a promise; FALSE otherwise */ - export function isPromise(value) { - return value - && value.then - && typeof value.then === 'function' - && Object.prototype.toString.call(value) === '[object Promise]'; - } +export function isPromise(value) { + return ( + value && + value.then && + typeof value.then === 'function' && + Object.prototype.toString.call(value) === '[object Promise]' + ); +} /** * Determines if the component has a scoping parent in tree (a component which scopes its children and manages its @@ -1719,8 +1828,7 @@ export function isInsideScopingComponent(componentInstance, firstPass = true) { const dataParent = getDataParentComponent(componentInstance); if (dataParent?.hasScopedChildren) { return true; - } - else if (dataParent?.parent) { + } else if (dataParent?.parent) { return isInsideScopingComponent(dataParent.parent, false); } return false; @@ -1732,8 +1840,7 @@ export function isInsideScopingComponent(componentInstance, firstPass = true) { * @returns {NodeList} - The focusable elements within the provided element. */ export function getFocusableElements(element) { - const focusableSelector = - `button:not([disabled]), input:not([disabled]), select:not([disabled]), + const focusableSelector = `button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [href]`; return element.querySelectorAll(focusableSelector); } @@ -1778,10 +1885,17 @@ export function getComponentSavedTypes(fullSchema) { * @returns {[]} - The interpolated errors */ export const interpolateErrors = (component, errors, interpolateFn) => { - return errors.map((error) => { + return errors.map((error) => { error.component = component; const { errorKeyOrMessage, context } = error; - const toInterpolate = component.errors && component.errors[errorKeyOrMessage] ? component.errors[errorKeyOrMessage] : errorKeyOrMessage; - return { ...error, message: unescapeHTML(interpolateFn(toInterpolate, context)), context: { ...context } }; + const toInterpolate = + component.errors && component.errors[errorKeyOrMessage] + ? component.errors[errorKeyOrMessage] + : errorKeyOrMessage; + return { + ...error, + message: unescapeHTML(interpolateFn(toInterpolate, context)), + context: { ...context }, + }; }); }; diff --git a/src/widgets/CalendarWidget.js b/src/widgets/CalendarWidget.js index caa80d5d50..3fae9555d0 100644 --- a/src/widgets/CalendarWidget.js +++ b/src/widgets/CalendarWidget.js @@ -23,7 +23,6 @@ const ISO_8601_FORMAT = 'yyyy-MM-ddTHH:mm:ssZ'; const isIEBrowser = getBrowserInfo().ie; export default class CalendarWidget extends InputWidget { - static get defaultSettings() { return { type: 'calendar', @@ -46,10 +45,9 @@ export default class CalendarWidget extends InputWidget { timezone: '', disable: [], minDate: '', - maxDate: '' + maxDate: '', }; } - constructor(settings, component, instance, index) { super(settings, component, instance, index); @@ -59,8 +57,7 @@ export default class CalendarWidget extends InputWidget { } if (!this.settings.enableTime) { this.settings.format = this.settings.format.replace(/ hh:mm a$/g, ''); - } - else if (this.settings.time_24hr) { + } else if (this.settings.time_24hr) { this.settings.format = this.settings.format.replace(/hh:mm a$/g, 'HH:mm'); } this.zoneLoading = false; @@ -99,11 +96,14 @@ export default class CalendarWidget extends InputWidget { const dateFormatInfo = getLocaleDateFormatInfo(this.settings.language); this.defaultFormat = { date: dateFormatInfo.dayFirst ? 'd/m/Y ' : 'm/d/Y ', - time: 'G:i K' + time: 'G:i K', }; this.closedOn = 0; - this.valueFormat = (this.settings.saveAs === 'date') ? ISO_8601_FORMAT : this.settings.dateFormat || ISO_8601_FORMAT; + this.valueFormat = + this.settings.saveAs === 'date' + ? ISO_8601_FORMAT + : this.settings.dateFormat || ISO_8601_FORMAT; this.valueMomentFormat = convertFormatToMoment(this.valueFormat); const isReadOnly = this.settings.readOnly; @@ -124,7 +124,9 @@ export default class CalendarWidget extends InputWidget { this.settings.position = 'auto center'; this.settings.onChange = () => { if (this.settings.allowInput && this.settings.enableTime) { - this.calendar._input.value = this.settings.isManuallyOverriddenValue ? this.settings.manualInputValue : this.calendar.altInput.value; + this.calendar._input.value = this.settings.isManuallyOverriddenValue + ? this.settings.manualInputValue + : this.calendar.altInput.value; } this.emit('update'); }; @@ -134,8 +136,10 @@ export default class CalendarWidget extends InputWidget { this.closedOn = Date.now(); if (this.settings.allowInput && this.settings.enableTime) { - this.calendar._input.value = this.settings.isManuallyOverriddenValue ? this.settings.manualInputValue : this.calendar.altInput.value; - this.emit('update'); + this.calendar._input.value = this.settings.isManuallyOverriddenValue + ? this.settings.manualInputValue + : this.calendar.altInput.value; + this.emit('update'); } if (this.settings.wasDefaultValueChanged) { @@ -147,52 +151,72 @@ export default class CalendarWidget extends InputWidget { } }; - Formio.requireLibrary('flatpickr-css', 'flatpickr', [ - { type: 'styles', src: `${Formio.cdn['flatpickr']}/flatpickr.min.css` } - ], true); + Formio.requireLibrary( + 'flatpickr-css', + 'flatpickr', + [{ type: 'styles', src: `${Formio.cdn['flatpickr']}/flatpickr.min.css` }], + true, + ); if (this.component.shortcutButtons) { - this.component.shortcutButtons = this.component.shortcutButtons.filter((btn) => btn.label && btn.onClick); + this.component.shortcutButtons = this.component.shortcutButtons.filter( + (btn) => btn.label && btn.onClick, + ); } if (this.component.shortcutButtons?.length) { - Formio.requireLibrary('shortcut-buttons-flatpickr-css', 'ShortcutButtonsPlugin', [ - { type: 'styles', src: `${Formio.cdn['shortcut-buttons-flatpickr']}/themes/light.min.css` } - ], true); + Formio.requireLibrary( + 'shortcut-buttons-flatpickr-css', + 'ShortcutButtonsPlugin', + [ + { + type: 'styles', + src: `${Formio.cdn['shortcut-buttons-flatpickr']}/themes/light.min.css`, + }, + ], + true, + ); } return superAttach .then(() => { if (this.component.shortcutButtons?.length) { return Formio.requireLibrary( - 'shortcut-buttons-flatpickr', 'ShortcutButtonsPlugin', `${Formio.cdn['shortcut-buttons-flatpickr']}/shortcut-buttons-flatpickr.min.js`, true + 'shortcut-buttons-flatpickr', + 'ShortcutButtonsPlugin', + `${Formio.cdn['shortcut-buttons-flatpickr']}/shortcut-buttons-flatpickr.min.js`, + true, ); } }) .then((ShortcutButtonsPlugin) => { - return Formio.requireLibrary('flatpickr', 'flatpickr', `${Formio.cdn['flatpickr']}/flatpickr.min.js`, true) - .then((Flatpickr) => { - if (this.component.shortcutButtons?.length && ShortcutButtonsPlugin) { - this.initShortcutButtonsPlugin(ShortcutButtonsPlugin); - } + return Formio.requireLibrary( + 'flatpickr', + 'flatpickr', + `${Formio.cdn['flatpickr']}/flatpickr.min.js`, + true, + ).then((Flatpickr) => { + if (this.component.shortcutButtons?.length && ShortcutButtonsPlugin) { + this.initShortcutButtonsPlugin(ShortcutButtonsPlugin); + } + + this.settings.formatDate = this.getFlatpickrFormatDate(Flatpickr); - this.settings.formatDate = this.getFlatpickrFormatDate(Flatpickr); - - if (this._input) { - const { locale } = this.settings; - - if (locale && locale.length >= 2 && locale !== 'en') { - return Formio.requireLibrary( - `flatpickr-${locale}`, - `flatpickr.l10ns.${locale}`, - `${Formio.cdn['flatpickr']}/l10n/${locale}.js`, - true).then(() => this.initFlatpickr(Flatpickr)); - } - else { - this.initFlatpickr(Flatpickr); - } + if (this._input) { + const { locale } = this.settings; + + if (locale && locale.length >= 2 && locale !== 'en') { + return Formio.requireLibrary( + `flatpickr-${locale}`, + `flatpickr.l10ns.${locale}`, + `${Formio.cdn['flatpickr']}/l10n/${locale}.js`, + true, + ).then(() => this.initFlatpickr(Flatpickr)); + } else { + this.initFlatpickr(Flatpickr); } - }); + } + }); }) .catch((err) => { console.warn(err); @@ -200,8 +224,8 @@ export default class CalendarWidget extends InputWidget { } get disableWeekends() { - return function(date) { - return (date.getDay() === 0 || date.getDay() === 6); + return function (date) { + return date.getDay() === 0 || date.getDay() === 6; }; } @@ -210,9 +234,10 @@ export default class CalendarWidget extends InputWidget { } get disableFunction() { - return (date) => this.evaluate(`return ${this.settings.disableFunction}`, { - date - }); + return (date) => + this.evaluate(`return ${this.settings.disableFunction}`, { + date, + }); } get timezone() { @@ -227,10 +252,9 @@ export default class CalendarWidget extends InputWidget { this.addEventListener(suffix, 'click', () => { setTimeout(() => { if (this.calendar) { - if (!this.calendar.isOpen && ((Date.now() - this.closedOn) > 200)) { + if (!this.calendar.isOpen && Date.now() - this.closedOn > 200) { this.calendar.open(); - } - else if (this.calendar.isOpen) { + } else if (this.calendar.isOpen) { this.calendar.close(); } } @@ -245,8 +269,7 @@ export default class CalendarWidget extends InputWidget { if (this.calendar) { if (disabled) { this.calendar._input.setAttribute('disabled', 'disabled'); - } - else { + } else { this.calendar._input.removeAttribute('disabled'); } this.calendar.close(); @@ -265,10 +288,12 @@ export default class CalendarWidget extends InputWidget { const dateMask = /\d{4}-\d{2}-\d{2}/g; const dates = item.match(dateMask); if (dates && dates.length) { - return dates.length === 1 ? item.match(dateMask)[0] : { - from: item.match(dateMask)[0], - to: item.match(dateMask)[1], - }; + return dates.length === 1 + ? item.match(dateMask)[0] + : { + from: item.match(dateMask)[0], + to: item.match(dateMask)[1], + }; } }); } @@ -290,7 +315,9 @@ export default class CalendarWidget extends InputWidget { } get dateTimeFormat() { - return this.settings.useLocaleSettings ? this.localeFormat : convertFormatToFlatpickr(this.dateFormat); + return this.settings.useLocaleSettings + ? this.localeFormat + : convertFormatToFlatpickr(this.dateFormat); } get dateFormat() { @@ -306,7 +333,9 @@ export default class CalendarWidget extends InputWidget { */ getDateValue(date, format, useTimezone) { if (useTimezone) { - return momentDate(date, this.valueFormat, this.timezone).format(convertFormatToMoment(format)); + return momentDate(date, this.valueFormat, this.timezone).format( + convertFormatToMoment(format), + ); } return moment(date).format(convertFormatToMoment(format)); } @@ -331,11 +360,11 @@ export default class CalendarWidget extends InputWidget { return 'Invalid Date'; } - return this.getDateValue(dates[0], this.valueFormat, (this.settings.saveAs === 'date')); + return this.getDateValue(dates[0], this.valueFormat, this.settings.saveAs === 'date'); } isValueISO8601(value) { - return value && (typeof value === 'string') && value.match(/-[0-9]{2}T[0-9]{2}:/); + return value && typeof value === 'string' && value.match(/-[0-9]{2}T[0-9]{2}:/); } /** @@ -344,9 +373,17 @@ export default class CalendarWidget extends InputWidget { * @returns {void} */ setValue(value) { - const saveAsText = (this.settings.saveAs === 'text'); + const saveAsText = this.settings.saveAs === 'text'; if (!this.calendar) { - value = value ? formatDate(this.timezonesUrl, value, convertFormatToMoment(this.settings.format), this.timezone, convertFormatToMoment(this.valueMomentFormat)) : value; + value = value + ? formatDate( + this.timezonesUrl, + value, + convertFormatToMoment(this.settings.format), + this.timezone, + convertFormatToMoment(this.valueMomentFormat), + ) + : value; return super.setValue(value); } @@ -354,15 +391,12 @@ export default class CalendarWidget extends InputWidget { if (value) { if (!saveAsText && this.settings.readOnly && !zonesLoading) { this.calendar.setDate(momentDate(value, this.valueFormat, this.timezone).format(), false); - } - else if (this.isValueISO8601(value)) { + } else if (this.isValueISO8601(value)) { this.calendar.setDate(value, false); - } - else { + } else { this.calendar.setDate(moment(value, this.valueMomentFormat).toDate(), false); } - } - else { + } else { this.calendar.clear(false); } } @@ -370,10 +404,22 @@ export default class CalendarWidget extends InputWidget { getValueAsString(value, format) { const inputFormat = format || this.dateFormat; const valueFormat = this.calendar ? this.valueFormat : this.settings.dateFormat; - if (this.settings.saveAs === 'text' && this.componentInstance.parent && !this.settings.readOnly) { - return moment(value, convertFormatToMoment(valueFormat)).format(convertFormatToMoment(valueFormat)); - } - return formatDate(this.timezonesUrl, value, inputFormat, this.timezone, convertFormatToMoment(valueFormat)); + if ( + this.settings.saveAs === 'text' && + this.componentInstance.parent && + !this.settings.readOnly + ) { + return moment(value, convertFormatToMoment(valueFormat)).format( + convertFormatToMoment(valueFormat), + ); + } + return formatDate( + this.timezonesUrl, + value, + inputFormat, + this.timezone, + convertFormatToMoment(valueFormat), + ); } setErrorClasses(hasErrors) { @@ -384,8 +430,7 @@ export default class CalendarWidget extends InputWidget { if (hasErrors) { this.addClass(this.input, 'is-invalid'); this.input.setAttribute('aria-invalid', 'true'); - } - else { + } else { this.removeClass(this.input, 'is-invalid'); this.input.setAttribute('aria-invalid', 'false'); } @@ -396,7 +441,7 @@ export default class CalendarWidget extends InputWidget { if (typeof value === 'string') { return new Date(value); } - return value.map(val => new Date(val)); + return value.map((val) => new Date(val)); } isCalendarElement(element) { @@ -416,7 +461,7 @@ export default class CalendarWidget extends InputWidget { this.calendar = new Flatpickr(this._input, { ...this.settings, disableMobile: true }); this.addEventListener(this.calendar.altInput, 'input', (event) => { if (this.settings.allowInput && this.settings.currentValue !== event.target.value) { - if(event.target.mask) { + if (event.target.mask) { event.target.mask.textMaskInputElement.update(); } this.settings.manualInputValue = event.target.value; @@ -434,13 +479,13 @@ export default class CalendarWidget extends InputWidget { this.settings.wasDefaultValueChanged = false; } }); - if(this.calendar.daysContainer) { + if (this.calendar.daysContainer) { this.calendar.daysContainer.addEventListener('click', () => { this.settings.isManuallyOverriddenValue = false; this.calendar.updateValue(false); }); } - if(this.calendar.timeContainer){ + if (this.calendar.timeContainer) { this.calendar.timeContainer.addEventListener('click', () => { this.settings.isManuallyOverriddenValue = false; this.calendar.updateValue(false); @@ -448,7 +493,10 @@ export default class CalendarWidget extends InputWidget { } const excludedFromMaskFormats = ['MMMM']; - if (!this.settings.readOnly && !_.some(excludedFromMaskFormats, format => _.includes(this.settings.format, format))) { + if ( + !this.settings.readOnly && + !_.some(excludedFromMaskFormats, (format) => _.includes(this.settings.format, format)) + ) { // Enforce the input mask of the format. this.setInputMask(this.calendar._input, convertFormatToMask(this.settings.format)); } @@ -457,11 +505,15 @@ export default class CalendarWidget extends InputWidget { // TODO: Remove when the issue is solved in the flatpickr library if (isIEBrowser) { // Remove the original blur listener, because value will be set to empty since relatedTarget is null in IE11 - const originalBlurListener = this.calendar._handlers.find(({ event, element }) => event === 'blur' && element === this.calendar._input); + const originalBlurListener = this.calendar._handlers.find( + ({ event, element }) => event === 'blur' && element === this.calendar._input, + ); this.calendar._input.removeEventListener('blur', originalBlurListener.handler); // Add the same event listener as in the original library, but with workaround for IE11 issue this.addEventListener(this.calendar._input, 'blur', (event) => { - const activeElement = this.settings.shadowRoot ? this.settings.shadowRoot.activeElement : document.activeElement; + const activeElement = this.settings.shadowRoot + ? this.settings.shadowRoot.activeElement + : document.activeElement; const relatedTarget = event.relatedTarget ? event.relatedTarget : activeElement; const isInput = event.target === this.calendar._input; @@ -471,7 +523,7 @@ export default class CalendarWidget extends InputWidget { true, event.target === this.calendar.altInput ? this.calendar.config.altFormat - : this.calendar.config.dateFormat + : this.calendar.config.dateFormat, ); } }); @@ -479,20 +531,26 @@ export default class CalendarWidget extends InputWidget { // Make sure we commit the value after a blur event occurs. this.addEventListener(this.calendar._input, 'blur', (event) => { // If we have manually overridden the value then we shouldn't call setDate because this will fill the input mask - if (this.settings.isManuallyOverriddenValue){ + if (this.settings.isManuallyOverriddenValue) { return; } - const activeElement = this.settings.shadowRoot ? this.settings.shadowRoot.activeElement : document.activeElement; + const activeElement = this.settings.shadowRoot + ? this.settings.shadowRoot.activeElement + : document.activeElement; const relatedTarget = event.relatedTarget ? event.relatedTarget : activeElement; if (!(isIEBrowser && !relatedTarget) && !this.isCalendarElement(relatedTarget)) { const inputValue = this.calendar.input.value; - const dateValue = inputValue ? moment(this.calendar.input.value, convertFormatToMoment(this.valueFormat)).toDate() : inputValue; + const dateValue = inputValue + ? moment(this.calendar.input.value, convertFormatToMoment(this.valueFormat)).toDate() + : inputValue; this.calendar.setDate(dateValue, true, this.settings.altFormat); - } - else if (!this.calendar.input.value && this.calendar.config.noCalendar) { - const value = moment({ hour: this.calendar?.config?.defaultHour, minute: this.calendar?.config?.defaultMinute }).toDate(); + } else if (!this.calendar.input.value && this.calendar.config.noCalendar) { + const value = moment({ + hour: this.calendar?.config?.defaultHour, + minute: this.calendar?.config?.defaultMinute, + }).toDate(); this.calendar.setDate(value, true, this.settings.format); } }); @@ -522,15 +580,17 @@ export default class CalendarWidget extends InputWidget { initShortcutButtonsPlugin(ShortcutButtonsPlugin) { this.settings.plugins = [ - ShortcutButtonsPlugin({ - button: this.component.shortcutButtons.map((btn) => ({ label: btn.label, attributes: btn.attribute })), + button: this.component.shortcutButtons.map((btn) => ({ + label: btn.label, + attributes: btn.attribute, + })), onClick: (index) => { const getValue = this.component.shortcutButtons[index].onClick; const date = this.evaluate(getValue, { date: new Date() }, 'date'); this.calendar.setDate(date, true); - } - }) + }, + }), ]; } @@ -545,16 +605,28 @@ export default class CalendarWidget extends InputWidget { getFlatpickrFormatDate(Flatpickr) { return (date, format) => { // Only format this if this is the altFormat and the form is readOnly. - if (this.settings.readOnly && (format === this.settings.altFormat)) { + if (this.settings.readOnly && format === this.settings.altFormat) { if (!this.settings.enableTime || this.loadZones()) { return Flatpickr.formatDate(date, format); } const currentValue = new Date(this.getValue()); if (currentValue.toString() === date.toString()) { - return formatOffset(this.timezonesUrl, Flatpickr.formatDate.bind(Flatpickr), new Date(this.componentValue), format, this.timezone); + return formatOffset( + this.timezonesUrl, + Flatpickr.formatDate.bind(Flatpickr), + new Date(this.componentValue), + format, + this.timezone, + ); } - return formatOffset(this.timezonesUrl, Flatpickr.formatDate.bind(Flatpickr), date, format, this.timezone); + return formatOffset( + this.timezonesUrl, + Flatpickr.formatDate.bind(Flatpickr), + date, + format, + this.timezone, + ); } return Flatpickr.formatDate(date, format); diff --git a/src/widgets/InputWidget.js b/src/widgets/InputWidget.js index 3bce6ee723..995e324dc4 100644 --- a/src/widgets/InputWidget.js +++ b/src/widgets/InputWidget.js @@ -3,7 +3,7 @@ import Element from '../Element'; export default class InputWidget extends Element { static get defaultSettings() { return { - type: 'input' + type: 'input', }; } @@ -28,8 +28,7 @@ export default class InputWidget extends Element { set disabled(disabled) { if (disabled) { this._input.setAttribute('disabled', 'disabled'); - } - else { + } else { this._input.removeAttribute('disabled'); } } @@ -63,18 +62,25 @@ export default class InputWidget extends Element { } evalContext(additional) { - return super.evalContext(Object.assign({ - component: this.component, - row: this.componentInstance.data, - rowIndex: this.componentInstance.rowIndex, - data: this.componentInstance.rootValue, - value: this.componentInstance.dataValue, - t: this.t.bind(this), - submission: (this.componentInstance.root ? this.componentInstance.root._submission : { - data: this.componentInstance.rootValue - }), - form: this.componentInstance.root ? this.componentInstance.root._form : {}, - options: this.options, - }, additional)); + return super.evalContext( + Object.assign( + { + component: this.component, + row: this.componentInstance.data, + rowIndex: this.componentInstance.rowIndex, + data: this.componentInstance.rootValue, + value: this.componentInstance.dataValue, + t: this.t.bind(this), + submission: this.componentInstance.root + ? this.componentInstance.root._submission + : { + data: this.componentInstance.rootValue, + }, + form: this.componentInstance.root ? this.componentInstance.root._form : {}, + options: this.options, + }, + additional, + ), + ); } } diff --git a/src/widgets/index.js b/src/widgets/index.js index 8363436fbc..3b748c567c 100644 --- a/src/widgets/index.js +++ b/src/widgets/index.js @@ -2,5 +2,5 @@ import InputWidget from './InputWidget'; import CalendarWidget from './CalendarWidget'; export default { input: InputWidget, - calendar: CalendarWidget + calendar: CalendarWidget, }; diff --git a/test/APIMock.js b/test/APIMock.js index 43bc9beeb5..d5fa9f805f 100644 --- a/test/APIMock.js +++ b/test/APIMock.js @@ -6,7 +6,7 @@ import Chance from 'chance'; import esc from 'escape-string-regexp'; const chance = Chance(); export const APIMock = { - submission: function(url, form) { + submission: function (url, form) { const submissions = {}; const domain = url.match(/http[s]?:\/\/[^/]+/)[0]; const requests = { @@ -16,7 +16,7 @@ export const APIMock = { submissionCreate: new RegExp(esc(`${url}/submission`)), submissionGet: new RegExp(`${esc(`${url}/submission/`)}(.*)`), submissionUpdate: new RegExp(`${esc(`${url}/submission/`)}(.*)`), - submissionIndex: new RegExp(`${esc(`${url}/submission?`)}(.*)`) + submissionIndex: new RegExp(`${esc(`${url}/submission?`)}(.*)`), }; fetchMock .get(requests.formLoad, () => { @@ -71,12 +71,15 @@ export const APIMock = { if (!matches[2]) { return []; } - return _.filter(submissions, _.chain(matches[2]) - .split('&') - .map(_.partial(_.split, _, '=', 2)) - .fromPairs() - .omit(['limit', 'skip']) - .value()); + return _.filter( + submissions, + _.chain(matches[2]) + .split('&') + .map(_.partial(_.split, _, '=', 2)) + .fromPairs() + .omit(['limit', 'skip']) + .value(), + ); }) // Mock the submission index. .get(requests.submissionIndex, (url) => { @@ -84,12 +87,15 @@ export const APIMock = { if (!matches[1]) { return []; } - return _.filter(submissions, _.chain(matches[1]) - .split('&') - .map(_.partial(_.split, _, '=', 2)) - .fromPairs() - .omit(['limit', 'skip']) - .value()); + return _.filter( + submissions, + _.chain(matches[1]) + .split('&') + .map(_.partial(_.split, _, '=', 2)) + .fromPairs() + .omit(['limit', 'skip']) + .value(), + ); }); - } + }, }; diff --git a/test/fixtures/example-form.json b/test/fixtures/example-form.json index 8c9ac1fc68..419ed0ede5 100644 --- a/test/fixtures/example-form.json +++ b/test/fixtures/example-form.json @@ -1 +1,227 @@ -{"_id":"57aa1d2a5b7a477b002717fe","machineName":"examples:example","modified":"2017-05-09T15:55:13.060Z","title":"Example","display":"form","type":"form","name":"example","path":"example","project":"5692b91fd1028f01000407e3","created":"2016-08-09T18:12:58.126Z","components":[{"input":false,"html":"

    Form.io Example Form

    \n\n

    This is a dynamically rendered JSON form built with Form.io. Using a simple drag-and-drop form builder, you can create any form that includes e-signatures, wysiwyg editors, date fields, layout components, data grids, surveys, etc.

    \n","type":"content","conditional":{"show":"","when":null,"eq":""}},{"input":false,"columns":[{"components":[{"tabindex":"1","tags":[],"clearOnHide":true,"hidden":false,"input":true,"tableView":true,"inputType":"text","inputMask":"","label":"First Name","key":"firstName","placeholder":"Enter your first name","prefix":"","suffix":"","multiple":false,"defaultValue":"","protected":false,"unique":false,"persistent":true,"validate":{"required":false,"minLength":"","maxLength":"","pattern":"","custom":"","customPrivate":false},"conditional":{"show":"","when":null,"eq":""},"type":"textfield"},{"tabindex":"3","tags":[],"clearOnHide":true,"hidden":false,"input":true,"tableView":true,"inputType":"email","label":"Email","key":"email","placeholder":"Enter your email address","prefix":"","suffix":"","defaultValue":"","protected":false,"unique":false,"persistent":true,"type":"email","conditional":{"show":"","when":null,"eq":""},"kickbox":{"enabled":false}}]},{"components":[{"tabindex":"2","tags":[],"clearOnHide":true,"hidden":false,"input":true,"tableView":true,"inputType":"text","inputMask":"","label":"Last Name","key":"lastName","placeholder":"Enter your last name","prefix":"","suffix":"","multiple":false,"defaultValue":"","protected":false,"unique":false,"persistent":true,"validate":{"required":false,"minLength":"","maxLength":"","pattern":"","custom":"","customPrivate":false},"conditional":{"show":"","when":null,"eq":""},"type":"textfield"},{"tabindex":"4","tags":[],"clearOnHide":true,"hidden":false,"input":true,"tableView":true,"inputMask":"(999) 999-9999","label":"Phone Number","key":"phoneNumber","placeholder":"Enter your phone number","prefix":"","suffix":"","multiple":false,"protected":false,"unique":false,"persistent":true,"defaultValue":"","validate":{"required":false},"type":"phoneNumber","conditional":{"show":"","when":null,"eq":""}}]}],"type":"columns","conditional":{"show":"","when":null,"eq":""}},{"tabindex":"5","tags":[],"clearOnHide":true,"hidden":false,"input":true,"tableView":true,"label":"Survey","key":"survey","questions":[{"value":"howWouldYouRateTheFormIoPlatform","label":"How would you rate the Form.io platform?"},{"value":"howWasCustomerSupport","label":"How was Customer Support?"},{"value":"overallExperience","label":"Overall Experience?"}],"values":[{"value":"excellent","label":"Excellent"},{"value":"great","label":"Great"},{"value":"good","label":"Good"},{"value":"average","label":"Average"},{"value":"poor","label":"Poor"}],"defaultValue":"","protected":false,"persistent":true,"validate":{"required":false,"custom":"","customPrivate":false},"type":"survey","conditional":{"show":"","when":null,"eq":""}},{"tags":[],"clearOnHide":true,"hidden":false,"input":true,"tableView":true,"label":"Signature","key":"signature","placeholder":"","footer":"Sign above","width":"100%","height":"150px","penColor":"black","backgroundColor":"rgb(245,245,235)","minWidth":"0.5","maxWidth":"2.5","protected":false,"persistent":true,"validate":{"required":false},"type":"signature","hideLabel":true,"conditional":{"show":"","when":null,"eq":""}},{"tabindex":"6","conditional":{"eq":"","when":null,"show":""},"tags":[],"input":true,"label":"Submit","tableView":false,"key":"submit","size":"md","leftIcon":"","rightIcon":"","block":false,"action":"submit","disableOnInvalid":true,"theme":"primary","type":"button"}],"owner":"554806425867f4ee203ea861","submissionAccess":[{"type":"create_all","roles":[]},{"type":"read_all","roles":[]},{"type":"update_all","roles":[]},{"type":"delete_all","roles":[]},{"type":"create_own","roles":["5692b920d1028f01000407e6"]},{"type":"read_own","roles":[]},{"type":"update_own","roles":[]},{"type":"delete_own","roles":[]}],"access":[{"type":"read_all","roles":["5692b920d1028f01000407e4","5692b920d1028f01000407e5","5692b920d1028f01000407e6"]}],"tags":[]} +{ + "_id": "57aa1d2a5b7a477b002717fe", + "machineName": "examples:example", + "modified": "2017-05-09T15:55:13.060Z", + "title": "Example", + "display": "form", + "type": "form", + "name": "example", + "path": "example", + "project": "5692b91fd1028f01000407e3", + "created": "2016-08-09T18:12:58.126Z", + "components": [ + { + "input": false, + "html": "

    Form.io Example Form

    \n\n

    This is a dynamically rendered JSON form built with Form.io. Using a simple drag-and-drop form builder, you can create any form that includes e-signatures, wysiwyg editors, date fields, layout components, data grids, surveys, etc.

    \n", + "type": "content", + "conditional": { "show": "", "when": null, "eq": "" } + }, + { + "input": false, + "columns": [ + { + "components": [ + { + "tabindex": "1", + "tags": [], + "clearOnHide": true, + "hidden": false, + "input": true, + "tableView": true, + "inputType": "text", + "inputMask": "", + "label": "First Name", + "key": "firstName", + "placeholder": "Enter your first name", + "prefix": "", + "suffix": "", + "multiple": false, + "defaultValue": "", + "protected": false, + "unique": false, + "persistent": true, + "validate": { + "required": false, + "minLength": "", + "maxLength": "", + "pattern": "", + "custom": "", + "customPrivate": false + }, + "conditional": { "show": "", "when": null, "eq": "" }, + "type": "textfield" + }, + { + "tabindex": "3", + "tags": [], + "clearOnHide": true, + "hidden": false, + "input": true, + "tableView": true, + "inputType": "email", + "label": "Email", + "key": "email", + "placeholder": "Enter your email address", + "prefix": "", + "suffix": "", + "defaultValue": "", + "protected": false, + "unique": false, + "persistent": true, + "type": "email", + "conditional": { "show": "", "when": null, "eq": "" }, + "kickbox": { "enabled": false } + } + ] + }, + { + "components": [ + { + "tabindex": "2", + "tags": [], + "clearOnHide": true, + "hidden": false, + "input": true, + "tableView": true, + "inputType": "text", + "inputMask": "", + "label": "Last Name", + "key": "lastName", + "placeholder": "Enter your last name", + "prefix": "", + "suffix": "", + "multiple": false, + "defaultValue": "", + "protected": false, + "unique": false, + "persistent": true, + "validate": { + "required": false, + "minLength": "", + "maxLength": "", + "pattern": "", + "custom": "", + "customPrivate": false + }, + "conditional": { "show": "", "when": null, "eq": "" }, + "type": "textfield" + }, + { + "tabindex": "4", + "tags": [], + "clearOnHide": true, + "hidden": false, + "input": true, + "tableView": true, + "inputMask": "(999) 999-9999", + "label": "Phone Number", + "key": "phoneNumber", + "placeholder": "Enter your phone number", + "prefix": "", + "suffix": "", + "multiple": false, + "protected": false, + "unique": false, + "persistent": true, + "defaultValue": "", + "validate": { "required": false }, + "type": "phoneNumber", + "conditional": { "show": "", "when": null, "eq": "" } + } + ] + } + ], + "type": "columns", + "conditional": { "show": "", "when": null, "eq": "" } + }, + { + "tabindex": "5", + "tags": [], + "clearOnHide": true, + "hidden": false, + "input": true, + "tableView": true, + "label": "Survey", + "key": "survey", + "questions": [ + { + "value": "howWouldYouRateTheFormIoPlatform", + "label": "How would you rate the Form.io platform?" + }, + { "value": "howWasCustomerSupport", "label": "How was Customer Support?" }, + { "value": "overallExperience", "label": "Overall Experience?" } + ], + "values": [ + { "value": "excellent", "label": "Excellent" }, + { "value": "great", "label": "Great" }, + { "value": "good", "label": "Good" }, + { "value": "average", "label": "Average" }, + { "value": "poor", "label": "Poor" } + ], + "defaultValue": "", + "protected": false, + "persistent": true, + "validate": { "required": false, "custom": "", "customPrivate": false }, + "type": "survey", + "conditional": { "show": "", "when": null, "eq": "" } + }, + { + "tags": [], + "clearOnHide": true, + "hidden": false, + "input": true, + "tableView": true, + "label": "Signature", + "key": "signature", + "placeholder": "", + "footer": "Sign above", + "width": "100%", + "height": "150px", + "penColor": "black", + "backgroundColor": "rgb(245,245,235)", + "minWidth": "0.5", + "maxWidth": "2.5", + "protected": false, + "persistent": true, + "validate": { "required": false }, + "type": "signature", + "hideLabel": true, + "conditional": { "show": "", "when": null, "eq": "" } + }, + { + "tabindex": "6", + "conditional": { "eq": "", "when": null, "show": "" }, + "tags": [], + "input": true, + "label": "Submit", + "tableView": false, + "key": "submit", + "size": "md", + "leftIcon": "", + "rightIcon": "", + "block": false, + "action": "submit", + "disableOnInvalid": true, + "theme": "primary", + "type": "button" + } + ], + "owner": "554806425867f4ee203ea861", + "submissionAccess": [ + { "type": "create_all", "roles": [] }, + { "type": "read_all", "roles": [] }, + { "type": "update_all", "roles": [] }, + { "type": "delete_all", "roles": [] }, + { "type": "create_own", "roles": ["5692b920d1028f01000407e6"] }, + { "type": "read_own", "roles": [] }, + { "type": "update_own", "roles": [] }, + { "type": "delete_own", "roles": [] } + ], + "access": [ + { + "type": "read_all", + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"] + } + ], + "tags": [] +} diff --git a/test/fixtures/index.d.ts b/test/fixtures/index.d.ts index ccd454bf94..9f5a37582c 100644 --- a/test/fixtures/index.d.ts +++ b/test/fixtures/index.d.ts @@ -1,3 +1,3 @@ -export { default as nestedConditionalForm } from "./nested-conditional-form"; -export { default as nestedForm } from "./nested-form.js"; -export { default as nestedFormInWizard } from "./nested-form-in-wizard.js"; +export { default as nestedConditionalForm } from './nested-conditional-form'; +export { default as nestedForm } from './nested-form.js'; +export { default as nestedFormInWizard } from './nested-form-in-wizard.js'; diff --git a/test/fixtures/nested-conditional-form.d.ts b/test/fixtures/nested-conditional-form.d.ts index 6894443978..d4a09f1e95 100644 --- a/test/fixtures/nested-conditional-form.d.ts +++ b/test/fixtures/nested-conditional-form.d.ts @@ -1,12 +1,13 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; optionsLabelPosition: string; values: { - value: string; - label: string; - shortcut: string; + value: string; + label: string; + shortcut: string; }[]; inline: boolean; mask: boolean; @@ -17,9 +18,9 @@ declare namespace _default { key: string; defaultValue: string; conditional: { - show: string; - when?: undefined; - eq?: undefined; + show: string; + when?: undefined; + eq?: undefined; }; properties: {}; encrypted: boolean; @@ -28,7 +29,8 @@ declare namespace _default { submit?: undefined; components?: undefined; theme?: undefined; - } | { + } + | { input: boolean; tableView: boolean; key: string; @@ -36,23 +38,23 @@ declare namespace _default { type: string; tags: never[]; conditional: { - show: string; - when: string; - eq: string; + show: string; + when: string; + eq: string; }; properties: {}; hideLabel: boolean; submit: boolean; components: { - input: boolean; - key: string; - label: string; - validate: { - required: boolean; - customMessage: string; - json: string; - }; - type: string; + input: boolean; + key: string; + label: string; + validate: { + required: boolean; + customMessage: string; + json: string; + }; + type: string; }[]; optionsLabelPosition?: undefined; values?: undefined; @@ -62,7 +64,8 @@ declare namespace _default { defaultValue?: undefined; encrypted?: undefined; theme?: undefined; - } | { + } + | { input: boolean; label: string; tableView: boolean; @@ -82,8 +85,9 @@ declare namespace _default { hideLabel?: undefined; submit?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/fixtures/nested-conditional-form.js b/test/fixtures/nested-conditional-form.js index 79ddfd08ca..907a3d5bf0 100644 --- a/test/fixtures/nested-conditional-form.js +++ b/test/fixtures/nested-conditional-form.js @@ -1,76 +1,73 @@ -export default -{ +export default { type: 'form', components: [ - { - label: 'Radio', - optionsLabelPosition: 'right', - values: [ { - value: 'yes', - label: 'Yes', - shortcut: '' - }, - { - value: 'no', - label: 'No', - shortcut: '' - }], - inline: false, - mask: false, - tableView: true, - alwaysEnabled: false, - type: 'radio', - input: true, - key: 'radio', - defaultValue: 'no', - conditional: - { - show: '' + label: 'Radio', + optionsLabelPosition: 'right', + values: [ + { + value: 'yes', + label: 'Yes', + shortcut: '', + }, + { + value: 'no', + label: 'No', + shortcut: '', + }, + ], + inline: false, + mask: false, + tableView: true, + alwaysEnabled: false, + type: 'radio', + input: true, + key: 'radio', + defaultValue: 'no', + conditional: { + show: '', + }, + properties: {}, + encrypted: false, }, - properties: - {}, - encrypted: false - }, - { - input: true, - tableView: true, - key: 'formField', - label: 'formField', - type: 'form', - tags: [], - conditional: { - show: 'true', - when: 'radio', - eq: 'yes' + input: true, + tableView: true, + key: 'formField', + label: 'formField', + type: 'form', + tags: [], + conditional: { + show: 'true', + when: 'radio', + eq: 'yes', + }, + properties: {}, + hideLabel: true, + submit: true, + components: [ + { + input: true, + key: 'name', + label: 'Name', + validate: { + required: true, + customMessage: '', + json: '', + }, + type: 'textfield', + }, + ], }, - properties: - {}, - hideLabel: true, - submit: true, - components: [ { input: true, - key: 'name', - label: 'Name', - validate: - { - required: true, - customMessage: '', - json: '' - }, - type: 'textfield' - }] - }, - { - input: true, - label: 'Submit', - tableView: false, - key: 'submit', - theme: 'primary', - type: 'button' - }], + label: 'Submit', + tableView: false, + key: 'submit', + theme: 'primary', + type: 'button', + }, + ], title: 'Nested Conditional', display: 'form', }; diff --git a/test/fixtures/nested-form-in-wizard.d.ts b/test/fixtures/nested-form-in-wizard.d.ts index 78d06c5f72..ec7bded3c8 100644 --- a/test/fixtures/nested-form-in-wizard.d.ts +++ b/test/fixtures/nested-form-in-wizard.d.ts @@ -1,44 +1,47 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; label: string; type: string; key: string; components: never[]; input?: undefined; - } | { + } + | { title: string; label: string; type: string; key: string; components: { + label: string; + display: string; + components: { label: string; - display: string; - components: { - label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - key: string; - type: string; - input: boolean; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { + label: string; + value: string; + shortcut: string; }[]; - useOriginalRevision: boolean; - reference: boolean; - clearOnHide: boolean; key: string; type: string; - persistent: boolean; + input: boolean; + }[]; + useOriginalRevision: boolean; + reference: boolean; + clearOnHide: boolean; + key: string; + type: string; + persistent: boolean; }[]; input: boolean; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/fixtures/nested-form-in-wizard.js b/test/fixtures/nested-form-in-wizard.js index 8adf847ffc..4427525ec3 100644 --- a/test/fixtures/nested-form-in-wizard.js +++ b/test/fixtures/nested-form-in-wizard.js @@ -6,7 +6,7 @@ export default { label: 'Page 1', type: 'panel', key: 'page1', - components: [] + components: [], }, { title: 'Page 2', @@ -27,18 +27,18 @@ export default { { label: 'Yes', value: 'true', - shortcut: '' + shortcut: '', }, { label: 'No', value: 'false', - shortcut: '' - } + shortcut: '', + }, ], key: 'radio', type: 'radio', - input: true - } + input: true, + }, ], useOriginalRevision: false, reference: false, @@ -46,10 +46,10 @@ export default { key: 'form', type: 'form', persistent: true, - } + }, ], input: false, - } + }, ], title: 'FIO-1133', display: 'wizard', diff --git a/test/fixtures/nested-form.d.ts b/test/fixtures/nested-form.d.ts index edeb2e0367..0565b45829 100644 --- a/test/fixtures/nested-form.d.ts +++ b/test/fixtures/nested-form.d.ts @@ -1,89 +1,96 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { label: string; tableView: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - defaultOpen?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - defaultValue?: undefined; - components?: undefined; - disableOnInvalid?: undefined; - } | { - label: string; - reorder: boolean; - addAnotherPosition: string; - defaultOpen: boolean; - layoutFixed: boolean; - enableRowGroups: boolean; - tableView: boolean; - defaultValue: {}[]; - key: string; - type: string; - input: boolean; - components: { + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + defaultOpen?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + defaultValue?: undefined; + components?: undefined; + disableOnInvalid?: undefined; + } + | { + label: string; + reorder: boolean; + addAnotherPosition: string; + defaultOpen: boolean; + layoutFixed: boolean; + enableRowGroups: boolean; + tableView: boolean; + defaultValue: {}[]; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - }[]; - disableOnInvalid?: undefined; - } | { - label: string; - components: { + }[]; + disableOnInvalid?: undefined; + } + | { + label: string; + components: { label: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; - }[]; - tableView: boolean; - key: string; - type: string; - input: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - defaultOpen?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - defaultValue?: undefined; - disableOnInvalid?: undefined; - } | { - type: string; - label: string; - key: string; - disableOnInvalid: boolean; - input: boolean; - tableView: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - defaultOpen?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - defaultValue?: undefined; - components?: undefined; - })[]; + }[]; + tableView: boolean; + key: string; + type: string; + input: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + defaultOpen?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + defaultValue?: undefined; + disableOnInvalid?: undefined; + } + | { + type: string; + label: string; + key: string; + disableOnInvalid: boolean; + input: boolean; + tableView: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + defaultOpen?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + defaultValue?: undefined; + components?: undefined; + } + )[]; key: string; type: string; input: boolean; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -91,21 +98,22 @@ declare namespace _default { input: boolean; tableView: boolean; components?: undefined; - })[]; - const controller: string; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: never[]; - const settings: {}; - const properties: {}; - const name: string; - const path: string; - const project: string; + } + )[]; + const controller: string; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: never[]; + const settings: {}; + const properties: {}; + const name: string; + const path: string; + const project: string; } export default _default; diff --git a/test/fixtures/nested-form.js b/test/fixtures/nested-form.js index 1f92a7f089..7ef7f64e0d 100644 --- a/test/fixtures/nested-form.js +++ b/test/fixtures/nested-form.js @@ -13,7 +13,7 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true + input: true, }, { label: 'Data Grid', @@ -23,9 +23,7 @@ export default { layoutFixed: false, enableRowGroups: false, tableView: false, - defaultValue: [ - {} - ], + defaultValue: [{}], key: 'dataGrid', type: 'datagrid', input: true, @@ -35,9 +33,9 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true - } - ] + input: true, + }, + ], }, { label: 'Tabs', @@ -51,15 +49,15 @@ export default { tableView: true, key: 'tabsTextfield', type: 'textfield', - input: true - } - ] - } + input: true, + }, + ], + }, ], tableView: false, key: 'tabs', type: 'tabs', - input: false + input: false, }, { type: 'button', @@ -67,12 +65,12 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], key: 'form', type: 'form', - input: true + input: true, }, { type: 'button', @@ -80,8 +78,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], controller: '', revisions: '', @@ -90,13 +88,9 @@ export default { display: 'form', access: [ { - roles: [ - '5e8f2b7cd248943778ec61bb', - '5e8f2b7cd248941e0aec61bc', - '5e8f2b7cd248941083ec61bd' - ], - type: 'read_all' - } + roles: ['5e8f2b7cd248943778ec61bb', '5e8f2b7cd248941e0aec61bc', '5e8f2b7cd248941083ec61bd'], + type: 'read_all', + }, ], submissionAccess: [], settings: {}, diff --git a/test/forms/actions.d.ts b/test/forms/actions.d.ts index 0e63bd127f..d3b409c1e4 100644 --- a/test/forms/actions.d.ts +++ b/test/forms/actions.d.ts @@ -1,111 +1,120 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - type: string; + const title: string; + namespace form { + const components: ( + | { + type: string; + input: boolean; + key: string; + label?: undefined; + tree?: undefined; + legend?: undefined; + components?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + label: string; + key: string; + tree?: undefined; + legend?: undefined; + components?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + tree: boolean; + legend: string; + components: { input: boolean; - key: string; - label?: undefined; - tree?: undefined; - legend?: undefined; - components?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { type: string; - input: boolean; - label: string; key: string; - tree?: undefined; - legend?: undefined; - components?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { - type: string; - input: boolean; - tree: boolean; - legend: string; - components: { - input: boolean; - type: string; - key: string; - components: ({ - clearOnHide: boolean; - label: string; - input: boolean; - key: string; - columns: ({ + components: ( + | { + clearOnHide: boolean; + label: string; + input: boolean; + key: string; + columns: ( + | { components: { - input: boolean; - label: string; - key: string; - placeholder: string; - data: { - values: { - value: string; - label: string; - }[]; - }; - dataSrc: string; - valueProperty: string; - template: string; - persistent: boolean; - type: string; - description: string; + input: boolean; + label: string; + key: string; + placeholder: string; + data: { + values: { + value: string; + label: string; + }[]; + }; + dataSrc: string; + valueProperty: string; + template: string; + persistent: boolean; + type: string; + description: string; }[]; width: number; offset: number; push: number; pull: number; - } | { + } + | { components: { - label: string; - key: string; - inputType: string; - defaultValue: string; - input: boolean; - placeholder: string; - prefix: string; - suffix: string; - type: string; - multiple: boolean; - validate: { - required: boolean; - }; - description: string; + label: string; + key: string; + inputType: string; + defaultValue: string; + input: boolean; + placeholder: string; + prefix: string; + suffix: string; + type: string; + multiple: boolean; + validate: { + required: boolean; + }; + description: string; }[]; width: number; offset: number; push: number; pull: number; - })[]; - type: string; - tableView?: undefined; - title?: undefined; - components?: undefined; - } | { - key: string; - input: boolean; - tableView: boolean; - title: string; - components: ({ + } + )[]; + type: string; + tableView?: undefined; + title?: undefined; + components?: undefined; + } + | { + key: string; + input: boolean; + tableView: boolean; + title: string; + components: ( + | { type: string; persistent: boolean; protected: boolean; @@ -121,20 +130,21 @@ declare namespace _default { components?: undefined; tree?: undefined; addAnother?: undefined; - } | { + } + | { key: string; input: boolean; tableView: boolean; legend: string; components: { - label: string; - key: string; - inputType: string; - defaultValue: string; - input: boolean; - placeholder: string; - type: string; - multiple: boolean; + label: string; + key: string; + inputType: string; + defaultValue: string; + input: boolean; + placeholder: string; + type: string; + multiple: boolean; }[]; type: string; label: string; @@ -146,20 +156,21 @@ declare namespace _default { inputType?: undefined; tree?: undefined; addAnother?: undefined; - } | { + } + | { input: boolean; tree: boolean; components: { - input: boolean; - tableView: boolean; - inputType: string; - label: string; - key: string; - protected: boolean; - persistent: boolean; - clearOnHide: boolean; - type: string; - inDataGrid: boolean; + input: boolean; + tableView: boolean; + inputType: string; + label: string; + key: string; + protected: boolean; + persistent: boolean; + clearOnHide: boolean; + type: string; + inDataGrid: boolean; }[]; label: string; key: string; @@ -173,17 +184,20 @@ declare namespace _default { inputType?: undefined; tableView?: undefined; legend?: undefined; - })[]; - type: string; - label: string; - clearOnHide?: undefined; - columns?: undefined; - } | { - key: string; - input: boolean; - tableView: boolean; - title: string; - components: ({ + } + )[]; + type: string; + label: string; + clearOnHide?: undefined; + columns?: undefined; + } + | { + key: string; + input: boolean; + tableView: boolean; + title: string; + components: ( + | { key: string; input: boolean; html: string; @@ -201,7 +215,8 @@ declare namespace _default { wysiwyg?: undefined; spellcheck?: undefined; description?: undefined; - } | { + } + | { autofocus: boolean; input: boolean; tableView: boolean; @@ -219,17 +234,20 @@ declare namespace _default { type: string; description: string; html?: undefined; - })[]; - type: string; - label: string; - clearOnHide?: undefined; - columns?: undefined; - } | { - key: string; - type: string; - title: string; - input: boolean; - components: ({ + } + )[]; + type: string; + label: string; + clearOnHide?: undefined; + columns?: undefined; + } + | { + key: string; + type: string; + title: string; + input: boolean; + components: ( + | { type: string; persistent: boolean; protected: boolean; @@ -244,7 +262,8 @@ declare namespace _default { unique?: undefined; description?: undefined; clearOnHide?: undefined; - } | { + } + | { key: string; input: boolean; html: string; @@ -259,7 +278,8 @@ declare namespace _default { unique?: undefined; description?: undefined; clearOnHide?: undefined; - } | { + } + | { input: boolean; inputType: string; label: string; @@ -274,7 +294,8 @@ declare namespace _default { hideLabel?: undefined; html?: undefined; clearOnHide?: undefined; - } | { + } + | { input: boolean; inputType: string; label: string; @@ -289,379 +310,399 @@ declare namespace _default { hideLabel?: undefined; html?: undefined; unique?: undefined; - })[]; - clearOnHide?: undefined; - label?: undefined; - columns?: undefined; - tableView?: undefined; - })[]; - }[]; - key?: undefined; - label?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { + } + )[]; + clearOnHide?: undefined; + label?: undefined; + columns?: undefined; + tableView?: undefined; + } + )[]; + }[]; + key?: undefined; + label?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + tree: boolean; + key: string; + legend: string; + components: { type: string; input: boolean; - tree: boolean; - key: string; - legend: string; - components: { - type: string; - input: boolean; - key: string; - label: string; - placeholder: string; - dataSrc: string; - data: { - json: string; - }; - template: string; - valueProperty: string; - multiple: boolean; - }[]; - label?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { key: string; + label: string; + placeholder: string; + dataSrc: string; + data: { + json: string; + }; + template: string; + valueProperty: string; + multiple: boolean; + }[]; + label?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + key: string; + type: string; + input: boolean; + tree: boolean; + legend: string; + components: { type: string; + key: string; input: boolean; tree: boolean; - legend: string; components: { - type: string; - key: string; - input: boolean; - tree: boolean; - components: { - key: string; - type: string; - input: boolean; - columns: ({ - components: ({ - type: string; - input: boolean; - label: string; + key: string; + type: string; + input: boolean; + columns: ( + | { + components: ( + | { + type: string; + input: boolean; + label: string; + key: string; + placeholder: string; + template: string; + dataSrc: string; + data: { + json: string; + values?: undefined; + url?: undefined; + resource?: undefined; + }; + valueProperty: string; + multiple: boolean; + inputType?: undefined; + } + | { + type: string; + input: boolean; + label: string; + key: string; + placeholder: string; + template: string; + dataSrc: string; + data: { + values: { + value: string; + label: string; + }[]; + json: string; + url: string; + resource: string; + }; + valueProperty: string; + multiple: boolean; + inputType?: undefined; + } + | { + input: boolean; + type: string; + inputType: string; + label: string; + key: string; + placeholder: string; + multiple: boolean; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + } + )[]; + } + | { + components: { + key: string; + type: string; + input: boolean; + components: ( + | { key: string; - placeholder: string; - template: string; - dataSrc: string; - data: { - json: string; - values?: undefined; - url?: undefined; - resource?: undefined; - }; - valueProperty: string; - multiple: boolean; - inputType?: undefined; - } | { type: string; + tag: string; input: boolean; + content: string; + className: string; + label?: undefined; + editorComponents?: undefined; + placeholder?: undefined; + } + | { label: string; - key: string; - placeholder: string; - template: string; - dataSrc: string; - data: { - values: { - value: string; - label: string; - }[]; - json: string; - url: string; - resource: string; - }; - valueProperty: string; - multiple: boolean; - inputType?: undefined; - } | { - input: boolean; - type: string; - inputType: string; - label: string; - key: string; - placeholder: string; - multiple: boolean; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - })[]; - } | { - components: { - key: string; type: string; input: boolean; - components: ({ - key: string; - type: string; - tag: string; - input: boolean; - content: string; - className: string; - label?: undefined; - editorComponents?: undefined; - placeholder?: undefined; - } | { - label: string; - type: string; - input: boolean; - key: string; - editorComponents: ({ - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + key: string; + editorComponents: ( + | { + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; + size?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + dataGridLabel?: undefined; + } + | { + type: string; + label: string; + key: string; + size: string; + block: boolean; + action: string; + disableOnInvalid: boolean; + theme: string; + input: boolean; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + refreshOn: string; + redrawOn: string; + tableView: boolean; + modalEdit: boolean; + labelPosition: string; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: { type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; - size?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - dataGridLabel?: undefined; - } | { - type: string; - label: string; - key: string; - size: string; - block: boolean; - action: string; - disableOnInvalid: boolean; - theme: string; - input: boolean; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; + }; + attributes: {}; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; multiple: boolean; - defaultValue: null; - protected: boolean; unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - refreshOn: string; - redrawOn: string; - tableView: boolean; - modalEdit: boolean; - labelPosition: string; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: { - type: string; - }; - attributes: {}; - validateOn: string; - validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - pattern?: undefined; - customMessage?: undefined; - json?: undefined; - minLength?: undefined; - maxLength?: undefined; - }; - conditional: { - show: null; - when: null; - eq: string; - json?: undefined; - }; - overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; - }; - allowCalculateOverride: boolean; - encrypted: boolean; - showCharCount: boolean; - showWordCount: boolean; - properties: {}; - allowMultipleMasks: boolean; - leftIcon: string; - rightIcon: string; - dataGridLabel: boolean; - id: string; - inputMask?: undefined; - mask?: undefined; - spellcheck?: undefined; - inputFormat?: undefined; - case?: undefined; - calculateServer?: undefined; - tags?: undefined; - logic?: undefined; - inputType?: undefined; - })[]; - placeholder: string; - tag?: undefined; - content?: undefined; - className?: undefined; - })[]; - }[]; - })[]; - }[]; + pattern?: undefined; + customMessage?: undefined; + json?: undefined; + minLength?: undefined; + maxLength?: undefined; + }; + conditional: { + show: null; + when: null; + eq: string; + json?: undefined; + }; + overlay: { + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; + }; + allowCalculateOverride: boolean; + encrypted: boolean; + showCharCount: boolean; + showWordCount: boolean; + properties: {}; + allowMultipleMasks: boolean; + leftIcon: string; + rightIcon: string; + dataGridLabel: boolean; + id: string; + inputMask?: undefined; + mask?: undefined; + spellcheck?: undefined; + inputFormat?: undefined; + case?: undefined; + calculateServer?: undefined; + tags?: undefined; + logic?: undefined; + inputType?: undefined; + } + )[]; + placeholder: string; + tag?: undefined; + content?: undefined; + className?: undefined; + } + )[]; + }[]; + } + )[]; }[]; - label?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { - key: string; - type: string; - tag: string; - input: boolean; - content: string; - className: string; - label?: undefined; - tree?: undefined; - legend?: undefined; - components?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { - type: string; - input: boolean; - label: string; - key: string; - size: string; - leftIcon: string; - rightIcon: string; - block: boolean; - action: string; - disableOnInvalid: boolean; - theme: string; - tree?: undefined; - legend?: undefined; - components?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - })[]; - const action: string; - } - const tests: { - 'Test initialize action with data'(form: any, done: any): void; - }; + }[]; + label?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + key: string; + type: string; + tag: string; + input: boolean; + content: string; + className: string; + label?: undefined; + tree?: undefined; + legend?: undefined; + components?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + label: string; + key: string; + size: string; + leftIcon: string; + rightIcon: string; + block: boolean; + action: string; + disableOnInvalid: boolean; + theme: string; + tree?: undefined; + legend?: undefined; + components?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + } + )[]; + const action: string; + } + const tests: { + 'Test initialize action with data'(form: any, done: any): void; + }; } export default _default; diff --git a/test/forms/actions.js b/test/forms/actions.js index db261b9914..bb43f1be7c 100644 --- a/test/forms/actions.js +++ b/test/forms/actions.js @@ -7,18 +7,18 @@ export default { { type: 'hidden', input: true, - key: 'priority' + key: 'priority', }, { type: 'hidden', input: true, - key: 'name' + key: 'name', }, { type: 'textfield', input: true, label: 'Title', - key: 'title' + key: 'title', }, { type: 'fieldset', @@ -48,42 +48,43 @@ export default { values: [ { value: '', - label: 'Match' + label: 'Match', }, { value: 'get', - label: 'GET' + label: 'GET', }, { value: 'post', - label: 'POST' + label: 'POST', }, { value: 'put', - label: 'PUT' + label: 'PUT', }, { value: 'delete', - label: 'DELETE' + label: 'DELETE', }, { value: 'patch', - label: 'PATCH' - } - ] + label: 'PATCH', + }, + ], }, dataSrc: 'values', valueProperty: 'value', template: '{{ item.label }}', persistent: true, type: 'select', - description: 'If set to Match it will use the same Request Type as sent to the Form.io server.' - } + description: + 'If set to Match it will use the same Request Type as sent to the Form.io server.', + }, ], width: 2, offset: 0, push: 0, - pull: 0 + pull: 0, }, { components: [ @@ -99,18 +100,18 @@ export default { type: 'textfield', multiple: false, validate: { - required: true + required: true, }, - description: '' - } + description: '', + }, ], width: 10, offset: 0, push: 0, - pull: 0 - } + pull: 0, + }, ], - type: 'columns' + type: 'columns', }, { key: 'panel1', @@ -128,7 +129,7 @@ export default { tooltip: 'Pass on any headers received by the form.io server.', hideLabel: false, inputType: 'checkbox', - input: true + input: true, }, { key: 'fieldset', @@ -144,7 +145,7 @@ export default { input: true, placeholder: 'User for Basic Authentication', type: 'textfield', - multiple: false + multiple: false, }, { label: 'Authorize Password', @@ -154,11 +155,11 @@ export default { input: true, placeholder: 'Password for Basic Authentication', type: 'textfield', - multiple: false - } + multiple: false, + }, ], type: 'fieldset', - label: 'fieldset' + label: 'fieldset', }, { input: true, @@ -174,7 +175,7 @@ export default { persistent: true, clearOnHide: true, type: 'textfield', - inDataGrid: true + inDataGrid: true, }, { input: true, @@ -186,18 +187,18 @@ export default { persistent: true, clearOnHide: true, type: 'textfield', - inDataGrid: true - } + inDataGrid: true, + }, ], label: 'Additional Headers', key: 'headers', persistent: true, type: 'datagrid', - addAnother: 'Add Header' - } + addAnother: 'Add Header', + }, ], type: 'panel', - label: 'Panel' + label: 'Panel', }, { key: 'panel2', @@ -210,7 +211,7 @@ export default { input: false, html: '

    By default the request payload will contain an object with the following information:

    {
      request: request, // an object containing request body to the form.io server.
      response: response, // an object containing the server response from the form.io server.
      submission: submission, // an object containing the submission object from the request.
      params: params, // an object containing the params for the request such as query parameters or url parameters.
    }

    You can use the transform payload javascript to modify the contents of the payload that will be send in this webhook. The following variables are also available: headers

    ', type: 'content', - label: 'content' + label: 'content', }, { autofocus: false, @@ -228,11 +229,11 @@ export default { wysiwyg: false, spellcheck: true, type: 'textarea', - description: 'Available variables are payload, externalId, and headers.' - } + description: 'Available variables are payload, externalId, and headers.', + }, ], type: 'panel', - label: 'Panel' + label: 'Panel', }, { key: 'panel3', @@ -249,14 +250,14 @@ export default { label: 'Wait for webhook response before continuing actions', hideLabel: false, inputType: 'checkbox', - input: true + input: true, }, { key: 'content', input: false, html: '

    When making a request to an external service, you may want to save an external Id in association with this submission so you can refer to the same external resource later. To do that, enter an external ID reference name and the path to the id in the response data object. This value will then be available as externalId in the Request URL and Transform Payload fields.

    ', type: 'content', - label: 'content' + label: 'content', }, { input: true, @@ -268,7 +269,7 @@ export default { unique: false, persistent: true, type: 'textfield', - description: 'The name to store and reference the external Id for this request' + description: 'The name to store and reference the external Id for this request', }, { input: true, @@ -279,13 +280,13 @@ export default { protected: false, clearOnHide: true, type: 'textfield', - description: 'The path to the data in the webhook response object' - } - ] - } - ] - } - ] + description: 'The path to the data in the webhook response object', + }, + ], + }, + ], + }, + ], }, { type: 'fieldset', @@ -302,11 +303,11 @@ export default { placeholder: 'Select which handler(s) you would like to trigger', dataSrc: 'json', data: { - json: '[{"name":"before","title":"Before"},{"name":"after","title":"After"}]' + json: '[{"name":"before","title":"Before"},{"name":"after","title":"After"}]', }, template: '{{ item.title }}', valueProperty: 'name', - multiple: true + multiple: true, }, { type: 'select', @@ -316,13 +317,13 @@ export default { placeholder: 'Trigger action on method(s)', dataSrc: 'json', data: { - json: '[{"name":"create","title":"Create"},{"name":"update","title":"Update"},{"name":"read","title":"Read"},{"name":"delete","title":"Delete"},{"name":"index","title":"Index"}]' + json: '[{"name":"create","title":"Create"},{"name":"update","title":"Update"},{"name":"read","title":"Read"},{"name":"delete","title":"Delete"},{"name":"index","title":"Index"}]', }, template: '{{ item.title }}', valueProperty: 'name', - multiple: true - } - ] + multiple: true, + }, + ], }, { key: 'fieldset', @@ -353,10 +354,10 @@ export default { template: '{{ item.label || item.key }}', dataSrc: 'json', data: { - json: '[{"key":""},{"label":"A","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"a","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"e2wbkzv","defaultValue":""},{"label":"B","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"b","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"e8j79z","defaultValue":""},{"label":"C","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"c","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"etrp7lb","defaultValue":""},{"type":"button","label":"Submit","key":"submit","size":"md","block":false,"action":"submit","disableOnInvalid":true,"theme":"primary","input":true,"placeholder":"","prefix":"","customClass":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"hidden":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","tableView":false,"modalEdit":false,"labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","widget":{"type":"input"},"attributes":{},"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"conditional":{"show":null,"when":null,"eq":""},"overlay":{"style":"","left":"","top":"","width":"","height":""},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"properties":{},"allowMultipleMasks":false,"leftIcon":"","rightIcon":"","dataGridLabel":true,"id":"ew4sbvh"}]' + json: '[{"key":""},{"label":"A","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"a","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"e2wbkzv","defaultValue":""},{"label":"B","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"b","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"e8j79z","defaultValue":""},{"label":"C","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"c","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"etrp7lb","defaultValue":""},{"type":"button","label":"Submit","key":"submit","size":"md","block":false,"action":"submit","disableOnInvalid":true,"theme":"primary","input":true,"placeholder":"","prefix":"","customClass":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"hidden":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","tableView":false,"modalEdit":false,"labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","widget":{"type":"input"},"attributes":{},"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"conditional":{"show":null,"when":null,"eq":""},"overlay":{"style":"","left":"","top":"","width":"","height":""},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"properties":{},"allowMultipleMasks":false,"leftIcon":"","rightIcon":"","dataGridLabel":true,"id":"ew4sbvh"}]', }, valueProperty: 'key', - multiple: false + multiple: false, }, { type: 'select', @@ -370,23 +371,23 @@ export default { values: [ { value: '', - label: '' + label: '', }, { value: 'equals', - label: 'Equals' + label: 'Equals', }, { value: 'notEqual', - label: 'Does Not Equal' - } + label: 'Does Not Equal', + }, ], json: '', url: '', - resource: '' + resource: '', }, valueProperty: 'value', - multiple: false + multiple: false, }, { input: true, @@ -395,9 +396,9 @@ export default { label: '', key: 'value', placeholder: 'Enter value', - multiple: false - } - ] + multiple: false, + }, + ], }, { components: [ @@ -411,8 +412,9 @@ export default { type: 'htmlelement', tag: 'h4', input: false, - content: 'Or you can provide your own custom JavaScript or JSON condition logic here', - className: '' + content: + 'Or you can provide your own custom JavaScript or JSON condition logic here', + className: '', }, { label: '', @@ -429,7 +431,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -470,7 +472,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -481,7 +483,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -492,14 +494,14 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'e2wbkzv', - defaultValue: '' + defaultValue: '', }, { label: 'B', @@ -510,7 +512,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -551,7 +553,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -562,7 +564,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -573,14 +575,14 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'e8j79z', - defaultValue: '' + defaultValue: '', }, { label: 'C', @@ -591,7 +593,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -632,7 +634,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -643,7 +645,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -654,14 +656,14 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'etrp7lb', - defaultValue: '' + defaultValue: '', }, { type: 'button', @@ -700,7 +702,7 @@ export default { customDefaultValue: '', calculateValue: '', widget: { - type: 'input' + type: 'input', }, attributes: {}, validateOn: 'change', @@ -710,19 +712,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -733,20 +735,21 @@ export default { leftIcon: '', rightIcon: '', dataGridLabel: true, - id: 'ew4sbvh' - } + id: 'ew4sbvh', + }, ], - placeholder: '// Example: Only execute if submitted roles has authenticated".\nJavaScript: execute = (data.roles.indexOf("authenticated") !== -1);\nJSON: { "in": [ "authenticated", { "var: "data.roles" } ] }' - } - ] - } - ] - } - ] - } - ] - } - ] + placeholder: + '// Example: Only execute if submitted roles has authenticated".\nJavaScript: execute = (data.roles.indexOf("authenticated") !== -1);\nJSON: { "in": [ "authenticated", { "var: "data.roles" } ] }', + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], }, { key: 'html2', @@ -754,7 +757,7 @@ export default { tag: 'hr', input: false, content: '', - className: '' + className: '', }, { type: 'button', @@ -767,100 +770,87 @@ export default { block: false, action: 'submit', disableOnInvalid: true, - theme: 'primary' - } + theme: 'primary', + }, ], - action: '/project/5e447ffae9d4804078d70048/form/5e5f11d53a26d9d7682492f3/action' + action: '/project/5e447ffae9d4804078d70048/form/5e5f11d53a26d9d7682492f3/action', }, tests: { 'Test initialize action with data'(form, done) { - form.setSubmission({ - data: { - settings: {}, - condition: {}, - _id: '5e5f14a23a26d9d768249322', - handler: [ - 'after' - ], - method: [ - 'create', - 'update' - ], - priority: 0, - name: 'webhook', - title: 'Webhook (Premium)', - form: '5e5f11d53a26d9d7682492f3', - machineName: 'ozvjjccvueotocl:webhooks:webhook' - } - }).then(() => { - const formSubmission = { - data:{ - ...form.submission.data, - condition: {}, - settings: {} - } - }; - assert.deepEqual(formSubmission, { + form + .setSubmission({ data: { - priority: 0, - name: 'webhook', - title: 'Webhook (Premium)', settings: {}, - handler: [ - 'after' - ], - method: [ - 'create', - 'update' - ], condition: {}, - submit: false, _id: '5e5f14a23a26d9d768249322', + handler: ['after'], + method: ['create', 'update'], + priority: 0, + name: 'webhook', + title: 'Webhook (Premium)', form: '5e5f11d53a26d9d7682492f3', - machineName: 'ozvjjccvueotocl:webhooks:webhook' - } - }); - form.on('componentChange', function() { - const formSubmissionAfterChange = { - data:{ + machineName: 'ozvjjccvueotocl:webhooks:webhook', + }, + }) + .then(() => { + const formSubmission = { + data: { ...form.submission.data, condition: {}, - settings: { - url: form.submission.data.settings.url, - } - } + settings: {}, + }, }; - - assert.deepEqual(formSubmissionAfterChange, { + assert.deepEqual(formSubmission, { data: { priority: 0, name: 'webhook', title: 'Webhook (Premium)', - settings: { - url: 'https://google.com' - }, - handler: [ - 'after' - ], - method: [ - 'create', - 'update' - ], + settings: {}, + handler: ['after'], + method: ['create', 'update'], condition: {}, submit: false, _id: '5e5f14a23a26d9d768249322', form: '5e5f11d53a26d9d7682492f3', - machineName: 'ozvjjccvueotocl:webhooks:webhook' - } + machineName: 'ozvjjccvueotocl:webhooks:webhook', + }, }); + form.on('componentChange', function () { + const formSubmissionAfterChange = { + data: { + ...form.submission.data, + condition: {}, + settings: { + url: form.submission.data.settings.url, + }, + }, + }; - form.destroy(); - done(); - }); + assert.deepEqual(formSubmissionAfterChange, { + data: { + priority: 0, + name: 'webhook', + title: 'Webhook (Premium)', + settings: { + url: 'https://google.com', + }, + handler: ['after'], + method: ['create', 'update'], + condition: {}, + submit: false, + _id: '5e5f14a23a26d9d768249322', + form: '5e5f11d53a26d9d7682492f3', + machineName: 'ozvjjccvueotocl:webhooks:webhook', + }, + }); - const requestUrl = form.getComponent('url'); - requestUrl.updateValue('https://google.com'); - }); - } - } + form.destroy(); + done(); + }); + + const requestUrl = form.getComponent('url'); + requestUrl.updateValue('https://google.com'); + }); + }, + }, }; diff --git a/test/forms/calculateValueOnServerForEditGrid.js b/test/forms/calculateValueOnServerForEditGrid.js index aa7173466b..72fc5a7d7c 100644 --- a/test/forms/calculateValueOnServerForEditGrid.js +++ b/test/forms/calculateValueOnServerForEditGrid.js @@ -32,8 +32,7 @@ export default { tableView: true, }, ], - calculateValue: - 'if (options.server){\n value = [{ fielda: data.first, fieldb: "test"}];\n}', + calculateValue: 'if (options.server){\n value = [{ fielda: data.first, fieldb: "test"}];\n}', displayAsTable: false, calculateServer: true, }, diff --git a/test/forms/calculateValueWithManualOverrideLableValueDataGrid.d.ts b/test/forms/calculateValueWithManualOverrideLableValueDataGrid.d.ts index 78d08c5f83..e84f0889c5 100644 --- a/test/forms/calculateValueWithManualOverrideLableValueDataGrid.d.ts +++ b/test/forms/calculateValueWithManualOverrideLableValueDataGrid.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -9,31 +10,35 @@ declare namespace _default { initEmpty: boolean; tableView: boolean; defaultValue: { - label: string; - value: string; + label: string; + value: string; }[]; allowCalculateOverride: boolean; key: string; type: string; input: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - allowCalculateOverride?: undefined; - } | { - label: string; - tableView: boolean; - calculateValue: string; - allowCalculateOverride: boolean; - key: string; - type: string; - input: boolean; - })[]; + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + allowCalculateOverride?: undefined; + } + | { + label: string; + tableView: boolean; + calculateValue: string; + allowCalculateOverride: boolean; + key: string; + type: string; + input: boolean; + } + )[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -48,8 +53,9 @@ declare namespace _default { defaultValue?: undefined; allowCalculateOverride?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/calculateValueWithManualOverrideLableValueDataGrid.js b/test/forms/calculateValueWithManualOverrideLableValueDataGrid.js index aa8deb919a..c04c6736d7 100644 --- a/test/forms/calculateValueWithManualOverrideLableValueDataGrid.js +++ b/test/forms/calculateValueWithManualOverrideLableValueDataGrid.js @@ -12,8 +12,8 @@ export default { defaultValue: [ { label: '', - value: '' - } + value: '', + }, ], allowCalculateOverride: true, key: 'dataGrid', @@ -25,7 +25,7 @@ export default { tableView: true, key: 'label', type: 'textfield', - input: true + input: true, }, { label: 'Value', @@ -34,9 +34,9 @@ export default { allowCalculateOverride: true, key: 'value', type: 'textfield', - input: true - } - ] + input: true, + }, + ], }, { type: 'button', @@ -44,8 +44,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FIO-3254', display: 'form', diff --git a/test/forms/calculatedValue.d.ts b/test/forms/calculatedValue.d.ts index 41ffc1253e..84556024bc 100644 --- a/test/forms/calculatedValue.d.ts +++ b/test/forms/calculatedValue.d.ts @@ -1,13 +1,14 @@ declare namespace _default { - const type: string; - const owner: string; - const components: ({ + const type: string; + const owner: string; + const components: ( + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; alwaysEnabled: boolean; @@ -16,14 +17,15 @@ declare namespace _default { type: string; label: string; components: { - legend: string; - alwaysEnabled: boolean; - tableView: boolean; - key: string; - type: string; - label: string; - input: boolean; - components: ({ + legend: string; + alwaysEnabled: boolean; + tableView: boolean; + key: string; + type: string; + label: string; + input: boolean; + components: ( + | { label: string; mask: boolean; alwaysEnabled: boolean; @@ -34,7 +36,8 @@ declare namespace _default { key: string; type: string; input: boolean; - } | { + } + | { label: string; mask: boolean; alwaysEnabled: boolean; @@ -46,12 +49,14 @@ declare namespace _default { key: string; type: string; input: boolean; - })[]; - path: string; + } + )[]; + path: string; }[]; input: boolean; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -64,8 +69,9 @@ declare namespace _default { collapsible?: undefined; alwaysEnabled?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/calculatedValue.js b/test/forms/calculatedValue.js index 2ca84df22c..978930e9c8 100644 --- a/test/forms/calculatedValue.js +++ b/test/forms/calculatedValue.js @@ -8,7 +8,7 @@ export default { buttonSettings: { previous: true, cancel: true, - next: true + next: true, }, collapsible: false, alwaysEnabled: false, @@ -36,7 +36,7 @@ export default { inputFormat: 'plain', key: 'a', type: 'number', - input: true + input: true, }, { label: 'B', @@ -48,7 +48,7 @@ export default { inputFormat: 'plain', key: 'b', type: 'number', - input: true + input: true, }, { label: 'Total', @@ -61,13 +61,13 @@ export default { calculateValue: "value = (data['a'] || 0) + (data['b'] || 0);", key: 'total', type: 'number', - input: true - } + input: true, + }, ], - path: 'fieldset' - } + path: 'fieldset', + }, ], - input: false + input: false, }, { label: 'Submit', @@ -75,8 +75,8 @@ export default { tableView: false, key: 'submit', type: 'button', - input: true - } + input: true, + }, ], title: 'FIO-3086', display: 'form', diff --git a/test/forms/calculatedfields.d.ts b/test/forms/calculatedfields.d.ts index d47e3fe9e2..02d45de8f2 100644 --- a/test/forms/calculatedfields.d.ts +++ b/test/forms/calculatedfields.d.ts @@ -1,29 +1,32 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - type: string; - label: string; - key: string; - input: boolean; - inputType: string; - disabled?: undefined; - } | { - type: string; - label: string; - key: string; - input: boolean; - inputType: string; - disabled: boolean; - calculateValue: { - '+': { - var: string; - }[]; - }; - })[]; - } - const tests: { - 'Test calculated fields'(form: any, done: any): void; - }; + const title: string; + namespace form { + const components: ( + | { + type: string; + label: string; + key: string; + input: boolean; + inputType: string; + disabled?: undefined; + } + | { + type: string; + label: string; + key: string; + input: boolean; + inputType: string; + disabled: boolean; + calculateValue: { + '+': { + var: string; + }[]; + }; + } + )[]; + } + const tests: { + 'Test calculated fields'(form: any, done: any): void; + }; } export default _default; diff --git a/test/forms/calculatedfields.js b/test/forms/calculatedfields.js index cc3a91091f..7b21c17da0 100644 --- a/test/forms/calculatedfields.js +++ b/test/forms/calculatedfields.js @@ -11,14 +11,14 @@ export default { label: 'A', key: 'a', input: true, - inputType: 'text' + inputType: 'text', }, { type: 'textfield', label: 'B', key: 'b', input: true, - inputType: 'text' + inputType: 'text', }, { type: 'textfield', @@ -28,13 +28,10 @@ export default { inputType: 'text', disabled: true, calculateValue: { - '+': [ - {var: 'data.a'}, - {var: 'data.b'} - ] - } - } - ] + '+': [{ var: 'data.a' }, { var: 'data.b' }], + }, + }, + ], }, tests: { 'Test calculated fields'(form, done) { @@ -43,11 +40,13 @@ export default { assert.equal(value.data.total, '25'); done(); }); - Harness.testSetGet(form, {data: { - a: '10', - b: '15', - total: '' - }}); - } - } + Harness.testSetGet(form, { + data: { + a: '10', + b: '15', + total: '', + }, + }); + }, + }, }; diff --git a/test/forms/checkBlurFocusEventForm.d.ts b/test/forms/checkBlurFocusEventForm.d.ts index af6592f88e..7c605cfc6d 100644 --- a/test/forms/checkBlurFocusEventForm.d.ts +++ b/test/forms/checkBlurFocusEventForm.d.ts @@ -1,20 +1,21 @@ declare namespace _default { - const _id: string; - const title: string; - const name: string; - const path: string; - const type: string; - const display: string; - const owner: string; - const components: ({ + const _id: string; + const title: string; + const name: string; + const path: string; + const type: string; + const display: string; + const owner: string; + const components: ( + | { label: string; widget: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; key: string; type: string; @@ -23,7 +24,8 @@ declare namespace _default { provider?: undefined; components?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; enableManualMode: boolean; tableView: boolean; @@ -32,17 +34,18 @@ declare namespace _default { type: string; input: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - customConditional: string; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + customConditional: string; }[]; widget?: undefined; data?: undefined; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -54,9 +57,10 @@ declare namespace _default { enableManualMode?: undefined; provider?: undefined; components?: undefined; - })[]; - const created: string; - const modified: string; - const machineName: string; + } + )[]; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/checkBlurFocusEventForm.js b/test/forms/checkBlurFocusEventForm.js index 0ef73e74b7..6182305939 100644 --- a/test/forms/checkBlurFocusEventForm.js +++ b/test/forms/checkBlurFocusEventForm.js @@ -70,8 +70,7 @@ export default { key: 'address1', type: 'textfield', input: true, - customConditional: - "show = _.get(instance, 'parent.manualMode', false);", + customConditional: "show = _.get(instance, 'parent.manualMode', false);", }, { label: 'Address 2', @@ -79,8 +78,7 @@ export default { key: 'address2', type: 'textfield', input: true, - customConditional: - "show = _.get(instance, 'parent.manualMode', false);", + customConditional: "show = _.get(instance, 'parent.manualMode', false);", }, { label: 'City', @@ -88,8 +86,7 @@ export default { key: 'city', type: 'textfield', input: true, - customConditional: - "show = _.get(instance, 'parent.manualMode', false);", + customConditional: "show = _.get(instance, 'parent.manualMode', false);", }, { label: 'State', @@ -97,8 +94,7 @@ export default { key: 'state', type: 'textfield', input: true, - customConditional: - "show = _.get(instance, 'parent.manualMode', false);", + customConditional: "show = _.get(instance, 'parent.manualMode', false);", }, { label: 'Country', @@ -106,8 +102,7 @@ export default { key: 'country', type: 'textfield', input: true, - customConditional: - "show = _.get(instance, 'parent.manualMode', false);", + customConditional: "show = _.get(instance, 'parent.manualMode', false);", }, { label: 'Zip Code', @@ -115,8 +110,7 @@ export default { key: 'zip', type: 'textfield', input: true, - customConditional: - "show = _.get(instance, 'parent.manualMode', false);", + customConditional: "show = _.get(instance, 'parent.manualMode', false);", }, ], }, diff --git a/test/forms/clearOnHide.d.ts b/test/forms/clearOnHide.d.ts index ebb8d13022..caa8211a2c 100644 --- a/test/forms/clearOnHide.d.ts +++ b/test/forms/clearOnHide.d.ts @@ -1,64 +1,304 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ + const title: string; + namespace form { + const components: ( + | { + conditional: { + eq: string; + when: null; + show: string; + }; + tags: never[]; + type: string; + validate: { + required: boolean; + minLength?: undefined; + maxLength?: undefined; + pattern?: undefined; + customPrivate?: undefined; + }; + clearOnHide: boolean; + persistent: boolean; + protected: boolean; + defaultValue: boolean; + key: string; + datagridLabel: boolean; + label: string; + hideLabel: boolean; + tableView: boolean; + inputType: string; + input: boolean; + lockKey: boolean; + hidden: boolean; + name: string; + value: string; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + properties?: undefined; + tree?: undefined; + components?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + input: boolean; + tableView: boolean; + inputType: string; + inputMask: string; + label: string; + key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; + }; + conditional: { + show: string; + when: string; + eq: string; + }; + type: string; + hideLabel: boolean; + labelPosition: string; + tags: never[]; + properties: {}; + lockKey: boolean; + datagridLabel?: undefined; + name?: undefined; + value?: undefined; + tree?: undefined; + components?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + input: boolean; + tree: boolean; + components: { + input: boolean; + tableView: boolean; + inputType: string; + inputMask: string; + label: string; + key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; + }; conditional: { - eq: string; - when: null; - show: string; + show: string; + when: null; + eq: string; }; + type: string; + hideLabel: boolean; + labelPosition: string; + tags: never[]; + properties: {}; + lockKey: boolean; + }[]; + tableView: boolean; + label: string; + key: string; + protected: boolean; + persistent: boolean; + clearOnHide: boolean; + type: string; + labelPosition: string; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + properties: {}; + hideLabel: boolean; + validate?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + inputType?: undefined; + lockKey?: undefined; + hidden?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + conditional: { + eq: string; + when: string; + show: string; + }; + tags: never[]; + type: string; + clearOnHide: boolean; + persistent: boolean; + protected: boolean; + key: string; + label: string; + tableView: boolean; + components: { + hideLabel: boolean; tags: never[]; type: string; + conditional: { + eq: string; + when: null; + show: string; + }; validate: { - required: boolean; - minLength?: undefined; - maxLength?: undefined; - pattern?: undefined; - customPrivate?: undefined; + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: string; + minLength: string; + required: boolean; }; clearOnHide: boolean; persistent: boolean; + unique: boolean; protected: boolean; - defaultValue: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; key: string; - datagridLabel: boolean; label: string; - hideLabel: boolean; - tableView: boolean; + inputMask: string; inputType: string; + tableView: boolean; input: boolean; - lockKey: boolean; hidden: boolean; - name: string; - value: string; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - properties?: undefined; - tree?: undefined; - components?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { + labelPosition: string; + properties: {}; + lockKey: boolean; + }[]; + tree: boolean; + input: boolean; + hidden: boolean; + hideLabel: boolean; + addAnotherPosition: string; + properties: {}; + lockKey: boolean; + validate?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + inputType?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + input: boolean; + tree: boolean; + components: { input: boolean; tableView: boolean; inputType: string; @@ -76,17 +316,17 @@ declare namespace _default { hidden: boolean; clearOnHide: boolean; validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; }; conditional: { - show: string; - when: string; - eq: string; + show: string; + when: null; + eq: string; }; type: string; hideLabel: boolean; @@ -94,744 +334,515 @@ declare namespace _default { tags: never[]; properties: {}; lockKey: boolean; - datagridLabel?: undefined; - name?: undefined; - value?: undefined; - tree?: undefined; - components?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { + }[]; + multiple: boolean; + tableView: boolean; + label: string; + key: string; + protected: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + templates: { + header: string; + row: string; + footer: string; + }; + type: string; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + properties: {}; + lockKey: boolean; + hideLabel: boolean; + validate?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + inputType?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + unique?: undefined; + labelPosition?: undefined; + addAnotherPosition?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + key: string; + input: boolean; + title: string; + theme: string; + components: { input: boolean; - tree: boolean; - components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - hideLabel: boolean; - labelPosition: string; - tags: never[]; - properties: {}; - lockKey: boolean; - }[]; tableView: boolean; + inputType: string; + inputMask: string; label: string; key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; protected: boolean; + unique: boolean; persistent: boolean; clearOnHide: boolean; - type: string; - labelPosition: string; - tags: never[]; - conditional: { - show: string; - when: string; - eq: string; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; }; - properties: {}; - hideLabel: boolean; - validate?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - inputType?: undefined; - lockKey?: undefined; - hidden?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { conditional: { - eq: string; - when: string; - show: string; + show: string; + when: null; + eq: string; }; - tags: never[]; type: string; - clearOnHide: boolean; - persistent: boolean; - protected: boolean; - key: string; - label: string; - tableView: boolean; - components: { - hideLabel: boolean; - tags: never[]; - type: string; - conditional: { - eq: string; - when: null; - show: string; - }; - validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: string; - minLength: string; - required: boolean; - }; - clearOnHide: boolean; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - hidden: boolean; - labelPosition: string; - properties: {}; - lockKey: boolean; - }[]; - tree: boolean; - input: boolean; + tags: never[]; hidden: boolean; hideLabel: boolean; - addAnotherPosition: string; + labelPosition: string; properties: {}; lockKey: boolean; - validate?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - inputType?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { - input: boolean; - tree: boolean; + }[]; + type: string; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + clearOnHide: boolean; + tableView: boolean; + hideLabel: boolean; + breadcrumb: string; + properties: {}; + lockKey: boolean; + validate?: undefined; + persistent?: undefined; + protected?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + label?: undefined; + inputType?: undefined; + hidden?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + tree?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + input: boolean; + key: string; + columns: { components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - hideLabel: boolean; - labelPosition: string; - tags: never[]; - properties: {}; - lockKey: boolean; + input: boolean; + tableView: boolean; + inputType: string; + inputMask: string; + label: string; + key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; + protected: boolean; + unique: boolean; + persistent: boolean; + clearOnHide: boolean; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; + }; + conditional: { + show: string; + when: null; + eq: string; + }; + type: string; + tags: never[]; + hidden: boolean; + hideLabel: boolean; + labelPosition: string; + properties: {}; + lockKey: boolean; }[]; - multiple: boolean; + width: number; + offset: number; + push: number; + pull: number; + }[]; + type: string; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + customClass: string; + clearOnHide: boolean; + tableView: boolean; + hideLabel: boolean; + properties: {}; + lockKey: boolean; + validate?: undefined; + persistent?: undefined; + protected?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + label?: undefined; + inputType?: undefined; + hidden?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + tree?: undefined; + components?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + input: boolean; + key: string; + numRows: number; + numCols: number; + rows: { + components: { + input: boolean; + tableView: boolean; + inputType: string; + inputMask: string; + label: string; + key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; + protected: boolean; + unique: boolean; + persistent: boolean; + clearOnHide: boolean; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; + }; + conditional: { + show: string; + when: null; + eq: string; + }; + type: string; + tags: never[]; + hidden: boolean; + hideLabel: boolean; + labelPosition: string; + properties: {}; + lockKey: boolean; + }[]; + }[][]; + header: never[]; + caption: string; + striped: boolean; + bordered: boolean; + hover: boolean; + condensed: boolean; + type: string; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + clearOnHide: boolean; + tableView: boolean; + hideLabel: boolean; + properties: {}; + lockKey: boolean; + validate?: undefined; + persistent?: undefined; + protected?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + label?: undefined; + inputType?: undefined; + hidden?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + tree?: undefined; + components?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + legend?: undefined; + } + | { + clearOnHide: boolean; + key: string; + input: boolean; + components: { + input: boolean; tableView: boolean; + inputType: string; + inputMask: string; label: string; key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; protected: boolean; + unique: boolean; persistent: boolean; hidden: boolean; clearOnHide: boolean; - templates: { - header: string; - row: string; - footer: string; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; }; - type: string; - tags: never[]; conditional: { - show: string; - when: string; - eq: string; + show: string; + when: null; + eq: string; }; - properties: {}; - lockKey: boolean; - hideLabel: boolean; - validate?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - inputType?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - unique?: undefined; - labelPosition?: undefined; - addAnotherPosition?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { - key: string; - input: boolean; - title: string; - theme: string; - components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - tags: never[]; - hidden: boolean; - hideLabel: boolean; - labelPosition: string; - properties: {}; - lockKey: boolean; - }[]; type: string; - tags: never[]; - conditional: { - show: string; - when: string; - eq: string; - }; - clearOnHide: boolean; - tableView: boolean; hideLabel: boolean; - breadcrumb: string; - properties: {}; - lockKey: boolean; - validate?: undefined; - persistent?: undefined; - protected?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - label?: undefined; - inputType?: undefined; - hidden?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - tree?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { - input: boolean; - key: string; - columns: { - components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - tags: never[]; - hidden: boolean; - hideLabel: boolean; - labelPosition: string; - properties: {}; - lockKey: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - }[]; - type: string; + labelPosition: string; tags: never[]; - conditional: { - show: string; - when: string; - eq: string; - }; - customClass: string; - clearOnHide: boolean; - tableView: boolean; - hideLabel: boolean; properties: {}; lockKey: boolean; - validate?: undefined; - persistent?: undefined; - protected?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - label?: undefined; - inputType?: undefined; - hidden?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - tree?: undefined; - components?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { + }[]; + tableView: boolean; + type: string; + hideLabel: boolean; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + properties: {}; + validate?: undefined; + persistent?: undefined; + protected?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + label?: undefined; + inputType?: undefined; + lockKey?: undefined; + hidden?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + tree?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + legend?: undefined; + } + | { + clearOnHide: boolean; + key: string; + input: boolean; + tableView: boolean; + legend: string; + components: { input: boolean; - key: string; - numRows: number; - numCols: number; - rows: { - components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - tags: never[]; - hidden: boolean; - hideLabel: boolean; - labelPosition: string; - properties: {}; - lockKey: boolean; - }[]; - }[][]; - header: never[]; - caption: string; - striped: boolean; - bordered: boolean; - hover: boolean; - condensed: boolean; - type: string; - tags: never[]; - conditional: { - show: string; - when: string; - eq: string; - }; - clearOnHide: boolean; tableView: boolean; - hideLabel: boolean; - properties: {}; - lockKey: boolean; - validate?: undefined; - persistent?: undefined; - protected?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - label?: undefined; - inputType?: undefined; - hidden?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - tree?: undefined; - components?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - legend?: undefined; - } | { - clearOnHide: boolean; + inputType: string; + inputMask: string; + label: string; key: string; - input: boolean; - components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - hideLabel: boolean; - labelPosition: string; - tags: never[]; - properties: {}; - lockKey: boolean; - }[]; - tableView: boolean; - type: string; - hideLabel: boolean; - tags: never[]; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + validate: { + required: boolean; + minLength: string; + maxLength: string; + pattern: string; + custom: string; + customPrivate: boolean; + }; conditional: { - show: string; - when: string; - eq: string; + show: string; + when: null; + eq: string; }; - properties: {}; - validate?: undefined; - persistent?: undefined; - protected?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - label?: undefined; - inputType?: undefined; - lockKey?: undefined; - hidden?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - tree?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - legend?: undefined; - } | { - clearOnHide: boolean; - key: string; - input: boolean; - tableView: boolean; - legend: string; - components: { - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { - required: boolean; - minLength: string; - maxLength: string; - pattern: string; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: string; - when: null; - eq: string; - }; - type: string; - hideLabel: boolean; - labelPosition: string; - tags: never[]; - properties: {}; - lockKey: boolean; - }[]; type: string; hideLabel: boolean; + labelPosition: string; tags: never[]; - conditional: { - show: string; - when: string; - eq: string; - }; properties: {}; - validate?: undefined; - persistent?: undefined; - protected?: undefined; - defaultValue?: undefined; - datagridLabel?: undefined; - label?: undefined; - inputType?: undefined; - lockKey?: undefined; - hidden?: undefined; - name?: undefined; - value?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - unique?: undefined; - labelPosition?: undefined; - tree?: undefined; - addAnotherPosition?: undefined; - templates?: undefined; - title?: undefined; - theme?: undefined; - breadcrumb?: undefined; - columns?: undefined; - customClass?: undefined; - numRows?: undefined; - numCols?: undefined; - rows?: undefined; - header?: undefined; - caption?: undefined; - striped?: undefined; - bordered?: undefined; - hover?: undefined; - condensed?: undefined; - })[]; - } - const tests: { - 'Test starting hidden'(form: any, done: any): void; - 'Test starting visible'(form: any, done: any): void; - 'Test with data'(form: any, done: any): void; - 'Test changing visible from hidden to visible'(form: any, done: any): void; - 'Test changing visible from visible to hidden'(form: any, done: any): void; - }; + lockKey: boolean; + }[]; + type: string; + hideLabel: boolean; + tags: never[]; + conditional: { + show: string; + when: string; + eq: string; + }; + properties: {}; + validate?: undefined; + persistent?: undefined; + protected?: undefined; + defaultValue?: undefined; + datagridLabel?: undefined; + label?: undefined; + inputType?: undefined; + lockKey?: undefined; + hidden?: undefined; + name?: undefined; + value?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + unique?: undefined; + labelPosition?: undefined; + tree?: undefined; + addAnotherPosition?: undefined; + templates?: undefined; + title?: undefined; + theme?: undefined; + breadcrumb?: undefined; + columns?: undefined; + customClass?: undefined; + numRows?: undefined; + numCols?: undefined; + rows?: undefined; + header?: undefined; + caption?: undefined; + striped?: undefined; + bordered?: undefined; + hover?: undefined; + condensed?: undefined; + } + )[]; + } + const tests: { + 'Test starting hidden'(form: any, done: any): void; + 'Test starting visible'(form: any, done: any): void; + 'Test with data'(form: any, done: any): void; + 'Test changing visible from hidden to visible'(form: any, done: any): void; + 'Test changing visible from visible to hidden'(form: any, done: any): void; + }; } export default _default; diff --git a/test/forms/clearOnHide.js b/test/forms/clearOnHide.js index 6396cd7dda..889232282f 100644 --- a/test/forms/clearOnHide.js +++ b/test/forms/clearOnHide.js @@ -5,12 +5,12 @@ const visibleData = { data: { columnfield: '', container: { - containerfield: '' + containerfield: '', }, datagrid: [ { - datagridfield: '' - } + datagridfield: '', + }, ], editgrid: [], fieldsetfield: '', @@ -18,27 +18,27 @@ const visibleData = { plainfield: '', tablefield: '', visible: true, - wellfield: '' - } + wellfield: '', + }, }; const hiddenData = { data: { - visible: false + visible: false, }, - metadata: {} + metadata: {}, }; const existingData = { data: { columnfield: 'one', container: { - containerfield: 'two' + containerfield: 'two', }, datagrid: [ { - datagridfield: 'three' - } + datagridfield: 'three', + }, ], editgrid: [], fieldsetfield: 'four', @@ -46,200 +46,49 @@ const existingData = { plainfield: 'six', tablefield: 'seven', visible: true, - wellfield: 'eight' + wellfield: 'eight', }, - metadata: {} + metadata: {}, }; export default { title: 'Clear on hide Form Test', form: { - components: [{ - conditional: { - eq: '', - when: null, - show: '' - }, - tags: [], - type: 'checkbox', - validate: { - required: false - }, - clearOnHide: true, - persistent: true, - protected: false, - defaultValue: false, - key: 'visible', - datagridLabel: true, - label: 'Visible', - hideLabel: false, - tableView: true, - inputType: 'checkbox', - input: true, - lockKey: true, - hidden: false, - name: '', - value: '' - }, { - input: true, - tableView: true, - inputType: 'text', - inputMask: '', - label: 'Plain Field', - key: 'plainfield', - placeholder: '', - prefix: '', - suffix: '', - multiple: false, - defaultValue: '', - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - validate: { - required: false, - minLength: '', - maxLength: '', - pattern: '', - custom: '', - customPrivate: false - }, - conditional: { - show: 'true', - when: 'visible', - eq: 'true' - }, - type: 'textfield', - hideLabel: false, - labelPosition: 'top', - tags: [], - properties: {}, - lockKey: true - }, { - input: true, - tree: true, - components: [{ - input: true, - tableView: true, - inputType: 'text', - inputMask: '', - label: 'Container Field', - key: 'containerfield', - placeholder: '', - prefix: '', - suffix: '', - multiple: false, - defaultValue: '', - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - validate: { - required: false, - minLength: '', - maxLength: '', - pattern: '', - custom: '', - customPrivate: false - }, - conditional: { - show: '', - when: null, - eq: '' - }, - type: 'textfield', - hideLabel: false, - labelPosition: 'top', - tags: [], - properties: {}, - lockKey: true - }], - tableView: true, - label: 'Container', - key: 'container', - protected: false, - persistent: true, - clearOnHide: true, - type: 'container', - labelPosition: 'top', - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' - }, - properties: {}, - hideLabel: false - }, { - conditional: { - eq: 'true', - when: 'visible', - show: 'true' - }, - tags: [], - type: 'datagrid', - clearOnHide: true, - persistent: true, - protected: false, - key: 'datagrid', - label: 'Datagrid', - tableView: true, - components: [{ - hideLabel: true, - tags: [], - type: 'textfield', + components: [ + { conditional: { eq: '', when: null, - show: '' + show: '', }, + tags: [], + type: 'checkbox', validate: { - customPrivate: false, - custom: '', - pattern: '', - maxLength: '', - minLength: '', - required: false + required: false, }, clearOnHide: true, persistent: true, - unique: false, protected: false, - defaultValue: '', - multiple: false, - suffix: '', - prefix: '', - placeholder: '', - key: 'datagridfield', - label: 'Datagrid Field', - inputMask: '', - inputType: 'text', + defaultValue: false, + key: 'visible', + datagridLabel: true, + label: 'Visible', + hideLabel: false, tableView: true, + inputType: 'checkbox', input: true, + lockKey: true, hidden: false, - labelPosition: 'top', - properties: {}, - lockKey: true - }], - tree: true, - input: true, - hidden: false, - hideLabel: false, - addAnotherPosition: 'bottom', - properties: {}, - lockKey: true - }, { - input: true, - tree: true, - components: [{ + name: '', + value: '', + }, + { input: true, tableView: true, inputType: 'text', inputMask: '', - label: 'Edit Grid Field', - key: 'editgridfield', + label: 'Plain Field', + key: 'plainfield', placeholder: '', prefix: '', suffix: '', @@ -256,177 +105,151 @@ export default { maxLength: '', pattern: '', custom: '', - customPrivate: false + customPrivate: false, }, conditional: { - show: '', - when: null, - eq: '' + show: 'true', + when: 'visible', + eq: 'true', }, type: 'textfield', hideLabel: false, labelPosition: 'top', tags: [], properties: {}, - lockKey: true - }], - multiple: false, - tableView: true, - label: 'Edit Grid', - key: 'editgrid', - protected: false, - persistent: true, - hidden: false, - clearOnHide: true, - templates: { - header: '
    \n {%util.eachComponent(components, function(component) { %} \n
    \n {{ component.label }} \n
    \n {% }) %} \n
    ', - row: '
    \n {%util.eachComponent(components, function(component) { %} \n
    \n {{ row[component.key] }} \n
    \n {% }) %} \n
    \n
    \n
    Edit
    \n
    Delete
    \n
    \n
    \n
    ', - footer: '' + lockKey: true, }, - type: 'editgrid', - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' - }, - properties: {}, - lockKey: true, - hideLabel: false - }, { - key: 'panel', - input: false, - title: 'Panel', - theme: 'default', - components: [{ + { input: true, + tree: true, + components: [ + { + input: true, + tableView: true, + inputType: 'text', + inputMask: '', + label: 'Container Field', + key: 'containerfield', + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: '', + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + validate: { + required: false, + minLength: '', + maxLength: '', + pattern: '', + custom: '', + customPrivate: false, + }, + conditional: { + show: '', + when: null, + eq: '', + }, + type: 'textfield', + hideLabel: false, + labelPosition: 'top', + tags: [], + properties: {}, + lockKey: true, + }, + ], tableView: true, - inputType: 'text', - inputMask: '', - label: 'Panel Field', - key: 'panelfield', - placeholder: '', - prefix: '', - suffix: '', - multiple: false, - defaultValue: '', + label: 'Container', + key: 'container', protected: false, - unique: false, persistent: true, clearOnHide: true, - validate: { - required: false, - minLength: '', - maxLength: '', - pattern: '', - custom: '', - customPrivate: false + type: 'container', + labelPosition: 'top', + tags: [], + conditional: { + show: 'true', + when: 'visible', + eq: 'true', }, + properties: {}, + hideLabel: false, + }, + { conditional: { - show: '', - when: null, - eq: '' + eq: 'true', + when: 'visible', + show: 'true', }, - type: 'textfield', tags: [], + type: 'datagrid', + clearOnHide: true, + persistent: true, + protected: false, + key: 'datagrid', + label: 'Datagrid', + tableView: true, + components: [ + { + hideLabel: true, + tags: [], + type: 'textfield', + conditional: { + eq: '', + when: null, + show: '', + }, + validate: { + customPrivate: false, + custom: '', + pattern: '', + maxLength: '', + minLength: '', + required: false, + }, + clearOnHide: true, + persistent: true, + unique: false, + protected: false, + defaultValue: '', + multiple: false, + suffix: '', + prefix: '', + placeholder: '', + key: 'datagridfield', + label: 'Datagrid Field', + inputMask: '', + inputType: 'text', + tableView: true, + input: true, + hidden: false, + labelPosition: 'top', + properties: {}, + lockKey: true, + }, + ], + tree: true, + input: true, hidden: false, hideLabel: false, - labelPosition: 'top', + addAnotherPosition: 'bottom', properties: {}, - lockKey: true - }], - type: 'panel', - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' + lockKey: true, }, - clearOnHide: false, - tableView: false, - hideLabel: false, - breadcrumb: 'default', - properties: {}, - lockKey: true - }, { - input: false, - key: 'columns', - columns: [{ - components: [{ - input: true, - tableView: true, - inputType: 'text', - inputMask: '', - label: 'Column Field', - key: 'columnfield', - placeholder: '', - prefix: '', - suffix: '', - multiple: false, - defaultValue: '', - protected: false, - unique: false, - persistent: true, - clearOnHide: true, - validate: { - required: false, - minLength: '', - maxLength: '', - pattern: '', - custom: '', - customPrivate: false - }, - conditional: { - show: '', - when: null, - eq: '' - }, - type: 'textfield', - tags: [], - hidden: false, - hideLabel: false, - labelPosition: 'top', - properties: {}, - lockKey: true - }], - width: 6, - offset: 0, - push: 0, - pull: 0 - }, { - components: [], - width: 6, - offset: 0, - push: 0, - pull: 0 - }], - type: 'columns', - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' - }, - customClass: 'Columns', - clearOnHide: false, - tableView: false, - hideLabel: false, - properties: {}, - lockKey: true - }, { - input: false, - key: 'table', - numRows: 3, - numCols: 3, - rows: [ - [{ - components: [{ + { + input: true, + tree: true, + components: [ + { input: true, tableView: true, inputType: 'text', inputMask: '', - label: 'Table Field', - key: 'tablefield', + label: 'Edit Grid Field', + key: 'editgridfield', placeholder: '', prefix: '', suffix: '', @@ -435,6 +258,7 @@ export default { protected: false, unique: false, persistent: true, + hidden: false, clearOnHide: true, validate: { required: false, @@ -442,163 +266,382 @@ export default { maxLength: '', pattern: '', custom: '', - customPrivate: false + customPrivate: false, }, conditional: { show: '', when: null, - eq: '' + eq: '', }, type: 'textfield', - tags: [], - hidden: false, hideLabel: false, labelPosition: 'top', + tags: [], properties: {}, - lockKey: true - }] - }, { - components: [] - }, { - components: [] - }], - [{ - components: [] - }, { - components: [] - }, { - components: [] - }], - [{ - components: [] - }, { - components: [] - }, { - components: [] - }] - ], - header: [], - caption: '', - striped: false, - bordered: false, - hover: false, - condensed: false, - type: 'table', - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' - }, - clearOnHide: false, - tableView: false, - hideLabel: false, - properties: {}, - lockKey: true - }, { - clearOnHide: false, - key: 'well', - input: false, - components: [{ - input: true, - tableView: true, - inputType: 'text', - inputMask: '', - label: 'Well Field', - key: 'wellfield', - placeholder: '', - prefix: '', - suffix: '', + lockKey: true, + }, + ], multiple: false, - defaultValue: '', + tableView: true, + label: 'Edit Grid', + key: 'editgrid', protected: false, - unique: false, persistent: true, hidden: false, clearOnHide: true, - validate: { - required: false, - minLength: '', - maxLength: '', - pattern: '', - custom: '', - customPrivate: false + templates: { + header: + '
    \n {%util.eachComponent(components, function(component) { %} \n
    \n {{ component.label }} \n
    \n {% }) %} \n
    ', + row: '
    \n {%util.eachComponent(components, function(component) { %} \n
    \n {{ row[component.key] }} \n
    \n {% }) %} \n
    \n
    \n
    Edit
    \n
    Delete
    \n
    \n
    \n
    ', + footer: '', }, + type: 'editgrid', + tags: [], conditional: { - show: '', - when: null, - eq: '' + show: 'true', + when: 'visible', + eq: 'true', }, - type: 'textfield', + properties: {}, + lockKey: true, hideLabel: false, - labelPosition: 'top', + }, + { + key: 'panel', + input: false, + title: 'Panel', + theme: 'default', + components: [ + { + input: true, + tableView: true, + inputType: 'text', + inputMask: '', + label: 'Panel Field', + key: 'panelfield', + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: '', + protected: false, + unique: false, + persistent: true, + clearOnHide: true, + validate: { + required: false, + minLength: '', + maxLength: '', + pattern: '', + custom: '', + customPrivate: false, + }, + conditional: { + show: '', + when: null, + eq: '', + }, + type: 'textfield', + tags: [], + hidden: false, + hideLabel: false, + labelPosition: 'top', + properties: {}, + lockKey: true, + }, + ], + type: 'panel', tags: [], + conditional: { + show: 'true', + when: 'visible', + eq: 'true', + }, + clearOnHide: false, + tableView: false, + hideLabel: false, + breadcrumb: 'default', properties: {}, - lockKey: true - }], - tableView: false, - type: 'well', - hideLabel: false, - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' + lockKey: true, }, - properties: {} - }, { - clearOnHide: false, - key: 'fieldset', - input: false, - tableView: false, - legend: 'Fieldset', - components: [{ - input: true, - tableView: true, - inputType: 'text', - inputMask: '', - label: 'Fieldset Field', - key: 'fieldsetfield', - placeholder: '', - prefix: '', - suffix: '', - multiple: false, - defaultValue: '', - protected: false, - unique: false, - persistent: true, - hidden: false, - clearOnHide: true, - validate: { - required: false, - minLength: '', - maxLength: '', - pattern: '', - custom: '', - customPrivate: false + { + input: false, + key: 'columns', + columns: [ + { + components: [ + { + input: true, + tableView: true, + inputType: 'text', + inputMask: '', + label: 'Column Field', + key: 'columnfield', + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: '', + protected: false, + unique: false, + persistent: true, + clearOnHide: true, + validate: { + required: false, + minLength: '', + maxLength: '', + pattern: '', + custom: '', + customPrivate: false, + }, + conditional: { + show: '', + when: null, + eq: '', + }, + type: 'textfield', + tags: [], + hidden: false, + hideLabel: false, + labelPosition: 'top', + properties: {}, + lockKey: true, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + }, + { + components: [], + width: 6, + offset: 0, + push: 0, + pull: 0, + }, + ], + type: 'columns', + tags: [], + conditional: { + show: 'true', + when: 'visible', + eq: 'true', + }, + customClass: 'Columns', + clearOnHide: false, + tableView: false, + hideLabel: false, + properties: {}, + lockKey: true, + }, + { + input: false, + key: 'table', + numRows: 3, + numCols: 3, + rows: [ + [ + { + components: [ + { + input: true, + tableView: true, + inputType: 'text', + inputMask: '', + label: 'Table Field', + key: 'tablefield', + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: '', + protected: false, + unique: false, + persistent: true, + clearOnHide: true, + validate: { + required: false, + minLength: '', + maxLength: '', + pattern: '', + custom: '', + customPrivate: false, + }, + conditional: { + show: '', + when: null, + eq: '', + }, + type: 'textfield', + tags: [], + hidden: false, + hideLabel: false, + labelPosition: 'top', + properties: {}, + lockKey: true, + }, + ], + }, + { + components: [], + }, + { + components: [], + }, + ], + [ + { + components: [], + }, + { + components: [], + }, + { + components: [], + }, + ], + [ + { + components: [], + }, + { + components: [], + }, + { + components: [], + }, + ], + ], + header: [], + caption: '', + striped: false, + bordered: false, + hover: false, + condensed: false, + type: 'table', + tags: [], + conditional: { + show: 'true', + when: 'visible', + eq: 'true', }, + clearOnHide: false, + tableView: false, + hideLabel: false, + properties: {}, + lockKey: true, + }, + { + clearOnHide: false, + key: 'well', + input: false, + components: [ + { + input: true, + tableView: true, + inputType: 'text', + inputMask: '', + label: 'Well Field', + key: 'wellfield', + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: '', + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + validate: { + required: false, + minLength: '', + maxLength: '', + pattern: '', + custom: '', + customPrivate: false, + }, + conditional: { + show: '', + when: null, + eq: '', + }, + type: 'textfield', + hideLabel: false, + labelPosition: 'top', + tags: [], + properties: {}, + lockKey: true, + }, + ], + tableView: false, + type: 'well', + hideLabel: false, + tags: [], conditional: { - show: '', - when: null, - eq: '' + show: 'true', + when: 'visible', + eq: 'true', }, - type: 'textfield', + properties: {}, + }, + { + clearOnHide: false, + key: 'fieldset', + input: false, + tableView: false, + legend: 'Fieldset', + components: [ + { + input: true, + tableView: true, + inputType: 'text', + inputMask: '', + label: 'Fieldset Field', + key: 'fieldsetfield', + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: '', + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + validate: { + required: false, + minLength: '', + maxLength: '', + pattern: '', + custom: '', + customPrivate: false, + }, + conditional: { + show: '', + when: null, + eq: '', + }, + type: 'textfield', + hideLabel: false, + labelPosition: 'top', + tags: [], + properties: {}, + lockKey: true, + }, + ], + type: 'fieldset', hideLabel: false, - labelPosition: 'top', tags: [], + conditional: { + show: 'true', + when: 'visible', + eq: 'true', + }, properties: {}, - lockKey: true - }], - type: 'fieldset', - hideLabel: false, - tags: [], - conditional: { - show: 'true', - when: 'visible', - eq: 'true' }, - properties: {} - }] + ], }, tests: { 'Test starting hidden'(form, done) { @@ -609,8 +652,8 @@ export default { form.pristine = false; form.submission = { data: { - visible: true - } + visible: true, + }, }; // Need to wait for the changes to propogate. setTimeout(() => { @@ -630,13 +673,13 @@ export default { form.pristine = false; form.submission = { data: { - visible: true - } + visible: true, + }, }; setTimeout(() => { - form.getComponent('visible', component => { - form.on('change', change => { + form.getComponent('visible', (component) => { + form.on('change', (change) => { assert.deepEqual(change.data, hiddenData.data); done(); }); @@ -648,12 +691,12 @@ export default { form.pristine = false; form.submission = { data: { - visible: false - } + visible: false, + }, }; setTimeout(() => { - form.getComponent('visible', component => { - form.on('change', change => { + form.getComponent('visible', (component) => { + form.on('change', (change) => { assert.deepEqual(change.data, visibleData.data); done(); }); @@ -685,6 +728,5 @@ export default { // }); // }); // } - } + }, }; - diff --git a/test/forms/clearOnHideInsideEditGrid.d.ts b/test/forms/clearOnHideInsideEditGrid.d.ts index c4d9e7f233..8d1946c0bf 100644 --- a/test/forms/clearOnHideInsideEditGrid.d.ts +++ b/test/forms/clearOnHideInsideEditGrid.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; collapsible: boolean; key: string; @@ -8,108 +9,115 @@ declare namespace _default { label: string; input: boolean; tableView: boolean; - components: ({ - legend: string; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: never[]; - openWhenEmpty?: undefined; - hideLabel?: undefined; - templates?: undefined; - addAnother?: undefined; - validate?: undefined; - rowDrafts?: undefined; - } | { - label: string; - openWhenEmpty: boolean; - hideLabel: boolean; - tableView: boolean; - templates: { + components: ( + | { + legend: string; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: never[]; + openWhenEmpty?: undefined; + hideLabel?: undefined; + templates?: undefined; + addAnother?: undefined; + validate?: undefined; + rowDrafts?: undefined; + } + | { + label: string; + openWhenEmpty: boolean; + hideLabel: boolean; + tableView: boolean; + templates: { header: string; row: string; - }; - addAnother: string; - validate: { + }; + addAnother: string; + validate: { maxLength: number; - }; - rowDrafts: boolean; - key: string; - type: string; - input: boolean; - components: { + }; + rowDrafts: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - components: ({ - label: string; - columns: ({ - components: { - label: string; - tableView: boolean; - validate: { + components: ( + | { + label: string; + columns: ( + | { + components: { + label: string; + tableView: boolean; + validate: { required: boolean; maxLength: number; - }; - key: string; - type: string; - input: boolean; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - currentWidth: number; - } | { - components: { - label: string; - tableView: boolean; - validate: { + }; + key: string; + type: string; + input: boolean; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + currentWidth: number; + } + | { + components: { + label: string; + tableView: boolean; + validate: { pattern: string; customMessage: string; - }; - key: string; - type: string; - input: boolean; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - currentWidth: number; - })[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - clearOnHide: boolean; - validate?: undefined; - hideOnChildrenHidden?: undefined; - } | { - label: string; - columns: { + }; + key: string; + type: string; + input: boolean; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + currentWidth: number; + } + )[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + clearOnHide: boolean; + validate?: undefined; + hideOnChildrenHidden?: undefined; + } + | { + label: string; + columns: { components: { + label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - key: string; - type: string; - input: boolean; - hideOnChildrenHidden: boolean; + value: string; + shortcut: string; + }[]; + key: string; + type: string; + input: boolean; + hideOnChildrenHidden: boolean; }[]; width: number; offset: number; @@ -117,34 +125,38 @@ declare namespace _default { pull: number; size: string; currentWidth: number; - }[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - clearOnHide: boolean; - validate?: undefined; - hideOnChildrenHidden?: undefined; - } | { - label: string; - tableView: boolean; - validate: { + }[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + clearOnHide: boolean; + validate?: undefined; + hideOnChildrenHidden?: undefined; + } + | { + label: string; + tableView: boolean; + validate: { maxLength: number; - }; - key: string; - customConditional: string; - type: string; - input: boolean; - hideOnChildrenHidden: boolean; - columns?: undefined; - clearOnHide?: undefined; - })[]; - }[]; - legend?: undefined; - })[]; + }; + key: string; + customConditional: string; + type: string; + input: boolean; + hideOnChildrenHidden: boolean; + columns?: undefined; + clearOnHide?: undefined; + } + )[]; + }[]; + legend?: undefined; + } + )[]; clearOnHide: boolean; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -155,10 +167,11 @@ declare namespace _default { collapsible?: undefined; components?: undefined; clearOnHide?: undefined; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/clearOnHideInsideEditGrid.js b/test/forms/clearOnHideInsideEditGrid.js index bcf709ef55..dc6f6a941e 100644 --- a/test/forms/clearOnHideInsideEditGrid.js +++ b/test/forms/clearOnHideInsideEditGrid.js @@ -18,13 +18,15 @@ export default { input: false, tableView: false, components: [], - }, { + }, + { label: 'Subsidiary Edit Grid', openWhenEmpty: true, hideLabel: true, tableView: false, templates: { - header: '
    \n {% util.eachComponent(components, function(component) { %}\n {% if (!component.hasOwnProperty(\'tableView\') || component.tableView) { %}\n
    {{ component.label }}
    \n {% } %}\n {% }) %}\n
    ', + header: + '
    \n {% util.eachComponent(components, function(component) { %}\n {% if (!component.hasOwnProperty(\'tableView\') || component.tableView) { %}\n
    {{ component.label }}
    \n {% } %}\n {% }) %}\n
    ', row: '
    \n {% util.eachComponent(components, function(component) { %}\n {% if (!component.hasOwnProperty(\'tableView\') || component.tableView) { %}\n
    \n {{ getView(component, row[component.key]) }}\n
    \n {% } %}\n {% }) %}\n {% if (!instance.disabled) { %}\n
    \n
    \n \n {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}\n \n {% } %}\n
    \n
    \n {% } %}\n
    ', }, addAnother: 'Add Another', @@ -67,14 +69,16 @@ export default { pull: 0, size: 'md', currentWidth: 6, - }, { + }, + { components: [ { label: 'Division #', tableView: false, validate: { pattern: '(^\\d{3}$)', - customMessage: 'Division Number must be 3 digits long (can use leading zeros).', + customMessage: + 'Division Number must be 3 digits long (can use leading zeros).', }, key: 'divisionNum', type: 'textfield', @@ -88,7 +92,8 @@ export default { pull: 0, size: 'md', currentWidth: 2, - }, { + }, + { components: [], size: 'md', width: 4, @@ -103,7 +108,8 @@ export default { input: false, tableView: false, clearOnHide: true, - }, { + }, + { label: 'Columns', columns: [ { @@ -118,11 +124,13 @@ export default { label: 'Subsidiary', value: 'subsidiary', shortcut: '', - }, { + }, + { label: 'Affiliate', value: 'affiliate', shortcut: '', - }, { + }, + { label: 'Other Entity', value: 'otherEntity', shortcut: '', @@ -140,7 +148,8 @@ export default { pull: 0, size: 'md', currentWidth: 4, - }, { + }, + { components: [], width: 8, offset: 0, @@ -155,14 +164,15 @@ export default { input: false, tableView: false, clearOnHide: true, - }, { - label: 'If \'Other Entity\', please explain', + }, + { + label: "If 'Other Entity', please explain", tableView: false, validate: { maxLength: 200, }, key: 'ifOtherEntityPleaseExplain', - customConditional: 'show = row.entityType === \'otherEntity\';', + customConditional: "show = row.entityType === 'otherEntity';", type: 'textfield', input: true, hideOnChildrenHidden: false, @@ -173,7 +183,8 @@ export default { }, ], clearOnHide: true, - }, { + }, + { label: 'Submit', showValidations: false, tableView: false, diff --git a/test/forms/columnWithConditionalComponents.d.ts b/test/forms/columnWithConditionalComponents.d.ts index ee6fd0e98a..0200126044 100644 --- a/test/forms/columnWithConditionalComponents.d.ts +++ b/test/forms/columnWithConditionalComponents.d.ts @@ -1,13 +1,14 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; optionsLabelPosition: string; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -16,10 +17,12 @@ declare namespace _default { columns?: undefined; autoAdjust?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; - columns: ({ - components: { + columns: ( + | { + components: { label: string; tableView: boolean; key: string; @@ -27,16 +30,17 @@ declare namespace _default { type: string; input: boolean; hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - currentWidth: number; - element: {}; - } | { - components: { + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + currentWidth: number; + element: {}; + } + | { + components: { label: string; hidden: boolean; tableView: boolean; @@ -45,15 +49,16 @@ declare namespace _default { type: string; input: boolean; hideOnChildrenHidden: boolean; - }[]; - size: string; - width: number; - offset: number; - push: number; - pull: number; - currentWidth: number; - element: {}; - })[]; + }[]; + size: string; + width: number; + offset: number; + push: number; + pull: number; + currentWidth: number; + element: {}; + } + )[]; autoAdjust: boolean; key: string; type: string; @@ -63,7 +68,8 @@ declare namespace _default { values?: undefined; inputType?: undefined; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -75,11 +81,12 @@ declare namespace _default { inputType?: undefined; columns?: undefined; autoAdjust?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/columnWithConditionalComponents.js b/test/forms/columnWithConditionalComponents.js index 89745d7704..04e7bf91ce 100644 --- a/test/forms/columnWithConditionalComponents.js +++ b/test/forms/columnWithConditionalComponents.js @@ -1,196 +1,196 @@ export default { - type: 'form', - components: [ - { - label: 'Select Boxes', - optionsLabelPosition: 'right', - tableView: false, - values: [ - { - label: '1', - value: '1', - shortcut: '' - }, - { - label: '2', - value: '2', - shortcut: '' - }, - { - label: '3', - value: '3', - shortcut: '' - }, - { - label: '4', - value: '4', - shortcut: '' - }, - { - label: '5', - value: '5', - shortcut: '' - }, - { - label: '6', - value: '6', - shortcut: '' - } - ], - key: 'selectBoxes', - type: 'selectboxes', - input: true, - inputType: 'checkbox' - }, - { - label: 'Columns', - columns: [ - { - components: [ - { - label: 'Text Field1', - tableView: true, - key: 'textField', - customConditional: - 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[1]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', - type: 'textfield', - input: true, - hideOnChildrenHidden: false - } - ], - width: 2, - offset: 0, - push: 0, - pull: 0, - size: 'md', - currentWidth: 2, - element: {} - }, - { - components: [ - { - label: 'Text Field2', - tableView: true, - key: 'textField1', - customConditional: - 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[2]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', - type: 'textfield', - input: true, - hideOnChildrenHidden: false - } - ], - width: 2, - offset: 0, - push: 0, - pull: 0, - size: 'md', - currentWidth: 2, - element: {} - }, - { - components: [ - { - label: 'Text Field3', - hidden: true, - tableView: true, - key: 'textField2', - customConditional: - 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[3]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', - type: 'textfield', - input: true, - hideOnChildrenHidden: false - } - ], - size: 'md', - width: 2, - offset: 0, - push: 0, - pull: 0, - currentWidth: 2, - element: {} - }, - { - components: [ - { - label: 'Text Field4', - tableView: true, - key: 'textField3', - customConditional: - 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[4]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', - type: 'textfield', - input: true, - hideOnChildrenHidden: false - } - ], - size: 'md', - width: 2, - offset: 0, - push: 0, - pull: 0, - currentWidth: 2, - element: {} - }, - { - components: [ - { - label: 'Text Field5', - tableView: true, - key: 'textField4', - customConditional: - 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[5]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', - type: 'textfield', - input: true, - hideOnChildrenHidden: false - } - ], - size: 'md', - width: 2, - offset: 0, - push: 0, - pull: 0, - currentWidth: 2, - element: {} - }, - { - components: [ - { - label: 'Text Field6', - tableView: true, - key: 'textField5', - customConditional: - 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[6]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', - type: 'textfield', - input: true, - hideOnChildrenHidden: false - } - ], - size: 'md', - offset: 0, - push: 0, - pull: 0, - width: 2, - currentWidth: 2, - element: {} - } - ], - autoAdjust: true, - key: 'columns', - type: 'columns', - input: false, - tableView: false - }, - { - type: 'button', - label: 'Submit', - key: 'submit', - disableOnInvalid: true, - input: true, - tableView: false - } - ], - title: 'test column form', - display: 'form', - name: 'testColumnForm', - path: 'testcolumnform', - machineName: 'cjksbatcpbhyfbs:testColumnForm', + type: 'form', + components: [ + { + label: 'Select Boxes', + optionsLabelPosition: 'right', + tableView: false, + values: [ + { + label: '1', + value: '1', + shortcut: '', + }, + { + label: '2', + value: '2', + shortcut: '', + }, + { + label: '3', + value: '3', + shortcut: '', + }, + { + label: '4', + value: '4', + shortcut: '', + }, + { + label: '5', + value: '5', + shortcut: '', + }, + { + label: '6', + value: '6', + shortcut: '', + }, + ], + key: 'selectBoxes', + type: 'selectboxes', + input: true, + inputType: 'checkbox', + }, + { + label: 'Columns', + columns: [ + { + components: [ + { + label: 'Text Field1', + tableView: true, + key: 'textField', + customConditional: + 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[1]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, + }, + ], + width: 2, + offset: 0, + push: 0, + pull: 0, + size: 'md', + currentWidth: 2, + element: {}, + }, + { + components: [ + { + label: 'Text Field2', + tableView: true, + key: 'textField1', + customConditional: + 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[2]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, + }, + ], + width: 2, + offset: 0, + push: 0, + pull: 0, + size: 'md', + currentWidth: 2, + element: {}, + }, + { + components: [ + { + label: 'Text Field3', + hidden: true, + tableView: true, + key: 'textField2', + customConditional: + 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[3]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, + }, + ], + size: 'md', + width: 2, + offset: 0, + push: 0, + pull: 0, + currentWidth: 2, + element: {}, + }, + { + components: [ + { + label: 'Text Field4', + tableView: true, + key: 'textField3', + customConditional: + 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[4]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, + }, + ], + size: 'md', + width: 2, + offset: 0, + push: 0, + pull: 0, + currentWidth: 2, + element: {}, + }, + { + components: [ + { + label: 'Text Field5', + tableView: true, + key: 'textField4', + customConditional: + 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[5]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, + }, + ], + size: 'md', + width: 2, + offset: 0, + push: 0, + pull: 0, + currentWidth: 2, + element: {}, + }, + { + components: [ + { + label: 'Text Field6', + tableView: true, + key: 'textField5', + customConditional: + 'let list=[data.selectBoxes];\r\n\r\nlet returnValue=false;\r\nlist.map((e)=>{\r\n \r\n if(e[6]===true){\r\n returnValue=true;\r\n \r\n}\r\n \r\n});\r\n\r\nshow=returnValue;', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, + }, + ], + size: 'md', + offset: 0, + push: 0, + pull: 0, + width: 2, + currentWidth: 2, + element: {}, + }, + ], + autoAdjust: true, + key: 'columns', + type: 'columns', + input: false, + tableView: false, + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], + title: 'test column form', + display: 'form', + name: 'testColumnForm', + path: 'testcolumnform', + machineName: 'cjksbatcpbhyfbs:testColumnForm', }; diff --git a/test/forms/componentsBasicSettingsTests.js b/test/forms/componentsBasicSettingsTests.js index 2a518b81bf..cd709b13bf 100644 --- a/test/forms/componentsBasicSettingsTests.js +++ b/test/forms/componentsBasicSettingsTests.js @@ -1,31 +1,27 @@ import _ from 'lodash'; import testHelpers from './helpers/testBasicComponentSettings'; -const { - settings, - form, - tests -} = testHelpers; +const { settings, form, tests } = testHelpers; const testedProperties = Object.keys(settings); const baseHelpingComponent = { - 'label': 'basis', - 'tableView': true, - 'defaultValue': 'base value', - 'key': 'basis', - 'type': 'textfield', - 'input': true + label: 'basis', + tableView: true, + defaultValue: 'base value', + key: 'basis', + type: 'textfield', + input: true, }; const helpingActionBtn = { - 'label': 'Hide btn', - 'action': 'event', - 'showValidations': false, - 'tableView': false, - 'key': 'hideBtn', - 'type': 'button', - 'input': true, - 'event': 'hide' + label: 'Hide btn', + action: 'event', + showValidations: false, + tableView: false, + key: 'hideBtn', + type: 'button', + input: true, + event: 'hide', }; export default _.map(testedProperties, (property) => { @@ -33,33 +29,35 @@ export default _.map(testedProperties, (property) => { const testedForm = _.cloneDeep(form); testedForm.components = testedForm.components - .filter(comp => { + .filter((comp) => { if (_.get(settings, property).hasOwnProperty(comp.key)) { return true; } }) - .map(comp => { + .map((comp) => { if (property === 'placeholder' && comp.type === 'day') { _.each(comp.fields, (fieldValue, fieldName) => { fieldValue[property] = _.get(settings, property)[comp.key][fieldName] || ''; }); - } - else { + } else { //if we have expected value in property settings if (['customDefaultValue', 'calculateValue'].includes(property)) { _.set(comp, property, _.get(settings, property)[comp.key].js); - } - else { + } else { _.set(comp, property, _.get(settings, property)[comp.key]); } } if (['redrawOn'].includes(property)) { - comp.label = `${comp.label} {{data.${ _.get(settings, property)[comp.key]}}}`; + comp.label = `${comp.label} {{data.${_.get(settings, property)[comp.key]}}}`; } return comp; }); - if (['customDefaultValue', 'calculateValue', 'conditional', 'customConditional', 'logic'].includes(property)) { + if ( + ['customDefaultValue', 'calculateValue', 'conditional', 'customConditional', 'logic'].includes( + property, + ) + ) { testedForm.components.unshift(baseHelpingComponent); if (['logic'].includes(property)) { @@ -75,7 +73,7 @@ export default _.map(testedProperties, (property) => { tests: propertyTests || {}, useDone: true, formOptions: { - language: 'en' - } + language: 'en', + }, }; }); diff --git a/test/forms/conditionalDataGridWithTableAndRadio.d.ts b/test/forms/conditionalDataGridWithTableAndRadio.d.ts index 6fc940d73c..79232713ae 100644 --- a/test/forms/conditionalDataGridWithTableAndRadio.d.ts +++ b/test/forms/conditionalDataGridWithTableAndRadio.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; reorder: boolean; addAnother: string; @@ -12,24 +13,25 @@ declare namespace _default { hideLabel: boolean; tableView: boolean; defaultValue: { - compartment: string; - of: string; - weldComponentLocation: string; - examinationDateInitial: string; - initialExam: string; + compartment: string; + of: string; + weldComponentLocation: string; + examinationDateInitial: string; + initialExam: string; }[]; key: string; customConditional: string; type: string; input: boolean; components: { - label: string; - hideLabel: boolean; - key: string; - type: string; - input: boolean; - tableView: boolean; - components: ({ + label: string; + hideLabel: boolean; + key: string; + type: string; + input: boolean; + tableView: boolean; + components: ( + | { label: string; numRows: number; cellAlignment: string; @@ -38,23 +40,23 @@ declare namespace _default { input: boolean; tableView: boolean; rows: { - components: { - label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; + components: { + label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { + label: string; + value: string; + shortcut: string; }[]; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; + }[]; }[][]; reorder?: undefined; addAnother?: undefined; @@ -67,7 +69,8 @@ declare namespace _default { defaultValue?: undefined; conditional?: undefined; components?: undefined; - } | { + } + | { label: string; reorder: boolean; addAnother: string; @@ -79,53 +82,55 @@ declare namespace _default { hideLabel: boolean; tableView: boolean; defaultValue: { - weldComponentLocationRepair: string; - examinationDateRepair: string; - repairExam: string; + weldComponentLocationRepair: string; + examinationDateRepair: string; + repairExam: string; }[]; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; input: boolean; components: { - label: string; - numRows: number; - cellAlignment: string; - key: string; - type: string; - input: boolean; - tableView: boolean; - rows: { - components: { - label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; - }[]; - }[][]; + label: string; + numRows: number; + cellAlignment: string; + key: string; + type: string; + input: boolean; + tableView: boolean; + rows: { + components: { + label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { + label: string; + value: string; + shortcut: string; + }[]; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; + }[]; + }[][]; }[]; numRows?: undefined; cellAlignment?: undefined; rows?: undefined; - })[]; + } + )[]; }[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -142,8 +147,9 @@ declare namespace _default { hideLabel?: undefined; defaultValue?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/conditionalDataGridWithTableAndRadio.js b/test/forms/conditionalDataGridWithTableAndRadio.js index e85e4db884..0d6bcf74b8 100644 --- a/test/forms/conditionalDataGridWithTableAndRadio.js +++ b/test/forms/conditionalDataGridWithTableAndRadio.js @@ -18,8 +18,8 @@ export default { of: '', weldComponentLocation: '', examinationDateInitial: '', - initialExam: '' - } + initialExam: '', + }, ], key: 'inspectionDataGrid', type: 'datagrid', @@ -44,14 +44,10 @@ export default { rows: [ [ { - components: [ - - ] + components: [], }, { - components: [ - - ] + components: [], }, { components: [ @@ -64,25 +60,25 @@ export default { { label: 'Accept', value: 'accept', - shortcut: '' + shortcut: '', }, { label: 'Reject', value: 'reject', - shortcut: '' - } + shortcut: '', + }, ], validate: { - required: true + required: true, }, key: 'initialExam', type: 'radio', - input: true - } - ] - } - ] - ] + input: true, + }, + ], + }, + ], + ], }, { label: 'Repair Data Grid', @@ -99,14 +95,14 @@ export default { { weldComponentLocationRepair: '', examinationDateRepair: '', - repairExam: '' - } + repairExam: '', + }, ], key: 'repairDataGrid', conditional: { show: true, when: 'inspectionDataGrid.initialExam', - eq: 'reject' + eq: 'reject', }, type: 'datagrid', input: true, @@ -122,14 +118,10 @@ export default { rows: [ [ { - components: [ - - ] + components: [], }, { - components: [ - - ] + components: [], }, { components: [ @@ -142,31 +134,31 @@ export default { { label: 'Accept', value: 'accept', - shortcut: '' + shortcut: '', }, { label: 'Reject', value: 'reject', - shortcut: '' - } + shortcut: '', + }, ], validate: { - required: true + required: true, }, key: 'repairExam', type: 'radio', - input: true - } - ] - } - ] - ] - } - ] - } - ] - } - ] + input: true, + }, + ], + }, + ], + ], + }, + ], + }, + ], + }, + ], }, { type: 'button', @@ -174,8 +166,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FIO-3090', display: 'form', diff --git a/test/forms/conditionalWizardPages.d.ts b/test/forms/conditionalWizardPages.d.ts index 90efd45615..fc5b10f19a 100644 --- a/test/forms/conditionalWizardPages.d.ts +++ b/test/forms/conditionalWizardPages.d.ts @@ -1,94 +1,103 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; label: string; type: string; key: string; - components: ({ - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; - components?: undefined; - } | { - label: string; - tableView: boolean; - components: { + components: ( + | { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; + components?: undefined; + } + | { + label: string; + tableView: boolean; + components: { type: string; - components: ({ - label: string; - autoExpand: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - disableOnInvalid?: undefined; - } | { - type: string; - label: string; - key: string; - disableOnInvalid: boolean; - input: boolean; - tableView: boolean; - autoExpand?: undefined; - })[]; + components: ( + | { + label: string; + autoExpand: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + disableOnInvalid?: undefined; + } + | { + type: string; + label: string; + key: string; + disableOnInvalid: boolean; + input: boolean; + tableView: boolean; + autoExpand?: undefined; + } + )[]; title: string; display: string; name: string; path: string; - }[]; - key: string; - type: string; - input: boolean; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - })[]; + }[]; + key: string; + type: string; + input: boolean; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + } + )[]; input: boolean; tableView: boolean; breadcrumbClickable?: undefined; buttonSettings?: undefined; collapsible?: undefined; conditional?: undefined; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; label: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/conditionalWizardPages.js b/test/forms/conditionalWizardPages.js index 93c852c809..406a36414f 100644 --- a/test/forms/conditionalWizardPages.js +++ b/test/forms/conditionalWizardPages.js @@ -1,81 +1,94 @@ export default { - 'type': 'form', - 'components': [{ - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [{ - 'label': 'Number', - 'mask': false, - 'spellcheck': true, - 'tableView': false, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'key': 'number', - 'type': 'number', - 'input': true - }, { - 'label': 'Form', - 'tableView': true, - 'components': [{ - 'type': 'form', - 'components': [{ - 'label': 'Text Area', - 'autoExpand': false, - 'tableView': true, - 'key': 'textArea', - 'type': 'textarea', - 'input': true - }, { - 'type': 'button', - 'label': 'Submit', - 'key': 'submit', - 'disableOnInvalid': true, - 'input': true, - 'tableView': false - }], - 'title': 'nested for wizard test', - 'display': 'form', - 'name': 'nestedForWizardTest', - 'path': 'nestedforwizardtest' - }], - 'key': 'form', - 'type': 'form', - 'input': true - }], - 'input': false, - 'tableView': false - }, { - 'title': 'Page 2', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + type: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + { + label: 'Form', + tableView: true, + components: [ + { + type: 'form', + components: [ + { + label: 'Text Area', + autoExpand: false, + tableView: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], + title: 'nested for wizard test', + display: 'form', + name: 'nestedForWizardTest', + path: 'nestedforwizardtest', + }, + ], + key: 'form', + type: 'form', + input: true, + }, + ], + input: false, + tableView: false, }, - 'collapsible': false, - 'key': 'page2', - 'conditional': { - 'show': true, - 'when': 'number', - 'eq': '5' + { + title: 'Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + key: 'page2', + conditional: { + show: true, + when: 'number', + eq: '5', + }, + type: 'panel', + label: 'Page 2', + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + ], + input: false, + tableView: false, }, - 'type': 'panel', - 'label': 'Page 2', - 'components': [{ - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField', - 'type': 'textfield', - 'input': true - }], - 'input': false, - 'tableView': false - }], - 'title': 'test wizard conditional', - 'display': 'wizard', - 'name': 'testWizardConditional', - 'path': 'testwizardconditional' + ], + title: 'test wizard conditional', + display: 'wizard', + name: 'testWizardConditional', + path: 'testwizardconditional', }; diff --git a/test/forms/conditionallyVisiblePage.d.ts b/test/forms/conditionallyVisiblePage.d.ts index 098b2bf3bc..f89018b072 100644 --- a/test/forms/conditionallyVisiblePage.d.ts +++ b/test/forms/conditionallyVisiblePage.d.ts @@ -1,12 +1,13 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; @@ -15,138 +16,145 @@ declare namespace _default { label: string; input: boolean; tableView: boolean; - components: ({ - breadcrumbClickable: boolean; - buttonSettings: { + components: ( + | { + breadcrumbClickable: boolean; + buttonSettings: { previous: boolean; cancel: boolean; next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { label: string; tableView: boolean; validate: { - required: boolean; + required: boolean; }; key: string; type: string; input: boolean; - }[]; - rowDrafts?: undefined; - } | { - label: string; - tableView: boolean; - rowDrafts: boolean; - key: string; - type: string; - input: boolean; - components: { + }[]; + rowDrafts?: undefined; + } + | { + label: string; + tableView: boolean; + rowDrafts: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; selectThreshold: number; validate: { - onlyAvailableItems: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; indexeddb: { - filter: {}; + filter: {}; }; input: boolean; - }[]; - breadcrumbClickable?: undefined; - buttonSettings?: undefined; - scrollToTop?: undefined; - collapsible?: undefined; - })[]; + }[]; + breadcrumbClickable?: undefined; + buttonSettings?: undefined; + scrollToTop?: undefined; + collapsible?: undefined; + } + )[]; logic?: undefined; conditional?: undefined; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; key: string; logic: { + name: string; + trigger: { + type: string; + simple: { + show: boolean; + when: string; + eq: string; + }; + }; + actions: { name: string; - trigger: { - type: string; - simple: { - show: boolean; - when: string; - eq: string; - }; + type: string; + property: { + label: string; + value: string; + type: string; }; - actions: { - name: string; - type: string; - property: { - label: string; - value: string; - type: string; - }; - state: boolean; - }[]; + state: boolean; + }[]; }[]; type: string; label: string; - components: ({ - label: string; - columns: ({ - components: { - label: string; - tableView: boolean; - validate: { + components: ( + | { + label: string; + columns: ( + | { + components: { + label: string; + tableView: boolean; + validate: { required: boolean; - }; - key: string; - type: string; - input: boolean; - hideOnChildrenHidden: boolean; - defaultValue: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - } | { - components: { - label: string; - displayInTimezone: string; - format: string; - tableView: boolean; - enableMinDateInput: boolean; - datePicker: { + }; + key: string; + type: string; + input: boolean; + hideOnChildrenHidden: boolean; + defaultValue: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + | { + components: { + label: string; + displayInTimezone: string; + format: string; + tableView: boolean; + enableMinDateInput: boolean; + datePicker: { disableWeekends: boolean; disableWeekdays: boolean; - }; - enableMaxDateInput: boolean; - enableTime: boolean; - timePicker: { + }; + enableMaxDateInput: boolean; + enableTime: boolean; + timePicker: { showMeridian: boolean; - }; - key: string; - type: string; - input: boolean; - widget: { + }; + key: string; + type: string; + input: boolean; + widget: { type: string; displayInTimezone: string; locale: string; @@ -163,88 +171,93 @@ declare namespace _default { disableWeekends: boolean; disableWeekdays: boolean; maxDate: null; - }; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - })[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - defaultValue?: undefined; - components?: undefined; - } | { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: {}[]; - key: string; - type: string; - input: boolean; - components: { + }; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + )[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + defaultValue?: undefined; + components?: undefined; + } + | { + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: {}[]; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - }[]; - columns?: undefined; - })[]; + }[]; + columns?: undefined; + } + )[]; input: boolean; tableView: boolean; scrollToTop?: undefined; conditional?: undefined; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; label: string; components: { + label: string; + key: string; + type: string; + input: boolean; + tableView: boolean; + components: { label: string; + tableView: boolean; key: string; type: string; input: boolean; - tableView: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; + }[]; }[]; input: boolean; tableView: boolean; logic?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/conditionallyVisiblePage.js b/test/forms/conditionallyVisiblePage.js index 96d8698c73..969d2ade6b 100644 --- a/test/forms/conditionallyVisiblePage.js +++ b/test/forms/conditionallyVisiblePage.js @@ -7,7 +7,7 @@ export default { buttonSettings: { previous: true, cancel: true, - next: true + next: true, }, scrollToTop: false, collapsible: false, @@ -22,7 +22,7 @@ export default { buttonSettings: { previous: true, cancel: true, - next: true + next: true, }, scrollToTop: false, collapsible: false, @@ -36,13 +36,13 @@ export default { label: 'Text Field', tableView: true, validate: { - required: true + required: true, }, key: 'textField', type: 'textfield', - input: true - } - ] + input: true, + }, + ], }, { label: 'Edit Grid', @@ -59,34 +59,32 @@ export default { values: [ { label: 'a', - value: 'a' + value: 'a', }, { label: 'b', - value: 'b' + value: 'b', }, { label: 'c', - value: 'c' - } - ] + value: 'c', + }, + ], }, selectThreshold: 0.3, validate: { - onlyAvailableItems: false + onlyAvailableItems: false, }, key: 'select', type: 'select', indexeddb: { - filter: { - - } + filter: {}, }, - input: true - } - ] - } - ] + input: true, + }, + ], + }, + ], }, { title: 'Page 2', @@ -94,7 +92,7 @@ export default { buttonSettings: { previous: true, cancel: true, - next: true + next: true, }, collapsible: false, key: 'page2', @@ -106,8 +104,8 @@ export default { simple: { show: true, when: 'textField', - eq: 'hide' - } + eq: 'hide', + }, }, actions: [ { @@ -116,12 +114,12 @@ export default { property: { label: 'Hidden', value: 'hidden', - type: 'boolean' + type: 'boolean', }, - state: true - } - ] - } + state: true, + }, + ], + }, ], type: 'panel', label: 'Page 2', @@ -135,20 +133,20 @@ export default { label: 'Checkbox', tableView: false, validate: { - required: true + required: true, }, key: 'checkbox', type: 'checkbox', input: true, hideOnChildrenHidden: false, - defaultValue: false - } + defaultValue: false, + }, ], width: 6, offset: 0, push: 0, pull: 0, - size: 'md' + size: 'md', }, { components: [ @@ -160,12 +158,12 @@ export default { enableMinDateInput: false, datePicker: { disableWeekends: false, - disableWeekdays: false + disableWeekdays: false, }, enableMaxDateInput: false, enableTime: false, timePicker: { - showMeridian: false + showMeridian: false, }, key: 'dateTime', type: 'datetime', @@ -186,22 +184,22 @@ export default { minDate: null, disableWeekends: false, disableWeekdays: false, - maxDate: null + maxDate: null, }, - hideOnChildrenHidden: false - } + hideOnChildrenHidden: false, + }, ], width: 6, offset: 0, push: 0, pull: 0, - size: 'md' - } + size: 'md', + }, ], key: 'columns', type: 'columns', input: false, - tableView: false + tableView: false, }, { label: 'Data Grid', @@ -211,11 +209,7 @@ export default { enableRowGroups: false, initEmpty: false, tableView: false, - defaultValue: [ - { - - } - ], + defaultValue: [{}], key: 'dataGrid', type: 'datagrid', input: true, @@ -225,13 +219,13 @@ export default { tableView: true, key: 'textFielde', type: 'textfield', - input: true - } - ] - } + input: true, + }, + ], + }, ], input: false, - tableView: false + tableView: false, }, { title: 'Page 3', @@ -239,7 +233,7 @@ export default { buttonSettings: { previous: true, cancel: true, - next: true + next: true, }, scrollToTop: false, collapsible: false, @@ -247,7 +241,7 @@ export default { conditional: { show: false, when: 'textField', - eq: 'hide2' + eq: 'hide2', }, type: 'panel', label: 'Page 3', @@ -264,14 +258,14 @@ export default { tableView: true, key: 'email', type: 'email', - input: true - } - ] - } + input: true, + }, + ], + }, ], input: false, - tableView: false - } + tableView: false, + }, ], title: 'FIO-2494 2', display: 'wizard', diff --git a/test/forms/conditions.d.ts b/test/forms/conditions.d.ts index d406382349..12b51ec94a 100644 --- a/test/forms/conditions.d.ts +++ b/test/forms/conditions.d.ts @@ -1,85 +1,112 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - type: string; - label: string; - key: string; - input: boolean; - inputType: string; - validate: { - json: { - if: (string | boolean | { - '==': (string | { - var: string; - })[]; - })[]; - }; + const title: string; + namespace form { + const components: ( + | { + type: string; + label: string; + key: string; + input: boolean; + inputType: string; + validate: { + json: { + if: ( + | string + | boolean + | { + '==': ( + | string + | { + var: string; + } + )[]; + } + )[]; }; - conditional?: undefined; - tag?: undefined; - attrs?: undefined; - className?: undefined; - content?: undefined; - } | { - type: string; - label: string; - key: string; - input: boolean; - inputType: string; - validate: { - json: { - if: (string | boolean | { - '==': (string | { - var: string; - })[]; - })[]; - }; + }; + conditional?: undefined; + tag?: undefined; + attrs?: undefined; + className?: undefined; + content?: undefined; + } + | { + type: string; + label: string; + key: string; + input: boolean; + inputType: string; + validate: { + json: { + if: ( + | string + | boolean + | { + '==': ( + | string + | { + var: string; + } + )[]; + } + )[]; }; - conditional: { - json: { - '===': (string | { - var: string; - })[]; - }; + }; + conditional: { + json: { + '===': ( + | string + | { + var: string; + } + )[]; }; - tag?: undefined; - attrs?: undefined; - className?: undefined; - content?: undefined; - } | { - key: string; - input: boolean; - tag: string; - attrs: { - attr: string; - value: string; - }[]; - className: string; - content: string; - type: string; - conditional: { - json: { - '===': (string | { - var: string; - })[]; - }; + }; + tag?: undefined; + attrs?: undefined; + className?: undefined; + content?: undefined; + } + | { + key: string; + input: boolean; + tag: string; + attrs: { + attr: string; + value: string; + }[]; + className: string; + content: string; + type: string; + conditional: { + json: { + '===': ( + | string + | { + var: string; + } + )[]; }; - label?: undefined; - inputType?: undefined; - validate?: undefined; - })[]; - } - const tests: { - 'Test hidden components'(form: any, done: any): void; - 'Test validation errors on typeShow field'(form: any, done: any): void; - 'Test validation errors on typeMe field'(form: any, done: any): void; - 'Test validation errors on typeThe field'(form: any, done: any): void; - 'Test validation errors on typeMonkey field'(form: any, done: any): void; - 'Test conditional when typeShow is set'(form: any, done: any): void; - 'Test conditional when typeShow, typeMe is set'(form: any, done: any): void; - 'Test conditional when typeShow, typeMe, typeThe is set'(form: any, done: any): void; - 'Test conditional when typeShow, typeMe, typeThe, typeMonkey is set'(form: any, done: any): void; - }; + }; + label?: undefined; + inputType?: undefined; + validate?: undefined; + } + )[]; + } + const tests: { + 'Test hidden components'(form: any, done: any): void; + 'Test validation errors on typeShow field'(form: any, done: any): void; + 'Test validation errors on typeMe field'(form: any, done: any): void; + 'Test validation errors on typeThe field'(form: any, done: any): void; + 'Test validation errors on typeMonkey field'(form: any, done: any): void; + 'Test conditional when typeShow is set'(form: any, done: any): void; + 'Test conditional when typeShow, typeMe is set'(form: any, done: any): void; + 'Test conditional when typeShow, typeMe, typeThe is set'(form: any, done: any): void; + 'Test conditional when typeShow, typeMe, typeThe, typeMonkey is set'( + form: any, + done: any, + ): void; + }; } export default _default; diff --git a/test/forms/conditions.js b/test/forms/conditions.js index 8094da34a1..12e342a283 100644 --- a/test/forms/conditions.js +++ b/test/forms/conditions.js @@ -16,16 +16,16 @@ export default { { '==': [ { - var: 'data.typeShow' + var: 'data.typeShow', }, - 'Show' - ] + 'Show', + ], }, true, - 'You must type "Show"' - ] - } - } + 'You must type "Show"', + ], + }, + }, }, { type: 'textfield', @@ -39,26 +39,26 @@ export default { { '==': [ { - var: 'data.typeMe' + var: 'data.typeMe', }, - 'Me' - ] + 'Me', + ], }, true, - 'You must type "Me"' - ] - } + 'You must type "Me"', + ], + }, }, conditional: { json: { '===': [ { - var: 'data.typeShow' + var: 'data.typeShow', }, - 'Show' - ] - } - } + 'Show', + ], + }, + }, }, { type: 'textfield', @@ -72,26 +72,26 @@ export default { { '==': [ { - var: 'data.typeThe' + var: 'data.typeThe', }, - 'The' - ] + 'The', + ], }, true, - 'You must type "The"' - ] - } + 'You must type "The"', + ], + }, }, conditional: { json: { '===': [ { - var: 'data.typeMe' + var: 'data.typeMe', }, - 'Me' - ] - } - } + 'Me', + ], + }, + }, }, { type: 'textfield', @@ -105,26 +105,26 @@ export default { { '==': [ { - var: 'data.typeMonkey' + var: 'data.typeMonkey', }, - 'Monkey!' - ] + 'Monkey!', + ], }, true, - 'You must type "Monkey!"' - ] - } + 'You must type "Monkey!"', + ], + }, }, conditional: { json: { '===': [ { - var: 'data.typeThe' + var: 'data.typeThe', }, - 'The' - ] - } - } + 'The', + ], + }, + }, }, { key: 'monkey', @@ -133,12 +133,13 @@ export default { attrs: [ { attr: 'src', - value: 'https://ichef.bbci.co.uk/news/660/cpsprodpb/025B/production/_85730600_monkey2.jpg' + value: + 'https://ichef.bbci.co.uk/news/660/cpsprodpb/025B/production/_85730600_monkey2.jpg', }, { attr: 'style', - value: 'width: 100%;' - } + value: 'width: 100%;', + }, ], className: '', content: '', @@ -147,19 +148,24 @@ export default { json: { '===': [ { - var: 'data.typeMonkey' + var: 'data.typeMonkey', }, - 'Monkey!' - ] - } - } - } - ] + 'Monkey!', + ], + }, + }, + }, + ], }, tests: { 'Test hidden components'(form, done) { Harness.testElements(form, 'input[type="text"]', 1); - Harness.testConditionals(form, {data: {}}, ['typeMe', 'typeThe', 'typeMonkey', 'monkey'], done); + Harness.testConditionals( + form, + { data: {} }, + ['typeMe', 'typeThe', 'typeMonkey', 'monkey'], + done, + ); }, 'Test validation errors on typeShow field'(form, done) { Harness.testErrors( @@ -169,90 +175,131 @@ export default { typeShow: 'sho', typeMe: '', typeThe: '', - typeMonkey: '' - } + typeMonkey: '', + }, }, [ { component: 'typeShow', - message: 'You must type "Show"' - } + message: 'You must type "Show"', + }, ], - done + done, ); }, 'Test validation errors on typeMe field'(form, done) { - Harness.testErrors(form, {data: { - typeShow: 'Show', - typeMe: 'me', - typeThe: '', - typeMonkey: '' - }}, [ + Harness.testErrors( + form, { - component: 'typeMe', - message: 'You must type "Me"' - } - ], done); + data: { + typeShow: 'Show', + typeMe: 'me', + typeThe: '', + typeMonkey: '', + }, + }, + [ + { + component: 'typeMe', + message: 'You must type "Me"', + }, + ], + done, + ); }, 'Test validation errors on typeThe field'(form, done) { - Harness.testErrors(form, {data: { - typeShow: 'Show', - typeMe: 'Me', - typeThe: 'the', - typeMonkey: '' - }}, [ + Harness.testErrors( + form, { - component: 'typeThe', - message: 'You must type "The"' - } - ], done); + data: { + typeShow: 'Show', + typeMe: 'Me', + typeThe: 'the', + typeMonkey: '', + }, + }, + [ + { + component: 'typeThe', + message: 'You must type "The"', + }, + ], + done, + ); }, 'Test validation errors on typeMonkey field'(form, done) { - Harness.testErrors(form, {data: { - typeShow: 'Show', - typeMe: 'Me', - typeThe: 'The', - typeMonkey: 'Monkey' - }}, [ + Harness.testErrors( + form, { - component: 'typeMonkey', - message: 'You must type "Monkey!"' - } - ], done); + data: { + typeShow: 'Show', + typeMe: 'Me', + typeThe: 'The', + typeMonkey: 'Monkey', + }, + }, + [ + { + component: 'typeMonkey', + message: 'You must type "Monkey!"', + }, + ], + done, + ); }, 'Test conditional when typeShow is set'(form, done) { - Harness.testConditionals(form, { - data: { - typeShow: 'Show' - } - }, ['typeThe', 'typeMonkey', 'monkey'], done); + Harness.testConditionals( + form, + { + data: { + typeShow: 'Show', + }, + }, + ['typeThe', 'typeMonkey', 'monkey'], + done, + ); }, 'Test conditional when typeShow, typeMe is set'(form, done) { - Harness.testConditionals(form, { - data: { - typeShow: 'Show', - typeMe: 'Me' - } - }, ['typeMonkey', 'monkey'], done); + Harness.testConditionals( + form, + { + data: { + typeShow: 'Show', + typeMe: 'Me', + }, + }, + ['typeMonkey', 'monkey'], + done, + ); }, 'Test conditional when typeShow, typeMe, typeThe is set'(form, done) { - Harness.testConditionals(form, { - data: { - typeShow: 'Show', - typeMe: 'Me', - typeThe: 'The' - } - }, ['monkey'], done); + Harness.testConditionals( + form, + { + data: { + typeShow: 'Show', + typeMe: 'Me', + typeThe: 'The', + }, + }, + ['monkey'], + done, + ); }, 'Test conditional when typeShow, typeMe, typeThe, typeMonkey is set'(form, done) { - Harness.testConditionals(form, { - data: { - typeShow: 'Show', - typeMe: 'Me', - typeThe: 'The', - typeMonkey: 'Monkey!' - } - }, [], done); - } - } + Harness.testConditionals( + form, + { + data: { + typeShow: 'Show', + typeMe: 'Me', + typeThe: 'The', + typeMonkey: 'Monkey!', + }, + }, + [], + done, + ); + }, + }, }; diff --git a/test/forms/customWizard.d.ts b/test/forms/customWizard.d.ts index b9c4fe36ff..ba64e24f40 100644 --- a/test/forms/customWizard.d.ts +++ b/test/forms/customWizard.d.ts @@ -1,207 +1,226 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; key: string; type: string; label: string; - components: ({ - label: string; - tableView: boolean; - protected: boolean; - key: string; - type: string; - input: boolean; - columns?: undefined; - } | { - label: string; - columns: { + components: ( + | { + label: string; + tableView: boolean; + protected: boolean; + key: string; + type: string; + input: boolean; + columns?: undefined; + } + | { + label: string; + columns: { components: { - label: string; - action: string; - showValidations: boolean; - theme: string; - block: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - event: string; - hideOnChildrenHidden: boolean; + label: string; + action: string; + showValidations: boolean; + theme: string; + block: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + event: string; + hideOnChildrenHidden: boolean; }[]; width: number; offset: number; push: number; pull: number; size: string; - }[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - protected?: undefined; - })[]; + }[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + protected?: undefined; + } + )[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; key: string; type: string; label: string; - components: ({ - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; - columns?: undefined; - } | { - label: string; - columns: ({ - components: { - label: string; - action: string; - showValidations: boolean; - block: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - event: string; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - } | { - components: { - label: string; - action: string; - showValidations: boolean; - theme: string; - block: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - event: string; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - })[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - })[]; + components: ( + | { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; + columns?: undefined; + } + | { + label: string; + columns: ( + | { + components: { + label: string; + action: string; + showValidations: boolean; + block: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + event: string; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + | { + components: { + label: string; + action: string; + showValidations: boolean; + theme: string; + block: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + event: string; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + )[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + } + )[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; key: string; type: string; label: string; - components: ({ - label: string; - autoExpand: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - columns?: undefined; - } | { - label: string; - columns: ({ - components: { - label: string; - action: string; - showValidations: boolean; - block: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - event: string; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - } | { - components: { - label: string; - action: string; - showValidations: boolean; - theme: string; - block: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - event: string; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - })[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - autoExpand?: undefined; - })[]; + components: ( + | { + label: string; + autoExpand: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + columns?: undefined; + } + | { + label: string; + columns: ( + | { + components: { + label: string; + action: string; + showValidations: boolean; + block: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + event: string; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + | { + components: { + label: string; + action: string; + showValidations: boolean; + theme: string; + block: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + event: string; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + )[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + autoExpand?: undefined; + } + )[]; input: boolean; tableView: boolean; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/customWizard.js b/test/forms/customWizard.js index 4cf07d7aa6..721ead0415 100644 --- a/test/forms/customWizard.js +++ b/test/forms/customWizard.js @@ -1,203 +1,235 @@ export default { - 'type': 'form', - 'components': [{ - 'title': 'Page 1', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': false, - 'cancel': false, - 'next': false + type: 'form', + components: [ + { + title: 'Page 1', + breadcrumbClickable: true, + buttonSettings: { + previous: false, + cancel: false, + next: false, + }, + scrollToTop: false, + collapsible: false, + key: 'page1', + type: 'panel', + label: 'Page 1', + components: [ + { + label: 'Text Field', + tableView: true, + protected: true, + key: 'textField', + type: 'textfield', + input: true, + }, + { + label: 'Columns', + columns: [ + { + components: [], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + { + components: [ + { + label: 'next page', + action: 'event', + showValidations: false, + theme: 'success', + block: true, + tableView: false, + key: 'nextPage', + type: 'button', + input: true, + event: 'goToNextPage', + hideOnChildrenHidden: false, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + ], + key: 'columns', + type: 'columns', + input: false, + tableView: false, + }, + ], + input: false, + tableView: false, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'page1', - 'type': 'panel', - 'label': 'Page 1', - 'components': [{ - 'label': 'Text Field', - 'tableView': true, - 'protected': true, - 'key': 'textField', - 'type': 'textfield', - 'input': true - }, { - 'label': 'Columns', - 'columns': [{ - 'components': [], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }, { - 'components': [{ - 'label': 'next page', - 'action': 'event', - 'showValidations': false, - 'theme': 'success', - 'block': true, - 'tableView': false, - 'key': 'nextPage', - 'type': 'button', - 'input': true, - 'event': 'goToNextPage', - 'hideOnChildrenHidden': false - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }], - 'key': 'columns', - 'type': 'columns', - 'input': false, - 'tableView': false - }], - 'input': false, - 'tableView': false - }, { - 'title': 'Page 2', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': false, - 'cancel': false, - 'next': false + { + title: 'Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: false, + cancel: false, + next: false, + }, + scrollToTop: false, + collapsible: false, + key: 'page2', + type: 'panel', + label: 'Page 2', + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + { + label: 'Columns', + columns: [ + { + components: [ + { + label: 'prev page', + action: 'event', + showValidations: false, + block: true, + tableView: false, + key: 'prevPage', + type: 'button', + input: true, + event: 'goToPrevPage', + hideOnChildrenHidden: false, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + { + components: [ + { + label: 'next page', + action: 'event', + showValidations: false, + theme: 'success', + block: true, + tableView: false, + key: 'nextPage1', + type: 'button', + input: true, + event: 'goToNextPage', + hideOnChildrenHidden: false, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + ], + key: 'columns1', + type: 'columns', + input: false, + tableView: false, + }, + ], + input: false, + tableView: false, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'page2', - 'type': 'panel', - 'label': 'Page 2', - 'components': [{ - 'label': 'Number', - 'mask': false, - 'spellcheck': true, - 'tableView': false, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'key': 'number', - 'type': 'number', - 'input': true - }, { - 'label': 'Columns', - 'columns': [{ - 'components': [{ - 'label': 'prev page', - 'action': 'event', - 'showValidations': false, - 'block': true, - 'tableView': false, - 'key': 'prevPage', - 'type': 'button', - 'input': true, - 'event': 'goToPrevPage', - 'hideOnChildrenHidden': false - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }, { - 'components': [{ - 'label': 'next page', - 'action': 'event', - 'showValidations': false, - 'theme': 'success', - 'block': true, - 'tableView': false, - 'key': 'nextPage1', - 'type': 'button', - 'input': true, - 'event': 'goToNextPage', - 'hideOnChildrenHidden': false - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }], - 'key': 'columns1', - 'type': 'columns', - 'input': false, - 'tableView': false - }], - 'input': false, - 'tableView': false - }, { - 'title': 'Page 3', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': false, - 'cancel': false, - 'next': false + { + title: 'Page 3', + breadcrumbClickable: true, + buttonSettings: { + previous: false, + cancel: false, + next: false, + }, + scrollToTop: false, + collapsible: false, + key: 'page3', + type: 'panel', + label: 'Page 3', + components: [ + { + label: 'Text Area', + autoExpand: false, + tableView: true, + key: 'textArea1', + type: 'textarea', + input: true, + }, + { + label: 'Columns', + columns: [ + { + components: [ + { + label: 'prev page', + action: 'event', + showValidations: false, + block: true, + tableView: false, + key: 'prevPage1', + type: 'button', + input: true, + event: 'goToPrevPage', + hideOnChildrenHidden: false, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + { + components: [ + { + label: 'save', + action: 'event', + showValidations: false, + theme: 'warning', + block: true, + tableView: false, + key: 'save', + type: 'button', + input: true, + event: 'saveSubmission', + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + ], + key: 'columns4', + type: 'columns', + input: false, + tableView: false, + }, + ], + input: false, + tableView: false, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'page3', - 'type': 'panel', - 'label': 'Page 3', - 'components': [{ - 'label': 'Text Area', - 'autoExpand': false, - 'tableView': true, - 'key': 'textArea1', - 'type': 'textarea', - 'input': true - }, { - 'label': 'Columns', - 'columns': [{ - 'components': [{ - 'label': 'prev page', - 'action': 'event', - 'showValidations': false, - 'block': true, - 'tableView': false, - 'key': 'prevPage1', - 'type': 'button', - 'input': true, - 'event': 'goToPrevPage', - 'hideOnChildrenHidden': false - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }, { - 'components': [ { - 'label': 'save', - 'action': 'event', - 'showValidations': false, - 'theme': 'warning', - 'block': true, - 'tableView': false, - 'key': 'save', - 'type': 'button', - 'input': true, - 'event': 'saveSubmission' - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }], - 'key': 'columns4', - 'type': 'columns', - 'input': false, - 'tableView': false - },], - 'input': false, - 'tableView': false - }], - 'revisions': '', - '_vid': 0, - 'title': 'draft wizard pages', - 'display': 'wizard', - 'name': 'draftWizardPages', - 'path': 'draftwizardpages', + ], + revisions: '', + _vid: 0, + title: 'draft wizard pages', + display: 'wizard', + name: 'draftWizardPages', + path: 'draftwizardpages', }; diff --git a/test/forms/dataGrid-nestedForm.d.ts b/test/forms/dataGrid-nestedForm.d.ts index b7c61ab222..087bf18d36 100644 --- a/test/forms/dataGrid-nestedForm.d.ts +++ b/test/forms/dataGrid-nestedForm.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -10,80 +11,88 @@ declare namespace _default { initEmpty: boolean; tableView: boolean; defaultValue: { - textField: string; + textField: string; }[]; key: string; type: string; input: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - form?: undefined; - } | { - label: string; - tableView: boolean; - form: { + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + form?: undefined; + } + | { + label: string; + tableView: boolean; + form: { type: string; - components: ({ - label: string; - tableView: boolean; - validate: { + components: ( + | { + label: string; + tableView: boolean; + validate: { required: boolean; - }; - key: string; - type: string; - input: boolean; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - disableOnInvalid?: undefined; - } | { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - validate: { + }; + key: string; + type: string; + input: boolean; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + disableOnInvalid?: undefined; + } + | { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + validate: { required: boolean; - }; - key: string; - type: string; - input: boolean; - disableOnInvalid?: undefined; - } | { - type: string; - label: string; - key: string; - disableOnInvalid: boolean; - input: boolean; - tableView: boolean; - validate?: undefined; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - })[]; + }; + key: string; + type: string; + input: boolean; + disableOnInvalid?: undefined; + } + | { + type: string; + label: string; + key: string; + disableOnInvalid: boolean; + input: boolean; + tableView: boolean; + validate?: undefined; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + } + )[]; revisions: string; _vid: number; title: string; display: string; name: string; path: string; - }; - key: string; - type: string; - input: boolean; - })[]; + }; + key: string; + type: string; + input: boolean; + } + )[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -98,12 +107,13 @@ declare namespace _default { initEmpty?: undefined; defaultValue?: undefined; components?: undefined; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/dataGrid-nestedForm.js b/test/forms/dataGrid-nestedForm.js index ce1458f351..de46ac9a99 100644 --- a/test/forms/dataGrid-nestedForm.js +++ b/test/forms/dataGrid-nestedForm.js @@ -12,8 +12,8 @@ export default { tableView: true, defaultValue: [ { - textField: '' - } + textField: '', + }, ], key: 'dataGrid', type: 'datagrid', @@ -24,7 +24,7 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true + input: true, }, { label: 'Form', @@ -36,11 +36,11 @@ export default { label: 'Child Text', tableView: true, validate: { - required: true + required: true, }, key: 'childText', type: 'textfield', - input: true + input: true, }, { label: 'Child Number', @@ -51,11 +51,11 @@ export default { requireDecimal: false, inputFormat: 'plain', validate: { - required: true + required: true, }, key: 'childNumber', type: 'number', - input: true + input: true, }, { type: 'button', @@ -63,21 +63,21 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], revisions: '', _vid: 0, title: 'FJS-1426 Child', display: 'form', name: 'fjs1426Child', - path: 'fjs1426child' + path: 'fjs1426child', }, key: 'form1', type: 'form', - input: true - } - ] + input: true, + }, + ], }, { type: 'button', @@ -85,13 +85,13 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], revisions: '', _vid: 0, title: 'FJS-1426 Parent', display: 'form', name: 'fjs1426Parent', - path: 'fjs1426parent' + path: 'fjs1426parent', }; diff --git a/test/forms/dataGridContainerConditionals.js b/test/forms/dataGridContainerConditionals.js index 7defc9eb3a..990d027a38 100644 --- a/test/forms/dataGridContainerConditionals.js +++ b/test/forms/dataGridContainerConditionals.js @@ -30,20 +30,20 @@ export default { { label: 'Yes', value: 'yes', - shortcut: '' + shortcut: '', }, { label: 'No', value: 'no', - shortcut: '' - } + shortcut: '', + }, ], validate: { - required: true + required: true, }, key: 'radio1', type: 'radio', - input: true + input: true, }, { label: 'Radio', @@ -54,39 +54,39 @@ export default { { label: 'one', value: 'one', - shortcut: '' + shortcut: '', }, { label: 'two', value: 'two', - shortcut: '' + shortcut: '', }, { label: 'three', value: 'three', - shortcut: '' + shortcut: '', }, { label: 'four', value: 'four', - shortcut: '' - } + shortcut: '', + }, ], validate: { - required: true + required: true, }, key: 'radio2', conditional: { show: true, when: 'dataGrid.container.radio1', - eq: 'yes' + eq: 'yes', }, type: 'radio', - input: true - } - ] - } - ] + input: true, + }, + ], + }, + ], }, { type: 'button', @@ -94,8 +94,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FJs', display: 'form', diff --git a/test/forms/dataGridOnBlurValidation.d.ts b/test/forms/dataGridOnBlurValidation.d.ts index 861cc3dc3f..cd4ffc979b 100644 --- a/test/forms/dataGridOnBlurValidation.d.ts +++ b/test/forms/dataGridOnBlurValidation.d.ts @@ -1,9 +1,10 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -16,18 +17,19 @@ declare namespace _default { type: string; input: boolean; components: { - label: string; - tableView: boolean; - validateOn: string; - validate: { - minLength: number; - }; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + validateOn: string; + validate: { + minLength: number; + }; + key: string; + type: string; + input: boolean; }[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -41,20 +43,21 @@ declare namespace _default { enableRowGroups?: undefined; defaultValue?: undefined; components?: undefined; - })[]; - const controller: string; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: never[]; - const settings: {}; - const properties: {}; - const name: string; - const path: string; + } + )[]; + const controller: string; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: never[]; + const settings: {}; + const properties: {}; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/dataGridOnBlurValidation.js b/test/forms/dataGridOnBlurValidation.js index bf3f7e1938..4306b0f125 100644 --- a/test/forms/dataGridOnBlurValidation.js +++ b/test/forms/dataGridOnBlurValidation.js @@ -1,74 +1,58 @@ export default { - '_id': '5ed62e449173583f4c5e9962', - 'type': 'form', - 'tags': [ - - ], - 'owner': '5e05a6b7549cdc2ece30c6b0', - 'components': [ + _id: '5ed62e449173583f4c5e9962', + type: 'form', + tags: [], + owner: '5e05a6b7549cdc2ece30c6b0', + components: [ { - 'label': 'Data Grid', - 'reorder': false, - 'addAnotherPosition': 'bottom', - 'defaultOpen': false, - 'layoutFixed': false, - 'enableRowGroups': false, - 'tableView': false, - 'defaultValue': [ - { - - } - ], - 'key': 'dataGrid', - 'type': 'datagrid', - 'input': true, - 'components': [ + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + tableView: false, + defaultValue: [{}], + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ { - 'label': 'Text Field', - 'tableView': true, - 'validateOn': 'blur', - 'validate': { - 'minLength': 5 + label: 'Text Field', + tableView: true, + validateOn: 'blur', + validate: { + minLength: 5, }, - 'key': 'textField', - 'type': 'textfield', - 'input': true - } - ] + key: 'textField', + type: 'textfield', + input: true, + }, + ], }, { - 'type': 'button', - 'label': 'Submit', - 'key': 'submit', - 'disableOnInvalid': true, - 'input': true, - 'tableView': false - } + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, ], - 'controller': '', - 'revisions': '', - '_vid': 0, - 'title': 'ValidateOnBlur', - 'display': 'form', - 'access': [ + controller: '', + revisions: '', + _vid: 0, + title: 'ValidateOnBlur', + display: 'form', + access: [ { - 'roles': [ - '5e96e79ee1c3ad3178454100', - '5e96e79ee1c3ad3178454101', - '5e96e79ee1c3ad3178454102' - ], - 'type': 'read_all' - } - ], - 'submissionAccess': [ - + roles: ['5e96e79ee1c3ad3178454100', '5e96e79ee1c3ad3178454101', '5e96e79ee1c3ad3178454102'], + type: 'read_all', + }, ], - 'settings': { - - }, - 'properties': { - - }, - 'name': 'validateOnBlur', - 'path': 'validateonblur' + submissionAccess: [], + settings: {}, + properties: {}, + name: 'validateOnBlur', + path: 'validateonblur', }; diff --git a/test/forms/dataGridWithConditionalColumn.d.ts b/test/forms/dataGridWithConditionalColumn.d.ts index 576563ca27..4ea4faf335 100644 --- a/test/forms/dataGridWithConditionalColumn.d.ts +++ b/test/forms/dataGridWithConditionalColumn.d.ts @@ -1,9 +1,10 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { label: string; labelPosition: string; placeholder: string; @@ -12,7 +13,7 @@ declare namespace _default { prefix: string; suffix: string; widget: { - type: string; + type: string; }; inputMask: string; allowMultipleMasks: boolean; @@ -44,17 +45,17 @@ declare namespace _default { allowCalculateOverride: boolean; validateOn: string; validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; unique: boolean; errorLabel: string; @@ -62,21 +63,21 @@ declare namespace _default { tags: never[]; properties: {}; conditional: { - show: null; - when: null; - eq: string; - json: string; + show: null; + when: null; + eq: string; + json: string; }; customConditional: string; logic: never[]; attributes: {}; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; input: boolean; @@ -103,7 +104,8 @@ declare namespace _default { leftIcon?: undefined; rightIcon?: undefined; dataGridLabel?: undefined; - } | { + } + | { label: string; labelPosition: string; description: string; @@ -138,17 +140,17 @@ declare namespace _default { allowCalculateOverride: boolean; validateOn: string; validate: { - required: boolean; - minLength: string; - maxLength: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - pattern?: undefined; + required: boolean; + minLength: string; + maxLength: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + pattern?: undefined; }; unique: boolean; errorLabel: string; @@ -156,21 +158,21 @@ declare namespace _default { tags: never[]; properties: {}; conditional: { - show: null; - when: null; - eq: string; - json: string; + show: null; + when: null; + eq: string; + json: string; }; customConditional: string; logic: never[]; attributes: {}; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; input: boolean; @@ -184,44 +186,45 @@ declare namespace _default { showWordCount: boolean; allowMultipleMasks: boolean; tree: boolean; - components: ({ - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { + components: ( + | { + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - }; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { + }; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { required: boolean; customMessage: string; custom: string; @@ -234,75 +237,76 @@ declare namespace _default { unique: boolean; step: string; integer: string; - }; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { + }; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { show: boolean; when: string; eq: string; json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { style: string; page: string; left: string; top: string; width: string; height: string; - }; - type: string; - input: boolean; - unique: boolean; - refreshOn: string; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - id: string; - defaultValue: null; - } | { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { + }; + type: string; + input: boolean; + unique: boolean; + refreshOn: string; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + id: string; + defaultValue: null; + } + | { + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - }; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { + }; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { required: boolean; customMessage: string; custom: string; @@ -315,38 +319,39 @@ declare namespace _default { unique: boolean; step: string; integer: string; - }; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { + }; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { show: null; when: null; eq: string; json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { style: string; page: string; left: string; top: string; width: string; height: string; - }; - type: string; - input: boolean; - unique: boolean; - refreshOn: string; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - id: string; - defaultValue: null; - })[]; + }; + type: string; + input: boolean; + unique: boolean; + refreshOn: string; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + id: string; + defaultValue: null; + } + )[]; id: string; inputMask?: undefined; autocomplete?: undefined; @@ -363,7 +368,8 @@ declare namespace _default { leftIcon?: undefined; rightIcon?: undefined; dataGridLabel?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -401,36 +407,36 @@ declare namespace _default { calculateValue: string; calculateServer: boolean; widget: { - type: string; + type: string; }; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - pattern?: undefined; - customMessage?: undefined; - json?: undefined; - minLength?: undefined; - maxLength?: undefined; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + pattern?: undefined; + customMessage?: undefined; + json?: undefined; + minLength?: undefined; + maxLength?: undefined; }; conditional: { - show: null; - when: null; - eq: string; - json?: undefined; + show: null; + when: null; + eq: string; + json?: undefined; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -462,11 +468,12 @@ declare namespace _default { initEmpty?: undefined; tree?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/dataGridWithConditionalColumn.js b/test/forms/dataGridWithConditionalColumn.js index 10d3005d14..76d0abf3fc 100644 --- a/test/forms/dataGridWithConditionalColumn.js +++ b/test/forms/dataGridWithConditionalColumn.js @@ -1,409 +1,416 @@ export default { - '_id': '5fc8994c31aa8d1afd551812', - 'type': 'form', - 'tags': [], - 'owner': '5e4aa9cf4037892ed27d5550', - 'components': [{ - 'label': 'Text Field', - 'labelPosition': 'top', - 'placeholder': '', - 'description': '', - 'tooltip': '', - 'prefix': '', - 'suffix': '', - 'widget': { - 'type': 'input' - }, - 'inputMask': '', - 'allowMultipleMasks': false, - 'customClass': '', - 'tabindex': '', - 'autocomplete': '', - 'hidden': false, - 'hideLabel': false, - 'showWordCount': false, - 'showCharCount': false, - 'mask': false, - 'autofocus': false, - 'spellcheck': true, - 'disabled': false, - 'tableView': true, - 'modalEdit': false, - 'multiple': false, - 'persistent': true, - 'inputFormat': 'plain', - 'protected': false, - 'dbIndex': false, - 'case': '', - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'allowCalculateOverride': false, - 'validateOn': 'change', - 'validate': { - 'required': false, - 'pattern': '', - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'minLength': '', - 'maxLength': '', - 'strictDateValidation': false, - 'multiple': false, - 'unique': false - }, - 'unique': false, - 'errorLabel': '', - 'key': 'textField', - 'tags': [], - 'properties': {}, - 'conditional': { - 'show': null, - 'when': null, - 'eq': '', - 'json': '' - }, - 'customConditional': '', - 'logic': [], - 'attributes': {}, - 'overlay': { - 'style': '', - 'page': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' - }, - 'type': 'textfield', - 'input': true, - 'refreshOn': '', - 'inputType': 'text', - 'id': 'ellcd4f000000000', - 'defaultValue': null - }, { - 'label': 'Data Grid', - 'labelPosition': 'top', - 'description': '', - 'tooltip': '', - 'disableAddingRemovingRows': false, - 'conditionalAddButton': '', - 'reorder': false, - 'addAnother': '', - 'addAnotherPosition': 'bottom', - 'defaultOpen': false, - 'layoutFixed': false, - 'enableRowGroups': false, - 'initEmpty': false, - 'customClass': '', - 'tabindex': '', - 'hidden': false, - 'hideLabel': false, - 'autofocus': false, - 'disabled': false, - 'tableView': false, - 'modalEdit': false, - 'defaultValue': [{}], - 'persistent': true, - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'allowCalculateOverride': false, - 'validateOn': 'change', - 'validate': { - 'required': false, - 'minLength': '', - 'maxLength': '', - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'strictDateValidation': false, - 'multiple': false, - 'unique': false - }, - 'unique': false, - 'errorLabel': '', - 'key': 'dataGrid', - 'tags': [], - 'properties': {}, - 'conditional': { - 'show': null, - 'when': null, - 'eq': '', - 'json': '' - }, - 'customConditional': '', - 'logic': [], - 'attributes': {}, - 'overlay': { - 'style': '', - 'page': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' - }, - 'type': 'datagrid', - 'input': true, - 'placeholder': '', - 'prefix': '', - 'suffix': '', - 'multiple': false, - 'refreshOn': '', - 'widget': null, - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'tree': true, - 'components': [{ - 'label': 'Number Cond', - 'labelPosition': 'top', - 'placeholder': '', - 'description': '', - 'tooltip': '', - 'prefix': '', - 'suffix': '', - 'widget': { - 'type': 'input' - }, - 'customClass': '', - 'tabindex': '', - 'autocomplete': '', - 'hidden': false, - 'hideLabel': false, - 'mask': false, - 'autofocus': false, - 'spellcheck': true, - 'disabled': false, - 'tableView': false, - 'modalEdit': false, - 'multiple': false, - 'persistent': true, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'allowCalculateOverride': false, - 'validateOn': 'change', - 'validate': { - 'required': false, - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'min': '', - 'max': '', - 'strictDateValidation': false, - 'multiple': false, - 'unique': false, - 'step': 'any', - 'integer': '' + _id: '5fc8994c31aa8d1afd551812', + type: 'form', + tags: [], + owner: '5e4aa9cf4037892ed27d5550', + components: [ + { + label: 'Text Field', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', }, - 'errorLabel': '', - 'key': 'numberCond', - 'tags': [], - 'properties': {}, - 'conditional': { - 'show': true, - 'when': 'textField', - 'eq': 'show', - 'json': '' + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, }, - 'customConditional': '', - 'logic': [], - 'attributes': {}, - 'overlay': { - 'style': '', - 'page': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' + unique: false, + errorLabel: '', + key: 'textField', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', }, - 'type': 'number', - 'input': true, - 'unique': false, - 'refreshOn': '', - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'id': 'epoubm80', - 'defaultValue': null - }, { - 'label': 'Number', - 'labelPosition': 'top', - 'placeholder': '', - 'description': '', - 'tooltip': '', - 'prefix': '', - 'suffix': '', - 'widget': { - 'type': 'input' + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - 'customClass': '', - 'tabindex': '', - 'autocomplete': '', - 'hidden': false, - 'hideLabel': false, - 'mask': false, - 'autofocus': false, - 'spellcheck': true, - 'disabled': false, - 'tableView': false, - 'modalEdit': false, - 'multiple': false, - 'persistent': true, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'allowCalculateOverride': false, - 'validateOn': 'change', - 'validate': { - 'required': false, - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'min': '', - 'max': '', - 'strictDateValidation': false, - 'multiple': false, - 'unique': false, - 'step': 'any', - 'integer': '' + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'ellcd4f000000000', + defaultValue: null, + }, + { + label: 'Data Grid', + labelPosition: 'top', + description: '', + tooltip: '', + disableAddingRemovingRows: false, + conditionalAddButton: '', + reorder: false, + addAnother: '', + addAnotherPosition: 'bottom', + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + defaultValue: [{}], + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + minLength: '', + maxLength: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + strictDateValidation: false, + multiple: false, + unique: false, }, - 'errorLabel': '', - 'key': 'number', - 'tags': [], - 'properties': {}, - 'conditional': { - 'show': null, - 'when': null, - 'eq': '', - 'json': '' + unique: false, + errorLabel: '', + key: 'dataGrid', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', }, - 'customConditional': '', - 'logic': [], - 'attributes': {}, - 'overlay': { - 'style': '', - 'page': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - 'type': 'number', - 'input': true, - 'unique': false, - 'refreshOn': '', - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'id': 'eq8br4m00', - 'defaultValue': null - }], - 'id': 'ee1lkow' - }, { - 'type': 'button', - 'label': 'Submit', - 'key': 'submit', - 'size': 'md', - 'block': false, - 'action': 'submit', - 'disableOnInvalid': true, - 'theme': 'primary', - 'input': true, - 'placeholder': '', - 'prefix': '', - 'customClass': '', - 'suffix': '', - 'multiple': false, - 'defaultValue': null, - 'protected': false, - 'unique': false, - 'persistent': false, - 'hidden': false, - 'clearOnHide': true, - 'refreshOn': '', - 'redrawOn': '', - 'tableView': false, - 'modalEdit': false, - 'labelPosition': 'top', - 'description': '', - 'errorLabel': '', - 'tooltip': '', - 'hideLabel': false, - 'tabindex': '', - 'disabled': false, - 'autofocus': false, - 'dbIndex': false, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'widget': { - 'type': 'input' - }, - 'attributes': {}, - 'validateOn': 'change', - 'validate': { - 'required': false, - 'custom': '', - 'customPrivate': false, - 'strictDateValidation': false, - 'multiple': false, - 'unique': false + type: 'datagrid', + input: true, + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + refreshOn: '', + widget: null, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: true, + components: [ + { + label: 'Number Cond', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + min: '', + max: '', + strictDateValidation: false, + multiple: false, + unique: false, + step: 'any', + integer: '', + }, + errorLabel: '', + key: 'numberCond', + tags: [], + properties: {}, + conditional: { + show: true, + when: 'textField', + eq: 'show', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'number', + input: true, + unique: false, + refreshOn: '', + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: 'epoubm80', + defaultValue: null, + }, + { + label: 'Number', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + min: '', + max: '', + strictDateValidation: false, + multiple: false, + unique: false, + step: 'any', + integer: '', + }, + errorLabel: '', + key: 'number', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'number', + input: true, + unique: false, + refreshOn: '', + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: 'eq8br4m00', + defaultValue: null, + }, + ], + id: 'ee1lkow', }, - 'conditional': { - 'show': null, - 'when': null, - 'eq': '' - }, - 'overlay': { - 'style': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' + { + type: 'button', + label: 'Submit', + key: 'submit', + size: 'md', + block: false, + action: 'submit', + disableOnInvalid: true, + theme: 'primary', + input: true, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + refreshOn: '', + redrawOn: '', + tableView: false, + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: { + type: 'input', + }, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + }, + conditional: { + show: null, + when: null, + eq: '', + }, + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', + }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + leftIcon: '', + rightIcon: '', + dataGridLabel: true, + id: 'egxeqz', }, - 'allowCalculateOverride': false, - 'encrypted': false, - 'showCharCount': false, - 'showWordCount': false, - 'properties': {}, - 'allowMultipleMasks': false, - 'leftIcon': '', - 'rightIcon': '', - 'dataGridLabel': true, - 'id': 'egxeqz' - }], - 'title': 'testDataGrid', - 'display': 'form', - 'name': 'testDataGrid', - 'path': 'testdatagrid', - 'machineName': 'hznolkjxuncjxep:testDataGrid' -} + ], + title: 'testDataGrid', + display: 'form', + name: 'testDataGrid', + path: 'testdatagrid', + machineName: 'hznolkjxuncjxep:testDataGrid', +}; diff --git a/test/forms/dataGridWithInitEmpty.d.ts b/test/forms/dataGridWithInitEmpty.d.ts index d70ccfe397..f7bc69251a 100644 --- a/test/forms/dataGridWithInitEmpty.d.ts +++ b/test/forms/dataGridWithInitEmpty.d.ts @@ -1,13 +1,14 @@ declare namespace _default { - export { form }; - export { submission1 }; - export { submission2 }; - export { submission3 }; + export { form }; + export { submission1 }; + export { submission2 }; + export { submission3 }; } export default _default; declare namespace form { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -17,28 +18,29 @@ declare namespace form { initEmpty: boolean; tableView: boolean; defaultValue: { - textField: string; + textField: string; }[]; key: string; type: string; input: boolean; components: { - collapsible: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { + label: string; + tableView: boolean; key: string; type: string; - label: string; input: boolean; - tableView: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; + }[]; }[]; disableOnInvalid?: undefined; - } | { + } + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -48,39 +50,43 @@ declare namespace form { initEmpty: boolean; tableView: boolean; defaultValue: { - textArea: string; - number: number; + textArea: string; + number: number; }[]; key: string; type: string; input: boolean; - components: ({ - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; - autoExpand?: undefined; - } | { - label: string; - autoExpand: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - })[]; + components: ( + | { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; + autoExpand?: undefined; + } + | { + label: string; + autoExpand: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + } + )[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -95,49 +101,50 @@ declare namespace form { initEmpty?: undefined; defaultValue?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } declare namespace submission1 { - namespace data { - const dataGrid: never[]; - const dataGrid1: never[]; - const submit: boolean; - } + namespace data { + const dataGrid: never[]; + const dataGrid1: never[]; + const submit: boolean; + } } declare namespace submission2 { - export namespace data_1 { - const dataGrid_1: { - textField: string; - }[]; - export { dataGrid_1 as dataGrid }; - const dataGrid1_1: { - textArea: string; - number: number; - }[]; - export { dataGrid1_1 as dataGrid1 }; - const submit_1: boolean; - export { submit_1 as submit }; - } - export { data_1 as data }; + export namespace data_1 { + const dataGrid_1: { + textField: string; + }[]; + export { dataGrid_1 as dataGrid }; + const dataGrid1_1: { + textArea: string; + number: number; + }[]; + export { dataGrid1_1 as dataGrid1 }; + const submit_1: boolean; + export { submit_1 as submit }; + } + export { data_1 as data }; } declare namespace submission3 { - export namespace data_2 { - const dataGrid_2: { - textField: string; - }[]; - export { dataGrid_2 as dataGrid }; - const dataGrid1_2: { - textArea: string; - number: number; - }[]; - export { dataGrid1_2 as dataGrid1 }; - const submit_2: boolean; - export { submit_2 as submit }; - } - export { data_2 as data }; + export namespace data_2 { + const dataGrid_2: { + textField: string; + }[]; + export { dataGrid_2 as dataGrid }; + const dataGrid1_2: { + textArea: string; + number: number; + }[]; + export { dataGrid1_2 as dataGrid1 }; + const submit_2: boolean; + export { submit_2 as submit }; + } + export { data_2 as data }; } diff --git a/test/forms/dataGridWithInitEmpty.js b/test/forms/dataGridWithInitEmpty.js index d717778361..346e4cdd42 100644 --- a/test/forms/dataGridWithInitEmpty.js +++ b/test/forms/dataGridWithInitEmpty.js @@ -1,133 +1,156 @@ const form = { - 'type': 'form', - 'components': [{ - 'label': 'Data Grid', - 'reorder': false, - 'addAnotherPosition': 'bottom', - 'defaultOpen': false, - 'layoutFixed': false, - 'enableRowGroups': false, - 'initEmpty': true, - 'tableView': false, - 'defaultValue': [{ - 'textField': '' - }], - 'key': 'dataGrid', - 'type': 'datagrid', - 'input': true, - 'components': [{ - 'collapsible': false, - 'key': 'panel', - 'type': 'panel', - 'label': 'Panel', - 'input': false, - 'tableView': false, - 'components': [{ - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField', - 'type': 'textfield', - 'input': true - }] - }] - }, { - 'label': 'Data Grid', - 'reorder': false, - 'addAnotherPosition': 'bottom', - 'defaultOpen': false, - 'layoutFixed': false, - 'enableRowGroups': false, - 'initEmpty': true, - 'tableView': false, - 'defaultValue': [{ - 'textArea': '', - 'number': 1 - }, { - 'textArea': '', - 'number': 2 - }, { - 'textArea': '', - 'number': 3 - }], - 'key': 'dataGrid1', - 'type': 'datagrid', - 'input': true, - 'components': [{ - 'label': 'Number', - 'mask': false, - 'spellcheck': true, - 'tableView': false, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'key': 'number', - 'type': 'number', - 'input': true - }, { - 'label': 'Text Area', - 'autoExpand': false, - 'tableView': true, - 'key': 'textArea', - 'type': 'textarea', - 'input': true - }] - }, { - 'type': 'button', - 'label': 'Submit', - 'key': 'submit', - 'disableOnInvalid': true, - 'input': true, - 'tableView': false - }], - 'title': '3242', - 'display': 'form', - 'name': '3242', - 'path': '3242', - 'machineName': 'lkjqkdpewpfvste:3242' + type: 'form', + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + initEmpty: true, + tableView: false, + defaultValue: [ + { + textField: '', + }, + ], + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ + { + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + ], + }, + ], + }, + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + initEmpty: true, + tableView: false, + defaultValue: [ + { + textArea: '', + number: 1, + }, + { + textArea: '', + number: 2, + }, + { + textArea: '', + number: 3, + }, + ], + key: 'dataGrid1', + type: 'datagrid', + input: true, + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + { + label: 'Text Area', + autoExpand: false, + tableView: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + ], + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], + title: '3242', + display: 'form', + name: '3242', + path: '3242', + machineName: 'lkjqkdpewpfvste:3242', }; const submission1 = { data: { dataGrid: [], dataGrid1: [], - submit: true - } + submit: true, + }, }; const submission2 = { data: { - dataGrid: [{ - textField: '' - }], - dataGrid1: [{ - textArea: '', - number: 1 - }], - submit: true - } + dataGrid: [ + { + textField: '', + }, + ], + dataGrid1: [ + { + textArea: '', + number: 1, + }, + ], + submit: true, + }, }; const submission3 = { - 'data': { - 'dataGrid': [{ - 'textField': 'test1' + data: { + dataGrid: [ + { + textField: 'test1', }, { - 'textField': 'test2' - } + textField: 'test2', + }, ], - 'dataGrid1': [{ - 'textArea': 'test3', - 'number': 111 + dataGrid1: [ + { + textArea: 'test3', + number: 111, }, { - 'textArea': 'test4', - 'number': 222 - } + textArea: 'test4', + number: 222, + }, ], - 'submit': true - } -} + submit: true, + }, +}; export default { form: form, diff --git a/test/forms/datefields.d.ts b/test/forms/datefields.d.ts index fb6eec30c4..4c3da590da 100644 --- a/test/forms/datefields.d.ts +++ b/test/forms/datefields.d.ts @@ -1,190 +1,193 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - label: string; - labelPosition: string; + const title: string; + namespace form { + const components: ( + | { + label: string; + labelPosition: string; + displayInTimezone: string; + useLocaleSettings: boolean; + allowInput: boolean; + format: string; + placeholder: string; + description: string; + tooltip: string; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + autofocus: boolean; + disabled: boolean; + alwaysEnabled: boolean; + tableView: boolean; + enableDate: boolean; + datePicker: { + minDate: null; + maxDate: null; + showWeeks: boolean; + startingDay: number; + initDate: string; + minMode: string; + maxMode: string; + yearRows: number; + yearColumns: number; + }; + enableTime: boolean; + timePicker: { + showMeridian: boolean; + hourStep: number; + minuteStep: number; + readonlyInput: boolean; + mousewheel: boolean; + arrowkeys: boolean; + }; + multiple: boolean; + defaultValue: string; + persistent: boolean; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + allowCalculateOverride: boolean; + validate: { + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + strictDateValidation: boolean; + }; + unique: boolean; + validateOn: string; + errorLabel: string; + key: string; + type: string; + input: boolean; + prefix: string; + suffix: string; + refreshOn: string; + widget: { + type: string; displayInTimezone: string; + language: string; useLocaleSettings: boolean; allowInput: boolean; - format: string; - placeholder: string; - description: string; - tooltip: string; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - autofocus: boolean; - disabled: boolean; - alwaysEnabled: boolean; - tableView: boolean; - enableDate: boolean; - datePicker: { - minDate: null; - maxDate: null; - showWeeks: boolean; - startingDay: number; - initDate: string; - minMode: string; - maxMode: string; - yearRows: number; - yearColumns: number; - }; + mode: string; enableTime: boolean; - timePicker: { - showMeridian: boolean; - hourStep: number; - minuteStep: number; - readonlyInput: boolean; - mousewheel: boolean; - arrowkeys: boolean; - }; - multiple: boolean; + noCalendar: boolean; + format: string; defaultValue: string; - persistent: boolean; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - allowCalculateOverride: boolean; - validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - strictDateValidation: boolean; - }; - unique: boolean; - validateOn: string; - errorLabel: string; - key: string; + hourIncrement: number; + minuteIncrement: number; + time_24hr: boolean; + minDate: null; + maxDate: null; + }; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + timezone: string; + datepickerMode: string; + id: string; + } + | { + label: string; + labelPosition: string; + displayInTimezone: string; + useLocaleSettings: boolean; + allowInput: boolean; + format: string; + placeholder: string; + description: string; + tooltip: string; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + autofocus: boolean; + disabled: boolean; + alwaysEnabled: boolean; + tableView: boolean; + enableDate: boolean; + datePicker: { + minDate: null; + maxDate: null; + showWeeks: boolean; + startingDay: number; + initDate: string; + minMode: string; + maxMode: string; + yearRows: number; + yearColumns: number; + }; + enableTime: boolean; + timePicker: { + showMeridian: boolean; + hourStep: number; + minuteStep: number; + readonlyInput: boolean; + mousewheel: boolean; + arrowkeys: boolean; + }; + multiple: boolean; + defaultValue: string; + persistent: boolean; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + clearOnHide: boolean; + customDefaultValue: string; + validate: { + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + strictDateValidation: boolean; + }; + unique: boolean; + validateOn: string; + errorLabel: string; + key: string; + type: string; + input: boolean; + prefix: string; + suffix: string; + refreshOn: string; + widget: { type: string; - input: boolean; - prefix: string; - suffix: string; - refreshOn: string; - widget: { - type: string; - displayInTimezone: string; - language: string; - useLocaleSettings: boolean; - allowInput: boolean; - mode: string; - enableTime: boolean; - noCalendar: boolean; - format: string; - defaultValue: string; - hourIncrement: number; - minuteIncrement: number; - time_24hr: boolean; - minDate: null; - maxDate: null; - }; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - timezone: string; - datepickerMode: string; - id: string; - } | { - label: string; - labelPosition: string; displayInTimezone: string; + language: string; useLocaleSettings: boolean; allowInput: boolean; - format: string; - placeholder: string; - description: string; - tooltip: string; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - autofocus: boolean; - disabled: boolean; - alwaysEnabled: boolean; - tableView: boolean; - enableDate: boolean; - datePicker: { - minDate: null; - maxDate: null; - showWeeks: boolean; - startingDay: number; - initDate: string; - minMode: string; - maxMode: string; - yearRows: number; - yearColumns: number; - }; + mode: string; enableTime: boolean; - timePicker: { - showMeridian: boolean; - hourStep: number; - minuteStep: number; - readonlyInput: boolean; - mousewheel: boolean; - arrowkeys: boolean; - }; - multiple: boolean; + noCalendar: boolean; + format: string; defaultValue: string; - persistent: boolean; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - clearOnHide: boolean; - customDefaultValue: string; - validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - strictDateValidation: boolean; - }; - unique: boolean; - validateOn: string; - errorLabel: string; - key: string; - type: string; - input: boolean; - prefix: string; - suffix: string; - refreshOn: string; - widget: { - type: string; - displayInTimezone: string; - language: string; - useLocaleSettings: boolean; - allowInput: boolean; - mode: string; - enableTime: boolean; - noCalendar: boolean; - format: string; - defaultValue: string; - hourIncrement: number; - minuteIncrement: number; - time_24hr: boolean; - minDate: null; - maxDate: null; - }; - timezone: string; - datepickerMode: string; - redrawOn?: undefined; - allowCalculateOverride?: undefined; - showCharCount?: undefined; - showWordCount?: undefined; - allowMultipleMasks?: undefined; - id?: undefined; - })[]; - } - const tests: { - 'Test date only fields format yyyy-mm-dd'(form: any, done: any): void; - 'Test date only fields format dd/mm/yyyy'(form: any, done: any): void; - }; + hourIncrement: number; + minuteIncrement: number; + time_24hr: boolean; + minDate: null; + maxDate: null; + }; + timezone: string; + datepickerMode: string; + redrawOn?: undefined; + allowCalculateOverride?: undefined; + showCharCount?: undefined; + showWordCount?: undefined; + allowMultipleMasks?: undefined; + id?: undefined; + } + )[]; + } + const tests: { + 'Test date only fields format yyyy-mm-dd'(form: any, done: any): void; + 'Test date only fields format dd/mm/yyyy'(form: any, done: any): void; + }; } export default _default; diff --git a/test/forms/datefields.js b/test/forms/datefields.js index 0f33361044..e77145560a 100644 --- a/test/forms/datefields.js +++ b/test/forms/datefields.js @@ -5,197 +5,202 @@ export default { form: { components: [ { - 'label': 'Date / Time', - 'labelPosition': 'top', - 'displayInTimezone': 'viewer', - 'useLocaleSettings': false, - 'allowInput': true, - 'format': 'yyyy-MM-dd', - 'placeholder': '', - 'description': '', - 'tooltip': '', - 'customClass': '', - 'tabindex': '', - 'hidden': false, - 'hideLabel': false, - 'autofocus': false, - 'disabled': false, - 'alwaysEnabled': false, - 'tableView': false, - 'enableDate': true, - 'datePicker': { - 'minDate': null, - 'maxDate': null, - 'showWeeks': true, - 'startingDay': 0, - 'initDate': '', - 'minMode': 'day', - 'maxMode': 'year', - 'yearRows': 4, - 'yearColumns': 5 + label: 'Date / Time', + labelPosition: 'top', + displayInTimezone: 'viewer', + useLocaleSettings: false, + allowInput: true, + format: 'yyyy-MM-dd', + placeholder: '', + description: '', + tooltip: '', + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + alwaysEnabled: false, + tableView: false, + enableDate: true, + datePicker: { + minDate: null, + maxDate: null, + showWeeks: true, + startingDay: 0, + initDate: '', + minMode: 'day', + maxMode: 'year', + yearRows: 4, + yearColumns: 5, }, - 'enableTime': false, - 'timePicker': { - 'showMeridian': true, - 'hourStep': 1, - 'minuteStep': 1, - 'readonlyInput': false, - 'mousewheel': true, - 'arrowkeys': true + enableTime: false, + timePicker: { + showMeridian: true, + hourStep: 1, + minuteStep: 1, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, }, - 'multiple': false, - 'defaultValue': '', - 'persistent': true, - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': 'value = moment()', - 'calculateValue': '', - 'allowCalculateOverride': false, - 'validate': { - 'required': false, - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'strictDateValidation': false + multiple: false, + defaultValue: '', + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: 'value = moment()', + calculateValue: '', + allowCalculateOverride: false, + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + strictDateValidation: false, }, - 'unique': false, - 'validateOn': 'change', - 'errorLabel': '', - 'key': 'dateTime', - 'type': 'datetime', - 'input': true, - 'prefix': '', - 'suffix': '', - 'refreshOn': '', - 'widget': { - 'type': 'calendar', - 'displayInTimezone': 'viewer', - 'language': 'en', - 'useLocaleSettings': false, - 'allowInput': true, - 'mode': 'single', - 'enableTime': false, - 'noCalendar': false, - 'format': 'yyyy-MM-dd', - 'defaultValue': '', - 'hourIncrement': 1, - 'minuteIncrement': 1, - 'time_24hr': false, - 'minDate': null, - 'maxDate': null + unique: false, + validateOn: 'change', + errorLabel: '', + key: 'dateTime', + type: 'datetime', + input: true, + prefix: '', + suffix: "", + refreshOn: '', + widget: { + type: 'calendar', + displayInTimezone: 'viewer', + language: 'en', + useLocaleSettings: false, + allowInput: true, + mode: 'single', + enableTime: false, + noCalendar: false, + format: 'yyyy-MM-dd', + defaultValue: '', + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + maxDate: null, }, - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'timezone': '', - 'datepickerMode': 'day', - 'id': 'eqi7zv7' + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + timezone: '', + datepickerMode: 'day', + id: 'eqi7zv7', }, { - 'label': 'DD/MM/YYYY', - 'labelPosition': 'top', - 'displayInTimezone': 'viewer', - 'useLocaleSettings': false, - 'allowInput': true, - 'format': 'dd/MM/yyyy', - 'placeholder': '', - 'description': '', - 'tooltip': '', - 'customClass': '', - 'tabindex': '', - 'hidden': false, - 'hideLabel': false, - 'autofocus': false, - 'disabled': false, - 'alwaysEnabled': false, - 'tableView': false, - 'enableDate': true, - 'datePicker': { - 'minDate': null, - 'maxDate': null, - 'showWeeks': true, - 'startingDay': 0, - 'initDate': '', - 'minMode': 'day', - 'maxMode': 'year', - 'yearRows': 4, - 'yearColumns': 5 + label: 'DD/MM/YYYY', + labelPosition: 'top', + displayInTimezone: 'viewer', + useLocaleSettings: false, + allowInput: true, + format: 'dd/MM/yyyy', + placeholder: '', + description: '', + tooltip: '', + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + alwaysEnabled: false, + tableView: false, + enableDate: true, + datePicker: { + minDate: null, + maxDate: null, + showWeeks: true, + startingDay: 0, + initDate: '', + minMode: 'day', + maxMode: 'year', + yearRows: 4, + yearColumns: 5, }, - 'enableTime': false, - 'timePicker': { - 'showMeridian': true, - 'hourStep': 1, - 'minuteStep': 1, - 'readonlyInput': false, - 'mousewheel': true, - 'arrowkeys': true + enableTime: false, + timePicker: { + showMeridian: true, + hourStep: 1, + minuteStep: 1, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, }, - 'multiple': false, - 'defaultValue': '', - 'persistent': true, - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'clearOnHide': true, - 'customDefaultValue': 'value = moment();', - 'validate': { - 'required': false, - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'strictDateValidation': false + multiple: false, + defaultValue: '', + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + clearOnHide: true, + customDefaultValue: 'value = moment();', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + strictDateValidation: false, }, - 'unique': false, - 'validateOn': 'change', - 'errorLabel': '', - 'key': 'ddMmYyyy', - 'type': 'datetime', - 'input': true, - 'prefix': '', - 'suffix': '', - 'refreshOn': '', - 'widget': { - 'type': 'calendar', - 'displayInTimezone': 'viewer', - 'language': 'en', - 'useLocaleSettings': false, - 'allowInput': true, - 'mode': 'single', - 'enableTime': false, - 'noCalendar': false, - 'format': 'dd/MM/yyyy', - 'defaultValue': '', - 'hourIncrement': 1, - 'minuteIncrement': 1, - 'time_24hr': false, - 'minDate': null, - 'maxDate': null + unique: false, + validateOn: 'change', + errorLabel: '', + key: 'ddMmYyyy', + type: 'datetime', + input: true, + prefix: '', + suffix: "", + refreshOn: '', + widget: { + type: 'calendar', + displayInTimezone: 'viewer', + language: 'en', + useLocaleSettings: false, + allowInput: true, + mode: 'single', + enableTime: false, + noCalendar: false, + format: 'dd/MM/yyyy', + defaultValue: '', + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + maxDate: null, }, - 'timezone': '', - 'datepickerMode': 'day', - } - - ] + timezone: '', + datepickerMode: 'day', + }, + ], }, tests: { 'Test date only fields format yyyy-mm-dd'(form, done) { form.getComponent('dateTime', (component) => { const m = new Date(); - assert.equal(component.refs.input[0].widget.calendar.altInput.value, `${m.getFullYear()}-${(m.getMonth() + 1).toString().padStart(2, '0')}-${m.getDate().toString().padStart(2, '0')}`); + assert.equal( + component.refs.input[0].widget.calendar.altInput.value, + `${m.getFullYear()}-${(m.getMonth() + 1).toString().padStart(2, '0')}-${m.getDate().toString().padStart(2, '0')}`, + ); done(); }); }, 'Test date only fields format dd/mm/yyyy'(form, done) { form.getComponent('ddMmYyyy', (component) => { const m = new Date(); - assert.equal(component.refs.input[0].widget.calendar.altInput.value, `${m.getDate().toString().padStart(2, '0')}/${(m.getMonth() + 1).toString().padStart(2, '0')}/${m.getFullYear()}`); + assert.equal( + component.refs.input[0].widget.calendar.altInput.value, + `${m.getDate().toString().padStart(2, '0')}/${(m.getMonth() + 1).toString().padStart(2, '0')}/${m.getFullYear()}`, + ); done(); }); - } - } + }, + }, }; diff --git a/test/forms/disableSubmitButton.json b/test/forms/disableSubmitButton.json index 76f263a914..bec766c565 100644 --- a/test/forms/disableSubmitButton.json +++ b/test/forms/disableSubmitButton.json @@ -59,4 +59,4 @@ "title": "filesS3", "display": "form", "name": "disableSubmitButton" -} \ No newline at end of file +} diff --git a/test/forms/editGridOpenWhenEmpty.js b/test/forms/editGridOpenWhenEmpty.js index 731e3a5bbb..b985872957 100644 --- a/test/forms/editGridOpenWhenEmpty.js +++ b/test/forms/editGridOpenWhenEmpty.js @@ -1,67 +1,61 @@ export default { - _id: '65b119c4414257179284c2b4', - type: 'form', - tags: [], - owner: '5e05a6b7549cdc2ece30c6b0', - components: [ + _id: '65b119c4414257179284c2b4', + type: 'form', + tags: [], + owner: '5e05a6b7549cdc2ece30c6b0', + components: [ { - label: 'Edit Grid', - openWhenEmpty: true, - tableView: false, - rowDrafts: false, - key: 'editGrid', - type: 'editgrid', - input: true, - components: [ - { - label: 'Text Field', - applyMaskOn: 'change', - tableView: true, - validate: { required: true }, - key: 'textField', - type: 'textfield', - input: true - }, - { - label: 'Text Area', - applyMaskOn: 'change', - autoExpand: false, - tableView: true, - key: 'textArea', - type: 'textarea', - input: true - } - ] + label: 'Edit Grid', + openWhenEmpty: true, + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + input: true, + components: [ + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + validate: { required: true }, + key: 'textField', + type: 'textfield', + input: true, + }, + { + label: 'Text Area', + applyMaskOn: 'change', + autoExpand: false, + tableView: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + ], }, { - type: 'button', - label: 'Submit', - key: 'submit', - input: true, - tableView: false, - showValidations: false, - } - ], - controller: '', - revisions: '', - _vid: 0, - title: 'Edit Grid', - display: 'form', - access: [ - { - roles: [ - '5e96e79ee1c3ad3178454100', - '5e96e79ee1c3ad3178454101', - '5e96e79ee1c3ad3178454102' - ], - type: 'read_all' - } - ], - submissionAccess: [], - settings: {}, - properties: {}, - name: 'editGrid', - path: 'editgrid', + type: 'button', + label: 'Submit', + key: 'submit', + input: true, + tableView: false, + showValidations: false, + }, + ], + controller: '', + revisions: '', + _vid: 0, + title: 'Edit Grid', + display: 'form', + access: [ + { + roles: ['5e96e79ee1c3ad3178454100', '5e96e79ee1c3ad3178454101', '5e96e79ee1c3ad3178454102'], + type: 'read_all', + }, + ], + submissionAccess: [], + settings: {}, + properties: {}, + name: 'editGrid', + path: 'editgrid', }; - - \ No newline at end of file diff --git a/test/forms/emailaction.d.ts b/test/forms/emailaction.d.ts index cb3af33a51..1087916044 100644 --- a/test/forms/emailaction.d.ts +++ b/test/forms/emailaction.d.ts @@ -1,547 +1,577 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - type: string; + const title: string; + namespace form { + const components: ( + | { + type: string; + input: boolean; + key: string; + label?: undefined; + tree?: undefined; + legend?: undefined; + components?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + label: string; + key: string; + tree?: undefined; + legend?: undefined; + components?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + tree: boolean; + legend: string; + components: { input: boolean; - key: string; - label?: undefined; - tree?: undefined; - legend?: undefined; - components?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { type: string; - input: boolean; - label: string; key: string; - tree?: undefined; - legend?: undefined; - components?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { - type: string; - input: boolean; - tree: boolean; - legend: string; - components: { - input: boolean; - type: string; - key: string; - components: ({ - type: string; - input: boolean; - label: string; - key: string; - placeholder: string; - template: string; - defaultValue: string; - dataSrc: string; - data: { - json: string; - }; - valueProperty: string; - multiple: boolean; - validate: { - required: boolean; - }; - inputType?: undefined; - rows?: undefined; - } | { - label: string; - key: string; - inputType: string; - defaultValue: string; - input: boolean; - placeholder: string; - type: string; - multiple: boolean; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - validate?: undefined; - rows?: undefined; - } | { - label: string; - key: string; - inputType: string; - defaultValue: string; - input: boolean; - placeholder: string; - type: string; - multiple: boolean; - validate: { - required: boolean; - }; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - rows?: undefined; - } | { - label: string; - key: string; - type: string; - input: boolean; - placeholder?: undefined; - template?: undefined; - defaultValue?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - multiple?: undefined; - validate?: undefined; - inputType?: undefined; - rows?: undefined; - } | { - label: string; - key: string; - inputType: string; - defaultValue: string; - placeholder: string; - type: string; - multiple: boolean; - input?: undefined; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - validate?: undefined; - rows?: undefined; - } | { - label: string; - key: string; - type: string; - defaultValue: string; - multiple: boolean; - rows: number; - placeholder: string; - input: boolean; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - validate?: undefined; - inputType?: undefined; - } | { - type: string; - input: boolean; - key: string; - label?: undefined; - placeholder?: undefined; - template?: undefined; - defaultValue?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - multiple?: undefined; - validate?: undefined; - inputType?: undefined; - rows?: undefined; - } | { - type: string; - input: boolean; - key: string; - label: string; - defaultValue: string; - customConditional: string; - placeholder?: undefined; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - multiple?: undefined; - validate?: undefined; - inputType?: undefined; - rows?: undefined; - })[]; - }[]; - key?: undefined; - label?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { + components: ( + | { + type: string; + input: boolean; + label: string; + key: string; + placeholder: string; + template: string; + defaultValue: string; + dataSrc: string; + data: { + json: string; + }; + valueProperty: string; + multiple: boolean; + validate: { + required: boolean; + }; + inputType?: undefined; + rows?: undefined; + } + | { + label: string; + key: string; + inputType: string; + defaultValue: string; + input: boolean; + placeholder: string; + type: string; + multiple: boolean; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + validate?: undefined; + rows?: undefined; + } + | { + label: string; + key: string; + inputType: string; + defaultValue: string; + input: boolean; + placeholder: string; + type: string; + multiple: boolean; + validate: { + required: boolean; + }; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + rows?: undefined; + } + | { + label: string; + key: string; + type: string; + input: boolean; + placeholder?: undefined; + template?: undefined; + defaultValue?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + multiple?: undefined; + validate?: undefined; + inputType?: undefined; + rows?: undefined; + } + | { + label: string; + key: string; + inputType: string; + defaultValue: string; + placeholder: string; + type: string; + multiple: boolean; + input?: undefined; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + validate?: undefined; + rows?: undefined; + } + | { + label: string; + key: string; + type: string; + defaultValue: string; + multiple: boolean; + rows: number; + placeholder: string; + input: boolean; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + validate?: undefined; + inputType?: undefined; + } + | { + type: string; + input: boolean; + key: string; + label?: undefined; + placeholder?: undefined; + template?: undefined; + defaultValue?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + multiple?: undefined; + validate?: undefined; + inputType?: undefined; + rows?: undefined; + } + | { + type: string; + input: boolean; + key: string; + label: string; + defaultValue: string; + customConditional: string; + placeholder?: undefined; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + multiple?: undefined; + validate?: undefined; + inputType?: undefined; + rows?: undefined; + } + )[]; + }[]; + key?: undefined; + label?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + tree: boolean; + key: string; + legend: string; + components: { type: string; input: boolean; - tree: boolean; - key: string; - legend: string; - components: { - type: string; - input: boolean; - key: string; - label: string; - placeholder: string; - dataSrc: string; - data: { - json: string; - }; - template: string; - valueProperty: string; - multiple: boolean; - }[]; - label?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { key: string; + label: string; + placeholder: string; + dataSrc: string; + data: { + json: string; + }; + template: string; + valueProperty: string; + multiple: boolean; + }[]; + label?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + key: string; + type: string; + input: boolean; + tree: boolean; + legend: string; + components: { type: string; + key: string; input: boolean; tree: boolean; - legend: string; components: { - type: string; - key: string; - input: boolean; - tree: boolean; - components: { - key: string; - type: string; - input: boolean; - columns: ({ - components: ({ - type: string; - input: boolean; - label: string; + key: string; + type: string; + input: boolean; + columns: ( + | { + components: ( + | { + type: string; + input: boolean; + label: string; + key: string; + placeholder: string; + template: string; + dataSrc: string; + data: { + json: string; + values?: undefined; + url?: undefined; + resource?: undefined; + }; + valueProperty: string; + multiple: boolean; + inputType?: undefined; + } + | { + type: string; + input: boolean; + label: string; + key: string; + placeholder: string; + template: string; + dataSrc: string; + data: { + values: { + value: string; + label: string; + }[]; + json: string; + url: string; + resource: string; + }; + valueProperty: string; + multiple: boolean; + inputType?: undefined; + } + | { + input: boolean; + type: string; + inputType: string; + label: string; + key: string; + placeholder: string; + multiple: boolean; + template?: undefined; + dataSrc?: undefined; + data?: undefined; + valueProperty?: undefined; + } + )[]; + } + | { + components: { + key: string; + type: string; + input: boolean; + components: ( + | { key: string; - placeholder: string; - template: string; - dataSrc: string; - data: { - json: string; - values?: undefined; - url?: undefined; - resource?: undefined; - }; - valueProperty: string; - multiple: boolean; - inputType?: undefined; - } | { type: string; + tag: string; input: boolean; + content: string; + className: string; + label?: undefined; + editorComponents?: undefined; + placeholder?: undefined; + } + | { label: string; - key: string; - placeholder: string; - template: string; - dataSrc: string; - data: { - values: { - value: string; - label: string; - }[]; - json: string; - url: string; - resource: string; - }; - valueProperty: string; - multiple: boolean; - inputType?: undefined; - } | { - input: boolean; - type: string; - inputType: string; - label: string; - key: string; - placeholder: string; - multiple: boolean; - template?: undefined; - dataSrc?: undefined; - data?: undefined; - valueProperty?: undefined; - })[]; - } | { - components: { - key: string; type: string; input: boolean; - components: ({ - key: string; - type: string; - tag: string; - input: boolean; - content: string; - className: string; - label?: undefined; - editorComponents?: undefined; - placeholder?: undefined; - } | { - label: string; - type: string; - input: boolean; - key: string; - editorComponents: ({ - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + key: string; + editorComponents: ( + | { + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; - type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; - size?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - dataGridLabel?: undefined; - } | { + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; + size?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + dataGridLabel?: undefined; + } + | { + type: string; + label: string; + key: string; + size: string; + block: boolean; + action: string; + disableOnInvalid: boolean; + theme: string; + input: boolean; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + refreshOn: string; + redrawOn: string; + tableView: boolean; + modalEdit: boolean; + labelPosition: string; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: { type: string; - label: string; - key: string; - size: string; - block: boolean; - action: string; - disableOnInvalid: boolean; - theme: string; - input: boolean; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; + }; + attributes: {}; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; multiple: boolean; - defaultValue: null; - protected: boolean; unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - refreshOn: string; - redrawOn: string; - tableView: boolean; - modalEdit: boolean; - labelPosition: string; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: { - type: string; - }; - attributes: {}; - validateOn: string; - validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - pattern?: undefined; - customMessage?: undefined; - json?: undefined; - minLength?: undefined; - maxLength?: undefined; - }; - conditional: { - show: null; - when: null; - eq: string; - json?: undefined; - }; - overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; - }; - allowCalculateOverride: boolean; - encrypted: boolean; - showCharCount: boolean; - showWordCount: boolean; - properties: {}; - allowMultipleMasks: boolean; - leftIcon: string; - rightIcon: string; - dataGridLabel: boolean; - id: string; - inputMask?: undefined; - mask?: undefined; - spellcheck?: undefined; - inputFormat?: undefined; - case?: undefined; - calculateServer?: undefined; - tags?: undefined; - logic?: undefined; - inputType?: undefined; - })[]; - placeholder: string; - tag?: undefined; - content?: undefined; - className?: undefined; - })[]; - }[]; - })[]; - }[]; + pattern?: undefined; + customMessage?: undefined; + json?: undefined; + minLength?: undefined; + maxLength?: undefined; + }; + conditional: { + show: null; + when: null; + eq: string; + json?: undefined; + }; + overlay: { + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; + }; + allowCalculateOverride: boolean; + encrypted: boolean; + showCharCount: boolean; + showWordCount: boolean; + properties: {}; + allowMultipleMasks: boolean; + leftIcon: string; + rightIcon: string; + dataGridLabel: boolean; + id: string; + inputMask?: undefined; + mask?: undefined; + spellcheck?: undefined; + inputFormat?: undefined; + case?: undefined; + calculateServer?: undefined; + tags?: undefined; + logic?: undefined; + inputType?: undefined; + } + )[]; + placeholder: string; + tag?: undefined; + content?: undefined; + className?: undefined; + } + )[]; + }[]; + } + )[]; }[]; - label?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { - key: string; - type: string; - tag: string; - input: boolean; - content: string; - className: string; - label?: undefined; - tree?: undefined; - legend?: undefined; - components?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - disableOnInvalid?: undefined; - theme?: undefined; - } | { - type: string; - input: boolean; - label: string; - key: string; - size: string; - leftIcon: string; - rightIcon: string; - block: boolean; - action: string; - disableOnInvalid: boolean; - theme: string; - tree?: undefined; - legend?: undefined; - components?: undefined; - tag?: undefined; - content?: undefined; - className?: undefined; - })[]; - const action: string; - } - const tests: { - 'Test initialize action with data'(form: any, done: any): void; - }; - const useDone: boolean; + }[]; + label?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + key: string; + type: string; + tag: string; + input: boolean; + content: string; + className: string; + label?: undefined; + tree?: undefined; + legend?: undefined; + components?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + disableOnInvalid?: undefined; + theme?: undefined; + } + | { + type: string; + input: boolean; + label: string; + key: string; + size: string; + leftIcon: string; + rightIcon: string; + block: boolean; + action: string; + disableOnInvalid: boolean; + theme: string; + tree?: undefined; + legend?: undefined; + components?: undefined; + tag?: undefined; + content?: undefined; + className?: undefined; + } + )[]; + const action: string; + } + const tests: { + 'Test initialize action with data'(form: any, done: any): void; + }; + const useDone: boolean; } export default _default; diff --git a/test/forms/emailaction.js b/test/forms/emailaction.js index 0e668d6d72..67b956ba59 100644 --- a/test/forms/emailaction.js +++ b/test/forms/emailaction.js @@ -3,618 +3,617 @@ import assert from 'power-assert'; export default { title: 'Email Action Test', form: { - "components": [ + components: [ { - "type": "hidden", - "input": true, - "key": "priority" + type: 'hidden', + input: true, + key: 'priority', }, { - "type": "hidden", - "input": true, - "key": "name" + type: 'hidden', + input: true, + key: 'name', }, { - "type": "textfield", - "input": true, - "label": "Title", - "key": "title" + type: 'textfield', + input: true, + label: 'Title', + key: 'title', }, { - "type": "fieldset", - "input": false, - "tree": true, - "legend": "Action Settings", - "components": [ + type: 'fieldset', + input: false, + tree: true, + legend: 'Action Settings', + components: [ { - "input": false, - "type": "container", - "key": "settings", - "components": [ + input: false, + type: 'container', + key: 'settings', + components: [ { - "type": "select", - "input": true, - "label": "Transport", - "key": "transport", - "placeholder": "Select the email transport.", - "template": "{{ item.title }}", - "defaultValue": "default", - "dataSrc": "json", - "data": { - "json": "[{\"transport\":\"default\",\"title\":\"Default (charges may apply)\"},{\"transport\":\"smtp\",\"title\":\"SMTP\"}]" + type: 'select', + input: true, + label: 'Transport', + key: 'transport', + placeholder: 'Select the email transport.', + template: '{{ item.title }}', + defaultValue: 'default', + dataSrc: 'json', + data: { + json: '[{"transport":"default","title":"Default (charges may apply)"},{"transport":"smtp","title":"SMTP"}]', + }, + valueProperty: 'transport', + multiple: false, + validate: { + required: true, }, - "valueProperty": "transport", - "multiple": false, - "validate": { - "required": true - } }, { - "label": "From:", - "key": "from", - "inputType": "text", - "defaultValue": "no-reply@form.io", - "input": true, - "placeholder": "Send the email from the following address", - "type": "textfield", - "multiple": false + label: 'From:', + key: 'from', + inputType: 'text', + defaultValue: 'no-reply@form.io', + input: true, + placeholder: 'Send the email from the following address', + type: 'textfield', + multiple: false, }, { - "label": "To: Email Address", - "key": "emails", - "inputType": "text", - "defaultValue": "", - "input": true, - "placeholder": "Send to the following email", - "type": "textfield", - "multiple": true, - "validate": { - "required": true - } + label: 'To: Email Address', + key: 'emails', + inputType: 'text', + defaultValue: '', + input: true, + placeholder: 'Send to the following email', + type: 'textfield', + multiple: true, + validate: { + required: true, + }, }, { - "label": "Send a separate email to each recipient", - "key": "sendEach", - "type": "checkbox", - "input": true + label: 'Send a separate email to each recipient', + key: 'sendEach', + type: 'checkbox', + input: true, }, { - "label": "Cc: Email Address", - "key": "cc", - "inputType": "text", - "defaultValue": "", - "input": true, - "placeholder": "Send copy of the email to the following email", - "type": "textfield", - "multiple": true + label: 'Cc: Email Address', + key: 'cc', + inputType: 'text', + defaultValue: '', + input: true, + placeholder: 'Send copy of the email to the following email', + type: 'textfield', + multiple: true, }, { - "label": "Bcc: Email Address", - "key": "bcc", - "inputType": "text", - "defaultValue": "", - "input": true, - "placeholder": "Send blink copy of the email to the following email (other recipients will not see this)", - "type": "textfield", - "multiple": true + label: 'Bcc: Email Address', + key: 'bcc', + inputType: 'text', + defaultValue: '', + input: true, + placeholder: + 'Send blink copy of the email to the following email (other recipients will not see this)', + type: 'textfield', + multiple: true, }, { - "label": "Subject", - "key": "subject", - "inputType": "text", - "defaultValue": "New submission for {{ form.title }}.", - "input": true, - "placeholder": "Email subject", - "type": "textfield", - "multiple": false + label: 'Subject', + key: 'subject', + inputType: 'text', + defaultValue: 'New submission for {{ form.title }}.', + input: true, + placeholder: 'Email subject', + type: 'textfield', + multiple: false, }, { - "label": "Email Template URL", - "key": "template", - "inputType": "text", - "defaultValue": "https://pro.formview.io/assets/email.html", - "placeholder": "Enter a URL for your external email template.", - "type": "textfield", - "multiple": false + label: 'Email Template URL', + key: 'template', + inputType: 'text', + defaultValue: 'https://pro.formview.io/assets/email.html', + placeholder: 'Enter a URL for your external email template.', + type: 'textfield', + multiple: false, }, { - "label": "Message", - "key": "message", - "type": "textarea", - "defaultValue": "{{ submission(data, form.components) }}", - "multiple": false, - "rows": 3, - "placeholder": "Enter the message you would like to send.", - "input": true + label: 'Message', + key: 'message', + type: 'textarea', + defaultValue: '{{ submission(data, form.components) }}', + multiple: false, + rows: 3, + placeholder: 'Enter the message you would like to send.', + input: true, }, { - "type": "checkbox", - "input": true, - "key": "attachFiles", + type: 'checkbox', + input: true, + key: 'attachFiles', }, { - "type": "checkbox", - "input": true, - "key": "attachPDF", - "label": "Attach Submission PDF", + type: 'checkbox', + input: true, + key: 'attachPDF', + label: 'Attach Submission PDF', }, { - "type": "textfield", - "input": true, - "key": "pdfName", - "label": "PDF File Name", - "defaultValue": "{{ form.name }}-{{ submission._id }}", - "customConditional": "show = !!data.settings.attachPDF;" - } - ] - } - ] + type: 'textfield', + input: true, + key: 'pdfName', + label: 'PDF File Name', + defaultValue: '{{ form.name }}-{{ submission._id }}', + customConditional: 'show = !!data.settings.attachPDF;', + }, + ], + }, + ], }, { - "type": "fieldset", - "input": false, - "tree": false, - "key": "conditions", - "legend": "Action Execution", - "components": [ + type: 'fieldset', + input: false, + tree: false, + key: 'conditions', + legend: 'Action Execution', + components: [ { - "type": "select", - "input": true, - "key": "handler", - "label": "Handler", - "placeholder": "Select which handler(s) you would like to trigger", - "dataSrc": "json", - "data": { - "json": "[{\"name\":\"before\",\"title\":\"Before\"},{\"name\":\"after\",\"title\":\"After\"}]" + type: 'select', + input: true, + key: 'handler', + label: 'Handler', + placeholder: 'Select which handler(s) you would like to trigger', + dataSrc: 'json', + data: { + json: '[{"name":"before","title":"Before"},{"name":"after","title":"After"}]', }, - "template": "{{ item.title }}", - "valueProperty": "name", - "multiple": true + template: '{{ item.title }}', + valueProperty: 'name', + multiple: true, }, { - "type": "select", - "input": true, - "label": "Methods", - "key": "method", - "placeholder": "Trigger action on method(s)", - "dataSrc": "json", - "data": { - "json": "[{\"name\":\"create\",\"title\":\"Create\"},{\"name\":\"update\",\"title\":\"Update\"},{\"name\":\"read\",\"title\":\"Read\"},{\"name\":\"delete\",\"title\":\"Delete\"},{\"name\":\"index\",\"title\":\"Index\"}]" + type: 'select', + input: true, + label: 'Methods', + key: 'method', + placeholder: 'Trigger action on method(s)', + dataSrc: 'json', + data: { + json: '[{"name":"create","title":"Create"},{"name":"update","title":"Update"},{"name":"read","title":"Read"},{"name":"delete","title":"Delete"},{"name":"index","title":"Index"}]', }, - "template": "{{ item.title }}", - "valueProperty": "name", - "multiple": true - } - ] + template: '{{ item.title }}', + valueProperty: 'name', + multiple: true, + }, + ], }, { - "key": "fieldset", - "type": "fieldset", - "input": false, - "tree": false, - "legend": "Action Conditions (optional)", - "components": [ + key: 'fieldset', + type: 'fieldset', + input: false, + tree: false, + legend: 'Action Conditions (optional)', + components: [ { - "type": "container", - "key": "condition", - "input": false, - "tree": true, - "components": [ + type: 'container', + key: 'condition', + input: false, + tree: true, + components: [ { - "key": "columns", - "type": "columns", - "input": false, - "columns": [ + key: 'columns', + type: 'columns', + input: false, + columns: [ { - "components": [ + components: [ { - "type": "select", - "input": true, - "label": "Trigger this action only if field", - "key": "field", - "placeholder": "Select the conditional field", - "template": "{{ item.label || item.key }}", - "dataSrc": "json", - "data": { - "json": "[{\"key\":\"\"},{\"label\":\"A\",\"labelPosition\":\"top\",\"placeholder\":\"\",\"description\":\"\",\"tooltip\":\"\",\"prefix\":\"\",\"suffix\":\"\",\"widget\":{\"type\":\"input\"},\"inputMask\":\"\",\"allowMultipleMasks\":false,\"customClass\":\"\",\"tabindex\":\"\",\"hidden\":false,\"hideLabel\":false,\"showWordCount\":false,\"showCharCount\":false,\"mask\":false,\"autofocus\":false,\"spellcheck\":true,\"disabled\":false,\"tableView\":true,\"modalEdit\":false,\"multiple\":false,\"persistent\":true,\"inputFormat\":\"plain\",\"protected\":false,\"dbIndex\":false,\"case\":\"\",\"encrypted\":false,\"redrawOn\":\"\",\"clearOnHide\":true,\"customDefaultValue\":\"\",\"calculateValue\":\"\",\"calculateServer\":false,\"allowCalculateOverride\":false,\"validateOn\":\"change\",\"validate\":{\"required\":false,\"pattern\":\"\",\"customMessage\":\"\",\"custom\":\"\",\"customPrivate\":false,\"json\":\"\",\"minLength\":\"\",\"maxLength\":\"\",\"strictDateValidation\":false,\"multiple\":false,\"unique\":false},\"unique\":false,\"errorLabel\":\"\",\"key\":\"a\",\"tags\":[],\"properties\":{},\"conditional\":{\"show\":null,\"when\":null,\"eq\":\"\",\"json\":\"\"},\"customConditional\":\"\",\"logic\":[],\"attributes\":{},\"overlay\":{\"style\":\"\",\"page\":\"\",\"left\":\"\",\"top\":\"\",\"width\":\"\",\"height\":\"\"},\"type\":\"textfield\",\"input\":true,\"refreshOn\":\"\",\"inputType\":\"text\",\"id\":\"exqblo\",\"defaultValue\":\"\"},{\"label\":\"B\",\"labelPosition\":\"top\",\"placeholder\":\"\",\"description\":\"\",\"tooltip\":\"\",\"prefix\":\"\",\"suffix\":\"\",\"widget\":{\"type\":\"input\"},\"inputMask\":\"\",\"allowMultipleMasks\":false,\"customClass\":\"\",\"tabindex\":\"\",\"hidden\":false,\"hideLabel\":false,\"showWordCount\":false,\"showCharCount\":false,\"mask\":false,\"autofocus\":false,\"spellcheck\":true,\"disabled\":false,\"tableView\":true,\"modalEdit\":false,\"multiple\":false,\"persistent\":true,\"inputFormat\":\"plain\",\"protected\":false,\"dbIndex\":false,\"case\":\"\",\"encrypted\":false,\"redrawOn\":\"\",\"clearOnHide\":true,\"customDefaultValue\":\"\",\"calculateValue\":\"\",\"calculateServer\":false,\"allowCalculateOverride\":false,\"validateOn\":\"change\",\"validate\":{\"required\":false,\"pattern\":\"\",\"customMessage\":\"\",\"custom\":\"\",\"customPrivate\":false,\"json\":\"\",\"minLength\":\"\",\"maxLength\":\"\",\"strictDateValidation\":false,\"multiple\":false,\"unique\":false},\"unique\":false,\"errorLabel\":\"\",\"key\":\"b\",\"tags\":[],\"properties\":{},\"conditional\":{\"show\":null,\"when\":null,\"eq\":\"\",\"json\":\"\"},\"customConditional\":\"\",\"logic\":[],\"attributes\":{},\"overlay\":{\"style\":\"\",\"page\":\"\",\"left\":\"\",\"top\":\"\",\"width\":\"\",\"height\":\"\"},\"type\":\"textfield\",\"input\":true,\"refreshOn\":\"\",\"inputType\":\"text\",\"id\":\"ehz47ok\",\"defaultValue\":\"\"},{\"type\":\"button\",\"label\":\"Submit\",\"key\":\"submit\",\"size\":\"md\",\"block\":false,\"action\":\"submit\",\"disableOnInvalid\":true,\"theme\":\"primary\",\"input\":true,\"placeholder\":\"\",\"prefix\":\"\",\"customClass\":\"\",\"suffix\":\"\",\"multiple\":false,\"defaultValue\":null,\"protected\":false,\"unique\":false,\"persistent\":false,\"hidden\":false,\"clearOnHide\":true,\"refreshOn\":\"\",\"redrawOn\":\"\",\"tableView\":false,\"modalEdit\":false,\"labelPosition\":\"top\",\"description\":\"\",\"errorLabel\":\"\",\"tooltip\":\"\",\"hideLabel\":false,\"tabindex\":\"\",\"disabled\":false,\"autofocus\":false,\"dbIndex\":false,\"customDefaultValue\":\"\",\"calculateValue\":\"\",\"widget\":{\"type\":\"input\"},\"attributes\":{},\"validateOn\":\"change\",\"validate\":{\"required\":false,\"custom\":\"\",\"customPrivate\":false,\"strictDateValidation\":false,\"multiple\":false,\"unique\":false},\"conditional\":{\"show\":null,\"when\":null,\"eq\":\"\"},\"overlay\":{\"style\":\"\",\"left\":\"\",\"top\":\"\",\"width\":\"\",\"height\":\"\"},\"allowCalculateOverride\":false,\"encrypted\":false,\"showCharCount\":false,\"showWordCount\":false,\"properties\":{},\"allowMultipleMasks\":false,\"leftIcon\":\"\",\"rightIcon\":\"\",\"dataGridLabel\":true,\"id\":\"e0fow3\"}]" + type: 'select', + input: true, + label: 'Trigger this action only if field', + key: 'field', + placeholder: 'Select the conditional field', + template: '{{ item.label || item.key }}', + dataSrc: 'json', + data: { + json: '[{"key":""},{"label":"A","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"a","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"exqblo","defaultValue":""},{"label":"B","labelPosition":"top","placeholder":"","description":"","tooltip":"","prefix":"","suffix":"","widget":{"type":"input"},"inputMask":"","allowMultipleMasks":false,"customClass":"","tabindex":"","hidden":false,"hideLabel":false,"showWordCount":false,"showCharCount":false,"mask":false,"autofocus":false,"spellcheck":true,"disabled":false,"tableView":true,"modalEdit":false,"multiple":false,"persistent":true,"inputFormat":"plain","protected":false,"dbIndex":false,"case":"","encrypted":false,"redrawOn":"","clearOnHide":true,"customDefaultValue":"","calculateValue":"","calculateServer":false,"allowCalculateOverride":false,"validateOn":"change","validate":{"required":false,"pattern":"","customMessage":"","custom":"","customPrivate":false,"json":"","minLength":"","maxLength":"","strictDateValidation":false,"multiple":false,"unique":false},"unique":false,"errorLabel":"","key":"b","tags":[],"properties":{},"conditional":{"show":null,"when":null,"eq":"","json":""},"customConditional":"","logic":[],"attributes":{},"overlay":{"style":"","page":"","left":"","top":"","width":"","height":""},"type":"textfield","input":true,"refreshOn":"","inputType":"text","id":"ehz47ok","defaultValue":""},{"type":"button","label":"Submit","key":"submit","size":"md","block":false,"action":"submit","disableOnInvalid":true,"theme":"primary","input":true,"placeholder":"","prefix":"","customClass":"","suffix":"","multiple":false,"defaultValue":null,"protected":false,"unique":false,"persistent":false,"hidden":false,"clearOnHide":true,"refreshOn":"","redrawOn":"","tableView":false,"modalEdit":false,"labelPosition":"top","description":"","errorLabel":"","tooltip":"","hideLabel":false,"tabindex":"","disabled":false,"autofocus":false,"dbIndex":false,"customDefaultValue":"","calculateValue":"","widget":{"type":"input"},"attributes":{},"validateOn":"change","validate":{"required":false,"custom":"","customPrivate":false,"strictDateValidation":false,"multiple":false,"unique":false},"conditional":{"show":null,"when":null,"eq":""},"overlay":{"style":"","left":"","top":"","width":"","height":""},"allowCalculateOverride":false,"encrypted":false,"showCharCount":false,"showWordCount":false,"properties":{},"allowMultipleMasks":false,"leftIcon":"","rightIcon":"","dataGridLabel":true,"id":"e0fow3"}]', }, - "valueProperty": "key", - "multiple": false + valueProperty: 'key', + multiple: false, }, { - "type": "select", - "input": true, - "label": "", - "key": "eq", - "placeholder": "Select comparison", - "template": "{{ item.label }}", - "dataSrc": "values", - "data": { - "values": [ + type: 'select', + input: true, + label: '', + key: 'eq', + placeholder: 'Select comparison', + template: '{{ item.label }}', + dataSrc: 'values', + data: { + values: [ { - "value": "", - "label": "" + value: '', + label: '', }, { - "value": "equals", - "label": "Equals" + value: 'equals', + label: 'Equals', }, { - "value": "notEqual", - "label": "Does Not Equal" - } + value: 'notEqual', + label: 'Does Not Equal', + }, ], - "json": "", - "url": "", - "resource": "" + json: '', + url: '', + resource: '', }, - "valueProperty": "value", - "multiple": false + valueProperty: 'value', + multiple: false, }, { - "input": true, - "type": "textfield", - "inputType": "text", - "label": "", - "key": "value", - "placeholder": "Enter value", - "multiple": false - } - ] + input: true, + type: 'textfield', + inputType: 'text', + label: '', + key: 'value', + placeholder: 'Enter value', + multiple: false, + }, + ], }, { - "components": [ + components: [ { - "key": "well2", - "type": "well", - "input": false, - "components": [ + key: 'well2', + type: 'well', + input: false, + components: [ { - "key": "html", - "type": "htmlelement", - "tag": "h4", - "input": false, - "content": "Or you can provide your own custom JavaScript or JSON condition logic here", - "className": "" + key: 'html', + type: 'htmlelement', + tag: 'h4', + input: false, + content: + 'Or you can provide your own custom JavaScript or JSON condition logic here', + className: '', }, { - "label": "", - "type": "textarea", - "input": true, - "key": "custom", - "editorComponents": [ + label: '', + type: 'textarea', + input: true, + key: 'custom', + editorComponents: [ { - "label": "A", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + label: 'A', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', }, - "inputMask": "", - "allowMultipleMasks": false, - "customClass": "", - "tabindex": "", - "hidden": false, - "hideLabel": false, - "showWordCount": false, - "showCharCount": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": true, - "modalEdit": false, - "multiple": false, - "persistent": true, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "case": "", - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "pattern": "", - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "minLength": "", - "maxLength": "", - "strictDateValidation": false, - "multiple": false, - "unique": false + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, }, - "unique": false, - "errorLabel": "", - "key": "a", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + unique: false, + errorLabel: '', + key: 'a', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - "type": "textfield", - "input": true, - "refreshOn": "", - "inputType": "text", - "id": "exqblo", - "defaultValue": "" + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'exqblo', + defaultValue: '', }, { - "label": "B", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + label: 'B', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', }, - "inputMask": "", - "allowMultipleMasks": false, - "customClass": "", - "tabindex": "", - "hidden": false, - "hideLabel": false, - "showWordCount": false, - "showCharCount": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": true, - "modalEdit": false, - "multiple": false, - "persistent": true, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "case": "", - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "pattern": "", - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "minLength": "", - "maxLength": "", - "strictDateValidation": false, - "multiple": false, - "unique": false + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, }, - "unique": false, - "errorLabel": "", - "key": "b", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + unique: false, + errorLabel: '', + key: 'b', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - "type": "textfield", - "input": true, - "refreshOn": "", - "inputType": "text", - "id": "ehz47ok", - "defaultValue": "" + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'ehz47ok', + defaultValue: '', }, { - "type": "button", - "label": "Submit", - "key": "submit", - "size": "md", - "block": false, - "action": "submit", - "disableOnInvalid": true, - "theme": "primary", - "input": true, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": true, - "refreshOn": "", - "redrawOn": "", - "tableView": false, - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": { - "type": "input" + type: 'button', + label: 'Submit', + key: 'submit', + size: 'md', + block: false, + action: 'submit', + disableOnInvalid: true, + theme: 'primary', + input: true, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + refreshOn: '', + redrawOn: '', + tableView: false, + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: { + type: 'input', }, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "conditional": { - "show": null, - "when": null, - "eq": "" + conditional: { + show: null, + when: null, + eq: '', }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "leftIcon": "", - "rightIcon": "", - "dataGridLabel": true, - "id": "e0fow3" - } + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + leftIcon: '', + rightIcon: '', + dataGridLabel: true, + id: 'e0fow3', + }, ], - "placeholder": "// Example: Only execute if submitted roles has 'authenticated'.\nJavaScript: execute = (data.roles.indexOf('authenticated') !== -1);\nJSON: { \"in\": [ \"authenticated\", { \"var\": \"data.roles\" } ] }" - } - ] - } - ] - } - ] - } - ] - } - ] + placeholder: + '// Example: Only execute if submitted roles has \'authenticated\'.\nJavaScript: execute = (data.roles.indexOf(\'authenticated\') !== -1);\nJSON: { "in": [ "authenticated", { "var": "data.roles" } ] }', + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], }, { - "key": "html2", - "type": "htmlelement", - "tag": "hr", - "input": false, - "content": "", - "className": "" + key: 'html2', + type: 'htmlelement', + tag: 'hr', + input: false, + content: '', + className: '', }, { - "type": "button", - "input": true, - "label": "Save Action", - "key": "submit", - "size": "md", - "leftIcon": "", - "rightIcon": "", - "block": false, - "action": "submit", - "disableOnInvalid": true, - "theme": "primary" - } + type: 'button', + input: true, + label: 'Save Action', + key: 'submit', + size: 'md', + leftIcon: '', + rightIcon: '', + block: false, + action: 'submit', + disableOnInvalid: true, + theme: 'primary', + }, ], - "action": "/project/59bbe2ec8c246100079191ae/form/5e62b0974d10775661492d07/action" + action: '/project/59bbe2ec8c246100079191ae/form/5e62b0974d10775661492d07/action', }, tests: { 'Test initialize action with data'(form, done) { - form.setSubmission({ - "data": { - "settings": {}, - "condition": {}, - "handler": [ - "after" - ], - "method": [ - "create" - ], - "priority": 0, - "name": "email", - "title": "Email" - } - }).then(() => { - form.setSubmission({ - "data": { - "priority": 0, - "name": "email", - "title": "Email", - "settings": { - "transport": "default" - }, - "handler": [ - "after" - ], - "method": [ - "create" - ], - "condition": {}, - "submit": false - } - }).then(() => { - form.on('componentChange', function() { - // Make sure it still applies all the default values of these components. - assert.deepEqual(form.submission.data.settings, { - sendEach: false, - attachFiles: false, - attachPDF: false, - transport: 'default', - from: 'no-reply@form.io', - emails: ['travis@form.io'], - cc: [''], - bcc: [''], - subject: 'New submission for {{ form.title }}.', - template: 'https://pro.formview.io/assets/email.html', - message: '{{ submission(data, form.components) }}' + form + .setSubmission({ + data: { + settings: {}, + condition: {}, + handler: ['after'], + method: ['create'], + priority: 0, + name: 'email', + title: 'Email', + }, + }) + .then(() => { + form + .setSubmission({ + data: { + priority: 0, + name: 'email', + title: 'Email', + settings: { + transport: 'default', + }, + handler: ['after'], + method: ['create'], + condition: {}, + submit: false, + }, + }) + .then(() => { + form.on('componentChange', function () { + // Make sure it still applies all the default values of these components. + assert.deepEqual(form.submission.data.settings, { + sendEach: false, + attachFiles: false, + attachPDF: false, + transport: 'default', + from: 'no-reply@form.io', + emails: ['travis@form.io'], + cc: [''], + bcc: [''], + subject: 'New submission for {{ form.title }}.', + template: 'https://pro.formview.io/assets/email.html', + message: '{{ submission(data, form.components) }}', + }); }); - }); - const toEmail = form.getComponent('emails'); - toEmail.updateValue(['travis@form.io']); + const toEmail = form.getComponent('emails'); + toEmail.updateValue(['travis@form.io']); - setTimeout(() => { - done(); - }, 500); + setTimeout(() => { + done(); + }, 500); + }); }); - }); - } + }, }, useDone: true, }; diff --git a/test/forms/fieldLogic.d.ts b/test/forms/fieldLogic.d.ts index 3fe15651b7..784734ae1d 100644 --- a/test/forms/fieldLogic.d.ts +++ b/test/forms/fieldLogic.d.ts @@ -1,122 +1,131 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - properties: {}; - tags: never[]; - labelPosition: string; - hideLabel: boolean; - type: string; - conditional: { - eq: string; - when: null; - show: string; - }; - validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: string; - minLength: string; - required: boolean; - }; - clearOnHide: boolean; - hidden: boolean; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - logic?: undefined; - } | { - properties: {}; - tags: never[]; - labelPosition: string; - hideLabel: boolean; - type: string; - conditional: { - eq: string; - when: null; - show: string; - }; - validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: string; - minLength: string; - required: boolean; - }; - clearOnHide: boolean; - hidden: boolean; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - logic: ({ + const title: string; + namespace form { + const components: ( + | { + properties: {}; + tags: never[]; + labelPosition: string; + hideLabel: boolean; + type: string; + conditional: { + eq: string; + when: null; + show: string; + }; + validate: { + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: string; + minLength: string; + required: boolean; + }; + clearOnHide: boolean; + hidden: boolean; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + logic?: undefined; + } + | { + properties: {}; + tags: never[]; + labelPosition: string; + hideLabel: boolean; + type: string; + conditional: { + eq: string; + when: null; + show: string; + }; + validate: { + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: string; + minLength: string; + required: boolean; + }; + clearOnHide: boolean; + hidden: boolean; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + logic: ( + | { name: string; trigger: { - javascript: string; - type: string; + javascript: string; + type: string; }; - actions: ({ - name: string; - text: string; - property: { + actions: ( + | { + name: string; + text: string; + property: { type: string; value: string; label: string; - }; - type: string; - state?: undefined; - } | { - name: string; - type: string; - property: { + }; + type: string; + state?: undefined; + } + | { + name: string; + type: string; + property: { label: string; value: string; type: string; - }; - state: boolean; - text?: undefined; - })[]; - } | { + }; + state: boolean; + text?: undefined; + } + )[]; + } + | { name: string; trigger: { - javascript: string; - type: string; + javascript: string; + type: string; }; actions: { - name: string; - type: string; - value: string; + name: string; + type: string; + value: string; }[]; - })[]; - })[]; - } - const tests: { - 'Test Title, Description and Disabled'(form: any, done: any): void; - 'Test Required'(form: any, done: any): void; - 'Test Set Value'(form: any, done: any): void; - }; + } + )[]; + } + )[]; + } + const tests: { + 'Test Title, Description and Disabled'(form: any, done: any): void; + 'Test Required'(form: any, done: any): void; + 'Test Set Value'(form: any, done: any): void; + }; } export default _default; diff --git a/test/forms/fieldLogic.js b/test/forms/fieldLogic.js index 8462c898ff..82183c43ed 100644 --- a/test/forms/fieldLogic.js +++ b/test/forms/fieldLogic.js @@ -5,151 +5,151 @@ export default { form: { components: [ { - 'properties': {}, - 'tags': [], - 'labelPosition': 'top', - 'hideLabel': false, - 'type': 'textfield', - 'conditional': { - 'eq': '', - 'when': null, - 'show': '' + properties: {}, + tags: [], + labelPosition: 'top', + hideLabel: false, + type: 'textfield', + conditional: { + eq: '', + when: null, + show: '', }, - 'validate': { - 'customPrivate': false, - 'custom': '', - 'pattern': '', - 'maxLength': '', - 'minLength': '', - 'required': false + validate: { + customPrivate: false, + custom: '', + pattern: '', + maxLength: '', + minLength: '', + required: false, }, - 'clearOnHide': true, - 'hidden': false, - 'persistent': true, - 'unique': false, - 'protected': false, - 'defaultValue': '', - 'multiple': false, - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'test', - 'label': 'Test', - 'inputMask': '', - 'inputType': 'text', - 'tableView': true, - 'input': true + clearOnHide: true, + hidden: false, + persistent: true, + unique: false, + protected: false, + defaultValue: '', + multiple: false, + suffix: '', + prefix: '', + placeholder: '', + key: 'test', + label: 'Test', + inputMask: '', + inputType: 'text', + tableView: true, + input: true, }, { - 'properties': {}, - 'tags': [], - 'labelPosition': 'top', - 'hideLabel': false, - 'type': 'textfield', - 'conditional': { - 'eq': '', - 'when': null, - 'show': '' + properties: {}, + tags: [], + labelPosition: 'top', + hideLabel: false, + type: 'textfield', + conditional: { + eq: '', + when: null, + show: '', }, - 'validate': { - 'customPrivate': false, - 'custom': '', - 'pattern': '', - 'maxLength': '', - 'minLength': '', - 'required': false + validate: { + customPrivate: false, + custom: '', + pattern: '', + maxLength: '', + minLength: '', + required: false, }, - 'clearOnHide': true, - 'hidden': false, - 'persistent': true, - 'unique': false, - 'protected': false, - 'defaultValue': '', - 'multiple': false, - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'changeme', - 'label': 'Change me', - 'inputMask': '', - 'inputType': 'text', - 'tableView': true, - 'input': true, - 'logic': [ + clearOnHide: true, + hidden: false, + persistent: true, + unique: false, + protected: false, + defaultValue: '', + multiple: false, + suffix: '', + prefix: '', + placeholder: '', + key: 'changeme', + label: 'Change me', + inputMask: '', + inputType: 'text', + tableView: true, + input: true, + logic: [ { - 'name': 'Test 1', - 'trigger': { - 'javascript': "result = data.test === '1';", - 'type': 'javascript' + name: 'Test 1', + trigger: { + javascript: "result = data.test === '1';", + type: 'javascript', }, - 'actions': [ + actions: [ { - 'name': 'Set Title to One', - 'text': 'One', - 'property': { - 'type': 'string', - 'value': 'label', - 'label': 'Title' + name: 'Set Title to One', + text: 'One', + property: { + type: 'string', + value: 'label', + label: 'Title', }, - 'type': 'property' + type: 'property', }, { - 'name': 'Set Description', - 'type': 'property', - 'property': { - 'label': 'Description', - 'value': 'description', - 'type': 'string' + name: 'Set Description', + type: 'property', + property: { + label: 'Description', + value: 'description', + type: 'string', }, - 'text': 'You have selected One' + text: 'You have selected One', }, { - 'name': 'Set Disabled', - 'type': 'property', - 'property': { - 'label': 'Disabled', - 'value': 'disabled', - 'type': 'boolean' + name: 'Set Disabled', + type: 'property', + property: { + label: 'Disabled', + value: 'disabled', + type: 'boolean', }, - 'state': true - } - ] + state: true, + }, + ], }, { - 'name': 'Test 2', - 'trigger': { - 'javascript': "result = data.test === '2';", - 'type': 'javascript' + name: 'Test 2', + trigger: { + javascript: "result = data.test === '2';", + type: 'javascript', }, - 'actions': [ + actions: [ { - 'name': 'Set Required', - 'type': 'property', - 'property': { - 'label': 'Required', - 'value': 'validate.required', - 'type': 'boolean' + name: 'Set Required', + type: 'property', + property: { + label: 'Required', + value: 'validate.required', + type: 'boolean', }, - 'state': true - } - ] + state: true, + }, + ], }, { - 'name': 'Test 3', - 'trigger': { - 'javascript': "result = data.test === '3';", - 'type': 'javascript' + name: 'Test 3', + trigger: { + javascript: "result = data.test === '3';", + type: 'javascript', }, - 'actions': [ + actions: [ { - 'name': 'Set Required', - 'type': 'value', - 'value': "return 'foo';" - } - ] - } - ] - } + name: 'Set Required', + type: 'value', + value: "return 'foo';", + }, + ], + }, + ], + }, ], }, tests: { @@ -158,7 +158,12 @@ export default { form.onChange({}, true); Harness.testInnerHtml(form, '.formio-component-changeme .col-form-label', 'One'); Harness.testInnerHtml(form, '.formio-component-changeme .form-text', 'You have selected One'); - Harness.testAttribute(form, '.formio-component-changeme .form-control', 'disabled', 'disabled'); + Harness.testAttribute( + form, + '.formio-component-changeme .form-control', + 'disabled', + 'disabled', + ); done(); }, 'Test Required'(form, done) { @@ -172,6 +177,6 @@ export default { form.onChange({}, true); Harness.getInputValue(form, 'data[changeme]', 'foo'); done(); - } - } + }, + }, }; diff --git a/test/forms/formBasedOnWizard.js b/test/forms/formBasedOnWizard.js index 20499ec33b..8c08bba330 100644 --- a/test/forms/formBasedOnWizard.js +++ b/test/forms/formBasedOnWizard.js @@ -13,11 +13,11 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true - } + input: true, + }, ], input: false, - tableView: false + tableView: false, }, { title: 'Page 2', @@ -32,11 +32,11 @@ export default { tableView: true, key: 'textArea', type: 'textarea', - input: true - } + input: true, + }, ], input: false, - tableView: false - } - ] -} + tableView: false, + }, + ], +}; diff --git a/test/forms/formWIthNestedWizard.d.ts b/test/forms/formWIthNestedWizard.d.ts index 5f40ec7f98..422cf0c449 100644 --- a/test/forms/formWIthNestedWizard.d.ts +++ b/test/forms/formWIthNestedWizard.d.ts @@ -1,12 +1,13 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; @@ -14,75 +15,80 @@ declare namespace _default { type: string; label: string; components: { + label: string; + optionsLabelPosition: string; + tableView: boolean; + values: { label: string; - optionsLabelPosition: string; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - validate: { - onlyAvailableItems: boolean; - }; - key: string; - type: string; - input: boolean; - inputType: string; - defaultValue: { - a: boolean; - b: boolean; - c: boolean; - }; + value: string; + shortcut: string; + }[]; + validate: { + onlyAvailableItems: boolean; + }; + key: string; + type: string; + input: boolean; + inputType: string; + defaultValue: { + a: boolean; + b: boolean; + c: boolean; + }; }[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; scrollToTop: boolean; collapsible: boolean; key: string; type: string; label: string; - components: ({ - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; - useOriginalRevision?: undefined; - } | { - label: string; - tableView: boolean; - useOriginalRevision: boolean; - key: string; - type: string; - input: boolean; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - })[]; + components: ( + | { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; + useOriginalRevision?: undefined; + } + | { + label: string; + tableView: boolean; + useOriginalRevision: boolean; + key: string; + type: string; + input: boolean; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + } + )[]; input: boolean; tableView: boolean; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/formWIthNestedWizard.js b/test/forms/formWIthNestedWizard.js index 85f4fb65c8..5bd42e27c2 100644 --- a/test/forms/formWIthNestedWizard.js +++ b/test/forms/formWIthNestedWizard.js @@ -1,102 +1,102 @@ export default { - type: 'form', - components: [ - { - title: 'Parent 1', - breadcrumbClickable: true, - buttonSettings: { - previous: true, - cancel: true, - next: true - }, - scrollToTop: false, - collapsible: false, - key: 'parent1', - type: 'panel', - label: 'Page 1', - components: [ - { - label: 'Select Boxes Parent', - optionsLabelPosition: 'right', - tableView: false, - values: [ - { - label: 'a', - value: 'a', - shortcut: '' - }, - { - label: 'b', - value: 'b', - shortcut: '' - }, - { - label: 'c', - value: 'c', - shortcut: '' - } - ], - validate: { - onlyAvailableItems: false - }, - key: 'selectBoxesParent', - type: 'selectboxes', - input: true, - inputType: 'checkbox', - defaultValue: { - a: false, - b: false, - c: false - } - } - ], - input: false, - tableView: false - }, - { - title: 'Parent 2', - breadcrumbClickable: true, - buttonSettings: { - previous: true, - cancel: true, - next: true - }, - scrollToTop: false, - collapsible: false, - key: 'parent2', - type: 'panel', - label: 'Page 2', - components: [ - { - label: 'Number Parent', - mask: false, - spellcheck: true, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - key: 'numberParent', - type: 'number', - input: true - }, - { - label: 'Form Nested', - tableView: true, - // form: '6038a2744efbab80ec1cf523', - useOriginalRevision: false, - key: 'formNested', - type: 'form', - input: true - } - ], - input: false, - tableView: false - } - ], - revisions: '', - _vid: 0, - title: 'with nested wizard', - display: 'wizard', - name: 'withNestedWizard', - path: 'withnestedwizard' + type: 'form', + components: [ + { + title: 'Parent 1', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + scrollToTop: false, + collapsible: false, + key: 'parent1', + type: 'panel', + label: 'Page 1', + components: [ + { + label: 'Select Boxes Parent', + optionsLabelPosition: 'right', + tableView: false, + values: [ + { + label: 'a', + value: 'a', + shortcut: '', + }, + { + label: 'b', + value: 'b', + shortcut: '', + }, + { + label: 'c', + value: 'c', + shortcut: '', + }, + ], + validate: { + onlyAvailableItems: false, + }, + key: 'selectBoxesParent', + type: 'selectboxes', + input: true, + inputType: 'checkbox', + defaultValue: { + a: false, + b: false, + c: false, + }, + }, + ], + input: false, + tableView: false, + }, + { + title: 'Parent 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + scrollToTop: false, + collapsible: false, + key: 'parent2', + type: 'panel', + label: 'Page 2', + components: [ + { + label: 'Number Parent', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'numberParent', + type: 'number', + input: true, + }, + { + label: 'Form Nested', + tableView: true, + // form: '6038a2744efbab80ec1cf523', + useOriginalRevision: false, + key: 'formNested', + type: 'form', + input: true, + }, + ], + input: false, + tableView: false, + }, + ], + revisions: '', + _vid: 0, + title: 'with nested wizard', + display: 'wizard', + name: 'withNestedWizard', + path: 'withnestedwizard', }; diff --git a/test/forms/formWithAddressComponent.d.ts b/test/forms/formWithAddressComponent.d.ts index 6f97cf4a36..86ca0dc8a5 100644 --- a/test/forms/formWithAddressComponent.d.ts +++ b/test/forms/formWithAddressComponent.d.ts @@ -1,11 +1,12 @@ declare namespace _default { - export { form }; - export { submission }; + export { form }; + export { submission }; } export default _default; declare namespace form { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -19,29 +20,30 @@ declare namespace form { type: string; input: boolean; components: { + label: string; + tableView: boolean; + provider: string; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; - provider: string; key: string; type: string; input: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - customConditional: string; - }[]; - providerOptions: { - params: { - key: string; - region: string; - }; + customConditional: string; + }[]; + providerOptions: { + params: { + key: string; + region: string; }; + }; }[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -56,51 +58,52 @@ declare namespace form { initEmpty?: undefined; defaultValue?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } declare namespace submission { - const dataGrid: { - address: { - address_components: { - long_name: string; - short_name: string; - types: string[]; - }[]; - formatted_address: string; - geometry: { - bounds: { - northeast: { - lat: number; - lng: number; - }; - southwest: { - lat: number; - lng: number; - }; - }; - location: { - lat: number; - lng: number; - }; - location_type: string; - viewport: { - northeast: { - lat: number; - lng: number; - }; - southwest: { - lat: number; - lng: number; - }; - }; - }; - place_id: string; - types: string[]; + const dataGrid: { + address: { + address_components: { + long_name: string; + short_name: string; + types: string[]; + }[]; + formatted_address: string; + geometry: { + bounds: { + northeast: { + lat: number; + lng: number; + }; + southwest: { + lat: number; + lng: number; + }; + }; + location: { + lat: number; + lng: number; + }; + location_type: string; + viewport: { + northeast: { + lat: number; + lng: number; + }; + southwest: { + lat: number; + lng: number; + }; }; - }[]; + }; + place_id: string; + types: string[]; + }; + }[]; } diff --git a/test/forms/formWithAddressComponent.js b/test/forms/formWithAddressComponent.js index e9730f40b8..c5afcbaf59 100644 --- a/test/forms/formWithAddressComponent.js +++ b/test/forms/formWithAddressComponent.js @@ -1,142 +1,161 @@ const form = { - 'type': 'form', - 'components': [{ - 'label': 'Data Grid', - 'reorder': false, - 'addAnotherPosition': 'bottom', - 'defaultOpen': false, - 'layoutFixed': false, - 'enableRowGroups': false, - 'initEmpty': false, - 'tableView': false, - 'defaultValue': [{}], - 'key': 'dataGrid', - 'type': 'datagrid', - 'input': true, - 'components': [{ - 'label': 'Address', - 'tableView': false, - 'provider': 'google', - 'key': 'address', - 'type': 'address', - 'input': true, - 'components': [{ - 'label': 'Address 1', - 'tableView': false, - 'key': 'address1', - 'type': 'textfield', - 'input': true, - 'customConditional': 'show = _.get(instance, "parent.manualMode", false);' - }, { - 'label': 'Address 2', - 'tableView': false, - 'key': 'address2', - 'type': 'textfield', - 'input': true, - 'customConditional': 'show = _.get(instance, "parent.manualMode", false);' - }, { - 'label': 'City', - 'tableView': false, - 'key': 'city', - 'type': 'textfield', - 'input': true, - 'customConditional': 'show = _.get(instance, "parent.manualMode", false);' - }, { - 'label': 'State', - 'tableView': false, - 'key': 'state', - 'type': 'textfield', - 'input': true, - 'customConditional': 'show = _.get(instance, "parent.manualMode", false);' - }, { - 'label': 'Country', - 'tableView': false, - 'key': 'country', - 'type': 'textfield', - 'input': true, - 'customConditional': 'show = _.get(instance, "parent.manualMode", false);' - }, { - 'label': 'Zip Code', - 'tableView': false, - 'key': 'zip', - 'type': 'textfield', - 'input': true, - 'customConditional': 'show = _.get(instance, "parent.manualMode", false);' - }], - 'providerOptions': { - 'params': { - 'key': 'someKey', - 'region': '' - } - } - }] - }, { - 'type': 'button', - 'label': 'Submit', - 'key': 'submit', - 'disableOnInvalid': true, - 'input': true, - 'tableView': false - }], - 'title': 'test address', - 'display': 'form', - 'name': 'testAddress', - 'path': 'testaddress', - 'machineName': 'cjksbatcpbhyfbs:testAddress' + type: 'form', + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{}], + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ + { + label: 'Address', + tableView: false, + provider: 'google', + key: 'address', + type: 'address', + input: true, + components: [ + { + label: 'Address 1', + tableView: false, + key: 'address1', + type: 'textfield', + input: true, + customConditional: 'show = _.get(instance, "parent.manualMode", false);', + }, + { + label: 'Address 2', + tableView: false, + key: 'address2', + type: 'textfield', + input: true, + customConditional: 'show = _.get(instance, "parent.manualMode", false);', + }, + { + label: 'City', + tableView: false, + key: 'city', + type: 'textfield', + input: true, + customConditional: 'show = _.get(instance, "parent.manualMode", false);', + }, + { + label: 'State', + tableView: false, + key: 'state', + type: 'textfield', + input: true, + customConditional: 'show = _.get(instance, "parent.manualMode", false);', + }, + { + label: 'Country', + tableView: false, + key: 'country', + type: 'textfield', + input: true, + customConditional: 'show = _.get(instance, "parent.manualMode", false);', + }, + { + label: 'Zip Code', + tableView: false, + key: 'zip', + type: 'textfield', + input: true, + customConditional: 'show = _.get(instance, "parent.manualMode", false);', + }, + ], + providerOptions: { + params: { + key: 'someKey', + region: '', + }, + }, + }, + ], + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], + title: 'test address', + display: 'form', + name: 'testAddress', + path: 'testaddress', + machineName: 'cjksbatcpbhyfbs:testAddress', }; -const submission = { - 'dataGrid': [{ - 'address': { - 'address_components': [{ - 'long_name': 'Dallas', - 'short_name': 'Dallas', - 'types': ['locality', 'political'] - }, { - 'long_name': 'Dallas County', - 'short_name': 'Dallas County', - 'types': ['administrative_area_level_2', 'political'] - }, { - 'long_name': 'Texas', - 'short_name': 'TX', - 'types': ['administrative_area_level_1', 'political'] - }, { - 'long_name': 'United States', - 'short_name': 'US', - 'types': ['country', 'political'] - }], - 'formatted_address': 'Dallas, TX, USA', - 'geometry': { - 'bounds': { - 'northeast': { - 'lat': 33.0237921, - 'lng': -96.4637379 +const submission = { + dataGrid: [ + { + address: { + address_components: [ + { + long_name: 'Dallas', + short_name: 'Dallas', + types: ['locality', 'political'], }, - 'southwest': { - 'lat': 32.617537, - 'lng': -96.999347 - } - }, - 'location': { - 'lat': 32.7766642, - 'lng': -96.79698789999999 - }, - 'location_type': 'APPROXIMATE', - 'viewport': { - 'northeast': { - 'lat': 33.0237921, - 'lng': -96.4637379 + { + long_name: 'Dallas County', + short_name: 'Dallas County', + types: ['administrative_area_level_2', 'political'], + }, + { + long_name: 'Texas', + short_name: 'TX', + types: ['administrative_area_level_1', 'political'], }, - 'southwest': { - 'lat': 32.617537, - 'lng': -96.999347 - } - } + { + long_name: 'United States', + short_name: 'US', + types: ['country', 'political'], + }, + ], + formatted_address: 'Dallas, TX, USA', + geometry: { + bounds: { + northeast: { + lat: 33.0237921, + lng: -96.4637379, + }, + southwest: { + lat: 32.617537, + lng: -96.999347, + }, + }, + location: { + lat: 32.7766642, + lng: -96.79698789999999, + }, + location_type: 'APPROXIMATE', + viewport: { + northeast: { + lat: 33.0237921, + lng: -96.4637379, + }, + southwest: { + lat: 32.617537, + lng: -96.999347, + }, + }, + }, + place_id: 'ChIJS5dFe_cZTIYRj2dH9qSb7Lk', + types: ['locality', 'political'], }, - 'place_id': 'ChIJS5dFe_cZTIYRj2dH9qSb7Lk', - 'types': ['locality', 'political'] - } - }] + }, + ], }; export default { diff --git a/test/forms/formWithAllowCalculateOverride.d.ts b/test/forms/formWithAllowCalculateOverride.d.ts index 60bc12d6aa..263c3fad60 100644 --- a/test/forms/formWithAllowCalculateOverride.d.ts +++ b/test/forms/formWithAllowCalculateOverride.d.ts @@ -1,32 +1,35 @@ declare namespace _default { - const type: string; - const input: boolean; - const label: string; - const key: string; - const tooltip: string; - const weight: number; - const reorder: boolean; - const defaultValue: { - label: string; - value: string; - }[]; - const components: ({ + const type: string; + const input: boolean; + const label: string; + const key: string; + const tooltip: string; + const weight: number; + const reorder: boolean; + const defaultValue: { + label: string; + value: string; + }[]; + const components: ( + | { label: string; key: string; input: boolean; type: string; allowCalculateOverride?: undefined; - } | { + } + | { label: string; key: string; input: boolean; type: string; allowCalculateOverride: boolean; calculateValue: { - _camelCase: { - var: string; - }[]; + _camelCase: { + var: string; + }[]; }; - })[]; + } + )[]; } export default _default; diff --git a/test/forms/formWithAllowCalculateOverride.js b/test/forms/formWithAllowCalculateOverride.js index a970576768..56055690f4 100644 --- a/test/forms/formWithAllowCalculateOverride.js +++ b/test/forms/formWithAllowCalculateOverride.js @@ -3,10 +3,11 @@ export default { input: true, label: 'Data Source Values', key: 'data.values', - tooltip: 'Values to use as the data source. Labels are shown in the select field. Values are the corresponding values saved with the submission.', + tooltip: + 'Values to use as the data source. Labels are shown in the select field. Values are the corresponding values saved with the submission.', weight: 10, reorder: true, - defaultValue: [{label: '', value: ''}], + defaultValue: [{ label: '', value: '' }], components: [ { label: 'Label', @@ -20,7 +21,7 @@ export default { input: true, type: 'textfield', allowCalculateOverride: true, - calculateValue: {_camelCase: [{var: 'row.label'}]}, + calculateValue: { _camelCase: [{ var: 'row.label' }] }, }, - ] -} + ], +}; diff --git a/test/forms/formWithCKEditor.d.ts b/test/forms/formWithCKEditor.d.ts index dfc60ff6fa..5108fa3e65 100644 --- a/test/forms/formWithCKEditor.d.ts +++ b/test/forms/formWithCKEditor.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; editor: string; tableView: boolean; @@ -9,7 +10,8 @@ declare namespace _default { input: boolean; isUploadEnabled: boolean; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -18,8 +20,9 @@ declare namespace _default { tableView: boolean; editor?: undefined; isUploadEnabled?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/formWithCKEditor.js b/test/forms/formWithCKEditor.js index 34cfd6f76a..259139ce04 100644 --- a/test/forms/formWithCKEditor.js +++ b/test/forms/formWithCKEditor.js @@ -8,7 +8,7 @@ export default { key: 'textArea', type: 'textarea', input: true, - isUploadEnabled: false + isUploadEnabled: false, }, { type: 'button', @@ -16,8 +16,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FIO-560', display: 'form', diff --git a/test/forms/formWithCalcValue.d.ts b/test/forms/formWithCalcValue.d.ts index a983d1c55a..49c0957b65 100644 --- a/test/forms/formWithCalcValue.d.ts +++ b/test/forms/formWithCalcValue.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const display: string; - const components: ({ + const display: string; + const components: ( + | { label: string; mask: boolean; spellcheck: boolean; @@ -39,33 +40,33 @@ declare namespace _default { calculateValue: string; calculateServer: boolean; widget: { - type: string; + type: string; }; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - min: string; - max: string; - step: string; - integer: string; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + min: string; + max: string; + step: string; + integer: string; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -84,7 +85,8 @@ declare namespace _default { block?: undefined; action?: undefined; theme?: undefined; - } | { + } + | { label: string; tableView: boolean; defaultValue: boolean; @@ -121,28 +123,28 @@ declare namespace _default { attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - min?: undefined; - max?: undefined; - step?: undefined; - integer?: undefined; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + min?: undefined; + max?: undefined; + step?: undefined; + integer?: undefined; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -166,7 +168,8 @@ declare namespace _default { block?: undefined; action?: undefined; theme?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -201,33 +204,33 @@ declare namespace _default { calculateValue: string; calculateServer: boolean; widget: { - type: string; + type: string; }; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - min?: undefined; - max?: undefined; - step?: undefined; - integer?: undefined; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + min?: undefined; + max?: undefined; + step?: undefined; + integer?: undefined; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -250,6 +253,7 @@ declare namespace _default { inputType?: undefined; value?: undefined; name?: undefined; - })[]; + } + )[]; } export default _default; diff --git a/test/forms/formWithCheckboxRadioType.d.ts b/test/forms/formWithCheckboxRadioType.d.ts index 43f95100ce..ea1750c023 100644 --- a/test/forms/formWithCheckboxRadioType.d.ts +++ b/test/forms/formWithCheckboxRadioType.d.ts @@ -1,10 +1,11 @@ declare namespace _default { - const title: string; - const name: string; - const path: string; - const type: string; - const display: string; - const components: ({ + const title: string; + const name: string; + const path: string; + const type: string; + const display: string; + const components: ( + | { label: string; inputType: string; tableView: boolean; @@ -15,7 +16,8 @@ declare namespace _default { value: string; input: boolean; radio: boolean; - } | { + } + | { label: string; inputType: string; tableView: boolean; @@ -26,7 +28,8 @@ declare namespace _default { value: string; input: boolean; radio?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -37,9 +40,10 @@ declare namespace _default { name?: undefined; value?: undefined; radio?: undefined; - })[]; - const created: string; - const modified: string; - const machineName: string; + } + )[]; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/formWithCheckboxRadioType.js b/test/forms/formWithCheckboxRadioType.js index c3f8a42c2c..581ead2d6c 100644 --- a/test/forms/formWithCheckboxRadioType.js +++ b/test/forms/formWithCheckboxRadioType.js @@ -1,42 +1,42 @@ export default { - title: 'test checkbox', - name: 'testCheckbox', - path: 'testcheckbox', - type: 'form', - display: 'form', - components: [ - { - label: 'Checkbox 1', - inputType: 'radio', - tableView: true, - defaultValue: false, - key: 'checkbox1', - type: 'checkbox', - name: 'radio', - value: 'value1', - input: true, - radio: false, - }, - { - label: 'Checkbox 2', - inputType: 'radio', - tableView: true, - defaultValue: false, - key: 'checkbox2', - type: 'checkbox', - name: 'radio', - value: 'value2', - input: true, - }, - { - label: 'Checkbox', - tableView: false, - key: 'checkbox', - type: 'checkbox', - input: true, - } - ], - created: '2022-09-01T09:12:45.581Z', - modified: '2022-09-05T08:51:16.048Z', - machineName: 'uubnbosxacwjzbk:testCheckbox', - }; + title: 'test checkbox', + name: 'testCheckbox', + path: 'testcheckbox', + type: 'form', + display: 'form', + components: [ + { + label: 'Checkbox 1', + inputType: 'radio', + tableView: true, + defaultValue: false, + key: 'checkbox1', + type: 'checkbox', + name: 'radio', + value: 'value1', + input: true, + radio: false, + }, + { + label: 'Checkbox 2', + inputType: 'radio', + tableView: true, + defaultValue: false, + key: 'checkbox2', + type: 'checkbox', + name: 'radio', + value: 'value2', + input: true, + }, + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + }, + ], + created: '2022-09-01T09:12:45.581Z', + modified: '2022-09-05T08:51:16.048Z', + machineName: 'uubnbosxacwjzbk:testCheckbox', +}; diff --git a/test/forms/formWithCheckboxRadioTypeAndValidation.js b/test/forms/formWithCheckboxRadioTypeAndValidation.js index be7a6472af..20be24d307 100644 --- a/test/forms/formWithCheckboxRadioTypeAndValidation.js +++ b/test/forms/formWithCheckboxRadioTypeAndValidation.js @@ -1,35 +1,35 @@ export default { - title: 'test checkbox', - name: 'testCheckbox', - path: 'testcheckbox', - type: 'form', - display: 'form', - components: [ - { - label: 'Checkbox 1', - inputType: 'radio', - tableView: false, - defaultValue: false, - key: 'checkbox1', - type: 'checkbox', - name: 'radio', - value: 'value1', - input: true, - radio: false, - validate: { - required: true - }, + title: 'test checkbox', + name: 'testCheckbox', + path: 'testcheckbox', + type: 'form', + display: 'form', + components: [ + { + label: 'Checkbox 1', + inputType: 'radio', + tableView: false, + defaultValue: false, + key: 'checkbox1', + type: 'checkbox', + name: 'radio', + value: 'value1', + input: true, + radio: false, + validate: { + required: true, }, - { - input: true, - label: 'Submit', - tableView: false, - key: 'submit', - type: 'button', - disableOnInvalid: true, - } - ], - created: '2022-09-01T09:12:45.581Z', - modified: '2022-09-05T08:51:16.048Z', - machineName: 'uubnbosxacwjzbk:testCheckbox', - }; + }, + { + input: true, + label: 'Submit', + tableView: false, + key: 'submit', + type: 'button', + disableOnInvalid: true, + }, + ], + created: '2022-09-01T09:12:45.581Z', + modified: '2022-09-05T08:51:16.048Z', + machineName: 'uubnbosxacwjzbk:testCheckbox', +}; diff --git a/test/forms/formWithDataGrid.d.ts b/test/forms/formWithDataGrid.d.ts index 364123fcdb..13121d9a42 100644 --- a/test/forms/formWithDataGrid.d.ts +++ b/test/forms/formWithDataGrid.d.ts @@ -1,15 +1,16 @@ declare namespace _default { - export { form }; - export { submission1row }; - export { submission3rows }; + export { form }; + export { submission1row }; + export { submission3rows }; } export default _default; declare namespace form { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { label: string; labelPosition: string; description: string; @@ -44,16 +45,16 @@ declare namespace form { allowCalculateOverride: boolean; validateOn: string; validate: { - required: boolean; - minLength: string; - maxLength: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + minLength: string; + maxLength: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; unique: boolean; errorLabel: string; @@ -61,21 +62,21 @@ declare namespace form { tags: never[]; properties: {}; conditional: { - show: null; - when: null; - eq: string; - json: string; + show: null; + when: null; + eq: string; + json: string; }; customConditional: string; logic: never[]; attributes: {}; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; input: boolean; @@ -90,86 +91,86 @@ declare namespace form { allowMultipleMasks: boolean; tree: boolean; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - min: string; - max: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - step: string; - integer: string; - }; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - input: boolean; + }; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + min: string; + max: string; + strictDateValidation: boolean; + multiple: boolean; unique: boolean; - refreshOn: string; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - id: string; - defaultValue: null; + step: string; + integer: string; + }; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + unique: boolean; + refreshOn: string; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + id: string; + defaultValue: null; }[]; id: string; disableOnInvalid?: undefined; @@ -180,7 +181,8 @@ declare namespace form { action?: undefined; theme?: undefined; dataGridLabel?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -214,35 +216,35 @@ declare namespace form { calculateValue: string; calculateServer: boolean; widget: { - type: string; + type: string; }; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - minLength?: undefined; - maxLength?: undefined; - customMessage?: undefined; - json?: undefined; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + minLength?: undefined; + maxLength?: undefined; + customMessage?: undefined; + json?: undefined; }; conditional: { - show: null; - when: null; - eq: string; - json?: undefined; + show: null; + when: null; + eq: string; + json?: undefined; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -271,26 +273,27 @@ declare namespace form { logic?: undefined; tree?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } declare namespace submission1row { - namespace data { - const dataGrid: { - number: number; - }[]; - } + namespace data { + const dataGrid: { + number: number; + }[]; + } } declare namespace submission3rows { - export namespace data_1 { - const dataGrid_1: { - number: number; - }[]; - export { dataGrid_1 as dataGrid }; - } - export { data_1 as data }; + export namespace data_1 { + const dataGrid_1: { + number: number; + }[]; + export { dataGrid_1 as dataGrid }; + } + export { data_1 as data }; } diff --git a/test/forms/formWithDataGrid.js b/test/forms/formWithDataGrid.js index d1f99a4c17..856627025b 100644 --- a/test/forms/formWithDataGrid.js +++ b/test/forms/formWithDataGrid.js @@ -1,261 +1,266 @@ const form = { - "_id": "5fb3a367921ccc8c3818b02a", - "type": "form", - "tags": [], - "owner": "5e949fd2dfad833c8893ef44", - "components": [{ - "label": "Data Grid", - "labelPosition": "top", - "description": "", - "tooltip": "", - "disableAddingRemovingRows": false, - "conditionalAddButton": "", - "reorder": false, - "addAnother": "", - "addAnotherPosition": "bottom", - "defaultOpen": false, - "layoutFixed": false, - "enableRowGroups": false, - "initEmpty": false, - "customClass": "", - "tabindex": "", - "hidden": false, - "hideLabel": false, - "autofocus": false, - "disabled": false, - "tableView": false, - "modalEdit": false, - "defaultValue": [{}], - "persistent": true, - "protected": false, - "dbIndex": false, - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "minLength": "", - "maxLength": "", - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "unique": false, - "errorLabel": "", - "key": "dataGrid", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" - }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + _id: '5fb3a367921ccc8c3818b02a', + type: 'form', + tags: [], + owner: '5e949fd2dfad833c8893ef44', + components: [ + { + label: 'Data Grid', + labelPosition: 'top', + description: '', + tooltip: '', + disableAddingRemovingRows: false, + conditionalAddButton: '', + reorder: false, + addAnother: '', + addAnotherPosition: 'bottom', + defaultOpen: false, + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + defaultValue: [{}], + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + minLength: '', + maxLength: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'dataGrid', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'datagrid', + input: true, + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + refreshOn: '', + widget: null, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: true, + components: [ + { + label: 'Number', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + min: '', + max: '', + strictDateValidation: false, + multiple: false, + unique: false, + step: 'any', + integer: '', + }, + errorLabel: '', + key: 'number', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'number', + input: true, + unique: false, + refreshOn: '', + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: 'ep0otn0', + defaultValue: null, + }, + ], + id: 'egnjdp', }, - "type": "datagrid", - "input": true, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "refreshOn": "", - "widget": null, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": true, - "components": [{ - "label": "Number", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + refreshOn: '', + redrawOn: '', + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: { + type: 'input', }, - "customClass": "", - "tabindex": "", - "autocomplete": "", - "hidden": false, - "hideLabel": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": false, - "modalEdit": false, - "multiple": false, - "persistent": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "min": "", - "max": "", - "strictDateValidation": false, - "multiple": false, - "unique": false, - "step": "any", - "integer": "" + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "errorLabel": "", - "key": "number", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + conditional: { + show: null, + when: null, + eq: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', }, - "type": "number", - "input": true, - "unique": false, - "refreshOn": "", - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "id": "ep0otn0", - "defaultValue": null - }], - "id": "egnjdp" - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "input": true, - "tableView": false, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": true, - "refreshOn": "", - "redrawOn": "", - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": { - "type": "input" - }, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + size: 'md', + leftIcon: '', + rightIcon: '', + block: false, + action: 'submit', + theme: 'primary', + dataGridLabel: true, + id: 'eattlla', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "size": "md", - "leftIcon": "", - "rightIcon": "", - "block": false, - "action": "submit", - "theme": "primary", - "dataGridLabel": true, - "id": "eattlla" - }], - "title": "dataGridTest", - "display": "form", - "name": "dataGridTest", - "path": "datagridtest", - "machineName": "cjksbatcpbhyfbs:dataGridTest" + ], + title: 'dataGridTest', + display: 'form', + name: 'dataGridTest', + path: 'datagridtest', + machineName: 'cjksbatcpbhyfbs:dataGridTest', }; const submission3rows = { - data: { - dataGrid: [{ number: 1 }, { number: 2 }, { number: 3 }] - } + data: { + dataGrid: [{ number: 1 }, { number: 2 }, { number: 3 }], + }, }; const submission1row = { - data: { - dataGrid: [{ number: 555 }] - } + data: { + dataGrid: [{ number: 555 }], + }, }; export default { diff --git a/test/forms/formWithDayComp.d.ts b/test/forms/formWithDayComp.d.ts index b8a18aa40b..29724977d4 100644 --- a/test/forms/formWithDayComp.d.ts +++ b/test/forms/formWithDayComp.d.ts @@ -1,29 +1,31 @@ declare namespace _default { - const _id: string; - const type: string; - const components: ({ + const _id: string; + const type: string; + const components: ( + | { label: string; hideInputLabels: boolean; inputsLabelPosition: string; useLocaleSettings: boolean; tableView: boolean; fields: { - day: { - hide: boolean; - }; - month: { - hide: boolean; - }; - year: { - hide: boolean; - }; + day: { + hide: boolean; + }; + month: { + hide: boolean; + }; + year: { + hide: boolean; + }; }; key: string; type: string; input: boolean; defaultValue: string; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -35,11 +37,12 @@ declare namespace _default { useLocaleSettings?: undefined; fields?: undefined; defaultValue?: undefined; - })[]; - const title: string; - const display: string; - const controller: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const controller: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/formWithDayComp.js b/test/forms/formWithDayComp.js index a71b0cd682..368911449e 100644 --- a/test/forms/formWithDayComp.js +++ b/test/forms/formWithDayComp.js @@ -1,24 +1,31 @@ export default { - _id: '60eea4803b352ff0441d4843', - type: 'form', - components: [ - { - label: 'Day', - hideInputLabels: false, - inputsLabelPosition: 'top', - useLocaleSettings: false, - tableView: false, - fields: { day: { hide: false }, month: { hide: false }, year: { hide: false } }, - key: 'day', - type: 'day', - input: true, - defaultValue: '00/00/0000' - }, - { type: 'button', label: 'Submit', key: 'submit', disableOnInvalid: true, input: true, tableView: false } - ], - title: 'dat test', - display: 'form', - controller: '', - name: 'dateTest', - path: 'datetest', + _id: '60eea4803b352ff0441d4843', + type: 'form', + components: [ + { + label: 'Day', + hideInputLabels: false, + inputsLabelPosition: 'top', + useLocaleSettings: false, + tableView: false, + fields: { day: { hide: false }, month: { hide: false }, year: { hide: false } }, + key: 'day', + type: 'day', + input: true, + defaultValue: '00/00/0000', + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], + title: 'dat test', + display: 'form', + controller: '', + name: 'dateTest', + path: 'datetest', }; diff --git a/test/forms/formWithDeeplyNestedConditionalComps.js b/test/forms/formWithDeeplyNestedConditionalComps.js index b5c5ec57f8..d02ecf82ed 100644 --- a/test/forms/formWithDeeplyNestedConditionalComps.js +++ b/test/forms/formWithDeeplyNestedConditionalComps.js @@ -1,158 +1,158 @@ export default { - title: 'FD39656 Edit Grids in Panels', - name: 'fd39656EditGridsInPanels', - path: 'fd39656editgridsinpanels', - type: 'form', - display: 'form', - components: [ - { - label: 'Radio1', - optionsLabelPosition: 'right', - inline: false, - tableView: false, - values: [ + title: 'FD39656 Edit Grids in Panels', + name: 'fd39656EditGridsInPanels', + path: 'fd39656editgridsinpanels', + type: 'form', + display: 'form', + components: [ + { + label: 'Radio1', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ + { + label: 'yes', + value: 'yes', + shortcut: '', + }, + { + label: 'no', + value: 'no', + shortcut: '', + }, + ], + key: 'radio1', + type: 'radio', + input: true, + }, + { + label: 'Container', + tableView: false, + key: 'container', + conditional: { + show: true, + conjunction: 'all', + conditions: [ { - label: 'yes', + component: 'radio1', + operator: 'isEqual', value: 'yes', - shortcut: '', - }, - { - label: 'no', - value: 'no', - shortcut: '', }, ], - key: 'radio1', - type: 'radio', - input: true, }, - { - label: 'Container', - tableView: false, - key: 'container', - conditional: { - show: true, - conjunction: 'all', - conditions: [ + type: 'container', + input: true, + components: [ + { + title: 'Panel in Hidden Container', + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ { - component: 'radio1', - operator: 'isEqual', - value: 'yes', - }, - ], - }, - type: 'container', - input: true, - components: [ - { - title: 'Panel in Hidden Container', - collapsible: false, - key: 'panel', - type: 'panel', - label: 'Panel', - input: false, - tableView: false, - components: [ - { - label: 'Hidden Checkbox in Panel in Hidden Container', - tableView: false, - defaultValue: false, - key: 'checkbox', - conditional: { - show: true, - conjunction: 'all', - conditions: [ - { - component: 'radio1', - operator: 'isEqual', - value: 'yes', - }, - ], - }, - type: 'checkbox', - input: true, - }, - { - label: 'Checkbox in Panel in Hidden Container', - tableView: false, - key: 'checkboxInPanelInHiddenContainer', - type: 'checkbox', - input: true, - defaultValue: false, - }, - { - label: 'Text Field', - applyMaskOn: 'change', - tableView: true, - key: 'textField', - conditional: { - show: true, - conjunction: 'all', - conditions: [ - { - component: 'radio1', - operator: 'isEqual', - value: 'yes', - }, - ], - }, - type: 'textfield', - input: true, - }, - { - label: 'Edit Grid', - tableView: false, - rowDrafts: false, - key: 'editGrid', - type: 'editgrid', - displayAsTable: false, - input: true, - components: [ + label: 'Hidden Checkbox in Panel in Hidden Container', + tableView: false, + defaultValue: false, + key: 'checkbox', + conditional: { + show: true, + conjunction: 'all', + conditions: [ { - label: 'Text Field', - applyMaskOn: 'change', - tableView: true, - key: 'textField', - conditional: { - show: true, - conjunction: 'all', - conditions: [ - { - component: 'container.editGrid.number', - operator: 'isEqual', - value: 1, - }, - ], - }, - type: 'textfield', - input: true, + component: 'radio1', + operator: 'isEqual', + value: 'yes', }, + ], + }, + type: 'checkbox', + input: true, + }, + { + label: 'Checkbox in Panel in Hidden Container', + tableView: false, + key: 'checkboxInPanelInHiddenContainer', + type: 'checkbox', + input: true, + defaultValue: false, + }, + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + key: 'textField', + conditional: { + show: true, + conjunction: 'all', + conditions: [ { - label: 'Number', - applyMaskOn: 'change', - mask: false, - tableView: true, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - truncateMultipleSpaces: false, - key: 'number', - type: 'number', - input: true, + component: 'radio1', + operator: 'isEqual', + value: 'yes', }, ], }, - ], - }, - ], - }, - { - type: 'button', - label: 'Submit', - key: 'submit', - disableOnInvalid: true, - input: true, - tableView: false, - }, - ], + type: 'textfield', + input: true, + }, + { + label: 'Edit Grid', + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + displayAsTable: false, + input: true, + components: [ + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + key: 'textField', + conditional: { + show: true, + conjunction: 'all', + conditions: [ + { + component: 'container.editGrid.number', + operator: 'isEqual', + value: 1, + }, + ], + }, + type: 'textfield', + input: true, + }, + { + label: 'Number', + applyMaskOn: 'change', + mask: false, + tableView: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + key: 'number', + type: 'number', + input: true, + }, + ], + }, + ], + }, + ], + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], }; diff --git a/test/forms/formWithEditGrid.js b/test/forms/formWithEditGrid.js index 48a65fb3e1..563bfe9a2b 100644 --- a/test/forms/formWithEditGrid.js +++ b/test/forms/formWithEditGrid.js @@ -1,85 +1,83 @@ export default { - "title": "formWithEditGrid", - "display": "form", - "type": "form", - "components": [ - { - "label": "Data Grid", - "reorder": false, - "addAnotherPosition": "bottom", - "layoutFixed": false, - "enableRowGroups": false, - "initEmpty": false, - "tableView": false, - "defaultValue": [ - {} - ], - "validateWhenHidden": false, - "key": "dataGrid", - "type": "datagrid", - "input": true, - "components": [ - { - "collapsible": false, - "key": "panel", - "type": "panel", - "label": "Panel", - "input": false, - "tableView": false, - "components": [ - { - "label": "Text Field", - "applyMaskOn": "change", - "tableView": true, - "validateWhenHidden": false, - "key": "textField", - "type": "textfield", - "input": true, - "validate": { - "required": true - } - } - ] - } - ] - }, - { - "label": "Edit Grid", - "tableView": false, - "validateWhenHidden": false, - "rowDrafts": false, - "key": "editGrid", - "type": "editgrid", - "displayAsTable": false, - "input": true, - "components": [ - { - "label": "Number", - "applyMaskOn": "change", - "mask": false, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "truncateMultipleSpaces": false, - "validate": { - "required": true + title: 'formWithEditGrid', + display: 'form', + type: 'form', + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{}], + validateWhenHidden: false, + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ + { + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + validateWhenHidden: false, + key: 'textField', + type: 'textfield', + input: true, + validate: { + required: true, + }, }, - "validateWhenHidden": false, - "key": "number", - "type": "number", - "input": true - } - ] - }, - { - "label": "Submit", - "showValidations": false, - "alwaysEnabled": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - } - ], + ], + }, + ], + }, + { + label: 'Edit Grid', + tableView: false, + validateWhenHidden: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + displayAsTable: false, + input: true, + components: [ + { + label: 'Number', + applyMaskOn: 'change', + mask: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + validate: { + required: true, + }, + validateWhenHidden: false, + key: 'number', + type: 'number', + input: true, + }, + ], + }, + { + label: 'Submit', + showValidations: false, + alwaysEnabled: false, + tableView: false, + key: 'submit', + type: 'button', + input: true, + }, + ], }; diff --git a/test/forms/formWithEventLogicInHiddenComponent.d.ts b/test/forms/formWithEventLogicInHiddenComponent.d.ts index 7ab2d245ea..f3db1a0eb9 100644 --- a/test/forms/formWithEventLogicInHiddenComponent.d.ts +++ b/test/forms/formWithEventLogicInHiddenComponent.d.ts @@ -1,15 +1,16 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; widget: string; tableView: boolean; multiple: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; key: string; type: string; @@ -29,7 +30,8 @@ declare namespace _default { components?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; disableAddingRemovingRows: boolean; reorder: boolean; @@ -43,48 +45,49 @@ declare namespace _default { tableView: boolean; clearOnHide: boolean; validate: { - custom: string; + custom: string; }; key: string; logic: { + name: string; + trigger: { + type: string; + simple: { + show: boolean; + when: string; + eq: string; + }; + }; + actions: { name: string; - trigger: { - type: string; - simple: { - show: boolean; - when: string; - eq: string; - }; + type: string; + property: { + label: string; + value: string; + type: string; }; - actions: { - name: string; - type: string; - property: { - label: string; - value: string; - type: string; - }; - state: boolean; - }[]; + state: boolean; + }[]; }[]; type: string; input: boolean; components: { - label: string; - columns: ({ + label: string; + columns: ( + | { components: { - label: string; - tag: string; - attrs: { - attr: string; - value: string; - }[]; - content: string; - refreshOnChange: boolean; - key: string; - type: string; - input: boolean; - tableView: boolean; + label: string; + tag: string; + attrs: { + attr: string; + value: string; + }[]; + content: string; + refreshOnChange: boolean; + key: string; + type: string; + input: boolean; + tableView: boolean; }[]; width: number; offset: number; @@ -92,38 +95,42 @@ declare namespace _default { pull: number; size: string; currentWidth: number; - } | { + } + | { components: { - label: string; - hideLabel: boolean; - disableSortingAndFiltering: boolean; - tableView: boolean; - clearOnHide: boolean; - key: string; - logic: { - name: string; - trigger: { - type: string; - simple: {}; - event: string; - }; - actions: ({ - name: string; - type: string; - value: string; - customAction?: undefined; - } | { - name: string; - type: string; - customAction: string; - value?: undefined; - })[]; - }[]; - type: string; - delimiter: boolean; - requireDecimal: boolean; - enableManualMode: boolean; - input: boolean; + label: string; + hideLabel: boolean; + disableSortingAndFiltering: boolean; + tableView: boolean; + clearOnHide: boolean; + key: string; + logic: { + name: string; + trigger: { + type: string; + simple: {}; + event: string; + }; + actions: ( + | { + name: string; + type: string; + value: string; + customAction?: undefined; + } + | { + name: string; + type: string; + customAction: string; + value?: undefined; + } + )[]; + }[]; + type: string; + delimiter: boolean; + requireDecimal: boolean; + enableManualMode: boolean; + input: boolean; }[]; width: number; offset: number; @@ -131,20 +138,22 @@ declare namespace _default { pull: number; size: string; currentWidth: number; - })[]; - hideLabel: boolean; - disableSortingAndFiltering: boolean; - key: string; - type: string; - input: boolean; - tableView: boolean; + } + )[]; + hideLabel: boolean; + disableSortingAndFiltering: boolean; + key: string; + type: string; + input: boolean; + tableView: boolean; }[]; widget?: undefined; multiple?: undefined; data?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; disableAddingRemovingRows: boolean; reorder: boolean; @@ -157,48 +166,49 @@ declare namespace _default { tableView: boolean; clearOnHide: boolean; validate: { - custom: string; + custom: string; }; key: string; logic: { + name: string; + trigger: { + type: string; + simple: { + show: boolean; + when: string; + eq: string; + }; + }; + actions: { name: string; - trigger: { - type: string; - simple: { - show: boolean; - when: string; - eq: string; - }; + type: string; + property: { + label: string; + value: string; + type: string; }; - actions: { - name: string; - type: string; - property: { - label: string; - value: string; - type: string; - }; - state: boolean; - }[]; + state: boolean; + }[]; }[]; type: string; input: boolean; components: { - label: string; - columns: ({ + label: string; + columns: ( + | { components: { - label: string; - tag: string; - attrs: { - attr: string; - value: string; - }[]; - content: string; - refreshOnChange: boolean; - key: string; - type: string; - input: boolean; - tableView: boolean; + label: string; + tag: string; + attrs: { + attr: string; + value: string; + }[]; + content: string; + refreshOnChange: boolean; + key: string; + type: string; + input: boolean; + tableView: boolean; }[]; width: number; offset: number; @@ -206,36 +216,40 @@ declare namespace _default { pull: number; size: string; currentWidth: number; - } | { + } + | { components: { - label: string; - hideLabel: boolean; - disableSortingAndFiltering: boolean; - tableView: boolean; - clearOnHide: boolean; - key: string; - logic: { - name: string; - trigger: { - type: string; - event: string; - }; - actions: ({ - name: string; - type: string; - value: string; - customAction?: undefined; - } | { - name: string; - type: string; - customAction: string; - value?: undefined; - })[]; - }[]; - type: string; - delimiter: boolean; - requireDecimal: boolean; - input: boolean; + label: string; + hideLabel: boolean; + disableSortingAndFiltering: boolean; + tableView: boolean; + clearOnHide: boolean; + key: string; + logic: { + name: string; + trigger: { + type: string; + event: string; + }; + actions: ( + | { + name: string; + type: string; + value: string; + customAction?: undefined; + } + | { + name: string; + type: string; + customAction: string; + value?: undefined; + } + )[]; + }[]; + type: string; + delimiter: boolean; + requireDecimal: boolean; + input: boolean; }[]; width: number; offset: number; @@ -243,13 +257,14 @@ declare namespace _default { pull: number; size: string; currentWidth: number; - })[]; - hideLabel: boolean; - disableSortingAndFiltering: boolean; - key: string; - type: string; - input: boolean; - tableView: boolean; + } + )[]; + hideLabel: boolean; + disableSortingAndFiltering: boolean; + key: string; + type: string; + input: boolean; + tableView: boolean; }[]; widget?: undefined; multiple?: undefined; @@ -257,27 +272,28 @@ declare namespace _default { hidden?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; key: string; logic: { + name: string; + trigger: { + type: string; + event: string; + }; + actions: { name: string; - trigger: { - type: string; - event: string; + type: string; + property: { + label: string; + value: string; + type: string; }; - actions: { - name: string; - type: string; - property: { - label: string; - value: string; - type: string; - }; - state: boolean; - }[]; + state: boolean; + }[]; }[]; type: string; saveOnEnter: boolean; @@ -297,11 +313,12 @@ declare namespace _default { clearOnHide?: undefined; validate?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/formWithFormController.js b/test/forms/formWithFormController.js index f49e9f43f6..8c3e523250 100644 --- a/test/forms/formWithFormController.js +++ b/test/forms/formWithFormController.js @@ -1,32 +1,32 @@ export default { - _id: '636e1e0848707efbd322ea71', - title: 'test controller', - name: 'testcontroller', - path: 'testcontroller', - type: 'form', - display: 'form', - components: [ - { - title: 'Page 1', - label: 'Page 1', - type: 'panel', - key: 'page1', - components: [ - { - label: 'Text Field', - tableView: true, - key: 'textField', - type: 'textfield', - input: true, - }, - ], - input: false, - tableView: false, - }, - ], - controller: - "data.textField = 'Hello World';\r\ncomponents[0].disabled = true;\r\ninstance.redraw()", - created: '2022-11-11T10:03:52.187Z', - modified: '2022-11-11T11:21:15.386Z', - machineName: 'ienrmkptejwkozk:gggggg', + _id: '636e1e0848707efbd322ea71', + title: 'test controller', + name: 'testcontroller', + path: 'testcontroller', + type: 'form', + display: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + ], + input: false, + tableView: false, + }, + ], + controller: + "data.textField = 'Hello World';\r\ncomponents[0].disabled = true;\r\ninstance.redraw()", + created: '2022-11-11T10:03:52.187Z', + modified: '2022-11-11T11:21:15.386Z', + machineName: 'ienrmkptejwkozk:gggggg', }; diff --git a/test/forms/formWithNotAllowedTags.js b/test/forms/formWithNotAllowedTags.js index 8ed659091a..ba9dad9af0 100644 --- a/test/forms/formWithNotAllowedTags.js +++ b/test/forms/formWithNotAllowedTags.js @@ -1,45 +1,45 @@ export default { - _id: '65bb9a72798447442979fe59', - title: 'check dompurify', - name: 'checkDompurify', - path: 'checkdompurify', - type: 'form', - display: 'form', - components: [ - { - label: 'Text Field with script ', - applyMaskOn: 'change', - tableView: true, - validate: { - required: true, - }, - key: 'textFieldWithScript', - type: 'textfield', - validateWhenHidden: false, - input: true, + _id: '65bb9a72798447442979fe59', + title: 'check dompurify', + name: 'checkDompurify', + path: 'checkdompurify', + type: 'form', + display: 'form', + components: [ + { + label: 'Text Field with script ', + applyMaskOn: 'change', + tableView: true, + validate: { + required: true, }, - { - label: 'Text Area with iframe ', - applyMaskOn: 'change', - autoExpand: false, - tableView: true, - validate: { - minLength: 555, - }, - key: 'textAreaWithIframe', - type: 'textarea', - input: true, + key: 'textFieldWithScript', + type: 'textfield', + validateWhenHidden: false, + input: true, + }, + { + label: 'Text Area with iframe ', + applyMaskOn: 'change', + autoExpand: false, + tableView: true, + validate: { + minLength: 555, }, - { - label: 'Submit', - showValidations: false, - tableView: false, - key: 'submit', - type: 'button', - input: true, - saveOnEnter: false, - }, - ], - settings: {}, - globalSettings: {}, -}; \ No newline at end of file + key: 'textAreaWithIframe', + type: 'textarea', + input: true, + }, + { + label: 'Submit', + showValidations: false, + tableView: false, + key: 'submit', + type: 'button', + input: true, + saveOnEnter: false, + }, + ], + settings: {}, + globalSettings: {}, +}; diff --git a/test/forms/formWithRadioInsideDataGrid.d.ts b/test/forms/formWithRadioInsideDataGrid.d.ts index 0538fcb468..e9214a09d2 100644 --- a/test/forms/formWithRadioInsideDataGrid.d.ts +++ b/test/forms/formWithRadioInsideDataGrid.d.ts @@ -1,10 +1,11 @@ declare namespace _default { - const title: string; - const name: string; - const path: string; - const type: string; - const display: string; - const components: ({ + const title: string; + const name: string; + const path: string; + const type: string; + const display: string; + const components: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -17,21 +18,22 @@ declare namespace _default { type: string; input: boolean; components: { + label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - key: string; - type: string; - input: boolean; + value: string; + shortcut: string; + }[]; + key: string; + type: string; + input: boolean; }[]; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -45,6 +47,7 @@ declare namespace _default { initEmpty?: undefined; defaultValue?: undefined; components?: undefined; - })[]; + } + )[]; } export default _default; diff --git a/test/forms/formWithRadioInsideDataGrid.js b/test/forms/formWithRadioInsideDataGrid.js index 623c853006..191a30bde6 100644 --- a/test/forms/formWithRadioInsideDataGrid.js +++ b/test/forms/formWithRadioInsideDataGrid.js @@ -54,5 +54,5 @@ export default { type: 'button', input: true, }, - ] + ], }; diff --git a/test/forms/formWithRichTextAreas.js b/test/forms/formWithRichTextAreas.js index d8858d01cd..cd548f6a59 100644 --- a/test/forms/formWithRichTextAreas.js +++ b/test/forms/formWithRichTextAreas.js @@ -7,7 +7,7 @@ export default { key: 'textArea', type: 'textarea', input: true, - isUploadEnabled: false + isUploadEnabled: false, }, { label: 'Text Area Ace', @@ -16,7 +16,7 @@ export default { key: 'textAreaAce', type: 'textarea', input: true, - isUploadEnabled: false + isUploadEnabled: false, }, { type: 'button', @@ -24,8 +24,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], display: 'form', }; diff --git a/test/forms/formWithSelectBoxes.d.ts b/test/forms/formWithSelectBoxes.d.ts index 066af2ace9..ebf5403917 100644 --- a/test/forms/formWithSelectBoxes.d.ts +++ b/test/forms/formWithSelectBoxes.d.ts @@ -1,21 +1,23 @@ declare namespace _default { - const _id: string; - const type: string; - const components: ({ + const _id: string; + const type: string; + const components: ( + | { label: string; optionsLabelPosition: string; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; input: boolean; inputType: string; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -25,10 +27,11 @@ declare namespace _default { optionsLabelPosition?: undefined; values?: undefined; inputType?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/formWithSelectBoxes.js b/test/forms/formWithSelectBoxes.js index a05e748cc4..2318336ba1 100644 --- a/test/forms/formWithSelectBoxes.js +++ b/test/forms/formWithSelectBoxes.js @@ -1,44 +1,44 @@ export default { - _id: '60eea4803b352ff0441d4843', - type: 'form', - components: [ - { - label: 'Select Boxes', - optionsLabelPosition: 'right', - tableView: false, - values: [ - { - label: 'a', - value: 'a', - shortcut: '' - }, - { - label: 'b', - value: 'b', - shortcut: '' - }, - { - label: 'c', - value: 'c', - shortcut: '' - } - ], - key: 'selectBoxes', - type: 'selectboxes', - input: true, - inputType: 'checkbox' - }, - { - type: 'button', - label: 'Submit', - key: 'submit', - disableOnInvalid: true, - input: true, - tableView: false - } - ], - title: 'select boxes test', - display: 'form', - name: 'selectBoxesTest', - path: 'selectboxestest', + _id: '60eea4803b352ff0441d4843', + type: 'form', + components: [ + { + label: 'Select Boxes', + optionsLabelPosition: 'right', + tableView: false, + values: [ + { + label: 'a', + value: 'a', + shortcut: '', + }, + { + label: 'b', + value: 'b', + shortcut: '', + }, + { + label: 'c', + value: 'c', + shortcut: '', + }, + ], + key: 'selectBoxes', + type: 'selectboxes', + input: true, + inputType: 'checkbox', + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + input: true, + tableView: false, + }, + ], + title: 'select boxes test', + display: 'form', + name: 'selectBoxesTest', + path: 'selectboxestest', }; diff --git a/test/forms/formWithSignature.d.ts b/test/forms/formWithSignature.d.ts index 1a88267b00..7b3ac28cda 100644 --- a/test/forms/formWithSignature.d.ts +++ b/test/forms/formWithSignature.d.ts @@ -1,33 +1,33 @@ declare namespace _default { - export { form }; - export { submission }; + export { form }; + export { submission }; } export default _default; declare namespace form { - const type: string; - const components: { - title: string; - label: string; - type: string; - key: string; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; - input: boolean; - tableView: boolean; + const type: string; + const components: { + title: string; + label: string; + type: string; + key: string; + components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + input: boolean; + tableView: boolean; + }[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } declare namespace submission { - namespace data { - const signature: string; - } + namespace data { + const signature: string; + } } diff --git a/test/forms/formWithSignature.js b/test/forms/formWithSignature.js index daf3d3fa6d..e10c4f62bf 100644 --- a/test/forms/formWithSignature.js +++ b/test/forms/formWithSignature.js @@ -1,31 +1,36 @@ const form = { - 'type': 'form', - 'components': [{ - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [{ - 'label': 'Signature', - 'tableView': false, - 'key': 'signature', - 'type': 'signature', - 'input': true - }], - 'input': false, - 'tableView': false - }], - 'title': 'HTMLmode', - 'display': 'wizard', - 'name': 'htmLmode', - 'path': 'htmlmode', - 'machineName': 'cjksbatcpbhyfbs:htmLmode' + type: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Signature', + tableView: false, + key: 'signature', + type: 'signature', + input: true, + }, + ], + input: false, + tableView: false, + }, + ], + title: 'HTMLmode', + display: 'wizard', + name: 'htmLmode', + path: 'htmlmode', + machineName: 'cjksbatcpbhyfbs:htmLmode', }; const submission = { data: { - signature: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAACWCAYAAAAYC9T6AAAcO0lEQVR4Xu3df4yV1Z3H8TNRgSjCaIlULMMiLah1wG43+0cVGpPNLhBoRd10KMMfm2yAyEjbsB0quBv2D8ZU0k27ZSho2ewuQ0RLrBEWtKS724LUGmKWGU3bpFQZaGsryjDCBv9gZ/M5j9/hYebO3Hvn/jrnue8nMTPO3Ps853mdhzufe+73nKfh4sV3BxwbAggggAACCCCAAAIIFCzQQIgu2IoHIoAAAggggAACCCDgBQjRXAgIIIAAAggggAACCBQpQIguEoyHI4AAAggggAACCCBAiOYaQAABBBBAAAEEEECgSAFCdJFgPBwBBBBAAAEEEEAAAUI01wACCCCAAAIIIIAAAkUKEKKLBOPhCCCAAAIIIIAAAggQorkGEEAAAQQQQAABBBAoUoAQXSQYD0cAAQQQQAABBBBAgBDNNYAAAggggAACCCCAQJEChOgiwXg4AggggAACCCCAAAKEaK4BBBBAAAEEEEAAAQSKFCBEFwnGwxFAAAEEEEAAAQQQIERzDSCAAAIIIIAAAgggUKQAIbpIMB6OAAIIIIAAAggggAAhmmsAAQQQQAABBMoicOrUab+f3t5eN3nyZHfqVK9raGgY3Ld+NnnyJDd37t1lOR47QaCWAoToWupzbAQQQAABBGokcP78eR909bWvr981Nk7yLenufsM1NTVdFYb1mO7uN30A1n96jP5TGNZX/f7IkWNuyZJFfp8WorUT/c42heze3tP+MW1tq93GjV+v0dlzWARKFyBEl27IHhBAAAEEEChZQAFTgdNCp0KrhVCN6J4/3+/6+q4E0iu/O+0DsJ4/adIk19/f75/X1DTdB17bGhsn+28VYC0Az59/rz/e/v0HXVvbGv/7rq5nXGvrcv+9fr506WK/H+1/xozpbsaMJv8c7Uf/b/ssFEDP3b17r9uw4XH3la+sdR0dmwt9Ko9DICgBQnRQ3UFjEEAAAQSyImBh2EocdF4Kw0ePHnMDAwP+NDUCnB6p1c8UTDUSrJ8rsCrApgOwhVYLsLF6NTf/ubvhhuvdq6/+d6ynQLvrXIAQXecXAKePAAIIIFC4gAVehV+VJfT19fmAq6Dc3d3jR231/ZYtT7pNm9r9jn/601fc0qWLfCBWiE6C8ZVR3MKPnq1H3nnnnzqNhD/11HezdWKcTd0IEKLrpqs5UQQQQACBkQRstFghuafnDaeBYiud0M/0+yNHXnFr164eHBVWIFZNsIViPY4Jc4VdY+3tm1xn51PupZde8EGaDYEYBQjRMfYabUYAAQQQyCuQrjFWILb/1xMtGNvIsJVGWBnFggX3Dk6uU72xRo7ZyiPQ1bXXrV79qJ9UaKP15dkze0GgugKE6Op6czQEEEAAgRIELPxqkp2tCmE/U1BWeYV+pxFh/Vyh2EaHbVKcDk85RQmdUMJTVebS0bHVrVjRQhlHCY48NQwBQnQY/UArEEAAgboWyBWONUpsZRb6XpuNGFsJgMLwvHnJmsMKzLFPtsvqRaB+1OjziRM9fmk7RqCz2tP1dV6E6Prqb84WAQQQqImArQ9so8cWkBWe335bk+2m+1pjjRono8RJINb31BnXpMvKdlAr39Dye8899+/UQJdNlh3VWoAQXese4PgIIIBABgQUjhWMe3vP+BttnDjxhj8r/UxLtKVDMQE5Ax1ewCloImZ7++O+7EY3YdEqHNSWFwDHQ6IRIERH01U0FAEEEKidgE3Ks6CsgKT6Y/08XXOskgqVV+grE/Jq11+1PLKuDa28oRu1NDd/2m3duoXR51p2CMeumAAhumK07BgBBBCIS8BKLTRBz27rrNCsMgubiGchmTKLuPq2Gq3VNdPZudPt33/If/qg5QBV/8yGQFYFCNFZ7VnOCwEEEMghkNQm9/o1kJMVLnr8zUC0pJs2m5yXLrkAEoHRBDTyvGXLVv/GS+FZN5bRxEFKN7husi5AiM56D3N+CCBQdwKarNfd/ebgcm8CUFDWltwcZLr/nqBcd5dG2U5Y19iRI8f8nRkVnlW2obs1trYuZ4WUsimzo9AFCNGh9xDtQwABBIYI2K2nFZSdG/C/Vf2pRpkVZLSpDCN9wxCWfuMyKoeAAnNX1zPuwIFD/nrTihsadV65soWR53IAs4+oBAjRUXUXjUUAgXoTsNpkhWCFlm3bdri2tjWDQVmh2QIyH5/X29VR2PnmWoNbz7Q3Y7YXlfio/r2xsdEN6L7nH23jx49zJ0++5Ueef/Obt/xPb7nlFrd+/TpqngvrAh6VUQFCdEY7ltNCAIE4BOxmIqpNVo2y1tRNloSbPnjbaX0/d26zPyFGlOPo12q30kp4kq/JcoO6tlSvXOw2YcIEd+nSpYKeZhNM9amHSoW0lB0bAvUiQIiul57mPBFAoGYCNhLY0/OG6+vrd6dOnfJfNcHPbi6irxoF5K57Neumih5YwVabQqf63bmGvMdLjxTbNTRlysfc2bPv+aCskWPty96I5dphU9P0wTdkdttzvUnTtWbtST/v9df/xx0+/J/u+PHX3Zkzv/W/0qjzZz97j5sz51Pu+uuv9yPYOqaCek+PSoqubDo/TSzcuLGdN3x5e5gHxC5AiI69B2k/AggEI2CjgL29p/1EPo0s/+QnR/26yQoXulW1fc9d+ILptpIaohIHbTbiW2i4HetBFYB1XdmmCX3pN1+2FKEmjRZ6janNOg/VOlvY1/61b5UO6bod7RMQPUfXu56fDtUtLX/tdu3aPtZT5XkIBC9AiA6+i2ggAgiEKKDgoJFlfdXd+TQiqElWKrtIyi+0CkbhQSbEc6RNiYCNvCpoWtmNvo42AlyqnY0gp9fnVli+555md+ONGkmeVNJEPl23mhyo4Js+D13DmiSoWnuF52I3vZnYsOHv3YkTPf6pTzzxj27dukeK3Q2PRyAKAUJ0FN1EIxFAoFYCtpSXTfBTeNKcKwXlZIQuCcqFjvrV6jw4bmECQ98cqbzh4sWLhT05x6MUSvXpg20Wim0SqK4fK68Y+rsxHzTHExWUjx59xY8Y62Yo6VIRtVE1za2tLf7rWCeofvDBB2737mfcz372c/f88y/6Vuzbt8ctWvSX5TwV9oVAMAKE6GC6goYggECtBWxyVvLx9it+1FEBw4KyLRnH5L5a91R5j6/lATUqOzRc5juKBWSbXKevVq5jgTjfPir1e42a69MRhWZdy7lGzVesSEKzapjHGpyt/d/73tNu165/c7/4xa/8j7TCx5IlC93Ond+t1CmyXwRqLkCIrnkX0AAEEKiVgNWCKizr+7ffTtZW1qiyfS01XNTq3Dju6AIKlXv27B1WzpDrWZMm3egWLLhvcIKegnIIE0AVlK8sX3feB+bRJhqqxlnXtT5BsfXES71Oduz4vlu//rGrdtPRsdnNnv0pRqBLxeX5wQsQooPvIhqIAALlELBJf7pBiUbmNOFPgcLKMkr5GLsc7WMf1RHQm6XOzp1+KcGRNo0wK2Sm30xVp3VXHyW9qouthqGvOoehazwPbZ+VaFTq+la5xmOP/cPgCh46/sSJE923vvWEW7jwL9yUKVNqQcYxEaiqACG6qtwcDAEEqiWgsKFROX1Mr0lO+n+NwCkYaSRxLJOmqtV2jlNeAQXOrq5nXWfnjhEnA1pwbmtbXZP6dl2fNlE134iydJIyo+l+ZQ5bJtFu427/P5qirSaiEXVt+rei4HvnnXOGPU2hfdq0j7ve3jPupZcOD5aIpB+of09dXd8nPJf30mVvgQsQogPvIJqHAAL5BRSStO6y1TErkFidqt2ohDrm/I5ZeoSuCatzVs3zSJtWwdCEOoXnapXuJKPJPe7dd8+65557PufIsi1dN9o64vZGUWtOp0entX6zlsHTOtI2Ym2j2jrHCxcuuMuXL+ck+cxn5rn333+/4JVHZs6c4b785S+5jRu/nqXLh3NBoCABQnRBTDwIAQRCE7B6Zt24RGEivaScAnO1AlFoLvXenh/96Mfu2Wf3ub17941KYWsgK0BXclN4TUaWz1z1Jk/HVGCdOPGGj1Z3afardNgSiUko7vch2AKyrnMF40LKOSp5TrbvBx/8gtu8eZObNev2ahyOYyAQnAAhOrguoUEIIDBUwEYVz50773+lEGFrMVPLzPWi+uaXXz7sfve7d9yrr742Ioitgdzauryokg27/hSGbfR36GoXthqHQvGFCxf9aK+u13Pnzg22Z+rUW5z+U9nF7NmfdLq9tvb9zjt/dH/4wx8/upOhK3gUuJCet7IPPValH2pnX1+fu3z5/9y1115b8DEV+K+55hp/Xg899IBraXnY3X77zEKawGMQyKwAITqzXcuJIRCngH38rBrWgYEB/4dfH32rdlOTvUq9yUScKrQ6l0BHx1a/LrHuEDnapqXctIzbWFakWLXqUbdv3w/dhx9+WLFOGD9+fN79Kwzr34KVJeVab9p+V0hNdK6TUTmUJgfefPPNfuUSbfPnfy6IlUgqhs+OEShBgBBdAh5PRQCB0gXso2l9TN3Z+ZSvT9Wm/1fooZa5dOOs7UElPHfd9Wc5T2vcuHHuuuuu8xPkVO88c+afuAkTxg8+VteTTaa7soMBP0J7ZcWLBv+rXbv+1f3gBz/033/iE9PcuHHjffmFRpdPn/7tsOPfddcd/lbZc+bM9iPdemxSl5zcplvfa1MYtk3t0QivapTVhnQZEm8Ys3blcj5ZEyBEZ61HOR8EAhdQaNbEp2SpMYXmL/k60HQ9aOCnQPNqLLBp02b37W935myFRmz7+5PQWs5NpReXLl3yu1RQvrISRnKbd1Z7Kac2+0IgDgFCdBz9RCsRiFJAdaPJ3dJ6/Ufuql1du3bV4OSpsX7sHCUGjS6bwNmzZ93ixQ/6Eog1a/7WTZ061f3yl79yq1b9ja8vtjpkG/kdulKFGqI3cdqGrresUWqNAGvTfr/znU733nvvuwceWOKWLfuCe/jhZWU7D3aEAAJxCxCi4+4/Wo9AUAK6g5pCsyZgKaSopllrMi9Zspi1mYPqKRpTjMD99y9yr7123Gk1imXLvujuv3+Bu+mmxmJ2wWMRQCCDAoToDHYqp4RANQQUknVzCFuxwG7eoIlIdlMTVs6oRk9wjEoL6O58Tz/9L/5a16brW3fl++pX2yp9aPaPAAIBCxCiA+4cmoZAKAK2Vq1Gmm2U2T4Gt9CswExdaCg9RjsqIaDVQLZseXJw17fdNs197WttfqLg4sV/xdrklUBnnwgELECIDrhzaBoCtRJQLfPRo0lJhoVmawuhuVa9wnFDEDh+/HX3zW/+kzt48OVhzdFqMlpKb8mSRQTqEDqLNiBQYQFCdIWB2T0CMQhYaN6//5Bfkzl9IwkFAo0wa6RZEwHZEEDAuRdf/A939ux77tFH1+fk0FKNCtX698OGAALZFCBEZ7NfOSsERhVI1zMrOKdXKNAffYVlyjO4iBDIL3Ds2M/9Ch76xCbX0npa99lu9EKgzu/JIxCISYAQHVNv0VYExiigkWVNAty//+BHS85ducMb5RljROVpCKQE9G9M/766up5xPT1v5rQhUHPJIJAtAUJ0tvqTs0HAC2hkeehyc0ajG0XYKDOrZ3DBIFB+AQJ1+U3ZIwIhChCiQ+wV2oTAGARUoqHgbKPNtgvdwU21mRacuY32GHB5CgJjFFCg7uzc4VQ2pRsO5drSI9T6ZCh96+8xHpanIYBAFQQI0VVA5hAIVEpgz569vhYzuSvg8BINhWcmA1ZKn/0iUJyA3uiq3GO0QK092iof9913r7+lOBsCCIQpQIgOs19oFQI5BRSUDxw4NGy0ualpul9BQxOYKNHg4kEgfIFCSj50FjbJV3f91Cg1GwIIhCNAiA6nL2gJAsMErLY514RA1TYnI1aMNnPpIBCzgAVqfaKkN8kjbSrz0JtkvVlmlDrmHqftWREgRGelJzmPzAjYms27d+/1ZRq2pWub9UeUusnMdDkngsCggN44q0RLJR/69z9SHbWeoFIPvYnWp1DUUnMRIVB9AUJ09c05IgLDBPTHUpMCVS9JbTMXCAIImIDdNVSvESOtRW2PtZsi2VrvKCKAQGUFCNGV9WXvCOQUSJdppG92otHm5OPaZHSJSUVcQAggkBZQmD5xQivxUPrBlYFArQUI0bXuAY5fNwIaYU6vpmEnbus2t7YuZyWNurkaOFEEyiNgI9XJEpcjl3+k70LKnRPLY89eECBEcw0gUEEBTRLSHzdNDNRXbVpJQ3/QNNK8cmULtc0V9GfXCNSbgNVU6/XGAnau25GzjF69XRmcbyUECNGVUGWfdStgf7h0i+1t23YOOqhMo61ttS/VUIBmUmDdXiKcOAJVF8g3Wq3XpPQExao3kAMiEKkAITrSjqPZYQho1Ce5gcJe/1X/3Xrrx93Fi//r5s2726lEg9rmMPqKViCAQCJgr1uaqGivW7YKiK34oZKPpqYm5mVw0SAwigAhmssDgSIFRrrhiXazYkWLe+ihL7o77pjDH58iXXk4AgjUTkBh+tSpXr+0Xnd3z+AqQZ///H1u3bpH3G23TeM1rXbdw5EDFSBEB9oxNCssAf2B0aRA1Tanl6Cz1TRaW1v8x6FsCCCAQBYE9DqnEWstu+lcgw/YKlPbuLHdh2lGqbPQy5xDqQKE6FIFeX5mBfRHZPv2ncOCs05YH3XaxBzqmzN7CXBiCCCQEtDqHzZJWq+PjY3JHRS5JTmXSb0KEKLrtec575wCGnnRihqaFGiradgDtRSdapwVnlm/mQsIAQTqWcBWAUmC9SF/Z0XN/9BcEH1tbr6b18l6vkDq5NwJ0XXS0Zzm6AIKzJ2dGnU+5D/CtM1uta2VNTSDnQ0BBBBAYLiARqbtroq2XrWVfWi0WsF67txPszIRF0+mBAjRmepOTqZYAdU5796917/4pzeNOre1rXFLly7iRb9YVB6PAAJ1L2ChWpMUtQpIT8+b3kTBOgnUzW7+/M8xOFH3V0rcAITouPuP1o9BQCPNnZ1P+Qkz6UmC2pVqnTXqrBd5NgQQQACB8gjodVevt6qptluX6yYwmlNi6+frdVfBmg2BWAQI0bH0FO0sWeDIkWM+OGtN5/RmN0JReGaSYMnM7AABBBAoSCBXCYieqDCdTFhcxEh1QZI8qFYChOhayXPcqgjkmyiokg0tT8eGAAIIIFBbgXSo1oi1Rqo1F0X/JYG6mcmKte0ijj5EgBDNJZFJAVvXWfXO6YmCOlndEIWJgpnsdk4KAQQyJGC3K7cJiwrVGqVuaXnYzZo1k7K7DPV1rKdCiI6152j3MAG90B4+/F/uhRdedCdPvnXV75uapru1a1e7lStbKNng2kEAAQQiE7Caai0/+vvfv+N+/euTflm9TZvanSaCM0odWYdmpLmE6Ix0ZD2ehj76O3o0WaNUs7+HjjjbqLOCMxMF6/EK4ZwRQCCrAnq91yeNNkG8oaHBl31oHX+VfrCWf1Z7PqzzIkSH1R+0ZhQBq29WYNao89CVNeypN93U6L7xjb/zJRtsCCCAAALZFrBaatVR62ZZ2hSiFagfeWQ1gTrb3V/TsyNE15Sfg+cTUHDu6nrWjzYMvYPg0OdSspFPk98jgAAC2RbQ3wx9OpkO1Bqh1qCKRqhZgSnb/V/tsyNEV1uc4xUkoJFmreWsF8J8m8Kz6uK4MUo+KX6PAAII1JeAljTdtm3H4M1eNDqtvxWaYM6GQKkChOhSBXl+WQUUmjs6tuYdddZBtSh/a+tylqgraw+wMwQQQCB7Air56Ozc4UepNSFRI9IK05pwrpFqNgTGIkCIHosazym7gEo12tsfH3b77aEH0o1RNJLAEnVl7wJ2iAACCNSFgAZrFKb37EluvKX6aQ3IaHSaCYl1cQmU7SQJ0WWjZEdjEdDowIYNj+ct26DeeSy6PAcBBBBAYCQBW+HjwAHdivzY4C3ItZrT2rWrgEMgrwAhOi8RD6iUgNb73L5954irbOi4Wv8zqXdeXKlmsF8EEEAAgToX0KehyQj1QV8/rXKPnTv/mb89dX5d5Dt9QnQ+IX5fEQGNAEyb9skR9014rgg7O0UAAQQQyCOgie1ag1oDOJR3cLmMJkCI5vqoiYBepBYufGDYsSnbqEl3cFAEEEAAAQQQKFKAEF0kGA8vn8Ctt85y/f39foeaMKg7Cz755JbyHYA9IYAAAggggAACFRIgRFcIlt3mF1ANmm6iok0zo1lmKL8Zj0AAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISOD/AYTV/3TCUQtkAAAAAElFTkSuQmCC' - } + signature: + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAACWCAYAAAAYC9T6AAAcO0lEQVR4Xu3df4yV1Z3H8TNRgSjCaIlULMMiLah1wG43+0cVGpPNLhBoRd10KMMfm2yAyEjbsB0quBv2D8ZU0k27ZSho2ewuQ0RLrBEWtKS724LUGmKWGU3bpFQZaGsryjDCBv9gZ/M5j9/hYebO3Hvn/jrnue8nMTPO3Ps853mdhzufe+73nKfh4sV3BxwbAggggAACCCCAAAIIFCzQQIgu2IoHIoAAAggggAACCCDgBQjRXAgIIIAAAggggAACCBQpQIguEoyHI4AAAggggAACCCBAiOYaQAABBBBAAAEEEECgSAFCdJFgPBwBBBBAAAEEEEAAAUI01wACCCCAAAIIIIAAAkUKEKKLBOPhCCCAAAIIIIAAAggQorkGEEAAAQQQQAABBBAoUoAQXSQYD0cAAQQQQAABBBBAgBDNNYAAAggggAACCCCAQJEChOgiwXg4AggggAACCCCAAAKEaK4BBBBAAAEEEEAAAQSKFCBEFwnGwxFAAAEEEEAAAQQQIERzDSCAAAIIIIAAAgggUKQAIbpIMB6OAAIIIIAAAggggAAhmmsAAQQQQAABBMoicOrUab+f3t5eN3nyZHfqVK9raGgY3Ld+NnnyJDd37t1lOR47QaCWAoToWupzbAQQQAABBGokcP78eR909bWvr981Nk7yLenufsM1NTVdFYb1mO7uN30A1n96jP5TGNZX/f7IkWNuyZJFfp8WorUT/c42heze3tP+MW1tq93GjV+v0dlzWARKFyBEl27IHhBAAAEEEChZQAFTgdNCp0KrhVCN6J4/3+/6+q4E0iu/O+0DsJ4/adIk19/f75/X1DTdB17bGhsn+28VYC0Az59/rz/e/v0HXVvbGv/7rq5nXGvrcv+9fr506WK/H+1/xozpbsaMJv8c7Uf/b/ssFEDP3b17r9uw4XH3la+sdR0dmwt9Ko9DICgBQnRQ3UFjEEAAAQSyImBh2EocdF4Kw0ePHnMDAwP+NDUCnB6p1c8UTDUSrJ8rsCrApgOwhVYLsLF6NTf/ubvhhuvdq6/+d6ynQLvrXIAQXecXAKePAAIIIFC4gAVehV+VJfT19fmAq6Dc3d3jR231/ZYtT7pNm9r9jn/601fc0qWLfCBWiE6C8ZVR3MKPnq1H3nnnnzqNhD/11HezdWKcTd0IEKLrpqs5UQQQQACBkQRstFghuafnDaeBYiud0M/0+yNHXnFr164eHBVWIFZNsIViPY4Jc4VdY+3tm1xn51PupZde8EGaDYEYBQjRMfYabUYAAQQQyCuQrjFWILb/1xMtGNvIsJVGWBnFggX3Dk6uU72xRo7ZyiPQ1bXXrV79qJ9UaKP15dkze0GgugKE6Op6czQEEEAAgRIELPxqkp2tCmE/U1BWeYV+pxFh/Vyh2EaHbVKcDk85RQmdUMJTVebS0bHVrVjRQhlHCY48NQwBQnQY/UArEEAAgboWyBWONUpsZRb6XpuNGFsJgMLwvHnJmsMKzLFPtsvqRaB+1OjziRM9fmk7RqCz2tP1dV6E6Prqb84WAQQQqImArQ9so8cWkBWe335bk+2m+1pjjRono8RJINb31BnXpMvKdlAr39Dye8899+/UQJdNlh3VWoAQXese4PgIIIBABgQUjhWMe3vP+BttnDjxhj8r/UxLtKVDMQE5Ax1ewCloImZ7++O+7EY3YdEqHNSWFwDHQ6IRIERH01U0FAEEEKidgE3Ks6CsgKT6Y/08XXOskgqVV+grE/Jq11+1PLKuDa28oRu1NDd/2m3duoXR51p2CMeumAAhumK07BgBBBCIS8BKLTRBz27rrNCsMgubiGchmTKLuPq2Gq3VNdPZudPt33/If/qg5QBV/8yGQFYFCNFZ7VnOCwEEEMghkNQm9/o1kJMVLnr8zUC0pJs2m5yXLrkAEoHRBDTyvGXLVv/GS+FZN5bRxEFKN7husi5AiM56D3N+CCBQdwKarNfd/ebgcm8CUFDWltwcZLr/nqBcd5dG2U5Y19iRI8f8nRkVnlW2obs1trYuZ4WUsimzo9AFCNGh9xDtQwABBIYI2K2nFZSdG/C/Vf2pRpkVZLSpDCN9wxCWfuMyKoeAAnNX1zPuwIFD/nrTihsadV65soWR53IAs4+oBAjRUXUXjUUAgXoTsNpkhWCFlm3bdri2tjWDQVmh2QIyH5/X29VR2PnmWoNbz7Q3Y7YXlfio/r2xsdEN6L7nH23jx49zJ0++5Ueef/Obt/xPb7nlFrd+/TpqngvrAh6VUQFCdEY7ltNCAIE4BOxmIqpNVo2y1tRNloSbPnjbaX0/d26zPyFGlOPo12q30kp4kq/JcoO6tlSvXOw2YcIEd+nSpYKeZhNM9amHSoW0lB0bAvUiQIiul57mPBFAoGYCNhLY0/OG6+vrd6dOnfJfNcHPbi6irxoF5K57Neumih5YwVabQqf63bmGvMdLjxTbNTRlysfc2bPv+aCskWPty96I5dphU9P0wTdkdttzvUnTtWbtST/v9df/xx0+/J/u+PHX3Zkzv/W/0qjzZz97j5sz51Pu+uuv9yPYOqaCek+PSoqubDo/TSzcuLGdN3x5e5gHxC5AiI69B2k/AggEI2CjgL29p/1EPo0s/+QnR/26yQoXulW1fc9d+ILptpIaohIHbTbiW2i4HetBFYB1XdmmCX3pN1+2FKEmjRZ6janNOg/VOlvY1/61b5UO6bod7RMQPUfXu56fDtUtLX/tdu3aPtZT5XkIBC9AiA6+i2ggAgiEKKDgoJFlfdXd+TQiqElWKrtIyi+0CkbhQSbEc6RNiYCNvCpoWtmNvo42AlyqnY0gp9fnVli+555md+ONGkmeVNJEPl23mhyo4Js+D13DmiSoWnuF52I3vZnYsOHv3YkTPf6pTzzxj27dukeK3Q2PRyAKAUJ0FN1EIxFAoFYCtpSXTfBTeNKcKwXlZIQuCcqFjvrV6jw4bmECQ98cqbzh4sWLhT05x6MUSvXpg20Wim0SqK4fK68Y+rsxHzTHExWUjx59xY8Y62Yo6VIRtVE1za2tLf7rWCeofvDBB2737mfcz372c/f88y/6Vuzbt8ctWvSX5TwV9oVAMAKE6GC6goYggECtBWxyVvLx9it+1FEBw4KyLRnH5L5a91R5j6/lATUqOzRc5juKBWSbXKevVq5jgTjfPir1e42a69MRhWZdy7lGzVesSEKzapjHGpyt/d/73tNu165/c7/4xa/8j7TCx5IlC93Ond+t1CmyXwRqLkCIrnkX0AAEEKiVgNWCKizr+7ffTtZW1qiyfS01XNTq3Dju6AIKlXv27B1WzpDrWZMm3egWLLhvcIKegnIIE0AVlK8sX3feB+bRJhqqxlnXtT5BsfXES71Oduz4vlu//rGrdtPRsdnNnv0pRqBLxeX5wQsQooPvIhqIAALlELBJf7pBiUbmNOFPgcLKMkr5GLsc7WMf1RHQm6XOzp1+KcGRNo0wK2Sm30xVp3VXHyW9qouthqGvOoehazwPbZ+VaFTq+la5xmOP/cPgCh46/sSJE923vvWEW7jwL9yUKVNqQcYxEaiqACG6qtwcDAEEqiWgsKFROX1Mr0lO+n+NwCkYaSRxLJOmqtV2jlNeAQXOrq5nXWfnjhEnA1pwbmtbXZP6dl2fNlE134iydJIyo+l+ZQ5bJtFu427/P5qirSaiEXVt+rei4HvnnXOGPU2hfdq0j7ve3jPupZcOD5aIpB+of09dXd8nPJf30mVvgQsQogPvIJqHAAL5BRSStO6y1TErkFidqt2ohDrm/I5ZeoSuCatzVs3zSJtWwdCEOoXnapXuJKPJPe7dd8+65557PufIsi1dN9o64vZGUWtOp0entX6zlsHTOtI2Ym2j2jrHCxcuuMuXL+ck+cxn5rn333+/4JVHZs6c4b785S+5jRu/nqXLh3NBoCABQnRBTDwIAQRCE7B6Zt24RGEivaScAnO1AlFoLvXenh/96Mfu2Wf3ub17941KYWsgK0BXclN4TUaWz1z1Jk/HVGCdOPGGj1Z3afardNgSiUko7vch2AKyrnMF40LKOSp5TrbvBx/8gtu8eZObNev2ahyOYyAQnAAhOrguoUEIIDBUwEYVz50773+lEGFrMVPLzPWi+uaXXz7sfve7d9yrr742Ioitgdzauryokg27/hSGbfR36GoXthqHQvGFCxf9aK+u13Pnzg22Z+rUW5z+U9nF7NmfdLq9tvb9zjt/dH/4wx8/upOhK3gUuJCet7IPPValH2pnX1+fu3z5/9y1115b8DEV+K+55hp/Xg899IBraXnY3X77zEKawGMQyKwAITqzXcuJIRCngH38rBrWgYEB/4dfH32rdlOTvUq9yUScKrQ6l0BHx1a/LrHuEDnapqXctIzbWFakWLXqUbdv3w/dhx9+WLFOGD9+fN79Kwzr34KVJeVab9p+V0hNdK6TUTmUJgfefPPNfuUSbfPnfy6IlUgqhs+OEShBgBBdAh5PRQCB0gXso2l9TN3Z+ZSvT9Wm/1fooZa5dOOs7UElPHfd9Wc5T2vcuHHuuuuu8xPkVO88c+afuAkTxg8+VteTTaa7soMBP0J7ZcWLBv+rXbv+1f3gBz/033/iE9PcuHHjffmFRpdPn/7tsOPfddcd/lbZc+bM9iPdemxSl5zcplvfa1MYtk3t0QivapTVhnQZEm8Ys3blcj5ZEyBEZ61HOR8EAhdQaNbEp2SpMYXmL/k60HQ9aOCnQPNqLLBp02b37W935myFRmz7+5PQWs5NpReXLl3yu1RQvrISRnKbd1Z7Kac2+0IgDgFCdBz9RCsRiFJAdaPJ3dJ6/Ufuql1du3bV4OSpsX7sHCUGjS6bwNmzZ93ixQ/6Eog1a/7WTZ061f3yl79yq1b9ja8vtjpkG/kdulKFGqI3cdqGrresUWqNAGvTfr/znU733nvvuwceWOKWLfuCe/jhZWU7D3aEAAJxCxCi4+4/Wo9AUAK6g5pCsyZgKaSopllrMi9Zspi1mYPqKRpTjMD99y9yr7123Gk1imXLvujuv3+Bu+mmxmJ2wWMRQCCDAoToDHYqp4RANQQUknVzCFuxwG7eoIlIdlMTVs6oRk9wjEoL6O58Tz/9L/5a16brW3fl++pX2yp9aPaPAAIBCxCiA+4cmoZAKAK2Vq1Gmm2U2T4Gt9CswExdaCg9RjsqIaDVQLZseXJw17fdNs197WttfqLg4sV/xdrklUBnnwgELECIDrhzaBoCtRJQLfPRo0lJhoVmawuhuVa9wnFDEDh+/HX3zW/+kzt48OVhzdFqMlpKb8mSRQTqEDqLNiBQYQFCdIWB2T0CMQhYaN6//5Bfkzl9IwkFAo0wa6RZEwHZEEDAuRdf/A939ux77tFH1+fk0FKNCtX698OGAALZFCBEZ7NfOSsERhVI1zMrOKdXKNAffYVlyjO4iBDIL3Ds2M/9Ch76xCbX0npa99lu9EKgzu/JIxCISYAQHVNv0VYExiigkWVNAty//+BHS85ducMb5RljROVpCKQE9G9M/766up5xPT1v5rQhUHPJIJAtAUJ0tvqTs0HAC2hkeehyc0ajG0XYKDOrZ3DBIFB+AQJ1+U3ZIwIhChCiQ+wV2oTAGARUoqHgbKPNtgvdwU21mRacuY32GHB5CgJjFFCg7uzc4VQ2pRsO5drSI9T6ZCh96+8xHpanIYBAFQQI0VVA5hAIVEpgz569vhYzuSvg8BINhWcmA1ZKn/0iUJyA3uiq3GO0QK092iof9913r7+lOBsCCIQpQIgOs19oFQI5BRSUDxw4NGy0ualpul9BQxOYKNHg4kEgfIFCSj50FjbJV3f91Cg1GwIIhCNAiA6nL2gJAsMErLY514RA1TYnI1aMNnPpIBCzgAVqfaKkN8kjbSrz0JtkvVlmlDrmHqftWREgRGelJzmPzAjYms27d+/1ZRq2pWub9UeUusnMdDkngsCggN44q0RLJR/69z9SHbWeoFIPvYnWp1DUUnMRIVB9AUJ09c05IgLDBPTHUpMCVS9JbTMXCAIImIDdNVSvESOtRW2PtZsi2VrvKCKAQGUFCNGV9WXvCOQUSJdppG92otHm5OPaZHSJSUVcQAggkBZQmD5xQivxUPrBlYFArQUI0bXuAY5fNwIaYU6vpmEnbus2t7YuZyWNurkaOFEEyiNgI9XJEpcjl3+k70LKnRPLY89eECBEcw0gUEEBTRLSHzdNDNRXbVpJQ3/QNNK8cmULtc0V9GfXCNSbgNVU6/XGAnau25GzjF69XRmcbyUECNGVUGWfdStgf7h0i+1t23YOOqhMo61ttS/VUIBmUmDdXiKcOAJVF8g3Wq3XpPQExao3kAMiEKkAITrSjqPZYQho1Ce5gcJe/1X/3Xrrx93Fi//r5s2726lEg9rmMPqKViCAQCJgr1uaqGivW7YKiK34oZKPpqYm5mVw0SAwigAhmssDgSIFRrrhiXazYkWLe+ihL7o77pjDH58iXXk4AgjUTkBh+tSpXr+0Xnd3z+AqQZ///H1u3bpH3G23TeM1rXbdw5EDFSBEB9oxNCssAf2B0aRA1Tanl6Cz1TRaW1v8x6FsCCCAQBYE9DqnEWstu+lcgw/YKlPbuLHdh2lGqbPQy5xDqQKE6FIFeX5mBfRHZPv2ncOCs05YH3XaxBzqmzN7CXBiCCCQEtDqHzZJWq+PjY3JHRS5JTmXSb0KEKLrtec575wCGnnRihqaFGiradgDtRSdapwVnlm/mQsIAQTqWcBWAUmC9SF/Z0XN/9BcEH1tbr6b18l6vkDq5NwJ0XXS0Zzm6AIKzJ2dGnU+5D/CtM1uta2VNTSDnQ0BBBBAYLiARqbtroq2XrWVfWi0WsF67txPszIRF0+mBAjRmepOTqZYAdU5796917/4pzeNOre1rXFLly7iRb9YVB6PAAJ1L2ChWpMUtQpIT8+b3kTBOgnUzW7+/M8xOFH3V0rcAITouPuP1o9BQCPNnZ1P+Qkz6UmC2pVqnTXqrBd5NgQQQACB8gjodVevt6qptluX6yYwmlNi6+frdVfBmg2BWAQI0bH0FO0sWeDIkWM+OGtN5/RmN0JReGaSYMnM7AABBBAoSCBXCYieqDCdTFhcxEh1QZI8qFYChOhayXPcqgjkmyiokg0tT8eGAAIIIFBbgXSo1oi1Rqo1F0X/JYG6mcmKte0ijj5EgBDNJZFJAVvXWfXO6YmCOlndEIWJgpnsdk4KAQQyJGC3K7cJiwrVGqVuaXnYzZo1k7K7DPV1rKdCiI6152j3MAG90B4+/F/uhRdedCdPvnXV75uapru1a1e7lStbKNng2kEAAQQiE7Caai0/+vvfv+N+/euTflm9TZvanSaCM0odWYdmpLmE6Ix0ZD2ehj76O3o0WaNUs7+HjjjbqLOCMxMF6/EK4ZwRQCCrAnq91yeNNkG8oaHBl31oHX+VfrCWf1Z7PqzzIkSH1R+0ZhQBq29WYNao89CVNeypN93U6L7xjb/zJRtsCCCAAALZFrBaatVR62ZZ2hSiFagfeWQ1gTrb3V/TsyNE15Sfg+cTUHDu6nrWjzYMvYPg0OdSspFPk98jgAAC2RbQ3wx9OpkO1Bqh1qCKRqhZgSnb/V/tsyNEV1uc4xUkoJFmreWsF8J8m8Kz6uK4MUo+KX6PAAII1JeAljTdtm3H4M1eNDqtvxWaYM6GQKkChOhSBXl+WQUUmjs6tuYdddZBtSh/a+tylqgraw+wMwQQQCB7Air56Ozc4UepNSFRI9IK05pwrpFqNgTGIkCIHosazym7gEo12tsfH3b77aEH0o1RNJLAEnVl7wJ2iAACCNSFgAZrFKb37EluvKX6aQ3IaHSaCYl1cQmU7SQJ0WWjZEdjEdDowIYNj+ct26DeeSy6PAcBBBBAYCQBW+HjwAHdivzY4C3ItZrT2rWrgEMgrwAhOi8RD6iUgNb73L5954irbOi4Wv8zqXdeXKlmsF8EEEAAgToX0KehyQj1QV8/rXKPnTv/mb89dX5d5Dt9QnQ+IX5fEQGNAEyb9skR9014rgg7O0UAAQQQyCOgie1ag1oDOJR3cLmMJkCI5vqoiYBepBYufGDYsSnbqEl3cFAEEEAAAQQQKFKAEF0kGA8vn8Ctt85y/f39foeaMKg7Cz755JbyHYA9IYAAAggggAACFRIgRFcIlt3mF1ANmm6iok0zo1lmKL8Zj0AAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISOD/AYTV/3TCUQtkAAAAAElFTkSuQmCC', + }, }; export default { diff --git a/test/forms/formWithSurvey.d.ts b/test/forms/formWithSurvey.d.ts index a1fb4f07ec..f1d0ed3cc2 100644 --- a/test/forms/formWithSurvey.d.ts +++ b/test/forms/formWithSurvey.d.ts @@ -1,24 +1,26 @@ declare namespace _default { - const _id: string; - const type: string; - const components: ({ + const _id: string; + const type: string; + const components: ( + | { label: string; tableView: boolean; questions: { - label: string; - value: string; - tooltip: string; + label: string; + value: string; + tooltip: string; }[]; values: { - label: string; - value: string; - tooltip: string; + label: string; + value: string; + tooltip: string; }[]; key: string; type: string; input: boolean; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -27,11 +29,12 @@ declare namespace _default { input: boolean; questions?: undefined; values?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/formWithSurvey.js b/test/forms/formWithSurvey.js index ff26f41a26..36672eb60a 100644 --- a/test/forms/formWithSurvey.js +++ b/test/forms/formWithSurvey.js @@ -1,35 +1,35 @@ export default { - _id: '60e563c2e27f1e9264473826', - type: 'form', - components: [ - { - label: 'Survey', - tableView: true, - questions: [ - { label: 'question 1', value: 'question1', tooltip: '' }, - { label: 'question 2', value: 'question2', tooltip: '' } - ], - values: [ - { label: 'a1', value: 'a1', tooltip: '' }, - { label: 'a2', value: 'a2', tooltip: '' }, - { label: 'a3', value: 'a3', tooltip: '' } - ], - key: 'survey', - type: 'survey', - input: true - }, - { - label: 'Submit', - showValidations: false, - tableView: false, - key: 'submit', - type: 'button', - input: true - } - ], - title: 'survey test', - display: 'form', - name: 'surveyTest', - path: 'surveytest', - machineName: 'cjksbatcpbhyfbs:surveyTest', + _id: '60e563c2e27f1e9264473826', + type: 'form', + components: [ + { + label: 'Survey', + tableView: true, + questions: [ + { label: 'question 1', value: 'question1', tooltip: '' }, + { label: 'question 2', value: 'question2', tooltip: '' }, + ], + values: [ + { label: 'a1', value: 'a1', tooltip: '' }, + { label: 'a2', value: 'a2', tooltip: '' }, + { label: 'a3', value: 'a3', tooltip: '' }, + ], + key: 'survey', + type: 'survey', + input: true, + }, + { + label: 'Submit', + showValidations: false, + tableView: false, + key: 'submit', + type: 'button', + input: true, + }, + ], + title: 'survey test', + display: 'form', + name: 'surveyTest', + path: 'surveytest', + machineName: 'cjksbatcpbhyfbs:surveyTest', }; diff --git a/test/forms/formWithValidation.js b/test/forms/formWithValidation.js index 0574e5ef71..6296375cd8 100644 --- a/test/forms/formWithValidation.js +++ b/test/forms/formWithValidation.js @@ -1,26 +1,25 @@ export default { - components: [ - { - label: 'Name', - applyMaskOn: 'change', - tableView: true, - validate: { - required: true, - minLength: 2, - maxLength: 5, - }, - key: 'name', - type: 'textfield', - input: true, - }, - { - type: 'button', - showValidations: false, - label: 'Submit', - key: 'submit', - input: true, - tableView: false, - }, - ], + components: [ + { + label: 'Name', + applyMaskOn: 'change', + tableView: true, + validate: { + required: true, + minLength: 2, + maxLength: 5, + }, + key: 'name', + type: 'textfield', + input: true, + }, + { + type: 'button', + showValidations: false, + label: 'Submit', + key: 'submit', + input: true, + tableView: false, + }, + ], }; - \ No newline at end of file diff --git a/test/forms/formsWithAllowOverrideComps.js b/test/forms/formsWithAllowOverrideComps.js index 55dc5abcce..898a3c467a 100644 --- a/test/forms/formsWithAllowOverrideComps.js +++ b/test/forms/formsWithAllowOverrideComps.js @@ -1,491 +1,489 @@ const withClearOnHide = { - _id: '6597badd4143681594620748', - title: 'test clear on hide', - name: 'testClearOnHide', - path: 'testclearonhide', - type: 'form', - display: 'form', - components: [ - { - label: 'Checkbox', - tableView: false, - key: 'checkbox', - type: 'checkbox', - input: true, + _id: '6597badd4143681594620748', + title: 'test clear on hide', + name: 'testClearOnHide', + path: 'testclearonhide', + type: 'form', + display: 'form', + components: [ + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + }, + { + label: 'Number', + applyMaskOn: 'change', + mask: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + allowCalculateOverride: true, + calculateValue: 'value = 111;', + key: 'number', + conditional: { + show: true, + conjunction: 'all', + conditions: [ + { + component: 'checkbox', + operator: 'isEqual', + value: true, + }, + ], + }, + type: 'number', + input: true, + }, + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + calculateValue: "value = 'test';", + allowCalculateOverride: true, + key: 'textField', + conditional: { + show: true, + conjunction: 'all', + conditions: [ + { + component: 'checkbox', + operator: 'isEqual', + value: true, + }, + ], + }, + type: 'textfield', + input: true, + }, + { + label: 'Text Area', + applyMaskOn: 'change', + autoExpand: false, + tableView: true, + calculateValue: "value = 'test value';", + allowCalculateOverride: true, + key: 'textArea', + conditional: { + show: true, + conjunction: 'all', + conditions: [ + { + component: 'checkbox', + operator: 'isEqual', + value: true, + }, + ], + }, + type: 'textarea', + input: true, + }, + { + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ + { + label: 'a', + value: 'a', + shortcut: '', + }, + { + label: 'b', + value: 'b', + shortcut: '', + }, + { + label: 'c', + value: 'c', + shortcut: '', + }, + ], + calculateValue: "value = 'a';\n\n", + allowCalculateOverride: true, + key: 'radio', + conditional: { + show: true, + conjunction: 'all', + conditions: [ + { + component: 'checkbox', + operator: 'isEqual', + value: true, + }, + ], }, - { - label: 'Number', - applyMaskOn: 'change', - mask: false, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - truncateMultipleSpaces: false, - allowCalculateOverride: true, - calculateValue: 'value = 111;', - key: 'number', - conditional: { - show: true, - conjunction: 'all', - conditions: [ + type: 'radio', + input: true, + }, + { + label: 'reset', + action: 'reset', + showValidations: false, + tableView: false, + key: 'reset', + type: 'button', + input: true, + }, + ], +}; + +const withDataGrid = { + _id: '6597baa341436815946204d1', + title: 'test clear datagrid first raw', + name: 'testClearDatagridFirstRaw', + path: 'testcleardatagridfirstraw', + type: 'form', + display: 'form', + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [ + { + dgRadio: '', + textField: '', + textArea: '', + }, + ], + key: 'dataGrid', + type: 'datagrid', + defaultOpen: false, + alwaysEnabled: false, + input: true, + components: [ + { + label: 'DG radio', + optionsLabelPosition: 'right', + inline: false, + alwaysEnabled: false, + tableView: false, + values: [ { - component: 'checkbox', - operator: 'isEqual', - value: true, + label: 'A', + value: 'a', + shortcut: '', + }, + { + label: 'B', + value: 'b', + shortcut: '', + }, + { + label: 'C', + value: 'c', + shortcut: '', }, ], + allowCalculateOverride: true, + key: 'dgRadio', + type: 'radio', + input: true, }, - type: 'number', - input: true, - }, - { - label: 'Text Field', - applyMaskOn: 'change', - tableView: true, - calculateValue: "value = 'test';", - allowCalculateOverride: true, - key: 'textField', - conditional: { - show: true, - conjunction: 'all', - conditions: [ + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + calculateValue: "if (row.dgRadio == 'a'){value = 'test DataGrid'}", + allowCalculateOverride: true, + key: 'textField', + type: 'textfield', + alwaysEnabled: false, + input: true, + }, + { + label: 'Number', + applyMaskOn: 'change', + mask: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + calculateValue: 'value = 11111;', + allowCalculateOverride: true, + key: 'number', + type: 'number', + input: true, + }, + { + label: 'Text Area', + applyMaskOn: 'change', + autoExpand: false, + tableView: true, + calculateValue: "value = 'test';", + allowCalculateOverride: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + ], + path: 'dataGrid', + }, + ], +}; + +const withResetBtn = { + _id: '6597c00b4143681594622563', + title: 'recalculate on reset', + name: 'recalculateOnReset', + path: 'recalculateonreset', + type: 'form', + display: 'form', + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [ + { + dgRadio: '', + textField: '', + textArea: '', + }, + ], + key: 'dataGrid', + type: 'datagrid', + defaultOpen: false, + alwaysEnabled: false, + input: true, + components: [ + { + label: 'DG radio', + optionsLabelPosition: 'right', + inline: false, + alwaysEnabled: false, + tableView: false, + values: [ { - component: 'checkbox', - operator: 'isEqual', - value: true, + label: 'A', + value: 'a', + shortcut: '', + }, + { + label: 'B', + value: 'b', + shortcut: '', + }, + { + label: 'C', + value: 'c', + shortcut: '', }, ], + allowCalculateOverride: true, + key: 'dgRadio', + type: 'radio', + input: true, }, - type: 'textfield', - input: true, - }, - { - label: 'Text Area', - applyMaskOn: 'change', - autoExpand: false, - tableView: true, - calculateValue: "value = 'test value';", - allowCalculateOverride: true, - key: 'textArea', - conditional: { - show: true, - conjunction: 'all', - conditions: [ + { + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + calculateValue: "if (row.dgRadio == 'a'){value = 'test DataGrid'}", + allowCalculateOverride: true, + key: 'textField', + type: 'textfield', + alwaysEnabled: false, + input: true, + }, + ], + path: 'dataGrid', + }, + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + }, + { + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ + { + label: 'one', + value: 'one', + shortcut: '', + }, + { + label: 'two', + value: 'two', + shortcut: '', + }, + ], + calculateValue: "if (data.checkbox) {\n value = 'one';\n}", + allowCalculateOverride: true, + key: 'radio', + type: 'radio', + input: true, + }, + { + label: 'Text Area', + applyMaskOn: 'change', + autoExpand: false, + tableView: true, + calculateValue: "value = 'test';", + allowCalculateOverride: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + { + label: 'Number', + applyMaskOn: 'change', + mask: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + calculateValue: 'value = 11111;', + allowCalculateOverride: true, + key: 'number', + type: 'number', + input: true, + }, + { + label: 'reset', + action: 'reset', + showValidations: false, + tableView: false, + key: 'reset', + type: 'button', + input: true, + }, + ], +}; + +const wizard = { + _id: '65966189ac3dff73a7234dd9', + title: 'clear rows', + name: 'clearRows', + path: 'clearrows', + type: 'form', + display: 'wizard', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: true, + values: [ { - component: 'checkbox', - operator: 'isEqual', - value: true, + label: ' a', + value: 'a', + shortcut: '', + }, + { + label: 'b', + value: 'b', + shortcut: '', + }, + { + label: 'c', + value: 'c', + shortcut: '', }, ], + allowCalculateOverride: true, + key: 'radio1', + type: 'radio', + alwaysEnabled: false, + input: true, }, - type: 'textarea', - input: true, - }, - { - label: 'Radio', - optionsLabelPosition: 'right', - inline: false, - tableView: false, - values: [ - { - label: 'a', - value: 'a', - shortcut: '', - }, - { - label: 'b', - value: 'b', - shortcut: '', - }, - { - label: 'c', - value: 'c', - shortcut: '', - }, - ], - calculateValue: "value = 'a';\n\n", - allowCalculateOverride: true, - key: 'radio', - conditional: { - show: true, - conjunction: 'all', - conditions: [ + { + label: 'Text Field', + alwaysEnabled: false, + tableView: true, + calculateValue: "if (data.radio1 == 'a'){value = 'test data'}", + allowCalculateOverride: true, + key: 'textField', + type: 'textfield', + input: true, + }, + { + label: 'Text Area', + autoExpand: false, + alwaysEnabled: false, + tableView: true, + calculateValue: "if (data.radio1 == 'a'){value = 'test data'}", + allowCalculateOverride: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + { + label: 'Number', + mask: false, + alwaysEnabled: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + calculateValue: "if (data.radio1 == 'a'){value = 123}", + allowCalculateOverride: true, + key: 'number', + type: 'number', + input: true, + }, + { + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ { - component: 'checkbox', - operator: 'isEqual', - value: true, + label: 'one', + value: 'one', + shortcut: '', + }, + { + label: 'two', + value: 'two', + shortcut: '', }, ], + calculateValue: "value = 'one'", + allowCalculateOverride: true, + key: 'radio', + type: 'radio', + input: true, }, - type: 'radio', - input: true, - }, - { - label: 'reset', - action: 'reset', - showValidations: false, - tableView: false, - key: 'reset', - type: 'button', - input: true, - }, - ], - }; - - const withDataGrid = { - _id: '6597baa341436815946204d1', - title: 'test clear datagrid first raw', - name: 'testClearDatagridFirstRaw', - path: 'testcleardatagridfirstraw', - type: 'form', - display: 'form', - components: [ - { - label: 'Data Grid', - reorder: false, - addAnotherPosition: 'bottom', - layoutFixed: false, - enableRowGroups: false, - initEmpty: false, - tableView: false, - defaultValue: [ - { - dgRadio: '', - textField: '', - textArea: '', - }, - ], - key: 'dataGrid', - type: 'datagrid', - defaultOpen: false, - alwaysEnabled: false, - input: true, - components: [ - { - label: 'DG radio', - optionsLabelPosition: 'right', - inline: false, - alwaysEnabled: false, - tableView: false, - values: [ - { - label: 'A', - value: 'a', - shortcut: '', - }, - { - label: 'B', - value: 'b', - shortcut: '', - }, - { - label: 'C', - value: 'c', - shortcut: '', - }, - ], - allowCalculateOverride: true, - key: 'dgRadio', - type: 'radio', - input: true, - }, - { - label: 'Text Field', - applyMaskOn: 'change', - tableView: true, - calculateValue: "if (row.dgRadio == 'a'){value = 'test DataGrid'}", - allowCalculateOverride: true, - key: 'textField', - type: 'textfield', - alwaysEnabled: false, - input: true, - }, - { - label: 'Number', - applyMaskOn: 'change', - mask: false, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - truncateMultipleSpaces: false, - calculateValue: 'value = 11111;', - allowCalculateOverride: true, - key: 'number', - type: 'number', - input: true, - }, - { - label: 'Text Area', - applyMaskOn: 'change', - autoExpand: false, - tableView: true, - calculateValue: "value = 'test';", - allowCalculateOverride: true, - key: 'textArea', - type: 'textarea', - input: true, - }, - ], - path: 'dataGrid', - }, - ], - }; - - const withResetBtn = { - _id: '6597c00b4143681594622563', - title: 'recalculate on reset', - name: 'recalculateOnReset', - path: 'recalculateonreset', - type: 'form', - display: 'form', - components: [ - { - label: 'Data Grid', - reorder: false, - addAnotherPosition: 'bottom', - layoutFixed: false, - enableRowGroups: false, - initEmpty: false, - tableView: false, - defaultValue: [ - { - dgRadio: '', - textField: '', - textArea: '', - }, - ], - key: 'dataGrid', - type: 'datagrid', - defaultOpen: false, - alwaysEnabled: false, - input: true, - components: [ - { - label: 'DG radio', - optionsLabelPosition: 'right', - inline: false, - alwaysEnabled: false, - tableView: false, - values: [ - { - label: 'A', - value: 'a', - shortcut: '', - }, - { - label: 'B', - value: 'b', - shortcut: '', - }, - { - label: 'C', - value: 'c', - shortcut: '', - }, - ], - allowCalculateOverride: true, - key: 'dgRadio', - type: 'radio', - input: true, - }, - { - label: 'Text Field', - applyMaskOn: 'change', - tableView: true, - calculateValue: "if (row.dgRadio == 'a'){value = 'test DataGrid'}", - allowCalculateOverride: true, - key: 'textField', - type: 'textfield', - alwaysEnabled: false, - input: true, - }, - ], - path: 'dataGrid', - }, - { - label: 'Checkbox', - tableView: false, - key: 'checkbox', - type: 'checkbox', - input: true, - }, - { - label: 'Radio', - optionsLabelPosition: 'right', - inline: false, - tableView: false, - values: [ - { - label: 'one', - value: 'one', - shortcut: '', - }, - { - label: 'two', - value: 'two', - shortcut: '', - }, - ], - calculateValue: "if (data.checkbox) {\n value = 'one';\n}", - allowCalculateOverride: true, - key: 'radio', - type: 'radio', - input: true, - }, - { - label: 'Text Area', - applyMaskOn: 'change', - autoExpand: false, - tableView: true, - calculateValue: "value = 'test';", - allowCalculateOverride: true, - key: 'textArea', - type: 'textarea', - input: true, - }, - { - label: 'Number', - applyMaskOn: 'change', - mask: false, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - truncateMultipleSpaces: false, - calculateValue: 'value = 11111;', - allowCalculateOverride: true, - key: 'number', - type: 'number', - input: true, - }, - { - label: 'reset', - action: 'reset', - showValidations: false, - tableView: false, - key: 'reset', - type: 'button', - input: true, - }, - ], - }; - - const wizard = { - _id: '65966189ac3dff73a7234dd9', - title: 'clear rows', - name: 'clearRows', - path: 'clearrows', - type: 'form', - display: 'wizard', - components: [ - { - title: 'Page 1', - label: 'Page 1', - type: 'panel', - key: 'page1', - components: [ - { - label: 'Radio', - optionsLabelPosition: 'right', - inline: false, - tableView: true, - values: [ - { - label: ' a', - value: 'a', - shortcut: '', - }, - { - label: 'b', - value: 'b', - shortcut: '', - }, - { - label: 'c', - value: 'c', - shortcut: '', - }, - ], - allowCalculateOverride: true, - key: 'radio1', - type: 'radio', - alwaysEnabled: false, - input: true, - }, - { - label: 'Text Field', - alwaysEnabled: false, - tableView: true, - calculateValue: "if (data.radio1 == 'a'){value = 'test data'}", - allowCalculateOverride: true, - key: 'textField', - type: 'textfield', - input: true, - }, - { - label: 'Text Area', - autoExpand: false, - alwaysEnabled: false, - tableView: true, - calculateValue: "if (data.radio1 == 'a'){value = 'test data'}", - allowCalculateOverride: true, - key: 'textArea', - type: 'textarea', - input: true, - }, - { - label: 'Number', - mask: false, - alwaysEnabled: false, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - calculateValue: "if (data.radio1 == 'a'){value = 123}", - allowCalculateOverride: true, - key: 'number', - type: 'number', - input: true, - }, - { - label: 'Radio', - optionsLabelPosition: 'right', - inline: false, - tableView: false, - values: [ - { - label: 'one', - value: 'one', - shortcut: '', - }, - { - label: 'two', - value: 'two', - shortcut: '', - }, - ], - calculateValue: "value = 'one'", - allowCalculateOverride: true, - key: 'radio', - type: 'radio', - input: true, - }, - ], - input: false, - tableView: false, - alwaysEnabled: false, - path: 'page1', - }, - ], - }; - - export default { - withClearOnHide, - withDataGrid, - withResetBtn, - wizard, - }; + ], + input: false, + tableView: false, + alwaysEnabled: false, + path: 'page1', + }, + ], +}; - \ No newline at end of file +export default { + withClearOnHide, + withDataGrid, + withResetBtn, + wizard, +}; diff --git a/test/forms/formsWithNewSimpleConditions.d.ts b/test/forms/formsWithNewSimpleConditions.d.ts index b51b7e123b..100806a3a1 100644 --- a/test/forms/formsWithNewSimpleConditions.d.ts +++ b/test/forms/formsWithNewSimpleConditions.d.ts @@ -1,37 +1,42 @@ declare namespace _default { - export { form1 }; - export { form2 }; - export { form3 }; - export { form4 }; - export { form5 }; + export { form1 }; + export { form2 }; + export { form3 }; + export { form4 }; + export { form5 }; } export default _default; declare namespace form1 { - const title: string; - const name: string; - const path: string; - const type: string; - const display: string; - const components: ({ + const title: string; + const name: string; + const path: string; + const type: string; + const display: string; + const components: ( + | { label: string; tableView: boolean; key: string; conditional: { - show: boolean; - conjunction: string; - conditions: ({ + show: boolean; + conjunction: string; + conditions: ( + | { component: string; operator: string; value: number; - } | { + } + | { component: string; operator: string; value: string; - } | { + } + | { component: string; operator: string; value?: undefined; - })[]; + } + )[]; }; type: string; input: boolean; @@ -44,7 +49,8 @@ declare namespace form1 { inline?: undefined; values?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; mask: boolean; tableView: boolean; @@ -60,7 +66,8 @@ declare namespace form1 { inline?: undefined; values?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -76,15 +83,16 @@ declare namespace form1 { inline?: undefined; values?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -96,7 +104,8 @@ declare namespace form1 { inputFormat?: undefined; truncateMultipleSpaces?: undefined; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -112,46 +121,53 @@ declare namespace form1 { optionsLabelPosition?: undefined; inline?: undefined; values?: undefined; - })[]; - const created: string; - const modified: string; - const machineName: string; + } + )[]; + const created: string; + const modified: string; + const machineName: string; } declare namespace form2 { - const title_1: string; - export { title_1 as title }; - const name_1: string; - export { name_1 as name }; - const path_1: string; - export { path_1 as path }; - const type_1: string; - export { type_1 as type }; - const display_1: string; - export { display_1 as display }; - const components_1: ({ + const title_1: string; + export { title_1 as title }; + const name_1: string; + export { name_1 as name }; + const path_1: string; + export { path_1 as path }; + const type_1: string; + export { type_1 as type }; + const display_1: string; + export { display_1 as display }; + const components_1: ( + | { label: string; tableView: boolean; key: string; conditional: { - show: boolean; - conjunction: string; - conditions: ({ + show: boolean; + conjunction: string; + conditions: ( + | { component: string; operator: string; value: string; - } | { + } + | { component: string; operator: string; value: number; - } | { + } + | { component: string; operator: string; value?: undefined; - } | { + } + | { component: string; operator: string; value: boolean; - })[]; + } + )[]; }; type: string; input: boolean; @@ -179,7 +195,8 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -210,22 +227,23 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; hideInputLabels: boolean; inputsLabelPosition: string; useLocaleSettings: boolean; tableView: boolean; fields: { - day: { - hide: boolean; - }; - month: { - hide: boolean; - }; - year: { - hide: boolean; - }; + day: { + hide: boolean; + }; + month: { + hide: boolean; + }; + year: { + hide: boolean; + }; }; key: string; type: string; @@ -251,7 +269,8 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; mask: boolean; spellcheck: boolean; @@ -282,18 +301,19 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; tableView: boolean; questions: { - label: string; - value: string; - tooltip: string; + label: string; + value: string; + tooltip: string; }[]; values: { - label: string; - value: string; - tooltip: string; + label: string; + value: string; + tooltip: string; }[]; key: string; type: string; @@ -321,7 +341,8 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; mask: boolean; tableView: boolean; @@ -352,14 +373,15 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -387,15 +409,16 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -422,15 +445,16 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; widget: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; key: string; type: string; @@ -458,14 +482,15 @@ declare namespace form2 { valueProperty?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; widget: string; tableView: boolean; dataSrc: string; data: { - custom: string; - values?: undefined; + custom: string; + values?: undefined; }; dataType: string; valueProperty: string; @@ -492,7 +517,8 @@ declare namespace form2 { inline?: undefined; showValidations?: undefined; saveOnEnter?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -523,27 +549,29 @@ declare namespace form2 { dataSrc?: undefined; dataType?: undefined; valueProperty?: undefined; - })[]; - export { components_1 as components }; - const created_1: string; - export { created_1 as created }; - const modified_1: string; - export { modified_1 as modified }; - const machineName_1: string; - export { machineName_1 as machineName }; + } + )[]; + export { components_1 as components }; + const created_1: string; + export { created_1 as created }; + const modified_1: string; + export { modified_1 as modified }; + const machineName_1: string; + export { machineName_1 as machineName }; } declare namespace form3 { - const title_2: string; - export { title_2 as title }; - const name_2: string; - export { name_2 as name }; - const path_2: string; - export { path_2 as path }; - const type_2: string; - export { type_2 as type }; - const display_2: string; - export { display_2 as display }; - const components_2: ({ + const title_2: string; + export { title_2 as title }; + const name_2: string; + export { name_2 as name }; + const path_2: string; + export { path_2 as path }; + const type_2: string; + export { type_2 as type }; + const display_2: string; + export { display_2 as display }; + const components_2: ( + | { label: string; mask: boolean; tableView: boolean; @@ -559,15 +587,16 @@ declare namespace form3 { values?: undefined; logic?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -579,33 +608,37 @@ declare namespace form3 { truncateMultipleSpaces?: undefined; logic?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; logic: { - name: string; - trigger: { - type: string; - simple: { - show: boolean; - conjunction: string; - conditions: ({ - component: string; - operator: string; - value: number; - } | { - component: string; - operator: string; - value: string; - })[]; - }; + name: string; + trigger: { + type: string; + simple: { + show: boolean; + conjunction: string; + conditions: ( + | { + component: string; + operator: string; + value: number; + } + | { + component: string; + operator: string; + value: string; + } + )[]; }; - actions: { - name: string; - type: string; - value: string; - }[]; + }; + actions: { + name: string; + type: string; + value: string; + }[]; }[]; type: string; input: boolean; @@ -618,7 +651,8 @@ declare namespace form3 { inline?: undefined; values?: undefined; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -634,27 +668,29 @@ declare namespace form3 { inline?: undefined; values?: undefined; logic?: undefined; - })[]; - export { components_2 as components }; - const created_2: string; - export { created_2 as created }; - const modified_2: string; - export { modified_2 as modified }; - const machineName_2: string; - export { machineName_2 as machineName }; + } + )[]; + export { components_2 as components }; + const created_2: string; + export { created_2 as created }; + const modified_2: string; + export { modified_2 as modified }; + const machineName_2: string; + export { machineName_2 as machineName }; } declare namespace form4 { - const title_3: string; - export { title_3 as title }; - const name_3: string; - export { name_3 as name }; - const path_3: string; - export { path_3 as path }; - const type_3: string; - export { type_3 as type }; - const display_3: string; - export { display_3 as display }; - const components_3: ({ + const title_3: string; + export { title_3 as title }; + const name_3: string; + export { name_3 as name }; + const path_3: string; + export { path_3 as path }; + const type_3: string; + export { type_3 as type }; + const display_3: string; + export { display_3 as display }; + const components_3: ( + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -666,41 +702,45 @@ declare namespace form4 { key: string; type: string; input: boolean; - components: ({ - label: string; - mask: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - truncateMultipleSpaces: boolean; - key: string; - type: string; - input: boolean; - conditional?: undefined; - } | { - label: string; - tableView: boolean; - key: string; - conditional: { + components: ( + | { + label: string; + mask: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + truncateMultipleSpaces: boolean; + key: string; + type: string; + input: boolean; + conditional?: undefined; + } + | { + label: string; + tableView: boolean; + key: string; + conditional: { show: boolean; conjunction: string; conditions: { - component: string; - operator: string; - value: number; + component: string; + operator: string; + value: number; }[]; - }; - type: string; - input: boolean; - mask?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - truncateMultipleSpaces?: undefined; - })[]; + }; + type: string; + input: boolean; + mask?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + truncateMultipleSpaces?: undefined; + } + )[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -714,46 +754,52 @@ declare namespace form4 { initEmpty?: undefined; defaultValue?: undefined; components?: undefined; - })[]; - export { components_3 as components }; - const created_3: string; - export { created_3 as created }; - const modified_3: string; - export { modified_3 as modified }; - const machineName_3: string; - export { machineName_3 as machineName }; + } + )[]; + export { components_3 as components }; + const created_3: string; + export { created_3 as created }; + const modified_3: string; + export { modified_3 as modified }; + const machineName_3: string; + export { machineName_3 as machineName }; } declare namespace form5 { - const title_4: string; - export { title_4 as title }; - const name_4: string; - export { name_4 as name }; - const path_4: string; - export { path_4 as path }; - const type_4: string; - export { type_4 as type }; - const display_4: string; - export { display_4 as display }; - const components_4: ({ + const title_4: string; + export { title_4 as title }; + const name_4: string; + export { name_4 as name }; + const path_4: string; + export { path_4 as path }; + const type_4: string; + export { type_4 as type }; + const display_4: string; + export { display_4 as display }; + const components_4: ( + | { label: string; tableView: boolean; key: string; conditional: { - show: boolean; - conjunction: string; - conditions: ({ + show: boolean; + conjunction: string; + conditions: ( + | { component: string; operator: string; value: string; - } | { + } + | { component: string; operator: string; value: number; - } | { + } + | { component: string; operator: string; value?: undefined; - })[]; + } + )[]; }; type: string; input: boolean; @@ -780,12 +826,13 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; tableView: boolean; datePicker: { - disableWeekends: boolean; - disableWeekdays: boolean; + disableWeekends: boolean; + disableWeekdays: boolean; }; enableMinDateInput: boolean; enableMaxDateInput: boolean; @@ -793,22 +840,22 @@ declare namespace form5 { type: string; input: boolean; widget: { - type: string; - displayInTimezone: string; - locale: string; - useLocaleSettings: boolean; - allowInput: boolean; - mode: string; - enableTime: boolean; - noCalendar: boolean; - format: string; - hourIncrement: number; - minuteIncrement: number; - time_24hr: boolean; - minDate: null; - disableWeekends: boolean; - disableWeekdays: boolean; - maxDate: null; + type: string; + displayInTimezone: string; + locale: string; + useLocaleSettings: boolean; + allowInput: boolean; + mode: string; + enableTime: boolean; + noCalendar: boolean; + format: string; + hourIncrement: number; + minuteIncrement: number; + time_24hr: boolean; + minDate: null; + disableWeekends: boolean; + disableWeekdays: boolean; + maxDate: null; }; conditional?: undefined; hideInputLabels?: undefined; @@ -830,22 +877,23 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; hideInputLabels: boolean; inputsLabelPosition: string; useLocaleSettings: boolean; tableView: boolean; fields: { - day: { - hide: boolean; - }; - month: { - hide: boolean; - }; - year: { - hide: boolean; - }; + day: { + hide: boolean; + }; + month: { + hide: boolean; + }; + year: { + hide: boolean; + }; }; key: string; type: string; @@ -870,7 +918,8 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -900,7 +949,8 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; mask: boolean; tableView: boolean; @@ -930,7 +980,8 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; mask: boolean; spellcheck: boolean; @@ -960,15 +1011,16 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; widget: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; key: string; type: string; @@ -995,15 +1047,16 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -1029,7 +1082,8 @@ declare namespace form5 { autoExpand?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; autoExpand: boolean; tableView: boolean; @@ -1059,7 +1113,8 @@ declare namespace form5 { values?: undefined; multiple?: undefined; showValidations?: undefined; - } | { + } + | { label: string; mask: boolean; tableView: boolean; @@ -1089,7 +1144,8 @@ declare namespace form5 { values?: undefined; autoExpand?: undefined; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -1119,12 +1175,13 @@ declare namespace form5 { values?: undefined; autoExpand?: undefined; multiple?: undefined; - })[]; - export { components_4 as components }; - const created_4: string; - export { created_4 as created }; - const modified_4: string; - export { modified_4 as modified }; - const machineName_4: string; - export { machineName_4 as machineName }; + } + )[]; + export { components_4 as components }; + const created_4: string; + export { created_4 as created }; + const modified_4: string; + export { modified_4 as modified }; + const machineName_4: string; + export { machineName_4 as machineName }; } diff --git a/test/forms/formsWithNewSimpleConditions.js b/test/forms/formsWithNewSimpleConditions.js index d28cae2482..30d6fed94d 100644 --- a/test/forms/formsWithNewSimpleConditions.js +++ b/test/forms/formsWithNewSimpleConditions.js @@ -1079,13 +1079,13 @@ const form8 = { conditions: [ { component: 'container.editGrid1.editGrid2.innerSelect1', - operator: 'isEmpty' - } - ] + operator: 'isEmpty', + }, + ], }, type: 'textarea', validateWhenHidden: false, - input: true + input: true, }, { label: 'container', @@ -1120,17 +1120,17 @@ const form8 = { values: [ { label: '44', - value: '44' + value: '44', }, { label: '6t', - value: '6T' - } - ] + value: '6T', + }, + ], }, key: 'innerSelect1', type: 'select', - input: true + input: true, }, { label: 'innerSelect2', @@ -1140,19 +1140,19 @@ const form8 = { values: [ { label: 'nnn', - value: 'nnn' + value: 'nnn', }, { label: 'kkk', - value: 'kkk' - } - ] + value: 'kkk', + }, + ], }, key: 'innerSelect2', type: 'select', - input: true - } - ] + input: true, + }, + ], }, { label: 'order', @@ -1162,22 +1162,22 @@ const form8 = { values: [ { label: 'first', - value: '1' + value: '1', }, { label: 'second', - value: '2' + value: '2', }, { label: 'third', - value: '3' - } - ] + value: '3', + }, + ], }, key: 'order', type: 'select', validateWhenHidden: false, - input: true + input: true, }, { label: 'lesson', @@ -1187,22 +1187,22 @@ const form8 = { values: [ { label: 'math', - value: 'math' + value: 'math', }, { label: 'lit', - value: 'lit' - } - ] + value: 'lit', + }, + ], }, validateWhenHidden: false, key: 'lesson', type: 'select', - input: true - } - ] - } - ] + input: true, + }, + ], + }, + ], }, { type: 'button', @@ -1210,8 +1210,8 @@ const form8 = { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], }; @@ -1223,5 +1223,5 @@ export default { form5, form6, form7, - form8 + form8, }; diff --git a/test/forms/formsWithSimpleConditionals.js b/test/forms/formsWithSimpleConditionals.js index 2df055ac73..c2522f5a73 100644 --- a/test/forms/formsWithSimpleConditionals.js +++ b/test/forms/formsWithSimpleConditionals.js @@ -15,8 +15,7 @@ const form1 = { input: true, components: [ { - label: - "A select with the same key of a container in tab1. Select the option 'more'", + label: "A select with the same key of a container in tab1. Select the option 'more'", widget: 'choicesjs', tableView: true, data: { diff --git a/test/forms/helpers/testBasicComponentSettings/basicValues.d.ts b/test/forms/helpers/testBasicComponentSettings/basicValues.d.ts index 14f0d943b7..3ff6649b84 100644 --- a/test/forms/helpers/testBasicComponentSettings/basicValues.d.ts +++ b/test/forms/helpers/testBasicComponentSettings/basicValues.d.ts @@ -1,118 +1,118 @@ declare namespace _default { - namespace form { - namespace data { - const dataGridChild: { - textAreaInsideChildDataGrid: string; - }[]; - const numberInsideChildPanel: number; - const textFieldChild: string; - const timeChild: string; - } + namespace form { + namespace data { + const dataGridChild: { + textAreaInsideChildDataGrid: string; + }[]; + const numberInsideChildPanel: number; + const textFieldChild: string; + const timeChild: string; } - const textField: string; - const textArea: string; - const number: number; - const password: string; - const checkbox: boolean; - namespace selectBoxes { - const a: boolean; - const b: boolean; - const c: boolean; + } + const textField: string; + const textArea: string; + const number: number; + const password: string; + const checkbox: boolean; + namespace selectBoxes { + const a: boolean; + const b: boolean; + const c: boolean; + } + const select: string; + const radio: string; + const email: string; + const url: string; + const phoneNumber: string; + const tags: string; + namespace address { + export namespace address_1 { + const county: string; + const state: string; + const country: string; + const country_code: string; } - const select: string; - const radio: string; - const email: string; - const url: string; - const phoneNumber: string; - const tags: string; - namespace address { - export namespace address_1 { - const county: string; - const state: string; - const country: string; - const country_code: string; - } - export { address_1 as address }; - export const boundingbox: string[]; - const _class: string; - export { _class as class }; - export const display_name: string; - export const icon: string; - export const importance: number; - export const lat: string; - export const licence: string; - export const lon: string; - export const osm_id: number; - export const osm_type: string; - export const place_id: number; - export const type: string; - } - const dateTime: string; - const day: string; - const time: string; - const currency: number; - namespace survey { - const question1: string; - const question2: string; - } - const signature: string; - namespace columns { - const numberColumn: number; - const textFieldColumn: string; - } - namespace fieldset { - const numberFieldset: number; - } - namespace panel { - const numberPanel: number; - } - namespace table { - const selectTable: string; - const checkboxTable: boolean; - const dateTimeTable: string; - const currencyTable: number; - } - namespace tabs { - const numberTab: number; - const textFieldTab: string; - } - namespace well { - const textFieldWell: string; - } - const hidden: string; - namespace container { - const textFieldContainer: string; - } - namespace dataMap { - const key: string; - const key1: string; - } - const dataGrid: { - textFieldDataGrid: string; - }[]; - const editGrid: { - textFieldEditGrid: string; + export { address_1 as address }; + export const boundingbox: string[]; + const _class: string; + export { _class as class }; + export const display_name: string; + export const icon: string; + export const importance: number; + export const lat: string; + export const licence: string; + export const lon: string; + export const osm_id: number; + export const osm_type: string; + export const place_id: number; + export const type: string; + } + const dateTime: string; + const day: string; + const time: string; + const currency: number; + namespace survey { + const question1: string; + const question2: string; + } + const signature: string; + namespace columns { + const numberColumn: number; + const textFieldColumn: string; + } + namespace fieldset { + const numberFieldset: number; + } + namespace panel { + const numberPanel: number; + } + namespace table { + const selectTable: string; + const checkboxTable: boolean; + const dateTimeTable: string; + const currencyTable: number; + } + namespace tabs { + const numberTab: number; + const textFieldTab: string; + } + namespace well { + const textFieldWell: string; + } + const hidden: string; + namespace container { + const textFieldContainer: string; + } + namespace dataMap { + const key: string; + const key1: string; + } + const dataGrid: { + textFieldDataGrid: string; + }[]; + const editGrid: { + textFieldEditGrid: string; + }[]; + namespace tree { + export const children: { + children: never[]; + data: { + textFieldTree: string; + }; }[]; - namespace tree { - export const children: { - children: never[]; - data: { - textFieldTree: string; - }; - }[]; - export namespace data_1 { - const textFieldTree: string; - } - export { data_1 as data }; + export namespace data_1 { + const textFieldTree: string; } - const file: { - name: string; - originalName: string; - size: number; - storage: string; - type: string; - url: string; - }[]; - const submit: boolean; + export { data_1 as data }; + } + const file: { + name: string; + originalName: string; + size: number; + storage: string; + type: string; + url: string; + }[]; + const submit: boolean; } export default _default; diff --git a/test/forms/helpers/testBasicComponentSettings/basicValues.js b/test/forms/helpers/testBasicComponentSettings/basicValues.js index fa5d4e1f96..8d5d176080 100644 --- a/test/forms/helpers/testBasicComponentSettings/basicValues.js +++ b/test/forms/helpers/testBasicComponentSettings/basicValues.js @@ -1,13 +1,13 @@ -export default { +export default { form: { data: { - dataGridChild: [ - { textAreaInsideChildDataGrid: "test value in nested form1" }, - { textAreaInsideChildDataGrid: "test value in nested form2" } - ], - numberInsideChildPanel: 111111, - textFieldChild: "test value in nested form", - timeChild: "11:55:00", + dataGridChild: [ + { textAreaInsideChildDataGrid: 'test value in nested form1' }, + { textAreaInsideChildDataGrid: 'test value in nested form2' }, + ], + numberInsideChildPanel: 111111, + textFieldChild: 'test value in nested form', + timeChild: '11:55:00', }, }, textField: 'test value', @@ -23,7 +23,12 @@ export default { phoneNumber: '(555) 555-5555', tags: 'tag1', address: { - address: { county: 'Dallas County', state: 'Texas', country: 'United States', country_code: 'us' }, + address: { + county: 'Dallas County', + state: 'Texas', + country: 'United States', + country_code: 'us', + }, boundingbox: ['32.5453486', '32.9899027', '-97.0383833', '-96.5168819'], class: 'boundary', display_name: 'Dallas County, Texas, United States', @@ -43,34 +48,39 @@ export default { currency: 30000, survey: { question1: 'yes', - question2: 'no' + question2: 'no', }, - signature: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAACWCAYAAAAYC9T6AAAcO0lEQVR4Xu3df4yV1Z3H8TNRgSjCaIlULMMiLah1wG43+0cVGpPNLhBoRd10KMMfm2yAyEjbsB0quBv2D8ZU0k27ZSho2ewuQ0RLrBEWtKS724LUGmKWGU3bpFQZaGsryjDCBv9gZ/M5j9/hYebO3Hvn/jrnue8nMTPO3Ps853mdhzufe+73nKfh4sV3BxwbAggggAACCCCAAAIIFCzQQIgu2IoHIoAAAggggAACCCDgBQjRXAgIIIAAAggggAACCBQpQIguEoyHI4AAAggggAACCCBAiOYaQAABBBBAAAEEEECgSAFCdJFgPBwBBBBAAAEEEEAAAUI01wACCCCAAAIIIIAAAkUKEKKLBOPhCCCAAAIIIIAAAggQorkGEEAAAQQQQAABBBAoUoAQXSQYD0cAAQQQQAABBBBAgBDNNYAAAggggAACCCCAQJEChOgiwXg4AggggAACCCCAAAKEaK4BBBBAAAEEEEAAAQSKFCBEFwnGwxFAAAEEEEAAAQQQIERzDSCAAAIIIIAAAgggUKQAIbpIMB6OAAIIIIAAAggggAAhmmsAAQQQQAABBMoicOrUab+f3t5eN3nyZHfqVK9raGgY3Ld+NnnyJDd37t1lOR47QaCWAoToWupzbAQQQAABBGokcP78eR909bWvr981Nk7yLenufsM1NTVdFYb1mO7uN30A1n96jP5TGNZX/f7IkWNuyZJFfp8WorUT/c42heze3tP+MW1tq93GjV+v0dlzWARKFyBEl27IHhBAAAEEEChZQAFTgdNCp0KrhVCN6J4/3+/6+q4E0iu/O+0DsJ4/adIk19/f75/X1DTdB17bGhsn+28VYC0Az59/rz/e/v0HXVvbGv/7rq5nXGvrcv+9fr506WK/H+1/xozpbsaMJv8c7Uf/b/ssFEDP3b17r9uw4XH3la+sdR0dmwt9Ko9DICgBQnRQ3UFjEEAAAQSyImBh2EocdF4Kw0ePHnMDAwP+NDUCnB6p1c8UTDUSrJ8rsCrApgOwhVYLsLF6NTf/ubvhhuvdq6/+d6ynQLvrXIAQXecXAKePAAIIIFC4gAVehV+VJfT19fmAq6Dc3d3jR231/ZYtT7pNm9r9jn/601fc0qWLfCBWiE6C8ZVR3MKPnq1H3nnnnzqNhD/11HezdWKcTd0IEKLrpqs5UQQQQACBkQRstFghuafnDaeBYiud0M/0+yNHXnFr164eHBVWIFZNsIViPY4Jc4VdY+3tm1xn51PupZde8EGaDYEYBQjRMfYabUYAAQQQyCuQrjFWILb/1xMtGNvIsJVGWBnFggX3Dk6uU72xRo7ZyiPQ1bXXrV79qJ9UaKP15dkze0GgugKE6Op6czQEEEAAgRIELPxqkp2tCmE/U1BWeYV+pxFh/Vyh2EaHbVKcDk85RQmdUMJTVebS0bHVrVjRQhlHCY48NQwBQnQY/UArEEAAgboWyBWONUpsZRb6XpuNGFsJgMLwvHnJmsMKzLFPtsvqRaB+1OjziRM9fmk7RqCz2tP1dV6E6Prqb84WAQQQqImArQ9so8cWkBWe335bk+2m+1pjjRono8RJINb31BnXpMvKdlAr39Dye8899+/UQJdNlh3VWoAQXese4PgIIIBABgQUjhWMe3vP+BttnDjxhj8r/UxLtKVDMQE5Ax1ewCloImZ7++O+7EY3YdEqHNSWFwDHQ6IRIERH01U0FAEEEKidgE3Ks6CsgKT6Y/08XXOskgqVV+grE/Jq11+1PLKuDa28oRu1NDd/2m3duoXR51p2CMeumAAhumK07BgBBBCIS8BKLTRBz27rrNCsMgubiGchmTKLuPq2Gq3VNdPZudPt33/If/qg5QBV/8yGQFYFCNFZ7VnOCwEEEMghkNQm9/o1kJMVLnr8zUC0pJs2m5yXLrkAEoHRBDTyvGXLVv/GS+FZN5bRxEFKN7husi5AiM56D3N+CCBQdwKarNfd/ebgcm8CUFDWltwcZLr/nqBcd5dG2U5Y19iRI8f8nRkVnlW2obs1trYuZ4WUsimzo9AFCNGh9xDtQwABBIYI2K2nFZSdG/C/Vf2pRpkVZLSpDCN9wxCWfuMyKoeAAnNX1zPuwIFD/nrTihsadV65soWR53IAs4+oBAjRUXUXjUUAgXoTsNpkhWCFlm3bdri2tjWDQVmh2QIyH5/X29VR2PnmWoNbz7Q3Y7YXlfio/r2xsdEN6L7nH23jx49zJ0++5Ueef/Obt/xPb7nlFrd+/TpqngvrAh6VUQFCdEY7ltNCAIE4BOxmIqpNVo2y1tRNloSbPnjbaX0/d26zPyFGlOPo12q30kp4kq/JcoO6tlSvXOw2YcIEd+nSpYKeZhNM9amHSoW0lB0bAvUiQIiul57mPBFAoGYCNhLY0/OG6+vrd6dOnfJfNcHPbi6irxoF5K57Neumih5YwVabQqf63bmGvMdLjxTbNTRlysfc2bPv+aCskWPty96I5dphU9P0wTdkdttzvUnTtWbtST/v9df/xx0+/J/u+PHX3Zkzv/W/0qjzZz97j5sz51Pu+uuv9yPYOqaCek+PSoqubDo/TSzcuLGdN3x5e5gHxC5AiI69B2k/AggEI2CjgL29p/1EPo0s/+QnR/26yQoXulW1fc9d+ILptpIaohIHbTbiW2i4HetBFYB1XdmmCX3pN1+2FKEmjRZ6janNOg/VOlvY1/61b5UO6bod7RMQPUfXu56fDtUtLX/tdu3aPtZT5XkIBC9AiA6+i2ggAgiEKKDgoJFlfdXd+TQiqElWKrtIyi+0CkbhQSbEc6RNiYCNvCpoWtmNvo42AlyqnY0gp9fnVli+555md+ONGkmeVNJEPl23mhyo4Js+D13DmiSoWnuF52I3vZnYsOHv3YkTPf6pTzzxj27dukeK3Q2PRyAKAUJ0FN1EIxFAoFYCtpSXTfBTeNKcKwXlZIQuCcqFjvrV6jw4bmECQ98cqbzh4sWLhT05x6MUSvXpg20Wim0SqK4fK68Y+rsxHzTHExWUjx59xY8Y62Yo6VIRtVE1za2tLf7rWCeofvDBB2737mfcz372c/f88y/6Vuzbt8ctWvSX5TwV9oVAMAKE6GC6goYggECtBWxyVvLx9it+1FEBw4KyLRnH5L5a91R5j6/lATUqOzRc5juKBWSbXKevVq5jgTjfPir1e42a69MRhWZdy7lGzVesSEKzapjHGpyt/d/73tNu165/c7/4xa/8j7TCx5IlC93Ond+t1CmyXwRqLkCIrnkX0AAEEKiVgNWCKizr+7ffTtZW1qiyfS01XNTq3Dju6AIKlXv27B1WzpDrWZMm3egWLLhvcIKegnIIE0AVlK8sX3feB+bRJhqqxlnXtT5BsfXES71Oduz4vlu//rGrdtPRsdnNnv0pRqBLxeX5wQsQooPvIhqIAALlELBJf7pBiUbmNOFPgcLKMkr5GLsc7WMf1RHQm6XOzp1+KcGRNo0wK2Sm30xVp3VXHyW9qouthqGvOoehazwPbZ+VaFTq+la5xmOP/cPgCh46/sSJE923vvWEW7jwL9yUKVNqQcYxEaiqACG6qtwcDAEEqiWgsKFROX1Mr0lO+n+NwCkYaSRxLJOmqtV2jlNeAQXOrq5nXWfnjhEnA1pwbmtbXZP6dl2fNlE134iydJIyo+l+ZQ5bJtFu427/P5qirSaiEXVt+rei4HvnnXOGPU2hfdq0j7ve3jPupZcOD5aIpB+of09dXd8nPJf30mVvgQsQogPvIJqHAAL5BRSStO6y1TErkFidqt2ohDrm/I5ZeoSuCatzVs3zSJtWwdCEOoXnapXuJKPJPe7dd8+65557PufIsi1dN9o64vZGUWtOp0entX6zlsHTOtI2Ym2j2jrHCxcuuMuXL+ck+cxn5rn333+/4JVHZs6c4b785S+5jRu/nqXLh3NBoCABQnRBTDwIAQRCE7B6Zt24RGEivaScAnO1AlFoLvXenh/96Mfu2Wf3ub17941KYWsgK0BXclN4TUaWz1z1Jk/HVGCdOPGGj1Z3afardNgSiUko7vch2AKyrnMF40LKOSp5TrbvBx/8gtu8eZObNev2ahyOYyAQnAAhOrguoUEIIDBUwEYVz50773+lEGFrMVPLzPWi+uaXXz7sfve7d9yrr742Ioitgdzauryokg27/hSGbfR36GoXthqHQvGFCxf9aK+u13Pnzg22Z+rUW5z+U9nF7NmfdLq9tvb9zjt/dH/4wx8/upOhK3gUuJCet7IPPValH2pnX1+fu3z5/9y1115b8DEV+K+55hp/Xg899IBraXnY3X77zEKawGMQyKwAITqzXcuJIRCngH38rBrWgYEB/4dfH32rdlOTvUq9yUScKrQ6l0BHx1a/LrHuEDnapqXctIzbWFakWLXqUbdv3w/dhx9+WLFOGD9+fN79Kwzr34KVJeVab9p+V0hNdK6TUTmUJgfefPPNfuUSbfPnfy6IlUgqhs+OEShBgBBdAh5PRQCB0gXso2l9TN3Z+ZSvT9Wm/1fooZa5dOOs7UElPHfd9Wc5T2vcuHHuuuuu8xPkVO88c+afuAkTxg8+VteTTaa7soMBP0J7ZcWLBv+rXbv+1f3gBz/033/iE9PcuHHjffmFRpdPn/7tsOPfddcd/lbZc+bM9iPdemxSl5zcplvfa1MYtk3t0QivapTVhnQZEm8Ys3blcj5ZEyBEZ61HOR8EAhdQaNbEp2SpMYXmL/k60HQ9aOCnQPNqLLBp02b37W935myFRmz7+5PQWs5NpReXLl3yu1RQvrISRnKbd1Z7Kac2+0IgDgFCdBz9RCsRiFJAdaPJ3dJ6/Ufuql1du3bV4OSpsX7sHCUGjS6bwNmzZ93ixQ/6Eog1a/7WTZ061f3yl79yq1b9ja8vtjpkG/kdulKFGqI3cdqGrresUWqNAGvTfr/znU733nvvuwceWOKWLfuCe/jhZWU7D3aEAAJxCxCi4+4/Wo9AUAK6g5pCsyZgKaSopllrMi9Zspi1mYPqKRpTjMD99y9yr7123Gk1imXLvujuv3+Bu+mmxmJ2wWMRQCCDAoToDHYqp4RANQQUknVzCFuxwG7eoIlIdlMTVs6oRk9wjEoL6O58Tz/9L/5a16brW3fl++pX2yp9aPaPAAIBCxCiA+4cmoZAKAK2Vq1Gmm2U2T4Gt9CswExdaCg9RjsqIaDVQLZseXJw17fdNs197WttfqLg4sV/xdrklUBnnwgELECIDrhzaBoCtRJQLfPRo0lJhoVmawuhuVa9wnFDEDh+/HX3zW/+kzt48OVhzdFqMlpKb8mSRQTqEDqLNiBQYQFCdIWB2T0CMQhYaN6//5Bfkzl9IwkFAo0wa6RZEwHZEEDAuRdf/A939ux77tFH1+fk0FKNCtX698OGAALZFCBEZ7NfOSsERhVI1zMrOKdXKNAffYVlyjO4iBDIL3Ds2M/9Ch76xCbX0npa99lu9EKgzu/JIxCISYAQHVNv0VYExiigkWVNAty//+BHS85ducMb5RljROVpCKQE9G9M/766up5xPT1v5rQhUHPJIJAtAUJ0tvqTs0HAC2hkeehyc0ajG0XYKDOrZ3DBIFB+AQJ1+U3ZIwIhChCiQ+wV2oTAGARUoqHgbKPNtgvdwU21mRacuY32GHB5CgJjFFCg7uzc4VQ2pRsO5drSI9T6ZCh96+8xHpanIYBAFQQI0VVA5hAIVEpgz569vhYzuSvg8BINhWcmA1ZKn/0iUJyA3uiq3GO0QK092iof9913r7+lOBsCCIQpQIgOs19oFQI5BRSUDxw4NGy0ualpul9BQxOYKNHg4kEgfIFCSj50FjbJV3f91Cg1GwIIhCNAiA6nL2gJAsMErLY514RA1TYnI1aMNnPpIBCzgAVqfaKkN8kjbSrz0JtkvVlmlDrmHqftWREgRGelJzmPzAjYms27d+/1ZRq2pWub9UeUusnMdDkngsCggN44q0RLJR/69z9SHbWeoFIPvYnWp1DUUnMRIVB9AUJ09c05IgLDBPTHUpMCVS9JbTMXCAIImIDdNVSvESOtRW2PtZsi2VrvKCKAQGUFCNGV9WXvCOQUSJdppG92otHm5OPaZHSJSUVcQAggkBZQmD5xQivxUPrBlYFArQUI0bXuAY5fNwIaYU6vpmEnbus2t7YuZyWNurkaOFEEyiNgI9XJEpcjl3+k70LKnRPLY89eECBEcw0gUEEBTRLSHzdNDNRXbVpJQ3/QNNK8cmULtc0V9GfXCNSbgNVU6/XGAnau25GzjF69XRmcbyUECNGVUGWfdStgf7h0i+1t23YOOqhMo61ttS/VUIBmUmDdXiKcOAJVF8g3Wq3XpPQExao3kAMiEKkAITrSjqPZYQho1Ce5gcJe/1X/3Xrrx93Fi//r5s2726lEg9rmMPqKViCAQCJgr1uaqGivW7YKiK34oZKPpqYm5mVw0SAwigAhmssDgSIFRrrhiXazYkWLe+ihL7o77pjDH58iXXk4AgjUTkBh+tSpXr+0Xnd3z+AqQZ///H1u3bpH3G23TeM1rXbdw5EDFSBEB9oxNCssAf2B0aRA1Tanl6Cz1TRaW1v8x6FsCCCAQBYE9DqnEWstu+lcgw/YKlPbuLHdh2lGqbPQy5xDqQKE6FIFeX5mBfRHZPv2ncOCs05YH3XaxBzqmzN7CXBiCCCQEtDqHzZJWq+PjY3JHRS5JTmXSb0KEKLrtec575wCGnnRihqaFGiradgDtRSdapwVnlm/mQsIAQTqWcBWAUmC9SF/Z0XN/9BcEH1tbr6b18l6vkDq5NwJ0XXS0Zzm6AIKzJ2dGnU+5D/CtM1uta2VNTSDnQ0BBBBAYLiARqbtroq2XrWVfWi0WsF67txPszIRF0+mBAjRmepOTqZYAdU5796917/4pzeNOre1rXFLly7iRb9YVB6PAAJ1L2ChWpMUtQpIT8+b3kTBOgnUzW7+/M8xOFH3V0rcAITouPuP1o9BQCPNnZ1P+Qkz6UmC2pVqnTXqrBd5NgQQQACB8gjodVevt6qptluX6yYwmlNi6+frdVfBmg2BWAQI0bH0FO0sWeDIkWM+OGtN5/RmN0JReGaSYMnM7AABBBAoSCBXCYieqDCdTFhcxEh1QZI8qFYChOhayXPcqgjkmyiokg0tT8eGAAIIIFBbgXSo1oi1Rqo1F0X/JYG6mcmKte0ijj5EgBDNJZFJAVvXWfXO6YmCOlndEIWJgpnsdk4KAQQyJGC3K7cJiwrVGqVuaXnYzZo1k7K7DPV1rKdCiI6152j3MAG90B4+/F/uhRdedCdPvnXV75uapru1a1e7lStbKNng2kEAAQQiE7Caai0/+vvfv+N+/euTflm9TZvanSaCM0odWYdmpLmE6Ix0ZD2ehj76O3o0WaNUs7+HjjjbqLOCMxMF6/EK4ZwRQCCrAnq91yeNNkG8oaHBl31oHX+VfrCWf1Z7PqzzIkSH1R+0ZhQBq29WYNao89CVNeypN93U6L7xjb/zJRtsCCCAAALZFrBaatVR62ZZ2hSiFagfeWQ1gTrb3V/TsyNE15Sfg+cTUHDu6nrWjzYMvYPg0OdSspFPk98jgAAC2RbQ3wx9OpkO1Bqh1qCKRqhZgSnb/V/tsyNEV1uc4xUkoJFmreWsF8J8m8Kz6uK4MUo+KX6PAAII1JeAljTdtm3H4M1eNDqtvxWaYM6GQKkChOhSBXl+WQUUmjs6tuYdddZBtSh/a+tylqgraw+wMwQQQCB7Air56Ozc4UepNSFRI9IK05pwrpFqNgTGIkCIHosazym7gEo12tsfH3b77aEH0o1RNJLAEnVl7wJ2iAACCNSFgAZrFKb37EluvKX6aQ3IaHSaCYl1cQmU7SQJ0WWjZEdjEdDowIYNj+ct26DeeSy6PAcBBBBAYCQBW+HjwAHdivzY4C3ItZrT2rWrgEMgrwAhOi8RD6iUgNb73L5954irbOi4Wv8zqXdeXKlmsF8EEEAAgToX0KehyQj1QV8/rXKPnTv/mb89dX5d5Dt9QnQ+IX5fEQGNAEyb9skR9014rgg7O0UAAQQQyCOgie1ag1oDOJR3cLmMJkCI5vqoiYBepBYufGDYsSnbqEl3cFAEEEAAAQQQKFKAEF0kGA8vn8Ctt85y/f39foeaMKg7Cz755JbyHYA9IYAAAggggAACFRIgRFcIlt3mF1ANmm6iok0zo1lmKL8Zj0AAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISOD/AYTV/3TCUQtkAAAAAElFTkSuQmCC', + signature: + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAACWCAYAAAAYC9T6AAAcO0lEQVR4Xu3df4yV1Z3H8TNRgSjCaIlULMMiLah1wG43+0cVGpPNLhBoRd10KMMfm2yAyEjbsB0quBv2D8ZU0k27ZSho2ewuQ0RLrBEWtKS724LUGmKWGU3bpFQZaGsryjDCBv9gZ/M5j9/hYebO3Hvn/jrnue8nMTPO3Ps853mdhzufe+73nKfh4sV3BxwbAggggAACCCCAAAIIFCzQQIgu2IoHIoAAAggggAACCCDgBQjRXAgIIIAAAggggAACCBQpQIguEoyHI4AAAggggAACCCBAiOYaQAABBBBAAAEEEECgSAFCdJFgPBwBBBBAAAEEEEAAAUI01wACCCCAAAIIIIAAAkUKEKKLBOPhCCCAAAIIIIAAAggQorkGEEAAAQQQQAABBBAoUoAQXSQYD0cAAQQQQAABBBBAgBDNNYAAAggggAACCCCAQJEChOgiwXg4AggggAACCCCAAAKEaK4BBBBAAAEEEEAAAQSKFCBEFwnGwxFAAAEEEEAAAQQQIERzDSCAAAIIIIAAAgggUKQAIbpIMB6OAAIIIIAAAggggAAhmmsAAQQQQAABBMoicOrUab+f3t5eN3nyZHfqVK9raGgY3Ld+NnnyJDd37t1lOR47QaCWAoToWupzbAQQQAABBGokcP78eR909bWvr981Nk7yLenufsM1NTVdFYb1mO7uN30A1n96jP5TGNZX/f7IkWNuyZJFfp8WorUT/c42heze3tP+MW1tq93GjV+v0dlzWARKFyBEl27IHhBAAAEEEChZQAFTgdNCp0KrhVCN6J4/3+/6+q4E0iu/O+0DsJ4/adIk19/f75/X1DTdB17bGhsn+28VYC0Az59/rz/e/v0HXVvbGv/7rq5nXGvrcv+9fr506WK/H+1/xozpbsaMJv8c7Uf/b/ssFEDP3b17r9uw4XH3la+sdR0dmwt9Ko9DICgBQnRQ3UFjEEAAAQSyImBh2EocdF4Kw0ePHnMDAwP+NDUCnB6p1c8UTDUSrJ8rsCrApgOwhVYLsLF6NTf/ubvhhuvdq6/+d6ynQLvrXIAQXecXAKePAAIIIFC4gAVehV+VJfT19fmAq6Dc3d3jR231/ZYtT7pNm9r9jn/601fc0qWLfCBWiE6C8ZVR3MKPnq1H3nnnnzqNhD/11HezdWKcTd0IEKLrpqs5UQQQQACBkQRstFghuafnDaeBYiud0M/0+yNHXnFr164eHBVWIFZNsIViPY4Jc4VdY+3tm1xn51PupZde8EGaDYEYBQjRMfYabUYAAQQQyCuQrjFWILb/1xMtGNvIsJVGWBnFggX3Dk6uU72xRo7ZyiPQ1bXXrV79qJ9UaKP15dkze0GgugKE6Op6czQEEEAAgRIELPxqkp2tCmE/U1BWeYV+pxFh/Vyh2EaHbVKcDk85RQmdUMJTVebS0bHVrVjRQhlHCY48NQwBQnQY/UArEEAAgboWyBWONUpsZRb6XpuNGFsJgMLwvHnJmsMKzLFPtsvqRaB+1OjziRM9fmk7RqCz2tP1dV6E6Prqb84WAQQQqImArQ9so8cWkBWe335bk+2m+1pjjRono8RJINb31BnXpMvKdlAr39Dye8899+/UQJdNlh3VWoAQXese4PgIIIBABgQUjhWMe3vP+BttnDjxhj8r/UxLtKVDMQE5Ax1ewCloImZ7++O+7EY3YdEqHNSWFwDHQ6IRIERH01U0FAEEEKidgE3Ks6CsgKT6Y/08XXOskgqVV+grE/Jq11+1PLKuDa28oRu1NDd/2m3duoXR51p2CMeumAAhumK07BgBBBCIS8BKLTRBz27rrNCsMgubiGchmTKLuPq2Gq3VNdPZudPt33/If/qg5QBV/8yGQFYFCNFZ7VnOCwEEEMghkNQm9/o1kJMVLnr8zUC0pJs2m5yXLrkAEoHRBDTyvGXLVv/GS+FZN5bRxEFKN7husi5AiM56D3N+CCBQdwKarNfd/ebgcm8CUFDWltwcZLr/nqBcd5dG2U5Y19iRI8f8nRkVnlW2obs1trYuZ4WUsimzo9AFCNGh9xDtQwABBIYI2K2nFZSdG/C/Vf2pRpkVZLSpDCN9wxCWfuMyKoeAAnNX1zPuwIFD/nrTihsadV65soWR53IAs4+oBAjRUXUXjUUAgXoTsNpkhWCFlm3bdri2tjWDQVmh2QIyH5/X29VR2PnmWoNbz7Q3Y7YXlfio/r2xsdEN6L7nH23jx49zJ0++5Ueef/Obt/xPb7nlFrd+/TpqngvrAh6VUQFCdEY7ltNCAIE4BOxmIqpNVo2y1tRNloSbPnjbaX0/d26zPyFGlOPo12q30kp4kq/JcoO6tlSvXOw2YcIEd+nSpYKeZhNM9amHSoW0lB0bAvUiQIiul57mPBFAoGYCNhLY0/OG6+vrd6dOnfJfNcHPbi6irxoF5K57Neumih5YwVabQqf63bmGvMdLjxTbNTRlysfc2bPv+aCskWPty96I5dphU9P0wTdkdttzvUnTtWbtST/v9df/xx0+/J/u+PHX3Zkzv/W/0qjzZz97j5sz51Pu+uuv9yPYOqaCek+PSoqubDo/TSzcuLGdN3x5e5gHxC5AiI69B2k/AggEI2CjgL29p/1EPo0s/+QnR/26yQoXulW1fc9d+ILptpIaohIHbTbiW2i4HetBFYB1XdmmCX3pN1+2FKEmjRZ6janNOg/VOlvY1/61b5UO6bod7RMQPUfXu56fDtUtLX/tdu3aPtZT5XkIBC9AiA6+i2ggAgiEKKDgoJFlfdXd+TQiqElWKrtIyi+0CkbhQSbEc6RNiYCNvCpoWtmNvo42AlyqnY0gp9fnVli+555md+ONGkmeVNJEPl23mhyo4Js+D13DmiSoWnuF52I3vZnYsOHv3YkTPf6pTzzxj27dukeK3Q2PRyAKAUJ0FN1EIxFAoFYCtpSXTfBTeNKcKwXlZIQuCcqFjvrV6jw4bmECQ98cqbzh4sWLhT05x6MUSvXpg20Wim0SqK4fK68Y+rsxHzTHExWUjx59xY8Y62Yo6VIRtVE1za2tLf7rWCeofvDBB2737mfcz372c/f88y/6Vuzbt8ctWvSX5TwV9oVAMAKE6GC6goYggECtBWxyVvLx9it+1FEBw4KyLRnH5L5a91R5j6/lATUqOzRc5juKBWSbXKevVq5jgTjfPir1e42a69MRhWZdy7lGzVesSEKzapjHGpyt/d/73tNu165/c7/4xa/8j7TCx5IlC93Ond+t1CmyXwRqLkCIrnkX0AAEEKiVgNWCKizr+7ffTtZW1qiyfS01XNTq3Dju6AIKlXv27B1WzpDrWZMm3egWLLhvcIKegnIIE0AVlK8sX3feB+bRJhqqxlnXtT5BsfXES71Oduz4vlu//rGrdtPRsdnNnv0pRqBLxeX5wQsQooPvIhqIAALlELBJf7pBiUbmNOFPgcLKMkr5GLsc7WMf1RHQm6XOzp1+KcGRNo0wK2Sm30xVp3VXHyW9qouthqGvOoehazwPbZ+VaFTq+la5xmOP/cPgCh46/sSJE923vvWEW7jwL9yUKVNqQcYxEaiqACG6qtwcDAEEqiWgsKFROX1Mr0lO+n+NwCkYaSRxLJOmqtV2jlNeAQXOrq5nXWfnjhEnA1pwbmtbXZP6dl2fNlE134iydJIyo+l+ZQ5bJtFu427/P5qirSaiEXVt+rei4HvnnXOGPU2hfdq0j7ve3jPupZcOD5aIpB+of09dXd8nPJf30mVvgQsQogPvIJqHAAL5BRSStO6y1TErkFidqt2ohDrm/I5ZeoSuCatzVs3zSJtWwdCEOoXnapXuJKPJPe7dd8+65557PufIsi1dN9o64vZGUWtOp0entX6zlsHTOtI2Ym2j2jrHCxcuuMuXL+ck+cxn5rn333+/4JVHZs6c4b785S+5jRu/nqXLh3NBoCABQnRBTDwIAQRCE7B6Zt24RGEivaScAnO1AlFoLvXenh/96Mfu2Wf3ub17941KYWsgK0BXclN4TUaWz1z1Jk/HVGCdOPGGj1Z3afardNgSiUko7vch2AKyrnMF40LKOSp5TrbvBx/8gtu8eZObNev2ahyOYyAQnAAhOrguoUEIIDBUwEYVz50773+lEGFrMVPLzPWi+uaXXz7sfve7d9yrr742Ioitgdzauryokg27/hSGbfR36GoXthqHQvGFCxf9aK+u13Pnzg22Z+rUW5z+U9nF7NmfdLq9tvb9zjt/dH/4wx8/upOhK3gUuJCet7IPPValH2pnX1+fu3z5/9y1115b8DEV+K+55hp/Xg899IBraXnY3X77zEKawGMQyKwAITqzXcuJIRCngH38rBrWgYEB/4dfH32rdlOTvUq9yUScKrQ6l0BHx1a/LrHuEDnapqXctIzbWFakWLXqUbdv3w/dhx9+WLFOGD9+fN79Kwzr34KVJeVab9p+V0hNdK6TUTmUJgfefPPNfuUSbfPnfy6IlUgqhs+OEShBgBBdAh5PRQCB0gXso2l9TN3Z+ZSvT9Wm/1fooZa5dOOs7UElPHfd9Wc5T2vcuHHuuuuu8xPkVO88c+afuAkTxg8+VteTTaa7soMBP0J7ZcWLBv+rXbv+1f3gBz/033/iE9PcuHHjffmFRpdPn/7tsOPfddcd/lbZc+bM9iPdemxSl5zcplvfa1MYtk3t0QivapTVhnQZEm8Ys3blcj5ZEyBEZ61HOR8EAhdQaNbEp2SpMYXmL/k60HQ9aOCnQPNqLLBp02b37W935myFRmz7+5PQWs5NpReXLl3yu1RQvrISRnKbd1Z7Kac2+0IgDgFCdBz9RCsRiFJAdaPJ3dJ6/Ufuql1du3bV4OSpsX7sHCUGjS6bwNmzZ93ixQ/6Eog1a/7WTZ061f3yl79yq1b9ja8vtjpkG/kdulKFGqI3cdqGrresUWqNAGvTfr/znU733nvvuwceWOKWLfuCe/jhZWU7D3aEAAJxCxCi4+4/Wo9AUAK6g5pCsyZgKaSopllrMi9Zspi1mYPqKRpTjMD99y9yr7123Gk1imXLvujuv3+Bu+mmxmJ2wWMRQCCDAoToDHYqp4RANQQUknVzCFuxwG7eoIlIdlMTVs6oRk9wjEoL6O58Tz/9L/5a16brW3fl++pX2yp9aPaPAAIBCxCiA+4cmoZAKAK2Vq1Gmm2U2T4Gt9CswExdaCg9RjsqIaDVQLZseXJw17fdNs197WttfqLg4sV/xdrklUBnnwgELECIDrhzaBoCtRJQLfPRo0lJhoVmawuhuVa9wnFDEDh+/HX3zW/+kzt48OVhzdFqMlpKb8mSRQTqEDqLNiBQYQFCdIWB2T0CMQhYaN6//5Bfkzl9IwkFAo0wa6RZEwHZEEDAuRdf/A939ux77tFH1+fk0FKNCtX698OGAALZFCBEZ7NfOSsERhVI1zMrOKdXKNAffYVlyjO4iBDIL3Ds2M/9Ch76xCbX0npa99lu9EKgzu/JIxCISYAQHVNv0VYExiigkWVNAty//+BHS85ducMb5RljROVpCKQE9G9M/766up5xPT1v5rQhUHPJIJAtAUJ0tvqTs0HAC2hkeehyc0ajG0XYKDOrZ3DBIFB+AQJ1+U3ZIwIhChCiQ+wV2oTAGARUoqHgbKPNtgvdwU21mRacuY32GHB5CgJjFFCg7uzc4VQ2pRsO5drSI9T6ZCh96+8xHpanIYBAFQQI0VVA5hAIVEpgz569vhYzuSvg8BINhWcmA1ZKn/0iUJyA3uiq3GO0QK092iof9913r7+lOBsCCIQpQIgOs19oFQI5BRSUDxw4NGy0ualpul9BQxOYKNHg4kEgfIFCSj50FjbJV3f91Cg1GwIIhCNAiA6nL2gJAsMErLY514RA1TYnI1aMNnPpIBCzgAVqfaKkN8kjbSrz0JtkvVlmlDrmHqftWREgRGelJzmPzAjYms27d+/1ZRq2pWub9UeUusnMdDkngsCggN44q0RLJR/69z9SHbWeoFIPvYnWp1DUUnMRIVB9AUJ09c05IgLDBPTHUpMCVS9JbTMXCAIImIDdNVSvESOtRW2PtZsi2VrvKCKAQGUFCNGV9WXvCOQUSJdppG92otHm5OPaZHSJSUVcQAggkBZQmD5xQivxUPrBlYFArQUI0bXuAY5fNwIaYU6vpmEnbus2t7YuZyWNurkaOFEEyiNgI9XJEpcjl3+k70LKnRPLY89eECBEcw0gUEEBTRLSHzdNDNRXbVpJQ3/QNNK8cmULtc0V9GfXCNSbgNVU6/XGAnau25GzjF69XRmcbyUECNGVUGWfdStgf7h0i+1t23YOOqhMo61ttS/VUIBmUmDdXiKcOAJVF8g3Wq3XpPQExao3kAMiEKkAITrSjqPZYQho1Ce5gcJe/1X/3Xrrx93Fi//r5s2726lEg9rmMPqKViCAQCJgr1uaqGivW7YKiK34oZKPpqYm5mVw0SAwigAhmssDgSIFRrrhiXazYkWLe+ihL7o77pjDH58iXXk4AgjUTkBh+tSpXr+0Xnd3z+AqQZ///H1u3bpH3G23TeM1rXbdw5EDFSBEB9oxNCssAf2B0aRA1Tanl6Cz1TRaW1v8x6FsCCCAQBYE9DqnEWstu+lcgw/YKlPbuLHdh2lGqbPQy5xDqQKE6FIFeX5mBfRHZPv2ncOCs05YH3XaxBzqmzN7CXBiCCCQEtDqHzZJWq+PjY3JHRS5JTmXSb0KEKLrtec575wCGnnRihqaFGiradgDtRSdapwVnlm/mQsIAQTqWcBWAUmC9SF/Z0XN/9BcEH1tbr6b18l6vkDq5NwJ0XXS0Zzm6AIKzJ2dGnU+5D/CtM1uta2VNTSDnQ0BBBBAYLiARqbtroq2XrWVfWi0WsF67txPszIRF0+mBAjRmepOTqZYAdU5796917/4pzeNOre1rXFLly7iRb9YVB6PAAJ1L2ChWpMUtQpIT8+b3kTBOgnUzW7+/M8xOFH3V0rcAITouPuP1o9BQCPNnZ1P+Qkz6UmC2pVqnTXqrBd5NgQQQACB8gjodVevt6qptluX6yYwmlNi6+frdVfBmg2BWAQI0bH0FO0sWeDIkWM+OGtN5/RmN0JReGaSYMnM7AABBBAoSCBXCYieqDCdTFhcxEh1QZI8qFYChOhayXPcqgjkmyiokg0tT8eGAAIIIFBbgXSo1oi1Rqo1F0X/JYG6mcmKte0ijj5EgBDNJZFJAVvXWfXO6YmCOlndEIWJgpnsdk4KAQQyJGC3K7cJiwrVGqVuaXnYzZo1k7K7DPV1rKdCiI6152j3MAG90B4+/F/uhRdedCdPvnXV75uapru1a1e7lStbKNng2kEAAQQiE7Caai0/+vvfv+N+/euTflm9TZvanSaCM0odWYdmpLmE6Ix0ZD2ehj76O3o0WaNUs7+HjjjbqLOCMxMF6/EK4ZwRQCCrAnq91yeNNkG8oaHBl31oHX+VfrCWf1Z7PqzzIkSH1R+0ZhQBq29WYNao89CVNeypN93U6L7xjb/zJRtsCCCAAALZFrBaatVR62ZZ2hSiFagfeWQ1gTrb3V/TsyNE15Sfg+cTUHDu6nrWjzYMvYPg0OdSspFPk98jgAAC2RbQ3wx9OpkO1Bqh1qCKRqhZgSnb/V/tsyNEV1uc4xUkoJFmreWsF8J8m8Kz6uK4MUo+KX6PAAII1JeAljTdtm3H4M1eNDqtvxWaYM6GQKkChOhSBXl+WQUUmjs6tuYdddZBtSh/a+tylqgraw+wMwQQQCB7Air56Ozc4UepNSFRI9IK05pwrpFqNgTGIkCIHosazym7gEo12tsfH3b77aEH0o1RNJLAEnVl7wJ2iAACCNSFgAZrFKb37EluvKX6aQ3IaHSaCYl1cQmU7SQJ0WWjZEdjEdDowIYNj+ct26DeeSy6PAcBBBBAYCQBW+HjwAHdivzY4C3ItZrT2rWrgEMgrwAhOi8RD6iUgNb73L5954irbOi4Wv8zqXdeXKlmsF8EEEAAgToX0KehyQj1QV8/rXKPnTv/mb89dX5d5Dt9QnQ+IX5fEQGNAEyb9skR9014rgg7O0UAAQQQyCOgie1ag1oDOJR3cLmMJkCI5vqoiYBepBYufGDYsSnbqEl3cFAEEEAAAQQQKFKAEF0kGA8vn8Ctt85y/f39foeaMKg7Cz755JbyHYA9IYAAAggggAACFRIgRFcIlt3mF1ANmm6iok0zo1lmKL8Zj0AAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISOD/AYTV/3TCUQtkAAAAAElFTkSuQmCC', columns: { numberColumn: 1111, textFieldColumn: 'value' }, fieldset: { numberFieldset: 222222 }, panel: { numberPanel: 66666 }, - table: { selectTable:'one', checkboxTable: true, dateTimeTable: '2031-02-03T05:00:00', currencyTable: 4000 }, - tabs: { numberTab: 123456, textFieldTab: 'value'}, - well: { textFieldWell: 'value'}, + table: { + selectTable: 'one', + checkboxTable: true, + dateTimeTable: '2031-02-03T05:00:00', + currencyTable: 4000, + }, + tabs: { numberTab: 123456, textFieldTab: 'value' }, + well: { textFieldWell: 'value' }, hidden: 'hidden value', container: { textFieldContainer: 'value1' }, dataMap: { key: 'value1', key1: 'value2' }, - dataGrid: [ - { textFieldDataGrid: 'value1' }, - { textFieldDataGrid: 'value2' } - ], + dataGrid: [{ textFieldDataGrid: 'value1' }, { textFieldDataGrid: 'value2' }], editGrid: [{ textFieldEditGrid: 'value1' }, { textFieldEditGrid: 'value2' }], tree: { - children: [{ children: [], data: {textFieldTree: 'value2'} }], - data: { textFieldTree: 'value1' } + children: [{ children: [], data: { textFieldTree: 'value2' } }], + data: { textFieldTree: 'value1' }, }, - file: [{ - name: 'test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx', - originalName: 'test file.docx', - size: 11396, - storage: 'base64', - type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - url: 'data:application/vnd.openxmlformats-officedocument', - }], + file: [ + { + name: 'test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx', + originalName: 'test file.docx', + size: 11396, + storage: 'base64', + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + url: 'data:application/vnd.openxmlformats-officedocument', + }, + ], submit: true, -}; \ No newline at end of file +}; diff --git a/test/forms/helpers/testBasicComponentSettings/form.d.ts b/test/forms/helpers/testBasicComponentSettings/form.d.ts index 822b7ec6af..c8947552ff 100644 --- a/test/forms/helpers/testBasicComponentSettings/form.d.ts +++ b/test/forms/helpers/testBasicComponentSettings/form.d.ts @@ -1,53 +1,57 @@ declare namespace _default { - const _id: string; - const type: string; - const components: ({ + const _id: string; + const type: string; + const components: ( + | { label: string; tableView: boolean; useOriginalRevision: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - inputType?: undefined; - inputMask?: undefined; - title?: undefined; - collapsible?: undefined; - components?: undefined; - reorder?: undefined; - addAnotherPosition?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - defaultValue?: undefined; - } | { - label: string; - inputType: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - inputMask: string; - title?: undefined; - collapsible?: undefined; - components?: undefined; - reorder?: undefined; - addAnotherPosition?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - defaultValue?: undefined; - } | { - title: string; - collapsible: boolean; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + inputType?: undefined; + inputMask?: undefined; + title?: undefined; + collapsible?: undefined; + components?: undefined; + reorder?: undefined; + addAnotherPosition?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + defaultValue?: undefined; + } + | { + label: string; + inputType: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + inputMask: string; + title?: undefined; + collapsible?: undefined; + components?: undefined; + reorder?: undefined; + addAnotherPosition?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + defaultValue?: undefined; + } + | { + title: string; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { label: string; mask: boolean; spellcheck: boolean; @@ -58,40 +62,42 @@ declare namespace _default { key: string; type: string; input: boolean; - }[]; - inputType?: undefined; - inputMask?: undefined; - reorder?: undefined; - addAnotherPosition?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - defaultValue?: undefined; - } | { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: {}[]; - key: string; - type: string; - input: boolean; - components: { + }[]; + inputType?: undefined; + inputMask?: undefined; + reorder?: undefined; + addAnotherPosition?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + defaultValue?: undefined; + } + | { + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: {}[]; + key: string; + type: string; + input: boolean; + components: { label: string; autoExpand: boolean; tableView: boolean; key: string; type: string; input: boolean; - }[]; - inputType?: undefined; - inputMask?: undefined; - title?: undefined; - collapsible?: undefined; - })[]; + }[]; + inputType?: undefined; + inputMask?: undefined; + title?: undefined; + collapsible?: undefined; + } + )[]; key: string; type: string; input: boolean; @@ -148,7 +154,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -209,7 +216,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; autoExpand: boolean; tableView: boolean; @@ -270,7 +278,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; mask: boolean; spellcheck: boolean; @@ -331,7 +340,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -392,17 +402,18 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; validate: { - onlyAvailableItems: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; @@ -459,24 +470,25 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; widget: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; selectThreshold: number; validate: { - onlyAvailableItems: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; indexeddb: { - filter: {}; + filter: {}; }; input: boolean; useOriginalRevision?: undefined; @@ -529,18 +541,19 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; validate: { - onlyAvailableItems: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; @@ -596,25 +609,26 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; provider: string; key: string; type: string; providerOptions: { - params: { - autocompleteOptions: {}; - }; + params: { + autocompleteOptions: {}; + }; }; input: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - customConditional: string; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + customConditional: string; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -668,35 +682,36 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; enableMinDateInput: boolean; datePicker: { - disableWeekends: boolean; - disableWeekdays: boolean; + disableWeekends: boolean; + disableWeekdays: boolean; }; enableMaxDateInput: boolean; key: string; type: string; input: boolean; widget: { - type: string; - displayInTimezone: string; - locale: string; - useLocaleSettings: boolean; - allowInput: boolean; - mode: string; - enableTime: boolean; - noCalendar: boolean; - format: string; - hourIncrement: number; - minuteIncrement: number; - time_24hr: boolean; - minDate: null; - disableWeekends: boolean; - disableWeekdays: boolean; - maxDate: null; + type: string; + displayInTimezone: string; + locale: string; + useLocaleSettings: boolean; + allowInput: boolean; + mode: string; + enableTime: boolean; + noCalendar: boolean; + format: string; + hourIncrement: number; + minuteIncrement: number; + time_24hr: boolean; + minDate: null; + disableWeekends: boolean; + disableWeekdays: boolean; + maxDate: null; }; useOriginalRevision?: undefined; components?: undefined; @@ -749,22 +764,23 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; hideInputLabels: boolean; inputsLabelPosition: string; useLocaleSettings: boolean; tableView: boolean; fields: { - day: { - hide: boolean; - }; - month: { - hide: boolean; - }; - year: { - hide: boolean; - }; + day: { + hide: boolean; + }; + month: { + hide: boolean; + }; + year: { + hide: boolean; + }; }; key: string; type: string; @@ -820,7 +836,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -881,7 +898,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; mask: boolean; spellcheck: boolean; @@ -942,16 +960,17 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; questions: { - label: string; - value: string; + label: string; + value: string; }[]; values: { - label: string; - value: string; + label: string; + value: string; }[]; key: string; type: string; @@ -1009,11 +1028,12 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; attrs: { - attr: string; - value: string; + attr: string; + value: string; }[]; content: string; refreshOnChange: boolean; @@ -1073,7 +1093,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { html: string; label: string; refreshOnChange: boolean; @@ -1134,10 +1155,12 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; - columns: ({ - components: { + columns: ( + | { + components: { label: string; mask: boolean; spellcheck: boolean; @@ -1149,27 +1172,29 @@ declare namespace _default { type: string; input: boolean; hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - } | { - components: { + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + | { + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - })[]; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + )[]; key: string; type: string; input: boolean; @@ -1228,7 +1253,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { legend: string; key: string; type: string; @@ -1236,16 +1262,16 @@ declare namespace _default { input: boolean; tableView: boolean; components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1300,7 +1326,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { collapsible: boolean; key: string; type: string; @@ -1308,16 +1335,16 @@ declare namespace _default { input: boolean; tableView: boolean; components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1372,7 +1399,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; cellAlignment: string; key: string; @@ -1381,83 +1409,92 @@ declare namespace _default { numCols: number; input: boolean; tableView: boolean; - rows: (({ - components: { - label: string; - widget: string; - tableView: boolean; - data: { - values: { + rows: ( + | ( + | { + components: { + label: string; + widget: string; + tableView: boolean; + data: { + values: { label: string; value: string; - }[]; - }; - selectThreshold: number; - validate: { - onlyAvailableItems: boolean; - }; - key: string; - type: string; - indexeddb: { - filter: {}; - }; - input: boolean; - }[]; - } | { - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - defaultValue: boolean; - }[]; - })[] | ({ - components: { - label: string; - tableView: boolean; - enableMinDateInput: boolean; - datePicker: { - disableWeekends: boolean; - disableWeekdays: boolean; - }; - enableMaxDateInput: boolean; - key: string; - type: string; - input: boolean; - widget: { + }[]; + }; + selectThreshold: number; + validate: { + onlyAvailableItems: boolean; + }; + key: string; type: string; - displayInTimezone: string; - locale: string; - useLocaleSettings: boolean; - allowInput: boolean; - mode: string; - enableTime: boolean; - noCalendar: boolean; - format: string; - hourIncrement: number; - minuteIncrement: number; - time_24hr: boolean; - minDate: null; - disableWeekends: boolean; - disableWeekdays: boolean; - maxDate: null; - }; - }[]; - } | { - components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - currency: string; - inputFormat: string; - key: string; - type: string; - input: boolean; - delimiter: boolean; - }[]; - })[])[]; + indexeddb: { + filter: {}; + }; + input: boolean; + }[]; + } + | { + components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + defaultValue: boolean; + }[]; + } + )[] + | ( + | { + components: { + label: string; + tableView: boolean; + enableMinDateInput: boolean; + datePicker: { + disableWeekends: boolean; + disableWeekdays: boolean; + }; + enableMaxDateInput: boolean; + key: string; + type: string; + input: boolean; + widget: { + type: string; + displayInTimezone: string; + locale: string; + useLocaleSettings: boolean; + allowInput: boolean; + mode: string; + enableTime: boolean; + noCalendar: boolean; + format: string; + hourIncrement: number; + minuteIncrement: number; + time_24hr: boolean; + minDate: null; + disableWeekends: boolean; + disableWeekdays: boolean; + maxDate: null; + }; + }[]; + } + | { + components: { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + currency: string; + inputFormat: string; + key: string; + type: string; + input: boolean; + delimiter: boolean; + }[]; + } + )[] + )[]; useOriginalRevision?: undefined; components?: undefined; form?: undefined; @@ -1509,12 +1546,14 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; - components: ({ - label: string; - key: string; - components: { + components: ( + | { + label: string; + key: string; + components: { label: string; mask: boolean; spellcheck: boolean; @@ -1525,18 +1564,20 @@ declare namespace _default { key: string; type: string; input: boolean; - }[]; - } | { - label: string; - key: string; - components: { + }[]; + } + | { + label: string; + key: string; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - }[]; - })[]; + }[]; + } + )[]; key: string; type: string; input: boolean; @@ -1595,18 +1636,19 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; key: string; type: string; input: boolean; tableView: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1662,7 +1704,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -1670,11 +1713,11 @@ declare namespace _default { hideLabel: boolean; input: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1729,19 +1772,20 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; type: string; input: boolean; valueComponent: { - type: string; - key: string; - label: string; - input: boolean; - hideLabel: boolean; - tableView: boolean; + type: string; + key: string; + label: string; + input: boolean; + hideLabel: boolean; + tableView: boolean; }; useOriginalRevision?: undefined; components?: undefined; @@ -1797,7 +1841,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; reorder: boolean; addAnotherPosition: string; @@ -1810,11 +1855,11 @@ declare namespace _default { type: string; input: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1864,7 +1909,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; rowDrafts: boolean; @@ -1872,11 +1918,11 @@ declare namespace _default { type: string; input: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1931,7 +1977,8 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; key: string; @@ -1939,11 +1986,11 @@ declare namespace _default { input: boolean; tree: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; useOriginalRevision?: undefined; form?: undefined; @@ -1998,14 +2045,15 @@ declare namespace _default { storage?: undefined; webcam?: undefined; fileTypes?: undefined; - } | { + } + | { label: string; tableView: boolean; storage: string; webcam: boolean; fileTypes: { - label: string; - value: string; + label: string; + value: string; }[]; key: string; type: string; @@ -2062,10 +2110,11 @@ declare namespace _default { initEmpty?: undefined; rowDrafts?: undefined; tree?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/helpers/testBasicComponentSettings/form.js b/test/forms/helpers/testBasicComponentSettings/form.js index 532a8a766d..c496e7f98d 100644 --- a/test/forms/helpers/testBasicComponentSettings/form.js +++ b/test/forms/helpers/testBasicComponentSettings/form.js @@ -1,678 +1,793 @@ export default { - "_id": "60228e64f2e20ca84010999a", - "type": "form", - "components": [{ - "label": "Form", - "tableView": true, - "useOriginalRevision": false, - "components": [{ - "label": "Text Field Child", - "tableView": true, - "key": "textFieldChild", - "type": "textfield", - "input": true - }, { - "label": "Time Child", - "inputType": "text", - "tableView": true, - "key": "timeChild", - "type": "time", - "input": true, - "inputMask": "99:99" - }, { - "title": "Panel Child", - "collapsible": false, - "key": "panelChild", - "type": "panel", - "label": "Panel", - "input": false, - "tableView": false, - "components": [{ - "label": "Number Inside Child Panel", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "numberInsideChildPanel", - "type": "number", - "input": true - }] - }, { - "label": "Data Grid Child", - "reorder": false, - "addAnotherPosition": "bottom", - "layoutFixed": false, - "enableRowGroups": false, - "initEmpty": false, - "tableView": false, - "defaultValue": [{}], - "key": "dataGridChild", - "type": "datagrid", - "input": true, - "components": [{ - "label": "Text Area Inside Child DataGrid", - "autoExpand": false, - "tableView": true, - "key": "textAreaInsideChildDataGrid", - "type": "textarea", - "input": true - }] - }], - "key": "form", - "type": "form", - "input": true, - "form": "6034b4ef914866a81c060533" - }, - { - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true - }, { - "label": "Text Area", - "autoExpand": false, - "tableView": true, - "key": "textArea", - "type": "textarea", - "input": true - }, { - "label": "Number", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "number", - "type": "number", - "input": true - }, { - "label": "Password", - "tableView": false, - "key": "password", - "type": "password", - "input": true, - "protected": true - }, { - "label": "Checkbox", - "tableView": false, - "key": "checkbox", - "type": "checkbox", - "input": true - }, { - "label": "Select Boxes", - "optionsLabelPosition": "right", - "tableView": false, - "values": [{ - "label": "a", - "value": "a", - "shortcut": "" - }, { - "label": "b", - "value": "b", - "shortcut": "" - }, { - "label": "c", - "value": "c", - "shortcut": "" - }], - "validate": { - "onlyAvailableItems": false + _id: '60228e64f2e20ca84010999a', + type: 'form', + components: [ + { + label: 'Form', + tableView: true, + useOriginalRevision: false, + components: [ + { + label: 'Text Field Child', + tableView: true, + key: 'textFieldChild', + type: 'textfield', + input: true, + }, + { + label: 'Time Child', + inputType: 'text', + tableView: true, + key: 'timeChild', + type: 'time', + input: true, + inputMask: '99:99', + }, + { + title: 'Panel Child', + collapsible: false, + key: 'panelChild', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ + { + label: 'Number Inside Child Panel', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'numberInsideChildPanel', + type: 'number', + input: true, + }, + ], + }, + { + label: 'Data Grid Child', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{}], + key: 'dataGridChild', + type: 'datagrid', + input: true, + components: [ + { + label: 'Text Area Inside Child DataGrid', + autoExpand: false, + tableView: true, + key: 'textAreaInsideChildDataGrid', + type: 'textarea', + input: true, + }, + ], + }, + ], + key: 'form', + type: 'form', + input: true, + form: '6034b4ef914866a81c060533', + }, + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + { + label: 'Text Area', + autoExpand: false, + tableView: true, + key: 'textArea', + type: 'textarea', + input: true, + }, + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + { + label: 'Password', + tableView: false, + key: 'password', + type: 'password', + input: true, + protected: true, + }, + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + }, + { + label: 'Select Boxes', + optionsLabelPosition: 'right', + tableView: false, + values: [ + { + label: 'a', + value: 'a', + shortcut: '', + }, + { + label: 'b', + value: 'b', + shortcut: '', + }, + { + label: 'c', + value: 'c', + shortcut: '', + }, + ], + validate: { + onlyAvailableItems: false, }, - "key": "selectBoxes", - "type": "selectboxes", - "input": true, - "inputType": "checkbox", - }, { - "label": "Select", - "widget": "choicesjs", - "tableView": true, - "data": { - "values": [{ - "label": "A", - "value": "a" - }, { - "label": "B", - "value": "b" - }, { - "label": "C", - "value": "c" - }] + key: 'selectBoxes', + type: 'selectboxes', + input: true, + inputType: 'checkbox', + }, + { + label: 'Select', + widget: 'choicesjs', + tableView: true, + data: { + values: [ + { + label: 'A', + value: 'a', + }, + { + label: 'B', + value: 'b', + }, + { + label: 'C', + value: 'c', + }, + ], }, - "selectThreshold": 0.3, - "validate": { - "onlyAvailableItems": false + selectThreshold: 0.3, + validate: { + onlyAvailableItems: false, }, - "key": "select", - "type": "select", - "indexeddb": { - "filter": {} + key: 'select', + type: 'select', + indexeddb: { + filter: {}, }, - "input": true - }, { - "label": "Radio", - "optionsLabelPosition": "right", - "inline": false, - "tableView": false, - "values": [{ - "label": "a", - "value": "a", - "shortcut": "" - }, { - "label": "b", - "value": "b", - "shortcut": "" - }, { - "label": "c", - "value": "c", - "shortcut": "" - }], - "validate": { - "onlyAvailableItems": false + input: true, + }, + { + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ + { + label: 'a', + value: 'a', + shortcut: '', + }, + { + label: 'b', + value: 'b', + shortcut: '', + }, + { + label: 'c', + value: 'c', + shortcut: '', + }, + ], + validate: { + onlyAvailableItems: false, }, - "key": "radio", - "type": "radio", - "input": true - }, { - "label": "Email", - "tableView": true, - "key": "email", - "type": "email", - "input": true - }, { - "label": "Url", - "tableView": true, - "key": "url", - "type": "url", - "input": true - }, { - "label": "Phone Number", - "tableView": true, - "key": "phoneNumber", - "type": "phoneNumber", - "input": true - }, { - "label": "Tags", - "tableView": false, - "key": "tags", - "type": "tags", - "input": true - }, { - "label": "Address", - "tableView": false, - "provider": "nominatim", - "key": "address", - "type": "address", - "providerOptions": { - "params": { - "autocompleteOptions": {} - } + key: 'radio', + type: 'radio', + input: true, + }, + { + label: 'Email', + tableView: true, + key: 'email', + type: 'email', + input: true, + }, + { + label: 'Url', + tableView: true, + key: 'url', + type: 'url', + input: true, + }, + { + label: 'Phone Number', + tableView: true, + key: 'phoneNumber', + type: 'phoneNumber', + input: true, + }, + { + label: 'Tags', + tableView: false, + key: 'tags', + type: 'tags', + input: true, + }, + { + label: 'Address', + tableView: false, + provider: 'nominatim', + key: 'address', + type: 'address', + providerOptions: { + params: { + autocompleteOptions: {}, + }, }, - "input": true, - "components": [{ - "label": "Address 1", - "tableView": false, - "key": "address1", - "type": "textfield", - "input": true, - "customConditional": "show = _.get(instance, 'parent.manualMode', false);" - }, { - "label": "Address 2", - "tableView": false, - "key": "address2", - "type": "textfield", - "input": true, - "customConditional": "show = _.get(instance, 'parent.manualMode', false);" - }, { - "label": "City", - "tableView": false, - "key": "city", - "type": "textfield", - "input": true, - "customConditional": "show = _.get(instance, 'parent.manualMode', false);" - }, { - "label": "State", - "tableView": false, - "key": "state", - "type": "textfield", - "input": true, - "customConditional": "show = _.get(instance, 'parent.manualMode', false);" - }, { - "label": "Country", - "tableView": false, - "key": "country", - "type": "textfield", - "input": true, - "customConditional": "show = _.get(instance, 'parent.manualMode', false);" - }, { - "label": "Zip Code", - "tableView": false, - "key": "zip", - "type": "textfield", - "input": true, - "customConditional": "show = _.get(instance, 'parent.manualMode', false);" - }] - }, { - "label": "Date / Time", - "tableView": false, - "enableMinDateInput": false, - "datePicker": { - "disableWeekends": false, - "disableWeekdays": false + input: true, + components: [ + { + label: 'Address 1', + tableView: false, + key: 'address1', + type: 'textfield', + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: 'Address 2', + tableView: false, + key: 'address2', + type: 'textfield', + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: 'City', + tableView: false, + key: 'city', + type: 'textfield', + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: 'State', + tableView: false, + key: 'state', + type: 'textfield', + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: 'Country', + tableView: false, + key: 'country', + type: 'textfield', + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + { + label: 'Zip Code', + tableView: false, + key: 'zip', + type: 'textfield', + input: true, + customConditional: "show = _.get(instance, 'parent.manualMode', false);", + }, + ], + }, + { + label: 'Date / Time', + tableView: false, + enableMinDateInput: false, + datePicker: { + disableWeekends: false, + disableWeekdays: false, }, - "enableMaxDateInput": false, - "key": "dateTime", - "type": "datetime", - "input": true, - "widget": { - "type": "calendar", - "displayInTimezone": "viewer", - "locale": "en", - "useLocaleSettings": false, - "allowInput": true, - "mode": "single", - "enableTime": true, - "noCalendar": false, - "format": "yyyy-MM-dd hh:mm a", - "hourIncrement": 1, - "minuteIncrement": 1, - "time_24hr": false, - "minDate": null, - "disableWeekends": false, - "disableWeekdays": false, - "maxDate": null - } - }, { - "label": "Day", - "hideInputLabels": false, - "inputsLabelPosition": "top", - "useLocaleSettings": false, - "tableView": false, - "fields": { - "day": { - "hide": false - }, - "month": { - "hide": false - }, - "year": { - "hide": false - } + enableMaxDateInput: false, + key: 'dateTime', + type: 'datetime', + input: true, + widget: { + type: 'calendar', + displayInTimezone: 'viewer', + locale: 'en', + useLocaleSettings: false, + allowInput: true, + mode: 'single', + enableTime: true, + noCalendar: false, + format: 'yyyy-MM-dd hh:mm a', + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + disableWeekends: false, + disableWeekdays: false, + maxDate: null, }, - "key": "day", - "type": "day", - "input": true, - }, { - "label": "Time", - "tableView": true, - "key": "time", - "type": "time", - "input": true, - "inputMask": "99:99" - }, { - "label": "Currency", - "mask": false, - "spellcheck": true, - "tableView": false, - "currency": "USD", - "inputFormat": "plain", - "key": "currency", - "type": "currency", - "input": true, - "delimiter": true - }, { - "label": "Survey", - "tableView": false, - "questions": [{ - "label": "Question 1", - "value": "question1" - }, { - "label": "Question 2", - "value": "question2" - }], - "values": [{ - "label": "yes", - "value": "yes" - }, { - "label": "no", - "value": "no" - }], - "key": "survey", - "type": "survey", - "input": true - }, { - "label": "Signature", - "tableView": false, - "key": "signature", - "type": "signature", - "input": true - }, { - "label": "HTML", - "attrs": [{ - "attr": "", - "value": "" - }], - "content": "some test HTML content", - "refreshOnChange": false, - "key": "html", - "type": "htmlelement", - "input": false, - "tableView": false - }, { - "html": "

    some text content

    ", - "label": "Content", - "refreshOnChange": false, - "key": "content", - "type": "content", - "input": false, - "tableView": false - }, { - "label": "Columns", - "columns": [{ - "components": [{ - "label": "Number Column", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "numberColumn", - "type": "number", - "input": true, - "hideOnChildrenHidden": false - }], - "width": 6, - "offset": 0, - "push": 0, - "pull": 0, - "size": "md" - }, { - "components": [{ - "label": "Text Field Column", - "tableView": true, - "key": "textFieldColumn", - "type": "textfield", - "input": true, - "hideOnChildrenHidden": false - }], - "width": 6, - "offset": 0, - "push": 0, - "pull": 0, - "size": "md" - }], - "key": "columns", - "type": "columns", - "input": false, - "tableView": false - }, { - "legend": "test legend", - "key": "fieldset", - "type": "fieldset", - "label": "test legend", - "input": false, - "tableView": false, - "components": [{ - "label": "Number Fieldset", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "numberFieldset", - "type": "number", - "input": true - }] - }, { - "collapsible": false, - "key": "panel", - "type": "panel", - "label": "Panel", - "input": false, - "tableView": false, - "components": [{ - "label": "Number Panel", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "numberPanel", - "type": "number", - "input": true - }] - }, { - "label": "Table", - "cellAlignment": "left", - "key": "table", - "type": "table", - "numRows": 2, - "numCols": 2, - "input": false, - "tableView": false, - "rows": [ - [{ - "components": [{ - "label": "Select Table", - "widget": "choicesjs", - "tableView": true, - "data": { - "values": [{ - "label": "one", - "value": "one" - }, { - "label": "two", - "value": "two" - }] + }, + { + label: 'Day', + hideInputLabels: false, + inputsLabelPosition: 'top', + useLocaleSettings: false, + tableView: false, + fields: { + day: { + hide: false, + }, + month: { + hide: false, + }, + year: { + hide: false, + }, + }, + key: 'day', + type: 'day', + input: true, + }, + { + label: 'Time', + tableView: true, + key: 'time', + type: 'time', + input: true, + inputMask: '99:99', + }, + { + label: 'Currency', + mask: false, + spellcheck: true, + tableView: false, + currency: 'USD', + inputFormat: 'plain', + key: 'currency', + type: 'currency', + input: true, + delimiter: true, + }, + { + label: 'Survey', + tableView: false, + questions: [ + { + label: 'Question 1', + value: 'question1', + }, + { + label: 'Question 2', + value: 'question2', + }, + ], + values: [ + { + label: 'yes', + value: 'yes', + }, + { + label: 'no', + value: 'no', + }, + ], + key: 'survey', + type: 'survey', + input: true, + }, + { + label: 'Signature', + tableView: false, + key: 'signature', + type: 'signature', + input: true, + }, + { + label: 'HTML', + attrs: [ + { + attr: '', + value: '', + }, + ], + content: 'some test HTML content', + refreshOnChange: false, + key: 'html', + type: 'htmlelement', + input: false, + tableView: false, + }, + { + html: '

    some text content

    ', + label: 'Content', + refreshOnChange: false, + key: 'content', + type: 'content', + input: false, + tableView: false, + }, + { + label: 'Columns', + columns: [ + { + components: [ + { + label: 'Number Column', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'numberColumn', + type: 'number', + input: true, + hideOnChildrenHidden: false, }, - "selectThreshold": 0.3, - "validate": { - "onlyAvailableItems": false + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + { + components: [ + { + label: 'Text Field Column', + tableView: true, + key: 'textFieldColumn', + type: 'textfield', + input: true, + hideOnChildrenHidden: false, }, - "key": "selectTable", - "type": "select", - "indexeddb": { - "filter": {} + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + ], + key: 'columns', + type: 'columns', + input: false, + tableView: false, + }, + { + legend: 'test legend', + key: 'fieldset', + type: 'fieldset', + label: 'test legend', + input: false, + tableView: false, + components: [ + { + label: 'Number Fieldset', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'numberFieldset', + type: 'number', + input: true, + }, + ], + }, + { + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ + { + label: 'Number Panel', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'numberPanel', + type: 'number', + input: true, + }, + ], + }, + { + label: 'Table', + cellAlignment: 'left', + key: 'table', + type: 'table', + numRows: 2, + numCols: 2, + input: false, + tableView: false, + rows: [ + [ + { + components: [ + { + label: 'Select Table', + widget: 'choicesjs', + tableView: true, + data: { + values: [ + { + label: 'one', + value: 'one', + }, + { + label: 'two', + value: 'two', + }, + ], + }, + selectThreshold: 0.3, + validate: { + onlyAvailableItems: false, + }, + key: 'selectTable', + type: 'select', + indexeddb: { + filter: {}, + }, + input: true, + }, + ], + }, + { + components: [ + { + label: 'Checkbox Table', + tableView: false, + key: 'checkboxTable', + type: 'checkbox', + input: true, + defaultValue: false, + }, + ], + }, + ], + [ + { + components: [ + { + label: 'Date / Time Table', + tableView: false, + enableMinDateInput: false, + datePicker: { + disableWeekends: false, + disableWeekdays: false, + }, + enableMaxDateInput: false, + key: 'dateTimeTable', + type: 'datetime', + input: true, + widget: { + type: 'calendar', + displayInTimezone: 'viewer', + locale: 'en', + useLocaleSettings: false, + allowInput: true, + mode: 'single', + enableTime: true, + noCalendar: false, + format: 'yyyy-MM-dd hh:mm a', + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + disableWeekends: false, + disableWeekdays: false, + maxDate: null, + }, + }, + ], + }, + { + components: [ + { + label: 'Currency Table', + mask: false, + spellcheck: true, + tableView: false, + currency: 'USD', + inputFormat: 'plain', + key: 'currencyTable', + type: 'currency', + input: true, + delimiter: true, + }, + ], + }, + ], + ], + }, + { + label: 'Tabs', + components: [ + { + label: 'Tab 1', + key: 'tab1', + components: [ + { + label: 'Number Tab', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'numberTab', + type: 'number', + input: true, }, - "input": true - }] - }, { - "components": [{ - "label": "Checkbox Table", - "tableView": false, - "key": "checkboxTable", - "type": "checkbox", - "input": true, - "defaultValue": false - }] - }], - [{ - "components": [{ - "label": "Date / Time Table", - "tableView": false, - "enableMinDateInput": false, - "datePicker": { - "disableWeekends": false, - "disableWeekdays": false + ], + }, + { + label: 'Tab 2', + key: 'tab2', + components: [ + { + label: 'Text Field Tab', + tableView: true, + key: 'textFieldTab', + type: 'textfield', + input: true, }, - "enableMaxDateInput": false, - "key": "dateTimeTable", - "type": "datetime", - "input": true, - "widget": { - "type": "calendar", - "displayInTimezone": "viewer", - "locale": "en", - "useLocaleSettings": false, - "allowInput": true, - "mode": "single", - "enableTime": true, - "noCalendar": false, - "format": "yyyy-MM-dd hh:mm a", - "hourIncrement": 1, - "minuteIncrement": 1, - "time_24hr": false, - "minDate": null, - "disableWeekends": false, - "disableWeekdays": false, - "maxDate": null - } - }] - }, { - "components": [{ - "label": "Currency Table", - "mask": false, - "spellcheck": true, - "tableView": false, - "currency": "USD", - "inputFormat": "plain", - "key": "currencyTable", - "type": "currency", - "input": true, - "delimiter": true - }] - }] - ] - }, { - "label": "Tabs", - "components": [{ - "label": "Tab 1", - "key": "tab1", - "components": [{ - "label": "Number Tab", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "numberTab", - "type": "number", - "input": true - }] - }, { - "label": "Tab 2", - "key": "tab2", - "components": [{ - "label": "Text Field Tab", - "tableView": true, - "key": "textFieldTab", - "type": "textfield", - "input": true - }] - }], - "key": "tabs", - "type": "tabs", - "input": false, - "tableView": false - }, { - "label": "Well", - "key": "well", - "type": "well", - "input": false, - "tableView": false, - "components": [{ - "label": "Text Field Well", - "tableView": true, - "key": "textFieldWell", - "type": "textfield", - "input": true - }] - }, { - "label": "Hidden", - "key": "hidden", - "type": "hidden", - "input": true, - "tableView": false - }, { - "label": "Container", - "tableView": false, - "key": "container", - "type": "container", - "hideLabel": false, - "input": true, - "components": [{ - "label": "Text Field Container", - "tableView": true, - "key": "textFieldContainer", - "type": "textfield", - "input": true - }] - }, { - "label": "Data Map", - "tableView": false, - "key": "dataMap", - "type": "datamap", - "input": true, - "valueComponent": { - "type": "textfield", - "key": "key", - "label": "Value", - "input": true, - "hideLabel": true, - "tableView": true - } - }, { - "label": "Data Grid", - "reorder": false, - "addAnotherPosition": "bottom", - "layoutFixed": false, - "enableRowGroups": false, - "initEmpty": false, - "tableView": false, - "defaultValue": [{}], - "key": "dataGrid", - "type": "datagrid", - "input": true, - "components": [{ - "label": "Text Field DataGrid", - "tableView": true, - "key": "textFieldDataGrid", - "type": "textfield", - "input": true - }] - }, { - "label": "Edit Grid", - "tableView": false, - "rowDrafts": false, - "key": "editGrid", - "type": "editgrid", - "input": true, - "components": [{ - "label": "Text Field EditGrid", - "tableView": true, - "key": "textFieldEditGrid", - "type": "textfield", - "input": true - }] - }, { - "label": "Upload", - "tableView": false, - "storage": "base64", - "webcam": false, - "fileTypes": [{ - "label": "", - "value": "" - }], - "key": "file", - "type": "file", - "input": true - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "input": true, - "tableView": false - } + ], + }, + ], + key: 'tabs', + type: 'tabs', + input: false, + tableView: false, + }, + { + label: 'Well', + key: 'well', + type: 'well', + input: false, + tableView: false, + components: [ + { + label: 'Text Field Well', + tableView: true, + key: 'textFieldWell', + type: 'textfield', + input: true, + }, + ], + }, + { + label: 'Hidden', + key: 'hidden', + type: 'hidden', + input: true, + tableView: false, + }, + { + label: 'Container', + tableView: false, + key: 'container', + type: 'container', + hideLabel: false, + input: true, + components: [ + { + label: 'Text Field Container', + tableView: true, + key: 'textFieldContainer', + type: 'textfield', + input: true, + }, + ], + }, + { + label: 'Data Map', + tableView: false, + key: 'dataMap', + type: 'datamap', + input: true, + valueComponent: { + type: 'textfield', + key: 'key', + label: 'Value', + input: true, + hideLabel: true, + tableView: true, + }, + }, + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{}], + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ + { + label: 'Text Field DataGrid', + tableView: true, + key: 'textFieldDataGrid', + type: 'textfield', + input: true, + }, + ], + }, + { + label: 'Edit Grid', + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + input: true, + components: [ + { + label: 'Text Field EditGrid', + tableView: true, + key: 'textFieldEditGrid', + type: 'textfield', + input: true, + }, + ], + }, + { + label: 'Upload', + tableView: false, + storage: 'base64', + webcam: false, + fileTypes: [ + { + label: '', + value: '', + }, + ], + key: 'file', + type: 'file', + input: true, + }, + { + type: 'button', + label: 'Submit', + key: 'submit', + input: true, + tableView: false, + }, ], - "title": "form for automated tests", - "display": "form", - "name": "formForAutomatedTests", - "path": "formforautomatedtests", -} + title: 'form for automated tests', + display: 'form', + name: 'formForAutomatedTests', + path: 'formforautomatedtests', +}; diff --git a/test/forms/helpers/testBasicComponentSettings/index.d.ts b/test/forms/helpers/testBasicComponentSettings/index.d.ts index a23b340325..c7d1617d59 100644 --- a/test/forms/helpers/testBasicComponentSettings/index.d.ts +++ b/test/forms/helpers/testBasicComponentSettings/index.d.ts @@ -1,8 +1,8 @@ declare namespace _default { - export { values }; - export { settings }; - export { form }; - export { tests }; + export { values }; + export { settings }; + export { form }; + export { tests }; } export default _default; import values from './values'; diff --git a/test/forms/helpers/testBasicComponentSettings/index.js b/test/forms/helpers/testBasicComponentSettings/index.js index f1dd124abb..d4e878f561 100644 --- a/test/forms/helpers/testBasicComponentSettings/index.js +++ b/test/forms/helpers/testBasicComponentSettings/index.js @@ -3,4 +3,4 @@ import settings from './settings'; import form from './form'; import tests from './tests'; -export default { values, settings, form, tests }; \ No newline at end of file +export default { values, settings, form, tests }; diff --git a/test/forms/helpers/testBasicComponentSettings/settings.d.ts b/test/forms/helpers/testBasicComponentSettings/settings.d.ts index e01a940e8d..3f33b8790f 100644 --- a/test/forms/helpers/testBasicComponentSettings/settings.d.ts +++ b/test/forms/helpers/testBasicComponentSettings/settings.d.ts @@ -1,347 +1,347 @@ declare const _default: { - placeholder: any; - description: any; - tooltip: any; - prefix: any; - suffix: any; - customClass: any; - tabindex: any; - hidden: any; - hideLabel: any; - disabled: any; - defaultValue: { - textField: string; - textArea: string; - number: number; - checkbox: boolean; - selectBoxes: { - a: boolean; - b: boolean; - c: boolean; - }; - select: string; - radio: string; - email: string; + placeholder: any; + description: any; + tooltip: any; + prefix: any; + suffix: any; + customClass: any; + tabindex: any; + hidden: any; + hideLabel: any; + disabled: any; + defaultValue: { + textField: string; + textArea: string; + number: number; + checkbox: boolean; + selectBoxes: { + a: boolean; + b: boolean; + c: boolean; + }; + select: string; + radio: string; + email: string; + url: string; + phoneNumber: string; + tags: string; + address: { + address: { + county: string; + state: string; + country: string; + country_code: string; + }; + boundingbox: any; + class: string; + display_name: string; + icon: string; + importance: number; + lat: string; + licence: string; + lon: string; + osm_id: number; + osm_type: string; + place_id: number; + type: string; + }; + dateTime: string; + day: string; + time: string; + currency: number; + survey: { + question1: string; + question2: string; + }; + dataGrid: { + textFieldDataGrid: string; + }[]; + tree: { + children: { + children: never[]; + data: { + textFieldTree: string; + }; + }[]; + data: { + textFieldTree: string; + }; + }; + }; + customDefaultValue: { + form: { + js: string; + expectedValue: { + data: { + dataGridChild: { + textAreaInsideChildDataGrid: string; + }[]; + numberInsideChildPanel: number; + textFieldChild: string; + timeChild: string; + }; + }; + }; + textField: { + js: string; + expectedValue: string; + }; + textArea: { + js: string; + expectedValue: string; + }; + number: { + js: string; + expectedValue: number; + }; + selectBoxes: { + js: string; + expectedValue: { + a: boolean; + b: boolean; + c: boolean; + }; + }; + select: { + js: string; + expectedValue: string; + }; + radio: { + js: string; + expectedValue: string; + }; + email: { + js: string; + expectedValue: string; + }; + url: { + js: string; + expectedValue: string; + }; + phoneNumber: { + js: string; + expectedValue: string; + }; + tags: { + js: string; + expectedValue: string; + }; + dateTime: { + js: string; + expectedValue: string; + }; + day: { + js: string; + expectedValue: string; + }; + time: { + js: string; + expectedValue: string; + }; + currency: { + js: string; + expectedValue: number; + }; + survey: { + js: string; + expectedValue: { + question1: string; + question2: string; + }; + }; + hidden: { + js: string; + expectedValue: number; + }; + container: { + js: string; + expectedValue: { + textFieldContainer: string; + }; + }; + dataMap: { + js: string; + expectedValue: { + key: string; + }; + }; + dataGrid: { + js: string; + expectedValue: { + textFieldDataGrid: string; + }[]; + }; + editGrid: { + js: string; + expectedValue: { + textFieldEditGrid: string; + }[]; + }; + tree: { + js: string; + expectedValue: { + children: never[]; + data: { + textFieldTree: string; + }; + }; + }; + file: { + js: string; + expectedValue: { + name: string; + originalName: string; + size: number; + storage: string; + type: string; url: string; - phoneNumber: string; - tags: string; - address: { - address: { - county: string; - state: string; - country: string; - country_code: string; - }; - boundingbox: any; - class: string; - display_name: string; - icon: string; - importance: number; - lat: string; - licence: string; - lon: string; - osm_id: number; - osm_type: string; - place_id: number; - type: string; - }; - dateTime: string; - day: string; - time: string; - currency: number; - survey: { - question1: string; - question2: string; - }; - dataGrid: { - textFieldDataGrid: string; - }[]; - tree: { - children: { - children: never[]; - data: { - textFieldTree: string; - }; - }[]; - data: { - textFieldTree: string; - }; - }; + }[]; }; - customDefaultValue: { - form: { - js: string; - expectedValue: { - data: { - dataGridChild: { - textAreaInsideChildDataGrid: string; - }[]; - numberInsideChildPanel: number; - textFieldChild: string; - timeChild: string; - }; - }; - }; - textField: { - js: string; - expectedValue: string; - }; - textArea: { - js: string; - expectedValue: string; - }; - number: { - js: string; - expectedValue: number; - }; - selectBoxes: { - js: string; - expectedValue: { - a: boolean; - b: boolean; - c: boolean; - }; - }; - select: { - js: string; - expectedValue: string; - }; - radio: { - js: string; - expectedValue: string; - }; - email: { - js: string; - expectedValue: string; - }; - url: { - js: string; - expectedValue: string; - }; - phoneNumber: { - js: string; - expectedValue: string; - }; - tags: { - js: string; - expectedValue: string; - }; - dateTime: { - js: string; - expectedValue: string; - }; - day: { - js: string; - expectedValue: string; - }; - time: { - js: string; - expectedValue: string; - }; - currency: { - js: string; - expectedValue: number; - }; - survey: { - js: string; - expectedValue: { - question1: string; - question2: string; - }; - }; - hidden: { - js: string; - expectedValue: number; - }; - container: { - js: string; - expectedValue: { - textFieldContainer: string; - }; - }; - dataMap: { - js: string; - expectedValue: { - key: string; - }; - }; - dataGrid: { - js: string; - expectedValue: { - textFieldDataGrid: string; - }[]; - }; - editGrid: { - js: string; - expectedValue: { - textFieldEditGrid: string; - }[]; - }; - tree: { - js: string; - expectedValue: { - children: never[]; - data: { - textFieldTree: string; - }; - }; - }; - file: { - js: string; - expectedValue: { - name: string; - originalName: string; - size: number; - storage: string; - type: string; - url: string; - }[]; - }; + }; + redrawOn: any; + multiple: any; + modalEdit: any; + calculateValue: { + form: { + js: string; + expectedValue: (basis: any) => { + data: { + dataGridChild: { + textAreaInsideChildDataGrid: string; + }[]; + numberInsideChildPanel: any; + textFieldChild: string; + timeChild: string; + }; + }; }; - redrawOn: any; - multiple: any; - modalEdit: any; - calculateValue: { - form: { - js: string; - expectedValue: (basis: any) => { - data: { - dataGridChild: { - textAreaInsideChildDataGrid: string; - }[]; - numberInsideChildPanel: any; - textFieldChild: string; - timeChild: string; - }; - }; - }; - textField: { - js: string; - expectedValue: (basis: any) => string; - }; - textArea: { - js: string; - expectedValue: (basis: any) => string; - }; - number: { - js: string; - expectedValue: (basis: any) => any; - }; - checkbox: { - js: string; - expectedValue: (basis: any) => boolean; - }; - selectBoxes: { - js: string; - expectedValue: (basis: any) => { - a: boolean; - b: boolean; - c: boolean; - }; - }; - select: { - js: string; - expectedValue: (basis: any) => "a" | "b"; - }; - radio: { - js: string; - expectedValue: (basis: any) => "b" | "c"; - }; - email: { - js: string; - expectedValue: (basis: any) => string; - }; - url: { - js: string; - expectedValue: (basis: any) => string; - }; - phoneNumber: { - js: string; - expectedValue: (basis: any) => string; - }; - tags: { - js: string; - expectedValue: (basis: any) => any; - }; - dateTime: { - js: string; - expectedValue: (basis: any) => "2023-03-03T12:00:00" | "2003-12-12T12:00:00"; - }; - day: { - js: string; - expectedValue: (basis: any) => "05/05/2015" | "03/03/2003"; - }; - time: { - js: string; - expectedValue: (basis: any) => "04:45:00" | "04:05:00"; - }; - currency: { - js: string; - expectedValue: (basis: any) => any; - }; - survey: { - js: string; - expectedValue: (basis: any) => { - question1: string; - question2: string; - }; - }; - hidden: { - js: string; - expectedValue: (basis: any) => any; - }; - container: { - js: string; - expectedValue: (basis: any) => { - textFieldContainer: string; - }; - }; - dataMap: { - js: string; - expectedValue: (basis: any) => { - key: string; - }; - }; - dataGrid: { - js: string; - expectedValue: (basis: any) => { - textFieldDataGrid: string; - }[]; - }; - editGrid: { - js: string; - expectedValue: (basis: any) => { - textFieldEditGrid: string; - }[]; - }; - tree: { - js: string; - expectedValue: (basis: any) => { - children: never[]; - data: { - textFieldTree: string; - }; - }; - }; - file: { - js: string; - expectedValue: (basis: any) => { - name: string; - originalName: string; - size: number; - storage: string; - type: string; - url: string; - }[]; - }; + textField: { + js: string; + expectedValue: (basis: any) => string; + }; + textArea: { + js: string; + expectedValue: (basis: any) => string; + }; + number: { + js: string; + expectedValue: (basis: any) => any; + }; + checkbox: { + js: string; + expectedValue: (basis: any) => boolean; + }; + selectBoxes: { + js: string; + expectedValue: (basis: any) => { + a: boolean; + b: boolean; + c: boolean; + }; + }; + select: { + js: string; + expectedValue: (basis: any) => 'a' | 'b'; + }; + radio: { + js: string; + expectedValue: (basis: any) => 'b' | 'c'; + }; + email: { + js: string; + expectedValue: (basis: any) => string; + }; + url: { + js: string; + expectedValue: (basis: any) => string; + }; + phoneNumber: { + js: string; + expectedValue: (basis: any) => string; + }; + tags: { + js: string; + expectedValue: (basis: any) => any; + }; + dateTime: { + js: string; + expectedValue: (basis: any) => '2023-03-03T12:00:00' | '2003-12-12T12:00:00'; + }; + day: { + js: string; + expectedValue: (basis: any) => '05/05/2015' | '03/03/2003'; + }; + time: { + js: string; + expectedValue: (basis: any) => '04:45:00' | '04:05:00'; + }; + currency: { + js: string; + expectedValue: (basis: any) => any; + }; + survey: { + js: string; + expectedValue: (basis: any) => { + question1: string; + question2: string; + }; + }; + hidden: { + js: string; + expectedValue: (basis: any) => any; + }; + container: { + js: string; + expectedValue: (basis: any) => { + textFieldContainer: string; + }; + }; + dataMap: { + js: string; + expectedValue: (basis: any) => { + key: string; + }; + }; + dataGrid: { + js: string; + expectedValue: (basis: any) => { + textFieldDataGrid: string; + }[]; + }; + editGrid: { + js: string; + expectedValue: (basis: any) => { + textFieldEditGrid: string; + }[]; + }; + tree: { + js: string; + expectedValue: (basis: any) => { + children: never[]; + data: { + textFieldTree: string; + }; + }; + }; + file: { + js: string; + expectedValue: (basis: any) => { + name: string; + originalName: string; + size: number; + storage: string; + type: string; + url: string; + }[]; }; - clearOnHide: any; - 'validate.required': any; - 'validate.custom': any; - validate_nested_components: any; - conditional: any; - customConditional: any; - logic: any; - set_get_value: any; + }; + clearOnHide: any; + 'validate.required': any; + 'validate.custom': any; + validate_nested_components: any; + conditional: any; + customConditional: any; + logic: any; + set_get_value: any; }; export default _default; diff --git a/test/forms/helpers/testBasicComponentSettings/settings.js b/test/forms/helpers/testBasicComponentSettings/settings.js index f72a0d455e..f221ee27fc 100644 --- a/test/forms/helpers/testBasicComponentSettings/settings.js +++ b/test/forms/helpers/testBasicComponentSettings/settings.js @@ -4,127 +4,318 @@ import basicValues from './basicValues'; export default { placeholder: _.reduce( - ["textField", "textArea", "number", "password", "select", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "currency"], + [ + 'textField', + 'textArea', + 'number', + 'password', + 'select', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'currency', + ], (obj, componentKey, index) => { - if(componentKey === 'day') { - obj[componentKey] = { day: "enter day", month: "enter month", year: "enter year" }; - } - else { + if (componentKey === 'day') { + obj[componentKey] = { day: 'enter day', month: 'enter month', year: 'enter year' }; + } else { 'test placeholder' + index; } return obj; }, - {} + {}, ), description: _.reduce( [ - "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey, index) => { obj[componentKey] = 'test description' + index; return obj; }, - {} + {}, ), - tooltip:_.reduce( + tooltip: _.reduce( [ - "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "fieldset", "panel", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" - ], + 'fieldset', + 'panel', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', + ], (obj, componentKey, index) => { obj[componentKey] = 'test tooltip' + index; return obj; }, - {} + {}, ), prefix: _.reduce( - ["textField", "textArea", "number", "password", "email", "url", "phoneNumber", "currency"], + ['textField', 'textArea', 'number', 'password', 'email', 'url', 'phoneNumber', 'currency'], (obj, componentKey, index) => { obj[componentKey] = 'test prefix' + index; return obj; }, - {} + {}, ), - suffix:_.reduce( - ["textField", "textArea", "number", "password", "email", "url", "phoneNumber", "currency"], + suffix: _.reduce( + ['textField', 'textArea', 'number', 'password', 'email', 'url', 'phoneNumber', 'currency'], (obj, componentKey, index) => { obj[componentKey] = 'test suffix' + index; return obj; }, - {} + {}, ), customClass: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "html", "content", "columns", "fieldset", "panel", "table", "tabs", "well", "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'html', + 'content', + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { obj[componentKey] = 'test-custom__css_class'; return obj; }, - {} + {}, ), tabindex: _.reduce( [ - "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', //"tags","form", //BUG - "address", "dateTime", + 'address', + 'dateTime', //"day", //BUG - "time", "currency", + 'time', + 'currency', //"survey", //BUG //"signature", //"fieldset", "dataGrid", "editGrid", "tree", "file", //BUG - "submit" + 'submit', ], (obj, componentKey, index) => { obj[componentKey] = index; return obj; }, - {} ), + {}, + ), hidden: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "html", "content", "columns", "fieldset", "panel", "table", "tabs", "well", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'html', + 'content', + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} ), + {}, + ), hideLabel: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "panel", "container", "dataMap", "dataGrid", "editGrid", "tree", "file" + 'panel', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} ), + {}, + ), disabled: _.reduce( [ - "form", "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "fieldset", "panel", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit", + 'fieldset', + 'panel', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} ), + {}, + ), defaultValue: { textField: 'test default value', textArea: 'test default value', number: 55, checkbox: true, - selectBoxes: {a: true, b: false, c:true}, + selectBoxes: { a: true, b: false, c: true }, select: 'a', radio: 'b', email: 'user@example.com', @@ -132,19 +323,24 @@ export default { phoneNumber: '(555) 555-5555', tags: 'default', address: { - address: {county: "Dallas County", state: "Texas", country: "United States", country_code: "us"}, - boundingbox: (4) ["32.5453486", "32.9899027", "-97.0383833", "-96.5168819"], - class: "boundary", - display_name: "Dallas County, Texas, United States", - icon: "https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png", + address: { + county: 'Dallas County', + state: 'Texas', + country: 'United States', + country_code: 'us', + }, + boundingbox: (4)[('32.5453486', '32.9899027', '-97.0383833', '-96.5168819')], + class: 'boundary', + display_name: 'Dallas County, Texas, United States', + icon: 'https://nominatim.openstreetmap.org/ui/mapicons//poi_boundary_administrative.p.20.png', importance: 0.6662149661993487, - lat: "32.7620405", - licence: "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright", - lon: "-96.7790069", + lat: '32.7620405', + licence: 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', + lon: '-96.7790069', osm_id: 1837698, - osm_type: "relation", + osm_type: 'relation', place_id: 256774876, - type: "administrative", + type: 'administrative', }, dateTime: '2021-02-03T12:00:00', day: '01/05/2005', @@ -152,15 +348,12 @@ export default { currency: 20, survey: { question1: 'yes', - question2: 'no' + question2: 'no', }, - dataGrid: [ - {textFieldDataGrid: "default1"}, - {textFieldDataGrid: "default2"} - ], + dataGrid: [{ textFieldDataGrid: 'default1' }, { textFieldDataGrid: 'default2' }], tree: { - children: [{ children: [], data: {textFieldTree: 'default2'} }], - data:{ textFieldTree: 'default1' } + children: [{ children: [], data: { textFieldTree: 'default2' } }], + data: { textFieldTree: 'default1' }, }, }, customDefaultValue: { @@ -178,40 +371,83 @@ export default { }`, expectedValue: { data: { - dataGridChild: [ - { textAreaInsideChildDataGrid: "base value default in nested form1" }, - { textAreaInsideChildDataGrid: "base value default in nested form2" } - ], - numberInsideChildPanel: 10, - textFieldChild: "base value default in nested form", - timeChild: "11:55:00", + dataGridChild: [ + { textAreaInsideChildDataGrid: 'base value default in nested form1' }, + { textAreaInsideChildDataGrid: 'base value default in nested form2' }, + ], + numberInsideChildPanel: 10, + textFieldChild: 'base value default in nested form', + timeChild: '11:55:00', }, - } + }, }, - textField: { js:'value = data.basis + " default"', expectedValue: 'base value default'}, - textArea: { js:'value = data.basis + " default"', expectedValue: 'base value default'}, + textField: { js: 'value = data.basis + " default"', expectedValue: 'base value default' }, + textArea: { js: 'value = data.basis + " default"', expectedValue: 'base value default' }, number: { js: 'value = data.basis.length', expectedValue: 10 }, //checkbox: { js:'value = data.basis.length > 5', expectedValue: true },// BUG - selectBoxes: { js:'value = {a: data.basis.length > 5, b: data.basis.length > 10 , c: data.basis.length > 20}', expectedValue: { a: true, b: false , c: false}}, - select: { js:'value = data.basis.length > 5 ? "a" : "b"', expectedValue: 'a'}, - radio: { js:'value = data.basis.length < 5 ? "c" : "b"', expectedValue: 'b'}, - email: { js:'value = `${data.basis.split(" ").join("")}@example.com`', expectedValue: 'basevalue@example.com'}, - url: { js: 'value = `https://${data.basis.split(" ").join("")}.com`', expectedValue: 'https://basevalue.com'}, - phoneNumber: { js:'value = `(${data.basis ? "222":"333"}) 555-5555`', expectedValue: '(222) 555-5555'}, - tags: { js:'value = data.basis.split(" ").join(",")', expectedValue: 'base,value'}, - dateTime: { js:"var date = moment('2005-02-03T12:00:00');var now = moment();value = date < now ? '2023-03-03T12:00:00' : '2003-12-12T12:00:00';", expectedValue: '2023-03-03T12:00:00'}, - day: { js:'value = data.basis.length > 5 ? "05/05/2015" : "03/03/2003"', expectedValue: '05/05/2015'}, - time: { js:'value = data.basis.length > 5 ? "04:45:00" : "04:05:00"', expectedValue: '04:45:00'}, - currency: { js:'value = data.basis.length', expectedValue: 10 }, - survey: { js:"value = { question1: data.basis.length ? 'yes' : 'no', question2: !data.basis.length ? 'yes' : 'no'}", expectedValue: { question1: 'yes' , question2: 'no'}}, + selectBoxes: { + js: 'value = {a: data.basis.length > 5, b: data.basis.length > 10 , c: data.basis.length > 20}', + expectedValue: { a: true, b: false, c: false }, + }, + select: { js: 'value = data.basis.length > 5 ? "a" : "b"', expectedValue: 'a' }, + radio: { js: 'value = data.basis.length < 5 ? "c" : "b"', expectedValue: 'b' }, + email: { + js: 'value = `${data.basis.split(" ").join("")}@example.com`', + expectedValue: 'basevalue@example.com', + }, + url: { + js: 'value = `https://${data.basis.split(" ").join("")}.com`', + expectedValue: 'https://basevalue.com', + }, + phoneNumber: { + js: 'value = `(${data.basis ? "222":"333"}) 555-5555`', + expectedValue: '(222) 555-5555', + }, + tags: { js: 'value = data.basis.split(" ").join(",")', expectedValue: 'base,value' }, + dateTime: { + js: "var date = moment('2005-02-03T12:00:00');var now = moment();value = date < now ? '2023-03-03T12:00:00' : '2003-12-12T12:00:00';", + expectedValue: '2023-03-03T12:00:00', + }, + day: { + js: 'value = data.basis.length > 5 ? "05/05/2015" : "03/03/2003"', + expectedValue: '05/05/2015', + }, + time: { + js: 'value = data.basis.length > 5 ? "04:45:00" : "04:05:00"', + expectedValue: '04:45:00', + }, + currency: { js: 'value = data.basis.length', expectedValue: 10 }, + survey: { + js: "value = { question1: data.basis.length ? 'yes' : 'no', question2: !data.basis.length ? 'yes' : 'no'}", + expectedValue: { question1: 'yes', question2: 'no' }, + }, //signature: 'test-custom__css_class', - hidden: { js:'value = data.basis.length', expectedValue: 10 }, - container: { js:'value = { textFieldContainer: data.basis + " default" }', expectedValue: { textFieldContainer:'base value default'}}, - dataMap: { js:'value = { key: data.basis + " default" }', expectedValue: { key: 'base value default' } }, - dataGrid: { js:'value = [{ textFieldDataGrid: data.basis + " default1" }, { textFieldDataGrid: data.basis + " default2" }]', expectedValue: [{ textFieldDataGrid: 'base value default1' }, { textFieldDataGrid: 'base value default2' }]}, - editGrid: { js:'value = [{textFieldEditGrid: data.basis + " default"}]', expectedValue: [{textFieldEditGrid: 'base value default'}]}, - tree: { js:"value = {children: [], data:{ textFieldTree: data.basis + ' default' } }", expectedValue: {children: [], data:{ textFieldTree: 'base value default' } }}, - file: { js:` + hidden: { js: 'value = data.basis.length', expectedValue: 10 }, + container: { + js: 'value = { textFieldContainer: data.basis + " default" }', + expectedValue: { textFieldContainer: 'base value default' }, + }, + dataMap: { + js: 'value = { key: data.basis + " default" }', + expectedValue: { key: 'base value default' }, + }, + dataGrid: { + js: 'value = [{ textFieldDataGrid: data.basis + " default1" }, { textFieldDataGrid: data.basis + " default2" }]', + expectedValue: [ + { textFieldDataGrid: 'base value default1' }, + { textFieldDataGrid: 'base value default2' }, + ], + }, + editGrid: { + js: 'value = [{textFieldEditGrid: data.basis + " default"}]', + expectedValue: [{ textFieldEditGrid: 'base value default' }], + }, + tree: { + js: "value = {children: [], data:{ textFieldTree: data.basis + ' default' } }", + expectedValue: { children: [], data: { textFieldTree: 'base value default' } }, + }, + file: { + js: ` value = [{ name: "test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx", originalName: "test file.docx", @@ -220,51 +456,120 @@ export default { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", url: "data:application/vnd.openxmlformats-officedocument", }]`, - expectedValue: [{ - name: "test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx", - originalName: "test file.docx", - size: 11396, - storage: "base64", - type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - url: "data:application/vnd.openxmlformats-officedocument", - }] - } + expectedValue: [ + { + name: 'test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx', + originalName: 'test file.docx', + size: 11396, + storage: 'base64', + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + url: 'data:application/vnd.openxmlformats-officedocument', + }, + ], + }, }, - redrawOn:_.reduce( + redrawOn: _.reduce( [ - "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file" + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', ], (obj, componentKey) => { obj[componentKey] = 'checkbox'; return obj; }, - {} ), - multiple:_.reduce( + {}, + ), + multiple: _.reduce( [ - "textField", "textArea", "number", "password", "select", "email", "url", "phoneNumber", "address", "dateTime", "time", "currency", + 'textField', + 'textArea', + 'number', + 'password', + 'select', + 'email', + 'url', + 'phoneNumber', + 'address', + 'dateTime', + 'time', + 'currency', //"tree"//BUG, - "file" + 'file', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} ), - modalEdit:_.reduce( + {}, + ), + modalEdit: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "html", "content", - "columns", "fieldset", "panel", "table", "tabs", "well", //BUG: they are excluded from some tests of modalEdit setting - "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'html', + 'content', + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', //BUG: they are excluded from some tests of modalEdit setting + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} + {}, ), calculateValue: { form: { @@ -283,272 +588,572 @@ export default { return { data: { dataGridChild: [ - { textAreaInsideChildDataGrid: basis + " calculated in nested form1" }, - { textAreaInsideChildDataGrid: basis + " calculated in nested form2" } + { textAreaInsideChildDataGrid: basis + ' calculated in nested form1' }, + { textAreaInsideChildDataGrid: basis + ' calculated in nested form2' }, ], numberInsideChildPanel: basis.length, - textFieldChild: basis + " calculated in nested form", - timeChild: "11:55:00", + textFieldChild: basis + ' calculated in nested form', + timeChild: '11:55:00', }, }; - } + }, + }, + textField: { + js: 'value = `${data.basis} calculated`', + expectedValue: (basis) => `${basis} calculated`, + }, + textArea: { + js: 'value = `${data.basis} calculated`', + expectedValue: (basis) => `${basis} calculated`, }, - textField: { js:'value = `${data.basis} calculated`', expectedValue: (basis) => `${basis} calculated` }, - textArea: { js:'value = `${data.basis} calculated`', expectedValue: (basis) => `${basis} calculated`}, number: { js: 'value = data.basis.length', expectedValue: (basis) => basis.length }, - checkbox: { js:'value = data.basis.length > 5', expectedValue: (basis) => basis.length > 5 }, - selectBoxes: { js:'value = { a: data.basis.length > 5, b: data.basis.length > 10 , c: data.basis.length > 20 }', expectedValue: (basis) => ({ a: basis.length > 5, b: basis.length > 10 , c: basis.length > 20})}, - select: { js:'value = data.basis.length > 5 ? "a" : "b"', expectedValue: (basis) => basis.length > 5 ? "a" : "b"}, - radio: { js:'value = data.basis.length < 5 ? "c" : "b"', expectedValue: (basis) => basis.length < 5 ? "c" : "b"}, - email: { js:'value = `${data.basis.split(" ").join("")}@example.com`', expectedValue: (basis) => `${basis.split(" ").join("")}@example.com`}, - url: { js: 'value = `https://${data.basis.split(" ").join("")}.com`', expectedValue: (basis) => `https://${basis.split(" ").join("")}.com`}, - phoneNumber: { js:'value = `(${data.basis ? "222":"333"}) 555-5555`', expectedValue: (basis) => `(${basis ? "222":"333"}) 555-5555`}, - tags: { js:'value = data.basis.split(" ").join(",")', expectedValue: (basis) => basis.split(" ").join(",")}, - dateTime: { js:"var date = moment('2005-02-03T12:00:00');var now = moment();value = date < now ? '2023-03-03T12:00:00' : '2003-12-12T12:00:00';", expectedValue: () => { - const date = moment('2005-02-03T12:00:00'); - const now = moment(); + checkbox: { js: 'value = data.basis.length > 5', expectedValue: (basis) => basis.length > 5 }, + selectBoxes: { + js: 'value = { a: data.basis.length > 5, b: data.basis.length > 10 , c: data.basis.length > 20 }', + expectedValue: (basis) => ({ + a: basis.length > 5, + b: basis.length > 10, + c: basis.length > 20, + }), + }, + select: { + js: 'value = data.basis.length > 5 ? "a" : "b"', + expectedValue: (basis) => (basis.length > 5 ? 'a' : 'b'), + }, + radio: { + js: 'value = data.basis.length < 5 ? "c" : "b"', + expectedValue: (basis) => (basis.length < 5 ? 'c' : 'b'), + }, + email: { + js: 'value = `${data.basis.split(" ").join("")}@example.com`', + expectedValue: (basis) => `${basis.split(' ').join('')}@example.com`, + }, + url: { + js: 'value = `https://${data.basis.split(" ").join("")}.com`', + expectedValue: (basis) => `https://${basis.split(' ').join('')}.com`, + }, + phoneNumber: { + js: 'value = `(${data.basis ? "222":"333"}) 555-5555`', + expectedValue: (basis) => `(${basis ? '222' : '333'}) 555-5555`, + }, + tags: { + js: 'value = data.basis.split(" ").join(",")', + expectedValue: (basis) => basis.split(' ').join(','), + }, + dateTime: { + js: "var date = moment('2005-02-03T12:00:00');var now = moment();value = date < now ? '2023-03-03T12:00:00' : '2003-12-12T12:00:00';", + expectedValue: () => { + const date = moment('2005-02-03T12:00:00'); + const now = moment(); - return date < now ? '2023-03-03T12:00:00' : '2003-12-12T12:00:00' - }}, - day: { js:'value = data.basis.length > 5 ? "05/05/2015" : "03/03/2003"', expectedValue: (basis) => basis.length > 5 ? "05/05/2015" : "03/03/2003"}, - time: { js:'value = data.basis.length > 5 ? "04:45:00" : "04:05:00"', expectedValue: (basis) => basis.length > 5 ? "04:45:00" : "04:05:00"}, - currency: { js:'value = data.basis.length', expectedValue: (basis) => basis.length }, - survey: { js:"value = { question1: data.basis.length ? 'yes' : 'no', question2: !data.basis.length ? 'yes' : 'no'}", expectedValue: (basis) => ({ question1: basis.length ? 'yes' : 'no', question2: !basis.length ? 'yes' : 'no'})}, - hidden: { js:'value = data.basis.length', expectedValue: (basis) => basis.length }, - container: { js:'value = { textFieldContainer: data.basis + " calculated" }', expectedValue: (basis) => ({ textFieldContainer: basis + " calculated" })}, - dataMap: { js:'value = { key: data.basis + " calculated" }', expectedValue: (basis) => ({ key: basis + " calculated" }) }, - dataGrid: { js:'value = [{ textFieldDataGrid: data.basis + " calculated1" }, { textFieldDataGrid: data.basis + " calculated2" }]', expectedValue: (basis) => [{ textFieldDataGrid: basis + " calculated1" }, { textFieldDataGrid: basis + " calculated2" }]}, - editGrid: { js:'value = [{textFieldEditGrid: data.basis + " calculated"}]', expectedValue: (basis) => [{textFieldEditGrid: basis + " calculated"}]}, - tree: { js:"value = {children: [], data:{ textFieldTree: data.basis + ' calculated' } }", expectedValue: (basis) => ({children: [], data:{ textFieldTree: basis + ' calculated' }}) }, - file: { js: 'value = [{ name: `${data.basis}-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx`, originalName: `${data.basis}.docx`, size: 11396, storage: "base64", type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", url: "data:application/vnd.openxmlformats-officedocument", }]', - expectedValue: (basis) => [{ - name: `${basis}-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx`, - originalName: `${basis}.docx`, - size: 11396, - storage: "base64", - type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", - url: "data:application/vnd.openxmlformats-officedocument", - }] - } + return date < now ? '2023-03-03T12:00:00' : '2003-12-12T12:00:00'; + }, + }, + day: { + js: 'value = data.basis.length > 5 ? "05/05/2015" : "03/03/2003"', + expectedValue: (basis) => (basis.length > 5 ? '05/05/2015' : '03/03/2003'), + }, + time: { + js: 'value = data.basis.length > 5 ? "04:45:00" : "04:05:00"', + expectedValue: (basis) => (basis.length > 5 ? '04:45:00' : '04:05:00'), + }, + currency: { js: 'value = data.basis.length', expectedValue: (basis) => basis.length }, + survey: { + js: "value = { question1: data.basis.length ? 'yes' : 'no', question2: !data.basis.length ? 'yes' : 'no'}", + expectedValue: (basis) => ({ + question1: basis.length ? 'yes' : 'no', + question2: !basis.length ? 'yes' : 'no', + }), + }, + hidden: { js: 'value = data.basis.length', expectedValue: (basis) => basis.length }, + container: { + js: 'value = { textFieldContainer: data.basis + " calculated" }', + expectedValue: (basis) => ({ textFieldContainer: basis + ' calculated' }), + }, + dataMap: { + js: 'value = { key: data.basis + " calculated" }', + expectedValue: (basis) => ({ key: basis + ' calculated' }), + }, + dataGrid: { + js: 'value = [{ textFieldDataGrid: data.basis + " calculated1" }, { textFieldDataGrid: data.basis + " calculated2" }]', + expectedValue: (basis) => [ + { textFieldDataGrid: basis + ' calculated1' }, + { textFieldDataGrid: basis + ' calculated2' }, + ], + }, + editGrid: { + js: 'value = [{textFieldEditGrid: data.basis + " calculated"}]', + expectedValue: (basis) => [{ textFieldEditGrid: basis + ' calculated' }], + }, + tree: { + js: "value = {children: [], data:{ textFieldTree: data.basis + ' calculated' } }", + expectedValue: (basis) => ({ children: [], data: { textFieldTree: basis + ' calculated' } }), + }, + file: { + js: 'value = [{ name: `${data.basis}-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx`, originalName: `${data.basis}.docx`, size: 11396, storage: "base64", type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", url: "data:application/vnd.openxmlformats-officedocument", }]', + expectedValue: (basis) => [ + { + name: `${basis}-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx`, + originalName: `${basis}.docx`, + size: 11396, + storage: 'base64', + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + url: 'data:application/vnd.openxmlformats-officedocument', + }, + ], + }, }, clearOnHide: _.reduce( [ - "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "container", "dataMap", "dataGrid", "editGrid", "tree", "file" + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} + {}, ), - 'validate.required':_.reduce( + 'validate.required': _.reduce( [ - "textField", "extArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'textField', + 'extArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", //"container","dataGrid", // BUG: required validation does not work - "dataMap", "editGrid", "tree", "file", "submit" + 'dataMap', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} + {}, ), 'validate.custom': _.reduce( [ - "textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", - "time", "currency", "survey", + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { const value = _.get(basicValues, componentKey); - obj[componentKey] = `valid = !_.isEqual(instance.dataValue, ${_.isNumber(value) ? value : JSON.stringify(value)}) ? true : 'Custom validation message: component is invalid.'` ; + obj[componentKey] = + `valid = !_.isEqual(instance.dataValue, ${_.isNumber(value) ? value : JSON.stringify(value)}) ? true : 'Custom validation message: component is invalid.'`; return obj; }, - {} + {}, ), - 'validate_nested_components': _.reduce( + validate_nested_components: _.reduce( [ - "form","columns", "fieldset", "panel", "table", "tabs", "well", "container", "dataMap", "dataGrid", "editGrid", "tree", "submit" + 'form', + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'submit', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} + {}, ), - 'conditional': _.reduce( + conditional: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "html", "content", "columns", "fieldset", "panel", "table", "tabs", "well", "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'html', + 'content', + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { - obj[componentKey] = { show: true, when: "basis", eq: "show" }; + obj[componentKey] = { show: true, when: 'basis', eq: 'show' }; return obj; }, - {} + {}, ), - 'customConditional': _.reduce( + customConditional: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "html", "content", "columns", "fieldset", "panel", "table", "tabs", "well", "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'html', + 'content', + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { - obj[componentKey] = "show = _.isEqual(data.basis, 'show');" + obj[componentKey] = "show = _.isEqual(data.basis, 'show');"; return obj; }, - {} + {}, ), logic: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "columns", "fieldset", "panel", "table", "tabs", "well", "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { const value = _.get(basicValues, componentKey); - obj[componentKey] = [{ - 'name': 'test logic name (simple + value)', - 'trigger': { - 'type': 'simple', - 'simple': { - 'show': true, - 'when': 'basis', - 'eq': 'value action' - } - }, - 'actions': [{ - 'name': 'test value action', - 'type': 'value', - 'value': `value = ${_.isNumber(value) ? value : JSON.stringify(value)}` - }] - }, { - 'name': 'test logic name (simple + property)', - 'trigger': { - 'type': 'simple', - 'simple': { - 'show': true, - 'when': 'basis', - 'eq': 'property action' - } + obj[componentKey] = [ + { + name: 'test logic name (simple + value)', + trigger: { + type: 'simple', + simple: { + show: true, + when: 'basis', + eq: 'value action', + }, + }, + actions: [ + { + name: 'test value action', + type: 'value', + value: `value = ${_.isNumber(value) ? value : JSON.stringify(value)}`, + }, + ], }, - 'actions': [{ - 'name': 'test property action', - 'type': 'property', - 'property': { - 'label': 'Label', - 'value': 'label', - 'type': 'string' + { + name: 'test logic name (simple + property)', + trigger: { + type: 'simple', + simple: { + show: true, + when: 'basis', + eq: 'property action', + }, }, - 'text': 'changed label on property action' - }] - }, { - 'name': 'test logic name (simple + merge schema)', - 'trigger': { - 'type': 'simple', - 'simple': { - 'show': true, - 'when': 'basis', - 'eq': 'merge schema action' - } + actions: [ + { + name: 'test property action', + type: 'property', + property: { + label: 'Label', + value: 'label', + type: 'string', + }, + text: 'changed label on property action', + }, + ], }, - 'actions': [{ - 'name': 'test merge schema action', - 'type': 'mergeComponentSchema', - 'schemaDefinition': 'schema = {label: "changed label on merge schema"}' - }] - }, { - 'name': 'test logic name (simple + custom)', - 'trigger': { - 'type': 'simple', - 'simple': { - 'show': true, - 'when': 'basis', - 'eq': 'custom action' - } + { + name: 'test logic name (simple + merge schema)', + trigger: { + type: 'simple', + simple: { + show: true, + when: 'basis', + eq: 'merge schema action', + }, + }, + actions: [ + { + name: 'test merge schema action', + type: 'mergeComponentSchema', + schemaDefinition: 'schema = {label: "changed label on merge schema"}', + }, + ], }, - 'actions': [{ - 'name': 'test custom action', - 'type': 'customAction', - 'customAction': `value = ${_.isNumber(value) ? value : JSON.stringify(value)}` - }] - }, { - 'name': 'test logic name (js + value)', - 'trigger': { - 'type': 'javascript', - 'javascript': 'result = data.basis.length > 20' + { + name: 'test logic name (simple + custom)', + trigger: { + type: 'simple', + simple: { + show: true, + when: 'basis', + eq: 'custom action', + }, + }, + actions: [ + { + name: 'test custom action', + type: 'customAction', + customAction: `value = ${_.isNumber(value) ? value : JSON.stringify(value)}`, + }, + ], }, - 'actions': [{ - 'name': 'test value action', - 'type': 'value', - 'value': `value = ${_.isNumber(value) ? value : JSON.stringify(value)}` - }] - }, { - 'name': 'test logic name (json + property)', - 'trigger': { - 'type': 'json', - 'json': { - 'if': [{ - '==': [{ - 'var': 'data.basis' - }, 'add class'] - }, true, false] - } + { + name: 'test logic name (js + value)', + trigger: { + type: 'javascript', + javascript: 'result = data.basis.length > 20', + }, + actions: [ + { + name: 'test value action', + type: 'value', + value: `value = ${_.isNumber(value) ? value : JSON.stringify(value)}`, + }, + ], }, - 'actions': [{ - 'name': 'test property action', - 'type': 'property', - 'property': { - 'label': 'Container Custom Class', - 'value': 'customClass', - 'type': 'string' + { + name: 'test logic name (json + property)', + trigger: { + type: 'json', + json: { + if: [ + { + '==': [ + { + var: 'data.basis', + }, + 'add class', + ], + }, + true, + false, + ], + }, }, - 'text': 'json-logic-class' - }] - }, { - 'name': 'test logic name (event + property)', - 'trigger': { - 'type': 'event', - 'event': 'hide' + actions: [ + { + name: 'test property action', + type: 'property', + property: { + label: 'Container Custom Class', + value: 'customClass', + type: 'string', + }, + text: 'json-logic-class', + }, + ], }, - 'actions': [{ - 'name': 'test property action', - 'type': 'property', - 'property': { - 'label': 'Hidden', - 'value': 'hidden', - 'type': 'boolean' + { + name: 'test logic name (event + property)', + trigger: { + type: 'event', + event: 'hide', }, - 'state': true - }] - }]; + actions: [ + { + name: 'test property action', + type: 'property', + property: { + label: 'Hidden', + value: 'hidden', + type: 'boolean', + }, + state: true, + }, + ], + }, + ]; return obj; }, - {} + {}, ), - 'set_get_value': _.reduce( + set_get_value: _.reduce( [ - "form","textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", + 'form', + 'textField', + 'textArea', + 'number', + 'password', + 'checkbox', + 'selectBoxes', + 'select', + 'radio', + 'email', + 'url', + 'phoneNumber', + 'tags', + 'address', + 'dateTime', + 'day', + 'time', + 'currency', + 'survey', //"signature", - "columns", "fieldset", "panel", "table", "tabs", "well", "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit" + 'columns', + 'fieldset', + 'panel', + 'table', + 'tabs', + 'well', + 'hidden', + 'container', + 'dataMap', + 'dataGrid', + 'editGrid', + 'tree', + 'file', + 'submit', ], (obj, componentKey) => { obj[componentKey] = true; return obj; }, - {} + {}, ), }; - - //["textField", "textArea", "number", "password", "checkbox", "selectBoxes", "select", "radio", "email", "url", "phoneNumber", "tags", "address", "dateTime", "day", "time", "currency", "survey", "signature", "html", "content", "columns", "fieldset", "panel", "table", "tabs", "well", "hidden", "container", "dataMap", "dataGrid", "editGrid", "tree", "file", "submit"] // { // textField: 'test-custom__css_class', diff --git a/test/forms/helpers/testBasicComponentSettings/tests.d.ts b/test/forms/helpers/testBasicComponentSettings/tests.d.ts index 071e6a318d..35e6fb2b24 100644 --- a/test/forms/helpers/testBasicComponentSettings/tests.d.ts +++ b/test/forms/helpers/testBasicComponentSettings/tests.d.ts @@ -1,84 +1,129 @@ declare const _default: { - placeholder: { - 'Should show placeholder'(form: any, done: any): void; - }; - description: { - 'Should show description'(form: any, done: any): void; - }; - tooltip: { - 'Should render tooltip icon and show tooltip description on click'(form: any, done: any): void; - }; - prefix: { - 'Should show prefix'(form: any, done: any): void; - }; - suffix: { - 'Should show suffix'(form: any, done: any): void; - }; - customClass: { - 'Should set custom css class'(form: any, done: any): void; - }; - tabindex: { - 'Should set tabindex'(form: any, done: any): void; - }; - hidden: { - 'Should not render hidden component'(form: any, done: any): void; - }; - hideLabel: { - 'Should hide component label'(form: any, done: any): void; - }; - disabled: { - 'Should disable components'(form: any, done: any): void; - }; - defaultValue: { - 'Should set default value'(form: any, done: any): void; - }; - customDefaultValue: { - 'Should correctly set custom default value'(form: any, done: any): void; - }; - redrawOn: { - 'Should redrow on checkbox value change'(form: any, done: any): void; - }; - multiple: { - 'Should render component in multiple mode and able to add/remove value'(form: any, done: any): void; - 'Should set multiple values'(form: any, done: any): void; - }; - modalEdit: { - 'Should open and close modal window'(form: any, done: any): void; - 'Should delete component changes when closing modal window and clicking "delete it" in confirmation dialog'(form: any, done: any): void; - 'Should save component values and close the modal after clicking "save"'(form: any, done: any): void; - 'Should highlight modal button if component is invalid'(form: any, done: any, test: any): void; - }; - calculateValue: { - 'Should caclulate component value'(form: any, done: any, test: any): void; - 'Should not allow overriding component colculated value'(form: any, done: any): void; - 'Should allow overriding component calculated value'(form: any, done: any, test: any): void; - }; - 'validate.required': { - 'Should show required validation error on submit and remove error if component has value'(form: any, done: any, test: any): void; - 'Should show custom validation error if component is invalid'(form: any, done: any, test: any): void; - 'Should show custom validation label if component is invalid'(form: any, done: any, test: any): void; - }; - 'validate.custom': { - 'Should execute custom validation'(form: any, done: any, test: any): void; - }; - validate_nested_components: { - 'Should show validation errors for nested components'(form: any, done: any, test: any): void; - }; - conditional: { - 'Should show component if simple condition is met and hide it if simple condition is not fulfilled'(form: any, done: any, test: any): void; - }; - customConditional: { - 'Should show component if custom condition is met and hide it if custom condition is not fulfilled'(form: any, done: any, test: any): void; - }; - logic: { - 'Should execute value/property/merge schema/custom actions if simple logic condition is met'(form: any, done: any, test: any): void; - 'Should execute value action if js logic condition is met'(form: any, done: any, test: any): void; - 'Should execute property action if json logic condition is met'(form: any, done: any, test: any): void; - 'Should execute property action if logic event is emitted'(form: any, done: any): void; - }; - set_get_value: { - 'Should set and get components` value (including string value)'(form: any, done: any, test: any): void; - 'Should set and get submission'(form: any, done: any, test: any): void; - }; + placeholder: { + 'Should show placeholder'(form: any, done: any): void; + }; + description: { + 'Should show description'(form: any, done: any): void; + }; + tooltip: { + 'Should render tooltip icon and show tooltip description on click'(form: any, done: any): void; + }; + prefix: { + 'Should show prefix'(form: any, done: any): void; + }; + suffix: { + 'Should show suffix'(form: any, done: any): void; + }; + customClass: { + 'Should set custom css class'(form: any, done: any): void; + }; + tabindex: { + 'Should set tabindex'(form: any, done: any): void; + }; + hidden: { + 'Should not render hidden component'(form: any, done: any): void; + }; + hideLabel: { + 'Should hide component label'(form: any, done: any): void; + }; + disabled: { + 'Should disable components'(form: any, done: any): void; + }; + defaultValue: { + 'Should set default value'(form: any, done: any): void; + }; + customDefaultValue: { + 'Should correctly set custom default value'(form: any, done: any): void; + }; + redrawOn: { + 'Should redrow on checkbox value change'(form: any, done: any): void; + }; + multiple: { + 'Should render component in multiple mode and able to add/remove value'( + form: any, + done: any, + ): void; + 'Should set multiple values'(form: any, done: any): void; + }; + modalEdit: { + 'Should open and close modal window'(form: any, done: any): void; + 'Should delete component changes when closing modal window and clicking "delete it" in confirmation dialog'( + form: any, + done: any, + ): void; + 'Should save component values and close the modal after clicking "save"'( + form: any, + done: any, + ): void; + 'Should highlight modal button if component is invalid'(form: any, done: any, test: any): void; + }; + calculateValue: { + 'Should caclulate component value'(form: any, done: any, test: any): void; + 'Should not allow overriding component colculated value'(form: any, done: any): void; + 'Should allow overriding component calculated value'(form: any, done: any, test: any): void; + }; + 'validate.required': { + 'Should show required validation error on submit and remove error if component has value'( + form: any, + done: any, + test: any, + ): void; + 'Should show custom validation error if component is invalid'( + form: any, + done: any, + test: any, + ): void; + 'Should show custom validation label if component is invalid'( + form: any, + done: any, + test: any, + ): void; + }; + 'validate.custom': { + 'Should execute custom validation'(form: any, done: any, test: any): void; + }; + validate_nested_components: { + 'Should show validation errors for nested components'(form: any, done: any, test: any): void; + }; + conditional: { + 'Should show component if simple condition is met and hide it if simple condition is not fulfilled'( + form: any, + done: any, + test: any, + ): void; + }; + customConditional: { + 'Should show component if custom condition is met and hide it if custom condition is not fulfilled'( + form: any, + done: any, + test: any, + ): void; + }; + logic: { + 'Should execute value/property/merge schema/custom actions if simple logic condition is met'( + form: any, + done: any, + test: any, + ): void; + 'Should execute value action if js logic condition is met'( + form: any, + done: any, + test: any, + ): void; + 'Should execute property action if json logic condition is met'( + form: any, + done: any, + test: any, + ): void; + 'Should execute property action if logic event is emitted'(form: any, done: any): void; + }; + set_get_value: { + 'Should set and get components` value (including string value)'( + form: any, + done: any, + test: any, + ): void; + 'Should set and get submission'(form: any, done: any, test: any): void; + }; }; export default _default; diff --git a/test/forms/helpers/testBasicComponentSettings/tests.js b/test/forms/helpers/testBasicComponentSettings/tests.js index b2529df093..4eb18d88e5 100644 --- a/test/forms/helpers/testBasicComponentSettings/tests.js +++ b/test/forms/helpers/testBasicComponentSettings/tests.js @@ -10,7 +10,7 @@ const layoutComponents = ['columns', 'fieldset', 'panel', 'table', 'tabs', 'well export default { placeholder: { 'Should show placeholder'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const compInput = comp.element.querySelector(`[name="data[${compKey}]"]`); @@ -29,13 +29,21 @@ export default { expectedPlaceholder = fieldSettings.placeholder; - assert.equal(renderedPlaceholder.trim(), expectedPlaceholder.trim(), `Should show placeholder for ${fieldName} in ${compKey} (component ${compType})`); + assert.equal( + renderedPlaceholder.trim(), + expectedPlaceholder.trim(), + `Should show placeholder for ${fieldName} in ${compKey} (component ${compType})`, + ); }); - } - else { - renderedPlaceholder = compType === 'select' ? compInput.attributes.placeholder.value : compInput.placeholder; + } else { + renderedPlaceholder = + compType === 'select' ? compInput.attributes.placeholder.value : compInput.placeholder; expectedPlaceholder = comp.component.placeholder; - assert.equal(renderedPlaceholder, expectedPlaceholder, `Should show placeholder for ${compKey} (component ${compType})`); + assert.equal( + renderedPlaceholder, + expectedPlaceholder, + `Should show placeholder for ${compKey} (component ${compType})`, + ); } }); done(); @@ -43,12 +51,16 @@ export default { }, description: { 'Should show description'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const compDescription = comp.element.querySelector('.text-muted').textContent; - assert.equal(compDescription, comp.component.description, `Should show description for ${compKey} (component ${compType})`); + assert.equal( + compDescription, + comp.component.description, + `Should show description for ${compKey} (component ${compType})`, + ); }); done(); }, @@ -56,67 +68,91 @@ export default { tooltip: { 'Should render tooltip icon and show tooltip description on click'(form, done) { form.components.forEach((comp, index) => { - const isLastComp = index === (form.components.length - 1); + const isLastComp = index === form.components.length - 1; const compKey = comp.component.key; const compType = comp.component.type; const clickEvent = new Event('click'); - assert.equal(comp.tooltips.length, 1, `${compKey} (component ${compType}): should contain tooltip objects`); + assert.equal( + comp.tooltips.length, + 1, + `${compKey} (component ${compType}): should contain tooltip objects`, + ); const tooltipIcon = comp.refs.tooltip[0]; - assert.equal(!!tooltipIcon, true, `${compKey} (component ${compType}): should contain ref to tooltip icon`); + assert.equal( + !!tooltipIcon, + true, + `${compKey} (component ${compType}): should contain ref to tooltip icon`, + ); tooltipIcon.dispatchEvent(clickEvent); setTimeout(() => { const tooltipText = comp.element.querySelector('.tippy-content').textContent.trim(); - assert.equal(tooltipText, comp.component.tooltip.trim(), `Should show tooltip for ${compKey} (component ${compType})`); + assert.equal( + tooltipText, + comp.component.tooltip.trim(), + `Should show tooltip for ${compKey} (component ${compType})`, + ); if (isLastComp) { done(); } }); }); - } + }, }, prefix: { 'Should show prefix'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.refs.prefix[0].textContent.trim(), comp.component.prefix, `Should show prefix for ${compKey} (component ${compType})`); + assert.equal( + comp.refs.prefix[0].textContent.trim(), + comp.component.prefix, + `Should show prefix for ${compKey} (component ${compType})`, + ); }); done(); }, }, suffix: { 'Should show suffix'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.refs.suffix[0].textContent.trim(), comp.component.suffix, `Should show suffix for ${compKey} (component ${compType})`); + assert.equal( + comp.refs.suffix[0].textContent.trim(), + comp.component.suffix, + `Should show suffix for ${compKey} (component ${compType})`, + ); }); done(); }, }, customClass: { 'Should set custom css class'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.element.classList.contains(comp.component.customClass), true, `Should set custom class for ${compKey} (component ${compType})`); + assert.equal( + comp.element.classList.contains(comp.component.customClass), + true, + `Should set custom class for ${compKey} (component ${compType})`, + ); }); done(); }, }, tabindex: { 'Should set tabindex'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; let tabInput; @@ -135,7 +171,11 @@ export default { tabInput = comp.refs.input[0].tabIndex; } - assert.equal(tabInput, comp.component.tabindex, `Should set tab index for ${compKey} (component ${compType})`); + assert.equal( + tabInput, + comp.component.tabindex, + `Should set tab index for ${compKey} (component ${compType})`, + ); }); done(); @@ -143,13 +183,21 @@ export default { }, hidden: { 'Should not render hidden component'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.visible, false, `Should set visible:false for ${compKey} (component ${compType})`); + assert.equal( + comp.visible, + false, + `Should set visible:false for ${compKey} (component ${compType})`, + ); if (compType !== 'well') { - assert.equal(comp.element.classList.contains('formio-hidden'), true, `Should set formio-hidden class for ${compKey} (component ${compType})`); + assert.equal( + comp.element.classList.contains('formio-hidden'), + true, + `Should set formio-hidden class for ${compKey} (component ${compType})`, + ); } }); done(); @@ -157,7 +205,7 @@ export default { }, hideLabel: { 'Should hide component label'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; let label; @@ -180,7 +228,7 @@ export default { }, disabled: { 'Should disable components'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compType = comp.component.type; const checkDisabled = (component, child) => { @@ -188,21 +236,23 @@ export default { const componentKey = component.component.key; if (child && componentType === 'datagrid') return; //BUG: remove the check once it is fixed; - const disabled = _.isBoolean(component.disabled) ? component.disabled : component._disabled; + const disabled = _.isBoolean(component.disabled) + ? component.disabled + : component._disabled; assert.equal( disabled, true, - !child ? - `Should set disabled:true for ${componentKey} (component ${componentType})` : - `Should set disabled:true for ${componentType} inside ${compType} component` + !child + ? `Should set disabled:true for ${componentKey} (component ${componentType})` + : `Should set disabled:true for ${componentType} inside ${compType} component`, ); const compInput = component.element.querySelector(`[name="data[${componentKey}]"]`); let compInputs = []; if (componentType === 'day') { - compInputs = Object.keys(component.component.fields).map(fieldName => { + compInputs = Object.keys(component.component.fields).map((fieldName) => { return component.element.querySelector(`[ref="${fieldName}"]`); }); } @@ -213,9 +263,9 @@ export default { assert.equal( input.disabled, true, - !child ? - `Should disable component input for ${componentKey} (component ${componentType})` : - `Should disable component input for ${componentType} inside ${compType} component` + !child + ? `Should disable component input for ${componentKey} (component ${componentType})` + : `Should disable component input for ${componentType} inside ${compType} component`, ); }); } @@ -236,27 +286,36 @@ export default { }, defaultValue: { 'Should set default value'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const defaultValue = comp.component.defaultValue; - assert.deepEqual(comp.defaultValue, defaultValue, `Should correctly define default value for ${compKey} (component ${compType})`); - assert.deepEqual(comp.dataValue, comp.defaultValue, `Should set default value for ${compKey} (component ${compType})`); + assert.deepEqual( + comp.defaultValue, + defaultValue, + `Should correctly define default value for ${compKey} (component ${compType})`, + ); + assert.deepEqual( + comp.dataValue, + comp.defaultValue, + `Should set default value for ${compKey} (component ${compType})`, + ); const inputValue = comp.getValue(); assert.deepEqual( compType === 'datetime' ? inputValue.startsWith(comp.defaultValue) : inputValue, compType === 'datetime' ? true : comp.defaultValue, - `Got value must be equal to default value for ${compKey} (component ${compType})`); + `Got value must be equal to default value for ${compKey} (component ${compType})`, + ); }); done(); }, }, customDefaultValue: { 'Should correctly set custom default value'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; if (compKey === 'basis') return; @@ -265,15 +324,23 @@ export default { _.unset(comp.dataValue, 'metadata'); - assert.deepEqual(comp.defaultValue, defaultValue, `Should correctly define default value for ${compKey} (component ${compType})`); - assert.deepEqual(comp.dataValue, comp.defaultValue, `Should set default value for ${compKey} (component ${compType})`); + assert.deepEqual( + comp.defaultValue, + defaultValue, + `Should correctly define default value for ${compKey} (component ${compType})`, + ); + assert.deepEqual( + comp.dataValue, + comp.defaultValue, + `Should set default value for ${compKey} (component ${compType})`, + ); const inputValue = comp.getValue(); assert.deepEqual( compType === 'datetime' ? inputValue.startsWith(comp.defaultValue) : inputValue, compType === 'datetime' ? true : comp.defaultValue, - `Got value must be equal to default value for ${compKey} (component ${compType})` + `Got value must be equal to default value for ${compKey} (component ${compType})`, ); }); done(); @@ -286,11 +353,15 @@ export default { assert.deepEqual(checkboxValue, false, 'Should set checkbox value to false'); - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.name.trim().endsWith(checkboxValue.toString()), true, `Should interpolate label using checkbox data for ${compKey} (component ${compType})`); + assert.deepEqual( + comp.name.trim().endsWith(checkboxValue.toString()), + true, + `Should interpolate label using checkbox data for ${compKey} (component ${compType})`, + ); }); form.getComponent('checkbox').setValue(true); @@ -299,11 +370,15 @@ export default { const changedCheckboxValue = form.data.checkbox; assert.deepEqual(changedCheckboxValue, true, 'Should change checkbox value to true'); - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.name.trim().endsWith(changedCheckboxValue.toString()), true, `${compKey} (component ${compType}): should change interpolated label text based on new checkbox value`); + assert.deepEqual( + comp.name.trim().endsWith(changedCheckboxValue.toString()), + true, + `${compKey} (component ${compType}): should change interpolated label text based on new checkbox value`, + ); }); done(); @@ -313,10 +388,12 @@ export default { multiple: { 'Should render component in multiple mode and able to add/remove value'(form, done) { - const testComponents = form.components.filter(comp => !['select', 'file'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => !['select', 'file'].includes(comp.component.type), + ); testComponents.forEach((comp, index) => { - const isLastComp = index === (testComponents.length - 1); + const isLastComp = index === testComponents.length - 1; const compKey = comp.component.key; const compType = comp.component.type; @@ -326,9 +403,21 @@ export default { const removeRowBtns = comp.refs.removeRow; const componentInputs = comp.refs.input || comp.refs.searchInput; - assert.deepEqual(!!addAnotherBtn, true, `${compKey} (component ${compType}): should show addAnother button in multiple mode `); - assert.deepEqual(removeRowBtns.length, 1, `${compKey} (component ${compType}): should have remove row button in multiple mode `); - assert.deepEqual(componentInputs.length, 1, `${compKey} (component ${compType}): should render component input in multiple mode `); + assert.deepEqual( + !!addAnotherBtn, + true, + `${compKey} (component ${compType}): should show addAnother button in multiple mode `, + ); + assert.deepEqual( + removeRowBtns.length, + 1, + `${compKey} (component ${compType}): should have remove row button in multiple mode `, + ); + assert.deepEqual( + componentInputs.length, + 1, + `${compKey} (component ${compType}): should render component input in multiple mode `, + ); addAnotherBtn.dispatchEvent(clickEvent); @@ -336,16 +425,32 @@ export default { const removeRowBtnsAfterAddingValue = comp.refs.removeRow; const componentInputsAfterAddingValue = comp.refs.input || comp.refs.searchInput; - assert.deepEqual(removeRowBtnsAfterAddingValue.length, 2, `${compKey} (component ${compType}): should add remove value row btn for new row in multiple mode `); - assert.deepEqual(componentInputsAfterAddingValue.length, 2, `${compKey} (component ${compType}): should add new row in multiple mode `); + assert.deepEqual( + removeRowBtnsAfterAddingValue.length, + 2, + `${compKey} (component ${compType}): should add remove value row btn for new row in multiple mode `, + ); + assert.deepEqual( + componentInputsAfterAddingValue.length, + 2, + `${compKey} (component ${compType}): should add new row in multiple mode `, + ); removeRowBtnsAfterAddingValue[0].dispatchEvent(clickEvent); setTimeout(() => { const removeRowBtnsAfterRemovingValue = comp.refs.removeRow; const componentInputsAfterRemovingValue = comp.refs.input || comp.refs.searchInput; - assert.deepEqual(removeRowBtnsAfterRemovingValue.length, 1, `${compKey} (component ${compType}): should remove 'remove value row btn' if row is removed in multiple mode `); - assert.deepEqual(componentInputsAfterRemovingValue.length, 1, `${compKey} (component ${compType}): should add remove row in multiple mode`); + assert.deepEqual( + removeRowBtnsAfterRemovingValue.length, + 1, + `${compKey} (component ${compType}): should remove 'remove value row btn' if row is removed in multiple mode `, + ); + assert.deepEqual( + componentInputsAfterRemovingValue.length, + 1, + `${compKey} (component ${compType}): should add remove row in multiple mode`, + ); if (isLastComp) { done(); @@ -369,23 +474,45 @@ export default { const value = _.cloneDeep(values.multipleValues[compKey]); const removeRowBtns = comp.refs.removeRow; - assert.deepEqual(comp.getValue().length, value.length, `${compKey} (component ${compType}): should set multiple values`); + assert.deepEqual( + comp.getValue().length, + value.length, + `${compKey} (component ${compType}): should set multiple values`, + ); assert.deepEqual( - comp.type === 'datetime' ? comp.getValue().every((val, ind) => val.startsWith(value[ind])) : comp.getValue(), + comp.type === 'datetime' + ? comp.getValue().every((val, ind) => val.startsWith(value[ind])) + : comp.getValue(), comp.type === 'datetime' ? true : value, - `${compKey} (component ${compType}): set and get values must be equal in multiple mode` + `${compKey} (component ${compType}): set and get values must be equal in multiple mode`, ); if (!['select', 'file'].includes(compType)) { const componentInputs = comp.refs.input || comp.refs.searchInput; - assert.deepEqual(componentInputs.length, value.length, `${compKey} (component ${compType}): should render multiple inputs`); - assert.deepEqual(removeRowBtns.length, value.length, `${compKey} (component ${compType}): should add remove btn for each row in multiple mode`); + assert.deepEqual( + componentInputs.length, + value.length, + `${compKey} (component ${compType}): should render multiple inputs`, + ); + assert.deepEqual( + removeRowBtns.length, + value.length, + `${compKey} (component ${compType}): should add remove btn for each row in multiple mode`, + ); } if (compType === 'file') { - assert.deepEqual(comp.refs.fileLink.length, value.length, `${compKey} (component ${compType}): should render multiple file links`); - assert.deepEqual(comp.refs.removeLink.length, value.length, `${compKey} (component ${compType}): should add remove link btn for each link in multiple mode`); + assert.deepEqual( + comp.refs.fileLink.length, + value.length, + `${compKey} (component ${compType}): should render multiple file links`, + ); + assert.deepEqual( + comp.refs.removeLink.length, + value.length, + `${compKey} (component ${compType}): should add remove link btn for each link in multiple mode`, + ); } }); @@ -396,9 +523,11 @@ export default { modalEdit: { 'Should open and close modal window'(form, done) { const componentsWithBug = ['columns', 'fieldset', 'panel', 'table', 'tabs', 'well']; //BUG: include them in test when it is fixed - const testComponents = form.components.filter(comp => ![...componentsWithBug, 'button'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => ![...componentsWithBug, 'button'].includes(comp.component.type), + ); testComponents.forEach((comp, index) => { - const isLastComp = index === (testComponents.length - 1); + const isLastComp = index === testComponents.length - 1; const compKey = comp.component.key; const compType = comp.component.type; const clickEvent = new Event('click'); @@ -407,19 +536,31 @@ export default { return !comp.refs.modalWrapper.classList.contains('component-rendering-hidden'); }; - assert.deepEqual(isModalWindowOpened(comp), false, `${compKey} (component ${compType}): should keep modal window closed after setting form`); + assert.deepEqual( + isModalWindowOpened(comp), + false, + `${compKey} (component ${compType}): should keep modal window closed after setting form`, + ); const openModalBtn = comp.refs.openModal; openModalBtn.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(isModalWindowOpened(comp), true, `${compKey} (component ${compType}): should open modal window`); + assert.deepEqual( + isModalWindowOpened(comp), + true, + `${compKey} (component ${compType}): should open modal window`, + ); const closeModalBtn = comp.componentModal.refs.modalClose; closeModalBtn.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(isModalWindowOpened(comp), false, `${compKey} (component ${compType}): should close modal window`); + assert.deepEqual( + isModalWindowOpened(comp), + false, + `${compKey} (component ${compType}): should close modal window`, + ); if (isLastComp) { done(); @@ -428,13 +569,18 @@ export default { }); }); }, - 'Should delete component changes when closing modal window and clicking "delete it" in confirmation dialog'(form, done) { + 'Should delete component changes when closing modal window and clicking "delete it" in confirmation dialog'( + form, + done, + ) { const layoutComponents = ['columns', 'fieldset', 'panel', 'table', 'tabs', 'well']; - const testComponents = form.components.filter(comp => !['htmlelement', 'content', 'button'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => !['htmlelement', 'content', 'button'].includes(comp.component.type), + ); testComponents.forEach((comp, index) => { const componentsWithBug = layoutComponents; //BUG: include them in test when it is fixed - const isLastComp = index === (testComponents.length - 1); + const isLastComp = index === testComponents.length - 1; const compKey = comp.component.key; const compType = comp.component.type; @@ -447,7 +593,11 @@ export default { openModalBtn.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(isModalWindowOpened(), true, `${compKey} (component ${compType}): should open modal window`); + assert.deepEqual( + isModalWindowOpened(), + true, + `${compKey} (component ${compType}): should open modal window`, + ); const initialValue = _.cloneDeep(comp.getValue()); const value = _.cloneDeep(values.values[compKey]); @@ -463,17 +613,18 @@ export default { const childExpectedValue = comp.getValue()[childKey]; assert.deepEqual( - childType === 'datetime' ? childDataValue.startsWith(childExpectedValue) : childDataValue, + childType === 'datetime' + ? childDataValue.startsWith(childExpectedValue) + : childDataValue, childType === 'datetime' ? true : childExpectedValue, - `${compKey} (component ${compType}): should set value in modalEdit mode` + `${compKey} (component ${compType}): should set value in modalEdit mode`, ); }); - } - else { + } else { assert.deepEqual( compType === 'datetime' ? comp.getValue().startsWith(value) : comp.getValue(), compType === 'datetime' ? true : value, - `${compKey} (component ${compType}): should set value in modalEdit mode` + `${compKey} (component ${compType}): should set value in modalEdit mode`, ); } @@ -482,26 +633,49 @@ export default { closeModalBtn.dispatchEvent(clickEvent); setTimeout(() => { - const confirmationDialog = document.querySelector('.formio-dialog-content[ref="dialogContents"]'); - assert.deepEqual(!!confirmationDialog, true, `${compKey} (component ${compType}): should open confirmation dialog`); + const confirmationDialog = document.querySelector( + '.formio-dialog-content[ref="dialogContents"]', + ); + assert.deepEqual( + !!confirmationDialog, + true, + `${compKey} (component ${compType}): should open confirmation dialog`, + ); const clearChangesBtn = confirmationDialog.querySelector('[ref="dialogYesButton"]'); clearChangesBtn.dispatchEvent(clickEvent); setTimeout(() => { - const confirmationDialogAfter = document.querySelector('.formio-dialog-content[ref="dialogContents"]'); - assert.deepEqual(!!confirmationDialogAfter, false, `${compKey} (component ${compType}): should close confirmation dialog`); + const confirmationDialogAfter = document.querySelector( + '.formio-dialog-content[ref="dialogContents"]', + ); + assert.deepEqual( + !!confirmationDialogAfter, + false, + `${compKey} (component ${compType}): should close confirmation dialog`, + ); if (!componentsWithBug.includes(compType)) { if (compType === 'form') { - assert.deepEqual(comp.getValue().data, initialValue.data, `${compKey} (component ${compType}): should clear value in modalEdit mode`); - } - else { - assert.deepEqual(comp.getValue(), initialValue, `${compKey} (component ${compType}): should clear value in modalEdit mode`); + assert.deepEqual( + comp.getValue().data, + initialValue.data, + `${compKey} (component ${compType}): should clear value in modalEdit mode`, + ); + } else { + assert.deepEqual( + comp.getValue(), + initialValue, + `${compKey} (component ${compType}): should clear value in modalEdit mode`, + ); } } - assert.deepEqual(isModalWindowOpened(), false, `${compKey} (component ${compType}): should close modal window`); + assert.deepEqual( + isModalWindowOpened(), + false, + `${compKey} (component ${compType}): should close modal window`, + ); if (isLastComp) { done(); @@ -513,10 +687,12 @@ export default { }); }, 'Should save component values and close the modal after clicking "save"'(form, done) { - const testComponents = form.components.filter(comp => !['htmlelement', 'content', 'button'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => !['htmlelement', 'content', 'button'].includes(comp.component.type), + ); testComponents.forEach((comp, index) => { - const isLastComp = index === (testComponents.length - 1); + const isLastComp = index === testComponents.length - 1; const compKey = comp.component.key; const compType = comp.component.type; @@ -529,7 +705,11 @@ export default { openModalBtn.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(isModalWindowOpened(), true, `${compKey} (component ${compType}): should open modal window`); + assert.deepEqual( + isModalWindowOpened(), + true, + `${compKey} (component ${compType}): should open modal window`, + ); const value = _.cloneDeep(values.values[compKey]); comp.setValue(value); @@ -539,7 +719,11 @@ export default { saveModalBtn.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(isModalWindowOpened(), false, `${compKey} (component ${compType}): should close modal window`); + assert.deepEqual( + isModalWindowOpened(), + false, + `${compKey} (component ${compType}): should close modal window`, + ); if (layoutComponents.includes(compType)) { _.each(comp.components, (child) => { @@ -549,17 +733,18 @@ export default { const childExpectedValue = value[childKey]; assert.deepEqual( - childType === 'datetime' ? childDataValue.startsWith(childExpectedValue) : childDataValue, + childType === 'datetime' + ? childDataValue.startsWith(childExpectedValue) + : childDataValue, childType === 'datetime' ? true : childExpectedValue, - `${compKey} (component ${compType}): should save value in modalEdit mode` + `${compKey} (component ${compType}): should save value in modalEdit mode`, ); }); - } - else { + } else { assert.deepEqual( compType === 'datetime' ? comp.getValue().startsWith(value) : comp.getValue(), compType === 'datetime' ? true : value, - `${compKey} (component ${compType}): should save value in modalEdit mode` + `${compKey} (component ${compType}): should save value in modalEdit mode`, ); } @@ -571,35 +756,35 @@ export default { }); }); }, - // 'Should highlight modal button if component is invalid'(form, done, test) { - // test.timeout(10000); - // const testComponents = form.components.filter(comp => !['htmlelement', 'content', 'button'].includes(comp.component.type)); - - // form.everyComponent((comp) => { - // comp.component.validate = comp.component.validate || {}; - // comp.component.validate.required = true; - // }); - // setTimeout(() => { - // const clickEvent = new Event('click'); - // form.getComponent('submit').refs.button.dispatchEvent(clickEvent); - // setTimeout(() => { - // testComponents - // .filter(comp => !comp.component.tree && comp.hasInput) - // .forEach((comp) => { - // const compKey = comp.component.key; - // const compType = comp.component.type; - - // const isErrorHighlightClass = !!(comp.refs.openModalWrapper.classList.contains('formio-error-wrapper') || comp.componentModal.element.classList.contains('formio-error-wrapper')); - // assert.deepEqual(comp.subForm ? !!comp.subForm.errors.length : !!comp.errors.length, 1, `${compKey} (component ${compType}): should contain validation error`); - // //BUG in nested forms, remove the check once it is fixed - // if (compType !== 'form') { - // assert.deepEqual(isErrorHighlightClass, true, `${compKey} (component ${compType}): should highlight invalid modal button`); - // } - // }); - // done(); - // }, 200); - // }, 200); - // }, + // 'Should highlight modal button if component is invalid'(form, done, test) { + // test.timeout(10000); + // const testComponents = form.components.filter(comp => !['htmlelement', 'content', 'button'].includes(comp.component.type)); + + // form.everyComponent((comp) => { + // comp.component.validate = comp.component.validate || {}; + // comp.component.validate.required = true; + // }); + // setTimeout(() => { + // const clickEvent = new Event('click'); + // form.getComponent('submit').refs.button.dispatchEvent(clickEvent); + // setTimeout(() => { + // testComponents + // .filter(comp => !comp.component.tree && comp.hasInput) + // .forEach((comp) => { + // const compKey = comp.component.key; + // const compType = comp.component.type; + + // const isErrorHighlightClass = !!(comp.refs.openModalWrapper.classList.contains('formio-error-wrapper') || comp.componentModal.element.classList.contains('formio-error-wrapper')); + // assert.deepEqual(comp.subForm ? !!comp.subForm.errors.length : !!comp.errors.length, 1, `${compKey} (component ${compType}): should contain validation error`); + // //BUG in nested forms, remove the check once it is fixed + // if (compType !== 'form') { + // assert.deepEqual(isErrorHighlightClass, true, `${compKey} (component ${compType}): should highlight invalid modal button`); + // } + // }); + // done(); + // }, 200); + // }, 200); + // }, }, calculateValue: { 'Should caclulate component value'(form, done, test) { @@ -609,21 +794,24 @@ export default { let basis = basisComponent.getValue(); const checkCalculatedValue = () => { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; if (compKey === 'basis' || compType === 'button') return; - const getExpectedCalculatedValue = (basis) => settings.calculateValue[`${compKey}`].expectedValue(basis); + const getExpectedCalculatedValue = (basis) => + settings.calculateValue[`${compKey}`].expectedValue(basis); const inputValue = comp.dataValue; _.unset(inputValue, 'metadata'); assert.deepEqual( - compType === 'datetime' ? inputValue.startsWith(getExpectedCalculatedValue(basis)) : inputValue, + compType === 'datetime' + ? inputValue.startsWith(getExpectedCalculatedValue(basis)) + : inputValue, compType === 'datetime' ? true : getExpectedCalculatedValue(basis), - `Should calculate component value for ${compKey} (component ${compType})` + `Should calculate component value for ${compKey} (component ${compType})`, ); }); }; @@ -654,20 +842,23 @@ export default { const basis = basisComponent.getValue(); const checkCalculatedValue = () => { - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; if (compKey === 'basis') return; - const getExpectedCalculatedValue = (basis) => settings.calculateValue[`${compKey}`].expectedValue(basis); + const getExpectedCalculatedValue = (basis) => + settings.calculateValue[`${compKey}`].expectedValue(basis); const inputValue = comp.dataValue; _.unset(inputValue, 'metadata'); assert.deepEqual( - compType === 'datetime' ? inputValue.startsWith(getExpectedCalculatedValue(basis)) : inputValue, + compType === 'datetime' + ? inputValue.startsWith(getExpectedCalculatedValue(basis)) + : inputValue, compType === 'datetime' ? true : getExpectedCalculatedValue(basis), - `Should calculate component value for ${compKey} (component ${compType})` + `Should calculate component value for ${compKey} (component ${compType})`, ); }); }; @@ -675,7 +866,7 @@ export default { checkCalculatedValue(); form.setValue({ - data: _.cloneDeep(values.values) + data: _.cloneDeep(values.values), }); setTimeout(() => { @@ -696,30 +887,37 @@ export default { }); const checkCalculatedValue = (overriden) => { - const testComponents = form.components.filter(comp => !['form'].includes(comp.component.type) && !['basis'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => + !['form'].includes(comp.component.type) && !['basis'].includes(comp.component.key), + ); - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const getExpectedCalculatedValue = (basis) => { - return overriden ? values.values[`${compKey}`] : settings.calculateValue[`${compKey}`].expectedValue(basis); + return overriden + ? values.values[`${compKey}`] + : settings.calculateValue[`${compKey}`].expectedValue(basis); }; const inputValue = comp.dataValue; _.unset(inputValue, 'metadata'); assert.deepEqual( - compType === 'datetime' ? inputValue.startsWith(getExpectedCalculatedValue(basis)) : inputValue, + compType === 'datetime' + ? inputValue.startsWith(getExpectedCalculatedValue(basis)) + : inputValue, compType === 'datetime' ? true : getExpectedCalculatedValue(basis), - `Should calculate component value for ${compKey} (component ${compType})` + `Should calculate component value for ${compKey} (component ${compType})`, ); }); }; checkCalculatedValue(false); form.setValue({ - data: _.cloneDeep(values.values) + data: _.cloneDeep(values.values), }); setTimeout(() => { @@ -729,44 +927,98 @@ export default { }, }, 'validate.required': { - 'Should show required validation error on submit and remove error if component has value'(form, done, test) { + 'Should show required validation error on submit and remove error if component has value'( + form, + done, + test, + ) { test.timeout(5000); - const testComponents = form.components.filter(comp => !['button'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => !['button'].includes(comp.component.type), + ); const clickEvent = new Event('click'); form.getComponent('submit').refs.button.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(form.errors.length, testComponents.length, 'Form should contain references to all components errors'); - assert.deepEqual(form.refs.errorRef.length, form.errors.length, 'Should contain references to all components errors in form alert with errors'); + assert.deepEqual( + form.errors.length, + testComponents.length, + 'Form should contain references to all components errors', + ); + assert.deepEqual( + form.refs.errorRef.length, + form.errors.length, + 'Should contain references to all components errors in form alert with errors', + ); - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const getExpectedErrorMessage = () => `${comp.component.label} is required`; - assert.deepEqual(comp.visibleErrors.length, 1, `${compKey} (component ${compType}): should have required validation error`); - assert.deepEqual(comp.errors[0].message, getExpectedErrorMessage(), `${compKey} (component ${compType}): should have correct rquired validation message`); - assert.deepEqual(comp.pristine, false, `${compKey} (component ${compType}): should set pristine to false`); - assert.deepEqual(comp.element.classList.contains('formio-error-wrapper'), true, `${compKey} (component ${compType}): should set error class`); - assert.deepEqual(comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), getExpectedErrorMessage(), `${compKey} (component ${compType}): should display error message`); + assert.deepEqual( + comp.visibleErrors.length, + 1, + `${compKey} (component ${compType}): should have required validation error`, + ); + assert.deepEqual( + comp.errors[0].message, + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should have correct rquired validation message`, + ); + assert.deepEqual( + comp.pristine, + false, + `${compKey} (component ${compType}): should set pristine to false`, + ); + assert.deepEqual( + comp.element.classList.contains('formio-error-wrapper'), + true, + `${compKey} (component ${compType}): should set error class`, + ); + assert.deepEqual( + comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should display error message`, + ); }); form.setValue({ - data: _.cloneDeep(values.values) + data: _.cloneDeep(values.values), }); setTimeout(() => { - assert.deepEqual(form.errors.length, 0, 'Should remove required validation errors after setting values'); - testComponents.forEach(comp => { + assert.deepEqual( + form.errors.length, + 0, + 'Should remove required validation errors after setting values', + ); + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.dataValue, _.get(values.values, compKey), `${compKey} (component ${compType}): should set value`); - assert.deepEqual(comp.visibleErrors.length, 0, `${compKey} (component ${compType}): Should remove error`); - assert.deepEqual(comp.element.classList.contains('formio-error-wrapper'), false, `${compKey} (component ${compType}): Should remove error class`); - assert.deepEqual(!!comp.refs.messageContainer.querySelector('.error'), false, `${compKey} (component ${compType}): should clear errors`); + assert.deepEqual( + comp.dataValue, + _.get(values.values, compKey), + `${compKey} (component ${compType}): should set value`, + ); + assert.deepEqual( + comp.visibleErrors.length, + 0, + `${compKey} (component ${compType}): Should remove error`, + ); + assert.deepEqual( + comp.element.classList.contains('formio-error-wrapper'), + false, + `${compKey} (component ${compType}): Should remove error class`, + ); + assert.deepEqual( + !!comp.refs.messageContainer.querySelector('.error'), + false, + `${compKey} (component ${compType}): should clear errors`, + ); }); done(); }, 350); @@ -774,34 +1026,62 @@ export default { }, 'Should show custom validation error if component is invalid'(form, done, test) { test.timeout(5000); - const testComponents = form.components.filter(comp => !['button'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => !['button'].includes(comp.component.type), + ); _.each(testComponents, (comp) => { - _.set(comp.component, 'validate.customMessage', '{{component.key}}: custom validation error'); + _.set( + comp.component, + 'validate.customMessage', + '{{component.key}}: custom validation error', + ); }); const clickEvent = new Event('click'); form.getComponent('submit').refs.button.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(form.errors.length, testComponents.length, 'Form should contain references to all components errors'); - assert.deepEqual(form.refs.errorRef.length, form.errors.length, 'Should contain references to all components errors in form alert with errors'); + assert.deepEqual( + form.errors.length, + testComponents.length, + 'Form should contain references to all components errors', + ); + assert.deepEqual( + form.refs.errorRef.length, + form.errors.length, + 'Should contain references to all components errors in form alert with errors', + ); - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const getExpectedErrorMessage = () => `${compKey}: custom validation error`; - assert.deepEqual(comp.visibleErrors.length, 1, `${compKey} (component ${compType}): should have required validation error`); - assert.deepEqual(comp.visibleErrors[0].message, getExpectedErrorMessage(), `${compKey} (component ${compType}): should have correct custom validation message`); - assert.deepEqual(comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), getExpectedErrorMessage(), `${compKey} (component ${compType}): should display custom error message`); + assert.deepEqual( + comp.visibleErrors.length, + 1, + `${compKey} (component ${compType}): should have required validation error`, + ); + assert.deepEqual( + comp.visibleErrors[0].message, + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should have correct custom validation message`, + ); + assert.deepEqual( + comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should display custom error message`, + ); }); done(); }, 300); }, 'Should show custom validation label if component is invalid'(form, done, test) { test.timeout(5000); - const testComponents = form.components.filter(comp => !['button'].includes(comp.component.type)); + const testComponents = form.components.filter( + (comp) => !['button'].includes(comp.component.type), + ); _.each(testComponents, (comp) => { _.set(comp.component, 'errorLabel', 'Custom label for {{component.key}}'); }); @@ -810,18 +1090,38 @@ export default { form.getComponent('submit').refs.button.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(form.errors.length, testComponents.length, 'Form should contain references to all components errors'); - assert.deepEqual(form.refs.errorRef.length, form.errors.length, 'Should contain references to all components errors in form alert with errors'); + assert.deepEqual( + form.errors.length, + testComponents.length, + 'Form should contain references to all components errors', + ); + assert.deepEqual( + form.refs.errorRef.length, + form.errors.length, + 'Should contain references to all components errors in form alert with errors', + ); - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const getExpectedErrorMessage = () => `Custom label for ${compKey} is required`; - assert.deepEqual(comp.visibleErrors.length, 1, `${compKey} (component ${compType}): should have required validation error with custom label`); - assert.deepEqual(comp.visibleErrors[0].message, getExpectedErrorMessage(), `${compKey} (component ${compType}): should have correct required validation message with custom label`); - assert.deepEqual(comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), getExpectedErrorMessage(), `${compKey} (component ${compType}): should display error message with custom label`); + assert.deepEqual( + comp.visibleErrors.length, + 1, + `${compKey} (component ${compType}): should have required validation error with custom label`, + ); + assert.deepEqual( + comp.visibleErrors[0].message, + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should have correct required validation message with custom label`, + ); + assert.deepEqual( + comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should display error message with custom label`, + ); }); done(); }, 300); @@ -834,29 +1134,57 @@ export default { assert.deepEqual(form.errors.length, 0, 'Should not show validation errors'); form.setPristine(false); form.setValue({ - data: _.cloneDeep(values.values) + data: _.cloneDeep(values.values), }); setTimeout(() => { // minus one to not include the submit button. - assert.deepEqual(form.errors.length, form.components.length - 1, 'Form should contain references to all components errors'); + assert.deepEqual( + form.errors.length, + form.components.length - 1, + 'Form should contain references to all components errors', + ); - form.components.forEach(comp => { + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; if (compType === 'button') return; const getExpectedErrorMessage = () => 'Custom validation message: component is invalid.'; - assert.deepEqual(comp.dataValue, _.get(values.values, compKey), `${compKey} (component ${compType}): should set value`); - assert.deepEqual(comp.visibleErrors.length, 1, `${compKey} (component ${compType}): should have validation error`); - assert.deepEqual(comp.visibleErrors[0].message, getExpectedErrorMessage(), `${compKey} (component ${compType}): should have correct rquired validation message`); - assert.deepEqual(comp.pristine, false, `${compKey} (component ${compType}): should set pristine to false`); - assert.deepEqual(comp.element.classList.contains('has-error'), true, `${compKey} (component ${compType}): should set error class`); + assert.deepEqual( + comp.dataValue, + _.get(values.values, compKey), + `${compKey} (component ${compType}): should set value`, + ); + assert.deepEqual( + comp.visibleErrors.length, + 1, + `${compKey} (component ${compType}): should have validation error`, + ); + assert.deepEqual( + comp.visibleErrors[0].message, + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should have correct rquired validation message`, + ); + assert.deepEqual( + comp.pristine, + false, + `${compKey} (component ${compType}): should set pristine to false`, + ); + assert.deepEqual( + comp.element.classList.contains('has-error'), + true, + `${compKey} (component ${compType}): should set error class`, + ); //remove below line once tree validation error display is fixed //remove below line once container validation error display is fixed if (_.includes(['tree', 'container'], comp.component.type)) return; - assert.deepEqual(comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), getExpectedErrorMessage(), `${compKey} (component ${compType}): should display error message`); + assert.deepEqual( + comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should display error message`, + ); }); const getSetValue = (comp) => { @@ -868,59 +1196,112 @@ export default { }); setTimeout(() => { - assert.deepEqual(form.visibleErrors.length, 0, 'Should remove validation errors after setting valid values'); - form.components.forEach(comp => { + assert.deepEqual( + form.visibleErrors.length, + 0, + 'Should remove validation errors after setting valid values', + ); + form.components.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.visibleErrors.length, 0, `${compKey} (component ${compType}): Should remove validation error`); - assert.deepEqual(comp.element.classList.contains('has-error'), false, `${compKey} (component ${compType}): Should remove error class`); - assert.deepEqual(!!comp.refs.messageContainer.querySelector('.error'), false, `${compKey} (component ${compType}): should clear errors list`); + assert.deepEqual( + comp.visibleErrors.length, + 0, + `${compKey} (component ${compType}): Should remove validation error`, + ); + assert.deepEqual( + comp.element.classList.contains('has-error'), + false, + `${compKey} (component ${compType}): Should remove error class`, + ); + assert.deepEqual( + !!comp.refs.messageContainer.querySelector('.error'), + false, + `${compKey} (component ${compType}): should clear errors list`, + ); }); done(); }, 500); }, 500); }, }, - 'validate_nested_components': { + validate_nested_components: { 'Should show validation errors for nested components'(form, done, test) { test.timeout(6000); const testComponents = []; - FormioUtils.eachComponent(form.component.components, (component) => { - const componentInstance = form.getComponent(component.key); - if (component.type === 'datagrid') { - componentInstance.component.components.forEach((comp) => _.set(comp, 'validate.required', true)); - } - if (!component.validate_nested_components && ![...layoutComponents, 'datagrid', 'tree'].includes(component.type)) { - if (componentInstance) { - _.set(componentInstance.component, 'validate.required', true); - testComponents.push(componentInstance); + FormioUtils.eachComponent( + form.component.components, + (component) => { + const componentInstance = form.getComponent(component.key); + if (component.type === 'datagrid') { + componentInstance.component.components.forEach((comp) => + _.set(comp, 'validate.required', true), + ); } - _.set(component, 'validate.required', true); - } - }, true); + if ( + !component.validate_nested_components && + ![...layoutComponents, 'datagrid', 'tree'].includes(component.type) + ) { + if (componentInstance) { + _.set(componentInstance.component, 'validate.required', true); + testComponents.push(componentInstance); + } + _.set(component, 'validate.required', true); + } + }, + true, + ); setTimeout(() => { const clickEvent = new Event('click'); form.getComponent('submit').refs.button.dispatchEvent(clickEvent); setTimeout(() => { - assert.deepEqual(form.errors.length, testComponents.length, 'Form should contain references to all components errors'); - assert.deepEqual(form.refs.errorRef.length, form.errors.length, 'Should contain references to all components errors in form alert with errors'); + assert.deepEqual( + form.errors.length, + testComponents.length, + 'Form should contain references to all components errors', + ); + assert.deepEqual( + form.refs.errorRef.length, + form.errors.length, + 'Should contain references to all components errors in form alert with errors', + ); - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const getExpectedErrorMessage = () => `${comp.component.label} is required`; - assert.deepEqual(comp.visibleErrors.length, 1, `${compKey} (component ${compType}): should have required validation error`); - assert.deepEqual(comp.visibleErrors[0].message, getExpectedErrorMessage(), `${compKey} (component ${compType}): should have correct rquired validation message`); - assert.deepEqual(comp.pristine, false, `${compKey} (component ${compType}): should set pristine to false`); - assert.deepEqual(comp.element.classList.contains('formio-error-wrapper'), true, `${compKey} (component ${compType}): should set error class`); + assert.deepEqual( + comp.visibleErrors.length, + 1, + `${compKey} (component ${compType}): should have required validation error`, + ); + assert.deepEqual( + comp.visibleErrors[0].message, + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should have correct rquired validation message`, + ); + assert.deepEqual( + comp.pristine, + false, + `${compKey} (component ${compType}): should set pristine to false`, + ); + assert.deepEqual( + comp.element.classList.contains('formio-error-wrapper'), + true, + `${compKey} (component ${compType}): should set error class`, + ); //remove below line once tree validation error display is fixed if (_.includes(['tree'], comp.component.type)) return; - assert.deepEqual(comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), getExpectedErrorMessage(), `${compKey} (component ${compType}): should display error message`); + assert.deepEqual( + comp.refs.messageContainer.querySelector('.error')?.textContent.trim(), + getExpectedErrorMessage(), + `${compKey} (component ${compType}): should display error message`, + ); }); _.each(form.components, (comp) => { @@ -933,14 +1314,30 @@ export default { }); setTimeout(() => { - assert.deepEqual(form.visibleErrors.length, 0, 'Should remove required validation errors after setting values'); - testComponents.forEach(comp => { + assert.deepEqual( + form.visibleErrors.length, + 0, + 'Should remove required validation errors after setting values', + ); + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.visibleErrors.length, 0, `${compKey} (component ${compType}): Should remove valudation error`); - assert.deepEqual(comp.element.classList.contains('formio-error-wrapper'), false, `${compKey} (component ${compType}): Should remove error class`); - assert.deepEqual(!!comp.refs.messageContainer.querySelector('.error'), false, `${compKey} (component ${compType}): should clear errors`); + assert.deepEqual( + comp.visibleErrors.length, + 0, + `${compKey} (component ${compType}): Should remove valudation error`, + ); + assert.deepEqual( + comp.element.classList.contains('formio-error-wrapper'), + false, + `${compKey} (component ${compType}): Should remove error class`, + ); + assert.deepEqual( + !!comp.refs.messageContainer.querySelector('.error'), + false, + `${compKey} (component ${compType}): should clear errors`, + ); }); done(); @@ -950,21 +1347,43 @@ export default { }, }, conditional: { - 'Should show component if simple condition is met and hide it if simple condition is not fulfilled'(form, done, test) { + 'Should show component if simple condition is met and hide it if simple condition is not fulfilled'( + form, + done, + test, + ) { test.timeout(3000); - const testComponents = form.components.filter(comp => !['basis'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => !['basis'].includes(comp.component.key), + ); const testVisibility = (shouldBeVisible) => { - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.visible, shouldBeVisible, `Should set visible:${shouldBeVisible} for ${compKey} (component ${compType})`); - assert.equal(comp.hasCondition(), true, `${compKey} (component ${compType}): hasCondition should return true`); - assert.equal(comp.conditionallyVisible(), shouldBeVisible, `${compKey} (component ${compType}): should ${shouldBeVisible ? 'not' : ''} be conditionally visible`); + assert.equal( + comp.visible, + shouldBeVisible, + `Should set visible:${shouldBeVisible} for ${compKey} (component ${compType})`, + ); + assert.equal( + comp.hasCondition(), + true, + `${compKey} (component ${compType}): hasCondition should return true`, + ); + assert.equal( + comp.conditionallyVisible(), + shouldBeVisible, + `${compKey} (component ${compType}): should ${shouldBeVisible ? 'not' : ''} be conditionally visible`, + ); if (compType !== 'well') { - assert.equal(comp.element.classList.contains('formio-hidden'), !shouldBeVisible, `Should ${shouldBeVisible ? 'not' : ''} set formio-hidden class for ${compKey} (component ${compType})`); + assert.equal( + comp.element.classList.contains('formio-hidden'), + !shouldBeVisible, + `Should ${shouldBeVisible ? 'not' : ''} set formio-hidden class for ${compKey} (component ${compType})`, + ); } }); }; @@ -985,21 +1404,43 @@ export default { }, }, customConditional: { - 'Should show component if custom condition is met and hide it if custom condition is not fulfilled'(form, done, test) { + 'Should show component if custom condition is met and hide it if custom condition is not fulfilled'( + form, + done, + test, + ) { test.timeout(3000); - const testComponents = form.components.filter(comp => !['basis'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => !['basis'].includes(comp.component.key), + ); const testVisibility = (shouldBeVisible) => { - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.visible, shouldBeVisible, `Should set visible:${shouldBeVisible} for ${compKey} (component ${compType})`); - assert.equal(comp.hasCondition(), true, `${compKey} (component ${compType}): hasCondition should return true`); - assert.equal(comp.conditionallyVisible(), shouldBeVisible, `${compKey} (component ${compType}): should ${shouldBeVisible ? 'not' : ''} be conditionally visible`); + assert.equal( + comp.visible, + shouldBeVisible, + `Should set visible:${shouldBeVisible} for ${compKey} (component ${compType})`, + ); + assert.equal( + comp.hasCondition(), + true, + `${compKey} (component ${compType}): hasCondition should return true`, + ); + assert.equal( + comp.conditionallyVisible(), + shouldBeVisible, + `${compKey} (component ${compType}): should ${shouldBeVisible ? 'not' : ''} be conditionally visible`, + ); if (compType !== 'well') { - assert.equal(comp.element.classList.contains('formio-hidden'), !shouldBeVisible, `Should ${shouldBeVisible ? 'not' : ''} set formio-hidden class for ${compKey} (component ${compType})`); + assert.equal( + comp.element.classList.contains('formio-hidden'), + !shouldBeVisible, + `Should ${shouldBeVisible ? 'not' : ''} set formio-hidden class for ${compKey} (component ${compType})`, + ); } }); }; @@ -1020,22 +1461,39 @@ export default { }, }, logic: { - 'Should execute value/property/merge schema/custom actions if simple logic condition is met'(form, done, test) { + 'Should execute value/property/merge schema/custom actions if simple logic condition is met'( + form, + done, + test, + ) { test.timeout(8000); - const testComponents = form.components.filter(comp => !['basis', 'hideBtn'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => !['basis', 'hideBtn'].includes(comp.component.key), + ); form.getComponent('basis').setValue('value action'); setTimeout(() => { - checkSetValue(testComponents, 'should set value once simple logic value action is executed'); + checkSetValue( + testComponents, + 'should set value once simple logic value action is executed', + ); form.getComponent('basis').setValue('property action'); setTimeout(() => { - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.component.label, 'changed label on property action', `${compKey} (component ${compType}): should change label once simple logic property action is executed`); - assert.deepEqual(comp.name, 'changed label on property action', `${compKey} (component ${compType}): should change name once simple logic property action is executed`); + assert.deepEqual( + comp.component.label, + 'changed label on property action', + `${compKey} (component ${compType}): should change label once simple logic property action is executed`, + ); + assert.deepEqual( + comp.name, + 'changed label on property action', + `${compKey} (component ${compType}): should change name once simple logic property action is executed`, + ); }); _.each(testComponents, (comp) => { @@ -1045,18 +1503,29 @@ export default { form.getComponent('basis').setValue('merge schema action'); setTimeout(() => { - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.component.label, 'changed label on merge schema', `${compKey} (component ${compType}): should change label once simple logic merge schema action is executed`); - assert.deepEqual(comp.name, 'changed label on merge schema', `${compKey} (component ${compType}): should change name once simple logic property merge schema action is executed`); + assert.deepEqual( + comp.component.label, + 'changed label on merge schema', + `${compKey} (component ${compType}): should change label once simple logic merge schema action is executed`, + ); + assert.deepEqual( + comp.name, + 'changed label on merge schema', + `${compKey} (component ${compType}): should change name once simple logic property merge schema action is executed`, + ); }); form.getComponent('basis').setValue('custom action'); setTimeout(() => { - checkSetValue(testComponents, 'should set value once simple logic custom action is executed'); + checkSetValue( + testComponents, + 'should set value once simple logic custom action is executed', + ); done(); }, 500); @@ -1066,7 +1535,9 @@ export default { }, 'Should execute value action if js logic condition is met'(form, done, test) { test.timeout(5000); - const testComponents = form.components.filter(comp => !['basis', 'hideBtn'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => !['basis', 'hideBtn'].includes(comp.component.key), + ); form.getComponent('basis').setValue('some text value with length over twenty'); setTimeout(() => { @@ -1076,41 +1547,57 @@ export default { }, 'Should execute property action if json logic condition is met'(form, done, test) { test.timeout(3500); - const testComponents = form.components.filter(comp => !['basis', 'hideBtn'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => !['basis', 'hideBtn'].includes(comp.component.key), + ); form.getComponent('basis').setValue('add class'); setTimeout(() => { - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.deepEqual(comp.element.classList.contains('json-logic-class'), true, `${compKey} (component ${compType}): should set custom class once json logic property action is executed`); + assert.deepEqual( + comp.element.classList.contains('json-logic-class'), + true, + `${compKey} (component ${compType}): should set custom class once json logic property action is executed`, + ); }); done(); }, 500); }, 'Should execute property action if logic event is emitted'(form, done) { - const testComponents = form.components.filter(comp => !['basis', 'hideBtn'].includes(comp.component.key)); + const testComponents = form.components.filter( + (comp) => !['basis', 'hideBtn'].includes(comp.component.key), + ); const clickEvent = new Event('click'); form.getComponent('hideBtn').refs.button.dispatchEvent(clickEvent); - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; - assert.equal(comp.visible, false, `Should set visible:false for ${compKey} (component ${compType})`); + assert.equal( + comp.visible, + false, + `Should set visible:false for ${compKey} (component ${compType})`, + ); if (compType !== 'well') { - assert.equal(comp.element.classList.contains('formio-hidden'), true, `Should set formio-hidden class for ${compKey} (component ${compType})`); + assert.equal( + comp.element.classList.contains('formio-hidden'), + true, + `Should set formio-hidden class for ${compKey} (component ${compType})`, + ); } }); done(); }, }, - 'set_get_value': { + set_get_value: { 'Should set and get components` value (including string value)'(form, done) { - form.components.forEach(comp => { + form.components.forEach((comp) => { comp.setValue(_.cloneDeep(values.values[comp.component.key])); }); @@ -1120,21 +1607,27 @@ export default { }, 300); }, 'Should set and get submission'(form, done) { - form.setSubmission({ - data: values.submission - }).then(() => { - setTimeout(() => { - checkSetValue(form.components, 'should set submisson', true); - assert.deepEqual(form.submission.data, values.submission, 'Should contain correct submission data'); - done(); - }, 100); - }); + form + .setSubmission({ + data: values.submission, + }) + .then(() => { + setTimeout(() => { + checkSetValue(form.components, 'should set submisson', true); + assert.deepEqual( + form.submission.data, + values.submission, + 'Should contain correct submission data', + ); + done(); + }, 100); + }); }, }, }; function checkSetValue(testComponents, message, checkStringValue) { - testComponents.forEach(comp => { + testComponents.forEach((comp) => { const compKey = comp.component.key; const compType = comp.component.type; const value = _.get(values.values, compKey); @@ -1155,7 +1648,11 @@ function checkSetValue(testComponents, message, checkStringValue) { assert.deepEqual(dataValue, expectedValue, `${key}22222 (component ${type}): ${message}`); if (checkStringValue) { - assert.deepEqual(comp.getValueAsString(dataValue), expectedStringValue, `${key} (component ${type}): should get value as string`); + assert.deepEqual( + comp.getValueAsString(dataValue), + expectedStringValue, + `${key} (component ${type}): should get value as string`, + ); } }; @@ -1164,8 +1661,7 @@ function checkSetValue(testComponents, message, checkStringValue) { const childKey = child.component.key; checkValues(child, value[childKey], values.stringValues[childKey]); }); - } - else { + } else { checkValues(comp, value, values.stringValues[compKey]); } }); diff --git a/test/forms/helpers/testBasicComponentSettings/values.d.ts b/test/forms/helpers/testBasicComponentSettings/values.d.ts index 7b5154b649..151c9ec5ca 100644 --- a/test/forms/helpers/testBasicComponentSettings/values.d.ts +++ b/test/forms/helpers/testBasicComponentSettings/values.d.ts @@ -1,305 +1,305 @@ declare namespace _default { - export { values }; - export { multipleValues }; - export { stringValues }; - export { submission }; + export { values }; + export { multipleValues }; + export { stringValues }; + export { submission }; } export default _default; declare const values: { - form: { - data: { - dataGridChild: { - textAreaInsideChildDataGrid: string; - }[]; - numberInsideChildPanel: number; - textFieldChild: string; - timeChild: string; - }; + form: { + data: { + dataGridChild: { + textAreaInsideChildDataGrid: string; + }[]; + numberInsideChildPanel: number; + textFieldChild: string; + timeChild: string; }; - textField: string; - textArea: string; - number: number; - password: string; - checkbox: boolean; - selectBoxes: { - a: boolean; - b: boolean; - c: boolean; - }; - select: string; - radio: string; - email: string; - url: string; - phoneNumber: string; - tags: string; + }; + textField: string; + textArea: string; + number: number; + password: string; + checkbox: boolean; + selectBoxes: { + a: boolean; + b: boolean; + c: boolean; + }; + select: string; + radio: string; + email: string; + url: string; + phoneNumber: string; + tags: string; + address: { address: { - address: { - county: string; - state: string; - country: string; - country_code: string; - }; - boundingbox: string[]; - class: string; - display_name: string; - icon: string; - importance: number; - lat: string; - licence: string; - lon: string; - osm_id: number; - osm_type: string; - place_id: number; - type: string; - }; - dateTime: string; - day: string; - time: string; - currency: number; - survey: { - question1: string; - question2: string; - }; - signature: string; - columns: { - numberColumn: number; - textFieldColumn: string; - }; - fieldset: { - numberFieldset: number; - }; - panel: { - numberPanel: number; - }; - table: { - selectTable: string; - checkboxTable: boolean; - dateTimeTable: string; - currencyTable: number; - }; - tabs: { - numberTab: number; - textFieldTab: string; - }; - well: { - textFieldWell: string; - }; - hidden: string; - container: { - textFieldContainer: string; - }; - dataMap: { - key: string; - key1: string; + county: string; + state: string; + country: string; + country_code: string; }; - dataGrid: { - textFieldDataGrid: string; + boundingbox: string[]; + class: string; + display_name: string; + icon: string; + importance: number; + lat: string; + licence: string; + lon: string; + osm_id: number; + osm_type: string; + place_id: number; + type: string; + }; + dateTime: string; + day: string; + time: string; + currency: number; + survey: { + question1: string; + question2: string; + }; + signature: string; + columns: { + numberColumn: number; + textFieldColumn: string; + }; + fieldset: { + numberFieldset: number; + }; + panel: { + numberPanel: number; + }; + table: { + selectTable: string; + checkboxTable: boolean; + dateTimeTable: string; + currencyTable: number; + }; + tabs: { + numberTab: number; + textFieldTab: string; + }; + well: { + textFieldWell: string; + }; + hidden: string; + container: { + textFieldContainer: string; + }; + dataMap: { + key: string; + key1: string; + }; + dataGrid: { + textFieldDataGrid: string; + }[]; + editGrid: { + textFieldEditGrid: string; + }[]; + tree: { + children: { + children: never[]; + data: { + textFieldTree: string; + }; }[]; - editGrid: { - textFieldEditGrid: string; - }[]; - tree: { - children: { - children: never[]; - data: { - textFieldTree: string; - }; - }[]; - data: { - textFieldTree: string; - }; + data: { + textFieldTree: string; }; - file: { - name: string; - originalName: string; - size: number; - storage: string; - type: string; - url: string; - }[]; - submit: boolean; + }; + file: { + name: string; + originalName: string; + size: number; + storage: string; + type: string; + url: string; + }[]; + submit: boolean; }; declare const multipleValues: any; declare namespace stringValues { - const form: string; - const textField: string; - const textArea: string; - const number: string; - const password: string; - const checkbox: string; - const selectBoxes: string; - const select: string; - const radio: string; - const email: string; - const url: string; - const phoneNumber: string; - const tags: string; - const address: string; - const dateTime: string; - const day: string; - const time: string; - const currency: string; - const survey: string; - const numberColumn: string; - const textFieldColumn: string; - const numberFieldset: string; - const numberPanel: string; - const selectTable: string; - const checkboxTable: string; - const dateTimeTable: string; - const currencyTable: string; - const numberTab: string; - const textFieldTab: string; - const textFieldWell: string; - const hidden: string; - const container: string; - const dataMap: string; - const dataGrid: string; - const editGrid: string; - const tree: string; - const file: string; - const submit: string; + const form: string; + const textField: string; + const textArea: string; + const number: string; + const password: string; + const checkbox: string; + const selectBoxes: string; + const select: string; + const radio: string; + const email: string; + const url: string; + const phoneNumber: string; + const tags: string; + const address: string; + const dateTime: string; + const day: string; + const time: string; + const currency: string; + const survey: string; + const numberColumn: string; + const textFieldColumn: string; + const numberFieldset: string; + const numberPanel: string; + const selectTable: string; + const checkboxTable: string; + const dateTimeTable: string; + const currencyTable: string; + const numberTab: string; + const textFieldTab: string; + const textFieldWell: string; + const hidden: string; + const container: string; + const dataMap: string; + const dataGrid: string; + const editGrid: string; + const tree: string; + const file: string; + const submit: string; } declare namespace submission { - export namespace form_1 { - namespace data { - const dataGridChild: { - textAreaInsideChildDataGrid: string; - }[]; - const numberInsideChildPanel: number; - const textFieldChild: string; - const timeChild: string; - } - } - export { form_1 as form }; - const textField_1: string; - export { textField_1 as textField }; - const textArea_1: string; - export { textArea_1 as textArea }; - const number_1: number; - export { number_1 as number }; - const password_1: string; - export { password_1 as password }; - const checkbox_1: boolean; - export { checkbox_1 as checkbox }; - export namespace selectBoxes_1 { - const a: boolean; - const b: boolean; - const c: boolean; - } - export { selectBoxes_1 as selectBoxes }; - const select_1: string; - export { select_1 as select }; - const radio_1: string; - export { radio_1 as radio }; - const email_1: string; - export { email_1 as email }; - const url_1: string; - export { url_1 as url }; - const phoneNumber_1: string; - export { phoneNumber_1 as phoneNumber }; - const tags_1: string; - export { tags_1 as tags }; - export namespace address_1 { - export namespace address_2 { - const county: string; - const state: string; - const country: string; - const country_code: string; - } - export { address_2 as address }; - export const boundingbox: string[]; - const _class: string; - export { _class as class }; - export const display_name: string; - export const icon: string; - export const importance: number; - export const lat: string; - export const licence: string; - export const lon: string; - export const osm_id: number; - export const osm_type: string; - export const place_id: number; - export const type: string; + export namespace form_1 { + namespace data { + const dataGridChild: { + textAreaInsideChildDataGrid: string; + }[]; + const numberInsideChildPanel: number; + const textFieldChild: string; + const timeChild: string; } - export { address_1 as address }; - const dateTime_1: string; - export { dateTime_1 as dateTime }; - const day_1: string; - export { day_1 as day }; - const time_1: string; - export { time_1 as time }; - const currency_1: number; - export { currency_1 as currency }; - export namespace survey_1 { - const question1: string; - const question2: string; + } + export { form_1 as form }; + const textField_1: string; + export { textField_1 as textField }; + const textArea_1: string; + export { textArea_1 as textArea }; + const number_1: number; + export { number_1 as number }; + const password_1: string; + export { password_1 as password }; + const checkbox_1: boolean; + export { checkbox_1 as checkbox }; + export namespace selectBoxes_1 { + const a: boolean; + const b: boolean; + const c: boolean; + } + export { selectBoxes_1 as selectBoxes }; + const select_1: string; + export { select_1 as select }; + const radio_1: string; + export { radio_1 as radio }; + const email_1: string; + export { email_1 as email }; + const url_1: string; + export { url_1 as url }; + const phoneNumber_1: string; + export { phoneNumber_1 as phoneNumber }; + const tags_1: string; + export { tags_1 as tags }; + export namespace address_1 { + export namespace address_2 { + const county: string; + const state: string; + const country: string; + const country_code: string; } - export { survey_1 as survey }; - export const signature: string; - const numberColumn_1: number; - export { numberColumn_1 as numberColumn }; - const textFieldColumn_1: string; - export { textFieldColumn_1 as textFieldColumn }; - const numberFieldset_1: number; - export { numberFieldset_1 as numberFieldset }; - const numberPanel_1: number; - export { numberPanel_1 as numberPanel }; - const selectTable_1: string; - export { selectTable_1 as selectTable }; - const checkboxTable_1: boolean; - export { checkboxTable_1 as checkboxTable }; - const dateTimeTable_1: string; - export { dateTimeTable_1 as dateTimeTable }; - const currencyTable_1: number; - export { currencyTable_1 as currencyTable }; - const numberTab_1: number; - export { numberTab_1 as numberTab }; - const textFieldTab_1: string; - export { textFieldTab_1 as textFieldTab }; - const textFieldWell_1: string; - export { textFieldWell_1 as textFieldWell }; - const hidden_1: string; - export { hidden_1 as hidden }; - export namespace container_1 { - const textFieldContainer: string; - } - export { container_1 as container }; - export namespace dataMap_1 { - const key: string; - const key1: string; - } - export { dataMap_1 as dataMap }; - const dataGrid_1: { - textFieldDataGrid: string; - }[]; - export { dataGrid_1 as dataGrid }; - const editGrid_1: { - textFieldEditGrid: string; + export { address_2 as address }; + export const boundingbox: string[]; + const _class: string; + export { _class as class }; + export const display_name: string; + export const icon: string; + export const importance: number; + export const lat: string; + export const licence: string; + export const lon: string; + export const osm_id: number; + export const osm_type: string; + export const place_id: number; + export const type: string; + } + export { address_1 as address }; + const dateTime_1: string; + export { dateTime_1 as dateTime }; + const day_1: string; + export { day_1 as day }; + const time_1: string; + export { time_1 as time }; + const currency_1: number; + export { currency_1 as currency }; + export namespace survey_1 { + const question1: string; + const question2: string; + } + export { survey_1 as survey }; + export const signature: string; + const numberColumn_1: number; + export { numberColumn_1 as numberColumn }; + const textFieldColumn_1: string; + export { textFieldColumn_1 as textFieldColumn }; + const numberFieldset_1: number; + export { numberFieldset_1 as numberFieldset }; + const numberPanel_1: number; + export { numberPanel_1 as numberPanel }; + const selectTable_1: string; + export { selectTable_1 as selectTable }; + const checkboxTable_1: boolean; + export { checkboxTable_1 as checkboxTable }; + const dateTimeTable_1: string; + export { dateTimeTable_1 as dateTimeTable }; + const currencyTable_1: number; + export { currencyTable_1 as currencyTable }; + const numberTab_1: number; + export { numberTab_1 as numberTab }; + const textFieldTab_1: string; + export { textFieldTab_1 as textFieldTab }; + const textFieldWell_1: string; + export { textFieldWell_1 as textFieldWell }; + const hidden_1: string; + export { hidden_1 as hidden }; + export namespace container_1 { + const textFieldContainer: string; + } + export { container_1 as container }; + export namespace dataMap_1 { + const key: string; + const key1: string; + } + export { dataMap_1 as dataMap }; + const dataGrid_1: { + textFieldDataGrid: string; + }[]; + export { dataGrid_1 as dataGrid }; + const editGrid_1: { + textFieldEditGrid: string; + }[]; + export { editGrid_1 as editGrid }; + export namespace tree_1 { + export const children: { + children: never[]; + data: { + textFieldTree: string; + }; }[]; - export { editGrid_1 as editGrid }; - export namespace tree_1 { - export const children: { - children: never[]; - data: { - textFieldTree: string; - }; - }[]; - export namespace data_1 { - const textFieldTree: string; - } - export { data_1 as data }; + export namespace data_1 { + const textFieldTree: string; } - export { tree_1 as tree }; - const file_1: { - name: string; - originalName: string; - size: number; - storage: string; - type: string; - url: string; - }[]; - export { file_1 as file }; - const submit_1: boolean; - export { submit_1 as submit }; + export { data_1 as data }; + } + export { tree_1 as tree }; + const file_1: { + name: string; + originalName: string; + size: number; + storage: string; + type: string; + url: string; + }[]; + export { file_1 as file }; + const submit_1: boolean; + export { submit_1 as submit }; } diff --git a/test/forms/helpers/testBasicComponentSettings/values.js b/test/forms/helpers/testBasicComponentSettings/values.js index 891e4459fd..8d8ebbcdfb 100644 --- a/test/forms/helpers/testBasicComponentSettings/values.js +++ b/test/forms/helpers/testBasicComponentSettings/values.js @@ -1,14 +1,14 @@ import _ from 'lodash'; import settings from './settings'; import { fastCloneDeep } from '../../../../src/utils/utils'; -import basicValues from './basicValues' +import basicValues from './basicValues'; const values = basicValues; const findMultipleValues = (valuesObj) => { const componentsWithMultipleValueSetting = {}; _.each(valuesObj, (compPropertyValue, compKey) => { - if(settings['multiple'][compKey]) { + if (settings['multiple'][compKey]) { componentsWithMultipleValueSetting[compKey] = fastCloneDeep(compPropertyValue); } }); @@ -17,19 +17,19 @@ const findMultipleValues = (valuesObj) => { const multipleValues = _.mapValues(findMultipleValues(values), (value, compKey) => { if (compKey === 'select') { - return ['a','b'] + return ['a', 'b']; } if (compKey === 'file') { const fileValue = fastCloneDeep(value); fileValue.push({ - name: "after-5c3e3b6b-c8b0-43c1-8cc5-cb4ede1e51cf.jpg", - originalName: "after.jpg", + name: 'after-5c3e3b6b-c8b0-43c1-8cc5-cb4ede1e51cf.jpg', + originalName: 'after.jpg', size: 28473, - storage: "base64", - type: "image/jpeg", - url: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAkACQAAD", + storage: 'base64', + type: 'image/jpeg', + url: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAkACQAAD', }); return fileValue; @@ -79,16 +79,16 @@ const stringValues = { submit: 'true', }; -const submission = { +const submission = { form: { data: { - dataGridChild: [ - { textAreaInsideChildDataGrid: "test value in nested form1" }, - { textAreaInsideChildDataGrid: "test value in nested form2" } - ], - numberInsideChildPanel: 111111, - textFieldChild: "test value in nested form", - timeChild: "11:55:00", + dataGridChild: [ + { textAreaInsideChildDataGrid: 'test value in nested form1' }, + { textAreaInsideChildDataGrid: 'test value in nested form2' }, + ], + numberInsideChildPanel: 111111, + textFieldChild: 'test value in nested form', + timeChild: '11:55:00', }, }, textField: 'test value', @@ -104,7 +104,12 @@ const submission = { phoneNumber: '(555) 555-5555', tags: 'tag1', address: { - address: { county: 'Dallas County', state: 'Texas', country: 'United States', country_code: 'us' }, + address: { + county: 'Dallas County', + state: 'Texas', + country: 'United States', + country_code: 'us', + }, boundingbox: ['32.5453486', '32.9899027', '-97.0383833', '-96.5168819'], class: 'boundary', display_name: 'Dallas County, Texas, United States', @@ -124,14 +129,15 @@ const submission = { currency: 30000, survey: { question1: 'yes', - question2: 'no' + question2: 'no', }, - signature: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAACWCAYAAAAYC9T6AAAcO0lEQVR4Xu3df4yV1Z3H8TNRgSjCaIlULMMiLah1wG43+0cVGpPNLhBoRd10KMMfm2yAyEjbsB0quBv2D8ZU0k27ZSho2ewuQ0RLrBEWtKS724LUGmKWGU3bpFQZaGsryjDCBv9gZ/M5j9/hYebO3Hvn/jrnue8nMTPO3Ps853mdhzufe+73nKfh4sV3BxwbAggggAACCCCAAAIIFCzQQIgu2IoHIoAAAggggAACCCDgBQjRXAgIIIAAAggggAACCBQpQIguEoyHI4AAAggggAACCCBAiOYaQAABBBBAAAEEEECgSAFCdJFgPBwBBBBAAAEEEEAAAUI01wACCCCAAAIIIIAAAkUKEKKLBOPhCCCAAAIIIIAAAggQorkGEEAAAQQQQAABBBAoUoAQXSQYD0cAAQQQQAABBBBAgBDNNYAAAggggAACCCCAQJEChOgiwXg4AggggAACCCCAAAKEaK4BBBBAAAEEEEAAAQSKFCBEFwnGwxFAAAEEEEAAAQQQIERzDSCAAAIIIIAAAgggUKQAIbpIMB6OAAIIIIAAAggggAAhmmsAAQQQQAABBMoicOrUab+f3t5eN3nyZHfqVK9raGgY3Ld+NnnyJDd37t1lOR47QaCWAoToWupzbAQQQAABBGokcP78eR909bWvr981Nk7yLenufsM1NTVdFYb1mO7uN30A1n96jP5TGNZX/f7IkWNuyZJFfp8WorUT/c42heze3tP+MW1tq93GjV+v0dlzWARKFyBEl27IHhBAAAEEEChZQAFTgdNCp0KrhVCN6J4/3+/6+q4E0iu/O+0DsJ4/adIk19/f75/X1DTdB17bGhsn+28VYC0Az59/rz/e/v0HXVvbGv/7rq5nXGvrcv+9fr506WK/H+1/xozpbsaMJv8c7Uf/b/ssFEDP3b17r9uw4XH3la+sdR0dmwt9Ko9DICgBQnRQ3UFjEEAAAQSyImBh2EocdF4Kw0ePHnMDAwP+NDUCnB6p1c8UTDUSrJ8rsCrApgOwhVYLsLF6NTf/ubvhhuvdq6/+d6ynQLvrXIAQXecXAKePAAIIIFC4gAVehV+VJfT19fmAq6Dc3d3jR231/ZYtT7pNm9r9jn/601fc0qWLfCBWiE6C8ZVR3MKPnq1H3nnnnzqNhD/11HezdWKcTd0IEKLrpqs5UQQQQACBkQRstFghuafnDaeBYiud0M/0+yNHXnFr164eHBVWIFZNsIViPY4Jc4VdY+3tm1xn51PupZde8EGaDYEYBQjRMfYabUYAAQQQyCuQrjFWILb/1xMtGNvIsJVGWBnFggX3Dk6uU72xRo7ZyiPQ1bXXrV79qJ9UaKP15dkze0GgugKE6Op6czQEEEAAgRIELPxqkp2tCmE/U1BWeYV+pxFh/Vyh2EaHbVKcDk85RQmdUMJTVebS0bHVrVjRQhlHCY48NQwBQnQY/UArEEAAgboWyBWONUpsZRb6XpuNGFsJgMLwvHnJmsMKzLFPtsvqRaB+1OjziRM9fmk7RqCz2tP1dV6E6Prqb84WAQQQqImArQ9so8cWkBWe335bk+2m+1pjjRono8RJINb31BnXpMvKdlAr39Dye8899+/UQJdNlh3VWoAQXese4PgIIIBABgQUjhWMe3vP+BttnDjxhj8r/UxLtKVDMQE5Ax1ewCloImZ7++O+7EY3YdEqHNSWFwDHQ6IRIERH01U0FAEEEKidgE3Ks6CsgKT6Y/08XXOskgqVV+grE/Jq11+1PLKuDa28oRu1NDd/2m3duoXR51p2CMeumAAhumK07BgBBBCIS8BKLTRBz27rrNCsMgubiGchmTKLuPq2Gq3VNdPZudPt33/If/qg5QBV/8yGQFYFCNFZ7VnOCwEEEMghkNQm9/o1kJMVLnr8zUC0pJs2m5yXLrkAEoHRBDTyvGXLVv/GS+FZN5bRxEFKN7husi5AiM56D3N+CCBQdwKarNfd/ebgcm8CUFDWltwcZLr/nqBcd5dG2U5Y19iRI8f8nRkVnlW2obs1trYuZ4WUsimzo9AFCNGh9xDtQwABBIYI2K2nFZSdG/C/Vf2pRpkVZLSpDCN9wxCWfuMyKoeAAnNX1zPuwIFD/nrTihsadV65soWR53IAs4+oBAjRUXUXjUUAgXoTsNpkhWCFlm3bdri2tjWDQVmh2QIyH5/X29VR2PnmWoNbz7Q3Y7YXlfio/r2xsdEN6L7nH23jx49zJ0++5Ueef/Obt/xPb7nlFrd+/TpqngvrAh6VUQFCdEY7ltNCAIE4BOxmIqpNVo2y1tRNloSbPnjbaX0/d26zPyFGlOPo12q30kp4kq/JcoO6tlSvXOw2YcIEd+nSpYKeZhNM9amHSoW0lB0bAvUiQIiul57mPBFAoGYCNhLY0/OG6+vrd6dOnfJfNcHPbi6irxoF5K57Neumih5YwVabQqf63bmGvMdLjxTbNTRlysfc2bPv+aCskWPty96I5dphU9P0wTdkdttzvUnTtWbtST/v9df/xx0+/J/u+PHX3Zkzv/W/0qjzZz97j5sz51Pu+uuv9yPYOqaCek+PSoqubDo/TSzcuLGdN3x5e5gHxC5AiI69B2k/AggEI2CjgL29p/1EPo0s/+QnR/26yQoXulW1fc9d+ILptpIaohIHbTbiW2i4HetBFYB1XdmmCX3pN1+2FKEmjRZ6janNOg/VOlvY1/61b5UO6bod7RMQPUfXu56fDtUtLX/tdu3aPtZT5XkIBC9AiA6+i2ggAgiEKKDgoJFlfdXd+TQiqElWKrtIyi+0CkbhQSbEc6RNiYCNvCpoWtmNvo42AlyqnY0gp9fnVli+555md+ONGkmeVNJEPl23mhyo4Js+D13DmiSoWnuF52I3vZnYsOHv3YkTPf6pTzzxj27dukeK3Q2PRyAKAUJ0FN1EIxFAoFYCtpSXTfBTeNKcKwXlZIQuCcqFjvrV6jw4bmECQ98cqbzh4sWLhT05x6MUSvXpg20Wim0SqK4fK68Y+rsxHzTHExWUjx59xY8Y62Yo6VIRtVE1za2tLf7rWCeofvDBB2737mfcz372c/f88y/6Vuzbt8ctWvSX5TwV9oVAMAKE6GC6goYggECtBWxyVvLx9it+1FEBw4KyLRnH5L5a91R5j6/lATUqOzRc5juKBWSbXKevVq5jgTjfPir1e42a69MRhWZdy7lGzVesSEKzapjHGpyt/d/73tNu165/c7/4xa/8j7TCx5IlC93Ond+t1CmyXwRqLkCIrnkX0AAEEKiVgNWCKizr+7ffTtZW1qiyfS01XNTq3Dju6AIKlXv27B1WzpDrWZMm3egWLLhvcIKegnIIE0AVlK8sX3feB+bRJhqqxlnXtT5BsfXES71Oduz4vlu//rGrdtPRsdnNnv0pRqBLxeX5wQsQooPvIhqIAALlELBJf7pBiUbmNOFPgcLKMkr5GLsc7WMf1RHQm6XOzp1+KcGRNo0wK2Sm30xVp3VXHyW9qouthqGvOoehazwPbZ+VaFTq+la5xmOP/cPgCh46/sSJE923vvWEW7jwL9yUKVNqQcYxEaiqACG6qtwcDAEEqiWgsKFROX1Mr0lO+n+NwCkYaSRxLJOmqtV2jlNeAQXOrq5nXWfnjhEnA1pwbmtbXZP6dl2fNlE134iydJIyo+l+ZQ5bJtFu427/P5qirSaiEXVt+rei4HvnnXOGPU2hfdq0j7ve3jPupZcOD5aIpB+of09dXd8nPJf30mVvgQsQogPvIJqHAAL5BRSStO6y1TErkFidqt2ohDrm/I5ZeoSuCatzVs3zSJtWwdCEOoXnapXuJKPJPe7dd8+65557PufIsi1dN9o64vZGUWtOp0entX6zlsHTOtI2Ym2j2jrHCxcuuMuXL+ck+cxn5rn333+/4JVHZs6c4b785S+5jRu/nqXLh3NBoCABQnRBTDwIAQRCE7B6Zt24RGEivaScAnO1AlFoLvXenh/96Mfu2Wf3ub17941KYWsgK0BXclN4TUaWz1z1Jk/HVGCdOPGGj1Z3afardNgSiUko7vch2AKyrnMF40LKOSp5TrbvBx/8gtu8eZObNev2ahyOYyAQnAAhOrguoUEIIDBUwEYVz50773+lEGFrMVPLzPWi+uaXXz7sfve7d9yrr742Ioitgdzauryokg27/hSGbfR36GoXthqHQvGFCxf9aK+u13Pnzg22Z+rUW5z+U9nF7NmfdLq9tvb9zjt/dH/4wx8/upOhK3gUuJCet7IPPValH2pnX1+fu3z5/9y1115b8DEV+K+55hp/Xg899IBraXnY3X77zEKawGMQyKwAITqzXcuJIRCngH38rBrWgYEB/4dfH32rdlOTvUq9yUScKrQ6l0BHx1a/LrHuEDnapqXctIzbWFakWLXqUbdv3w/dhx9+WLFOGD9+fN79Kwzr34KVJeVab9p+V0hNdK6TUTmUJgfefPPNfuUSbfPnfy6IlUgqhs+OEShBgBBdAh5PRQCB0gXso2l9TN3Z+ZSvT9Wm/1fooZa5dOOs7UElPHfd9Wc5T2vcuHHuuuuu8xPkVO88c+afuAkTxg8+VteTTaa7soMBP0J7ZcWLBv+rXbv+1f3gBz/033/iE9PcuHHjffmFRpdPn/7tsOPfddcd/lbZc+bM9iPdemxSl5zcplvfa1MYtk3t0QivapTVhnQZEm8Ys3blcj5ZEyBEZ61HOR8EAhdQaNbEp2SpMYXmL/k60HQ9aOCnQPNqLLBp02b37W935myFRmz7+5PQWs5NpReXLl3yu1RQvrISRnKbd1Z7Kac2+0IgDgFCdBz9RCsRiFJAdaPJ3dJ6/Ufuql1du3bV4OSpsX7sHCUGjS6bwNmzZ93ixQ/6Eog1a/7WTZ061f3yl79yq1b9ja8vtjpkG/kdulKFGqI3cdqGrresUWqNAGvTfr/znU733nvvuwceWOKWLfuCe/jhZWU7D3aEAAJxCxCi4+4/Wo9AUAK6g5pCsyZgKaSopllrMi9Zspi1mYPqKRpTjMD99y9yr7123Gk1imXLvujuv3+Bu+mmxmJ2wWMRQCCDAoToDHYqp4RANQQUknVzCFuxwG7eoIlIdlMTVs6oRk9wjEoL6O58Tz/9L/5a16brW3fl++pX2yp9aPaPAAIBCxCiA+4cmoZAKAK2Vq1Gmm2U2T4Gt9CswExdaCg9RjsqIaDVQLZseXJw17fdNs197WttfqLg4sV/xdrklUBnnwgELECIDrhzaBoCtRJQLfPRo0lJhoVmawuhuVa9wnFDEDh+/HX3zW/+kzt48OVhzdFqMlpKb8mSRQTqEDqLNiBQYQFCdIWB2T0CMQhYaN6//5Bfkzl9IwkFAo0wa6RZEwHZEEDAuRdf/A939ux77tFH1+fk0FKNCtX698OGAALZFCBEZ7NfOSsERhVI1zMrOKdXKNAffYVlyjO4iBDIL3Ds2M/9Ch76xCbX0npa99lu9EKgzu/JIxCISYAQHVNv0VYExiigkWVNAty//+BHS85ducMb5RljROVpCKQE9G9M/766up5xPT1v5rQhUHPJIJAtAUJ0tvqTs0HAC2hkeehyc0ajG0XYKDOrZ3DBIFB+AQJ1+U3ZIwIhChCiQ+wV2oTAGARUoqHgbKPNtgvdwU21mRacuY32GHB5CgJjFFCg7uzc4VQ2pRsO5drSI9T6ZCh96+8xHpanIYBAFQQI0VVA5hAIVEpgz569vhYzuSvg8BINhWcmA1ZKn/0iUJyA3uiq3GO0QK092iof9913r7+lOBsCCIQpQIgOs19oFQI5BRSUDxw4NGy0ualpul9BQxOYKNHg4kEgfIFCSj50FjbJV3f91Cg1GwIIhCNAiA6nL2gJAsMErLY514RA1TYnI1aMNnPpIBCzgAVqfaKkN8kjbSrz0JtkvVlmlDrmHqftWREgRGelJzmPzAjYms27d+/1ZRq2pWub9UeUusnMdDkngsCggN44q0RLJR/69z9SHbWeoFIPvYnWp1DUUnMRIVB9AUJ09c05IgLDBPTHUpMCVS9JbTMXCAIImIDdNVSvESOtRW2PtZsi2VrvKCKAQGUFCNGV9WXvCOQUSJdppG92otHm5OPaZHSJSUVcQAggkBZQmD5xQivxUPrBlYFArQUI0bXuAY5fNwIaYU6vpmEnbus2t7YuZyWNurkaOFEEyiNgI9XJEpcjl3+k70LKnRPLY89eECBEcw0gUEEBTRLSHzdNDNRXbVpJQ3/QNNK8cmULtc0V9GfXCNSbgNVU6/XGAnau25GzjF69XRmcbyUECNGVUGWfdStgf7h0i+1t23YOOqhMo61ttS/VUIBmUmDdXiKcOAJVF8g3Wq3XpPQExao3kAMiEKkAITrSjqPZYQho1Ce5gcJe/1X/3Xrrx93Fi//r5s2726lEg9rmMPqKViCAQCJgr1uaqGivW7YKiK34oZKPpqYm5mVw0SAwigAhmssDgSIFRrrhiXazYkWLe+ihL7o77pjDH58iXXk4AgjUTkBh+tSpXr+0Xnd3z+AqQZ///H1u3bpH3G23TeM1rXbdw5EDFSBEB9oxNCssAf2B0aRA1Tanl6Cz1TRaW1v8x6FsCCCAQBYE9DqnEWstu+lcgw/YKlPbuLHdh2lGqbPQy5xDqQKE6FIFeX5mBfRHZPv2ncOCs05YH3XaxBzqmzN7CXBiCCCQEtDqHzZJWq+PjY3JHRS5JTmXSb0KEKLrtec575wCGnnRihqaFGiradgDtRSdapwVnlm/mQsIAQTqWcBWAUmC9SF/Z0XN/9BcEH1tbr6b18l6vkDq5NwJ0XXS0Zzm6AIKzJ2dGnU+5D/CtM1uta2VNTSDnQ0BBBBAYLiARqbtroq2XrWVfWi0WsF67txPszIRF0+mBAjRmepOTqZYAdU5796917/4pzeNOre1rXFLly7iRb9YVB6PAAJ1L2ChWpMUtQpIT8+b3kTBOgnUzW7+/M8xOFH3V0rcAITouPuP1o9BQCPNnZ1P+Qkz6UmC2pVqnTXqrBd5NgQQQACB8gjodVevt6qptluX6yYwmlNi6+frdVfBmg2BWAQI0bH0FO0sWeDIkWM+OGtN5/RmN0JReGaSYMnM7AABBBAoSCBXCYieqDCdTFhcxEh1QZI8qFYChOhayXPcqgjkmyiokg0tT8eGAAIIIFBbgXSo1oi1Rqo1F0X/JYG6mcmKte0ijj5EgBDNJZFJAVvXWfXO6YmCOlndEIWJgpnsdk4KAQQyJGC3K7cJiwrVGqVuaXnYzZo1k7K7DPV1rKdCiI6152j3MAG90B4+/F/uhRdedCdPvnXV75uapru1a1e7lStbKNng2kEAAQQiE7Caai0/+vvfv+N+/euTflm9TZvanSaCM0odWYdmpLmE6Ix0ZD2ehj76O3o0WaNUs7+HjjjbqLOCMxMF6/EK4ZwRQCCrAnq91yeNNkG8oaHBl31oHX+VfrCWf1Z7PqzzIkSH1R+0ZhQBq29WYNao89CVNeypN93U6L7xjb/zJRtsCCCAAALZFrBaatVR62ZZ2hSiFagfeWQ1gTrb3V/TsyNE15Sfg+cTUHDu6nrWjzYMvYPg0OdSspFPk98jgAAC2RbQ3wx9OpkO1Bqh1qCKRqhZgSnb/V/tsyNEV1uc4xUkoJFmreWsF8J8m8Kz6uK4MUo+KX6PAAII1JeAljTdtm3H4M1eNDqtvxWaYM6GQKkChOhSBXl+WQUUmjs6tuYdddZBtSh/a+tylqgraw+wMwQQQCB7Air56Ozc4UepNSFRI9IK05pwrpFqNgTGIkCIHosazym7gEo12tsfH3b77aEH0o1RNJLAEnVl7wJ2iAACCNSFgAZrFKb37EluvKX6aQ3IaHSaCYl1cQmU7SQJ0WWjZEdjEdDowIYNj+ct26DeeSy6PAcBBBBAYCQBW+HjwAHdivzY4C3ItZrT2rWrgEMgrwAhOi8RD6iUgNb73L5954irbOi4Wv8zqXdeXKlmsF8EEEAAgToX0KehyQj1QV8/rXKPnTv/mb89dX5d5Dt9QnQ+IX5fEQGNAEyb9skR9014rgg7O0UAAQQQyCOgie1ag1oDOJR3cLmMJkCI5vqoiYBepBYufGDYsSnbqEl3cFAEEEAAAQQQKFKAEF0kGA8vn8Ctt85y/f39foeaMKg7Cz755JbyHYA9IYAAAggggAACFRIgRFcIlt3mF1ANmm6iok0zo1lmKL8Zj0AAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISOD/AYTV/3TCUQtkAAAAAElFTkSuQmCC', + signature: + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtEAAACWCAYAAAAYC9T6AAAcO0lEQVR4Xu3df4yV1Z3H8TNRgSjCaIlULMMiLah1wG43+0cVGpPNLhBoRd10KMMfm2yAyEjbsB0quBv2D8ZU0k27ZSho2ewuQ0RLrBEWtKS724LUGmKWGU3bpFQZaGsryjDCBv9gZ/M5j9/hYebO3Hvn/jrnue8nMTPO3Ps853mdhzufe+73nKfh4sV3BxwbAggggAACCCCAAAIIFCzQQIgu2IoHIoAAAggggAACCCDgBQjRXAgIIIAAAggggAACCBQpQIguEoyHI4AAAggggAACCCBAiOYaQAABBBBAAAEEEECgSAFCdJFgPBwBBBBAAAEEEEAAAUI01wACCCCAAAIIIIAAAkUKEKKLBOPhCCCAAAIIIIAAAggQorkGEEAAAQQQQAABBBAoUoAQXSQYD0cAAQQQQAABBBBAgBDNNYAAAggggAACCCCAQJEChOgiwXg4AggggAACCCCAAAKEaK4BBBBAAAEEEEAAAQSKFCBEFwnGwxFAAAEEEEAAAQQQIERzDSCAAAIIIIAAAgggUKQAIbpIMB6OAAIIIIAAAggggAAhmmsAAQQQQAABBMoicOrUab+f3t5eN3nyZHfqVK9raGgY3Ld+NnnyJDd37t1lOR47QaCWAoToWupzbAQQQAABBGokcP78eR909bWvr981Nk7yLenufsM1NTVdFYb1mO7uN30A1n96jP5TGNZX/f7IkWNuyZJFfp8WorUT/c42heze3tP+MW1tq93GjV+v0dlzWARKFyBEl27IHhBAAAEEEChZQAFTgdNCp0KrhVCN6J4/3+/6+q4E0iu/O+0DsJ4/adIk19/f75/X1DTdB17bGhsn+28VYC0Az59/rz/e/v0HXVvbGv/7rq5nXGvrcv+9fr506WK/H+1/xozpbsaMJv8c7Uf/b/ssFEDP3b17r9uw4XH3la+sdR0dmwt9Ko9DICgBQnRQ3UFjEEAAAQSyImBh2EocdF4Kw0ePHnMDAwP+NDUCnB6p1c8UTDUSrJ8rsCrApgOwhVYLsLF6NTf/ubvhhuvdq6/+d6ynQLvrXIAQXecXAKePAAIIIFC4gAVehV+VJfT19fmAq6Dc3d3jR231/ZYtT7pNm9r9jn/601fc0qWLfCBWiE6C8ZVR3MKPnq1H3nnnnzqNhD/11HezdWKcTd0IEKLrpqs5UQQQQACBkQRstFghuafnDaeBYiud0M/0+yNHXnFr164eHBVWIFZNsIViPY4Jc4VdY+3tm1xn51PupZde8EGaDYEYBQjRMfYabUYAAQQQyCuQrjFWILb/1xMtGNvIsJVGWBnFggX3Dk6uU72xRo7ZyiPQ1bXXrV79qJ9UaKP15dkze0GgugKE6Op6czQEEEAAgRIELPxqkp2tCmE/U1BWeYV+pxFh/Vyh2EaHbVKcDk85RQmdUMJTVebS0bHVrVjRQhlHCY48NQwBQnQY/UArEEAAgboWyBWONUpsZRb6XpuNGFsJgMLwvHnJmsMKzLFPtsvqRaB+1OjziRM9fmk7RqCz2tP1dV6E6Prqb84WAQQQqImArQ9so8cWkBWe335bk+2m+1pjjRono8RJINb31BnXpMvKdlAr39Dye8899+/UQJdNlh3VWoAQXese4PgIIIBABgQUjhWMe3vP+BttnDjxhj8r/UxLtKVDMQE5Ax1ewCloImZ7++O+7EY3YdEqHNSWFwDHQ6IRIERH01U0FAEEEKidgE3Ks6CsgKT6Y/08XXOskgqVV+grE/Jq11+1PLKuDa28oRu1NDd/2m3duoXR51p2CMeumAAhumK07BgBBBCIS8BKLTRBz27rrNCsMgubiGchmTKLuPq2Gq3VNdPZudPt33/If/qg5QBV/8yGQFYFCNFZ7VnOCwEEEMghkNQm9/o1kJMVLnr8zUC0pJs2m5yXLrkAEoHRBDTyvGXLVv/GS+FZN5bRxEFKN7husi5AiM56D3N+CCBQdwKarNfd/ebgcm8CUFDWltwcZLr/nqBcd5dG2U5Y19iRI8f8nRkVnlW2obs1trYuZ4WUsimzo9AFCNGh9xDtQwABBIYI2K2nFZSdG/C/Vf2pRpkVZLSpDCN9wxCWfuMyKoeAAnNX1zPuwIFD/nrTihsadV65soWR53IAs4+oBAjRUXUXjUUAgXoTsNpkhWCFlm3bdri2tjWDQVmh2QIyH5/X29VR2PnmWoNbz7Q3Y7YXlfio/r2xsdEN6L7nH23jx49zJ0++5Ueef/Obt/xPb7nlFrd+/TpqngvrAh6VUQFCdEY7ltNCAIE4BOxmIqpNVo2y1tRNloSbPnjbaX0/d26zPyFGlOPo12q30kp4kq/JcoO6tlSvXOw2YcIEd+nSpYKeZhNM9amHSoW0lB0bAvUiQIiul57mPBFAoGYCNhLY0/OG6+vrd6dOnfJfNcHPbi6irxoF5K57Neumih5YwVabQqf63bmGvMdLjxTbNTRlysfc2bPv+aCskWPty96I5dphU9P0wTdkdttzvUnTtWbtST/v9df/xx0+/J/u+PHX3Zkzv/W/0qjzZz97j5sz51Pu+uuv9yPYOqaCek+PSoqubDo/TSzcuLGdN3x5e5gHxC5AiI69B2k/AggEI2CjgL29p/1EPo0s/+QnR/26yQoXulW1fc9d+ILptpIaohIHbTbiW2i4HetBFYB1XdmmCX3pN1+2FKEmjRZ6janNOg/VOlvY1/61b5UO6bod7RMQPUfXu56fDtUtLX/tdu3aPtZT5XkIBC9AiA6+i2ggAgiEKKDgoJFlfdXd+TQiqElWKrtIyi+0CkbhQSbEc6RNiYCNvCpoWtmNvo42AlyqnY0gp9fnVli+555md+ONGkmeVNJEPl23mhyo4Js+D13DmiSoWnuF52I3vZnYsOHv3YkTPf6pTzzxj27dukeK3Q2PRyAKAUJ0FN1EIxFAoFYCtpSXTfBTeNKcKwXlZIQuCcqFjvrV6jw4bmECQ98cqbzh4sWLhT05x6MUSvXpg20Wim0SqK4fK68Y+rsxHzTHExWUjx59xY8Y62Yo6VIRtVE1za2tLf7rWCeofvDBB2737mfcz372c/f88y/6Vuzbt8ctWvSX5TwV9oVAMAKE6GC6goYggECtBWxyVvLx9it+1FEBw4KyLRnH5L5a91R5j6/lATUqOzRc5juKBWSbXKevVq5jgTjfPir1e42a69MRhWZdy7lGzVesSEKzapjHGpyt/d/73tNu165/c7/4xa/8j7TCx5IlC93Ond+t1CmyXwRqLkCIrnkX0AAEEKiVgNWCKizr+7ffTtZW1qiyfS01XNTq3Dju6AIKlXv27B1WzpDrWZMm3egWLLhvcIKegnIIE0AVlK8sX3feB+bRJhqqxlnXtT5BsfXES71Oduz4vlu//rGrdtPRsdnNnv0pRqBLxeX5wQsQooPvIhqIAALlELBJf7pBiUbmNOFPgcLKMkr5GLsc7WMf1RHQm6XOzp1+KcGRNo0wK2Sm30xVp3VXHyW9qouthqGvOoehazwPbZ+VaFTq+la5xmOP/cPgCh46/sSJE923vvWEW7jwL9yUKVNqQcYxEaiqACG6qtwcDAEEqiWgsKFROX1Mr0lO+n+NwCkYaSRxLJOmqtV2jlNeAQXOrq5nXWfnjhEnA1pwbmtbXZP6dl2fNlE134iydJIyo+l+ZQ5bJtFu427/P5qirSaiEXVt+rei4HvnnXOGPU2hfdq0j7ve3jPupZcOD5aIpB+of09dXd8nPJf30mVvgQsQogPvIJqHAAL5BRSStO6y1TErkFidqt2ohDrm/I5ZeoSuCatzVs3zSJtWwdCEOoXnapXuJKPJPe7dd8+65557PufIsi1dN9o64vZGUWtOp0entX6zlsHTOtI2Ym2j2jrHCxcuuMuXL+ck+cxn5rn333+/4JVHZs6c4b785S+5jRu/nqXLh3NBoCABQnRBTDwIAQRCE7B6Zt24RGEivaScAnO1AlFoLvXenh/96Mfu2Wf3ub17941KYWsgK0BXclN4TUaWz1z1Jk/HVGCdOPGGj1Z3afardNgSiUko7vch2AKyrnMF40LKOSp5TrbvBx/8gtu8eZObNev2ahyOYyAQnAAhOrguoUEIIDBUwEYVz50773+lEGFrMVPLzPWi+uaXXz7sfve7d9yrr742Ioitgdzauryokg27/hSGbfR36GoXthqHQvGFCxf9aK+u13Pnzg22Z+rUW5z+U9nF7NmfdLq9tvb9zjt/dH/4wx8/upOhK3gUuJCet7IPPValH2pnX1+fu3z5/9y1115b8DEV+K+55hp/Xg899IBraXnY3X77zEKawGMQyKwAITqzXcuJIRCngH38rBrWgYEB/4dfH32rdlOTvUq9yUScKrQ6l0BHx1a/LrHuEDnapqXctIzbWFakWLXqUbdv3w/dhx9+WLFOGD9+fN79Kwzr34KVJeVab9p+V0hNdK6TUTmUJgfefPPNfuUSbfPnfy6IlUgqhs+OEShBgBBdAh5PRQCB0gXso2l9TN3Z+ZSvT9Wm/1fooZa5dOOs7UElPHfd9Wc5T2vcuHHuuuuu8xPkVO88c+afuAkTxg8+VteTTaa7soMBP0J7ZcWLBv+rXbv+1f3gBz/033/iE9PcuHHjffmFRpdPn/7tsOPfddcd/lbZc+bM9iPdemxSl5zcplvfa1MYtk3t0QivapTVhnQZEm8Ys3blcj5ZEyBEZ61HOR8EAhdQaNbEp2SpMYXmL/k60HQ9aOCnQPNqLLBp02b37W935myFRmz7+5PQWs5NpReXLl3yu1RQvrISRnKbd1Z7Kac2+0IgDgFCdBz9RCsRiFJAdaPJ3dJ6/Ufuql1du3bV4OSpsX7sHCUGjS6bwNmzZ93ixQ/6Eog1a/7WTZ061f3yl79yq1b9ja8vtjpkG/kdulKFGqI3cdqGrresUWqNAGvTfr/znU733nvvuwceWOKWLfuCe/jhZWU7D3aEAAJxCxCi4+4/Wo9AUAK6g5pCsyZgKaSopllrMi9Zspi1mYPqKRpTjMD99y9yr7123Gk1imXLvujuv3+Bu+mmxmJ2wWMRQCCDAoToDHYqp4RANQQUknVzCFuxwG7eoIlIdlMTVs6oRk9wjEoL6O58Tz/9L/5a16brW3fl++pX2yp9aPaPAAIBCxCiA+4cmoZAKAK2Vq1Gmm2U2T4Gt9CswExdaCg9RjsqIaDVQLZseXJw17fdNs197WttfqLg4sV/xdrklUBnnwgELECIDrhzaBoCtRJQLfPRo0lJhoVmawuhuVa9wnFDEDh+/HX3zW/+kzt48OVhzdFqMlpKb8mSRQTqEDqLNiBQYQFCdIWB2T0CMQhYaN6//5Bfkzl9IwkFAo0wa6RZEwHZEEDAuRdf/A939ux77tFH1+fk0FKNCtX698OGAALZFCBEZ7NfOSsERhVI1zMrOKdXKNAffYVlyjO4iBDIL3Ds2M/9Ch76xCbX0npa99lu9EKgzu/JIxCISYAQHVNv0VYExiigkWVNAty//+BHS85ducMb5RljROVpCKQE9G9M/766up5xPT1v5rQhUHPJIJAtAUJ0tvqTs0HAC2hkeehyc0ajG0XYKDOrZ3DBIFB+AQJ1+U3ZIwIhChCiQ+wV2oTAGARUoqHgbKPNtgvdwU21mRacuY32GHB5CgJjFFCg7uzc4VQ2pRsO5drSI9T6ZCh96+8xHpanIYBAFQQI0VVA5hAIVEpgz569vhYzuSvg8BINhWcmA1ZKn/0iUJyA3uiq3GO0QK092iof9913r7+lOBsCCIQpQIgOs19oFQI5BRSUDxw4NGy0ualpul9BQxOYKNHg4kEgfIFCSj50FjbJV3f91Cg1GwIIhCNAiA6nL2gJAsMErLY514RA1TYnI1aMNnPpIBCzgAVqfaKkN8kjbSrz0JtkvVlmlDrmHqftWREgRGelJzmPzAjYms27d+/1ZRq2pWub9UeUusnMdDkngsCggN44q0RLJR/69z9SHbWeoFIPvYnWp1DUUnMRIVB9AUJ09c05IgLDBPTHUpMCVS9JbTMXCAIImIDdNVSvESOtRW2PtZsi2VrvKCKAQGUFCNGV9WXvCOQUSJdppG92otHm5OPaZHSJSUVcQAggkBZQmD5xQivxUPrBlYFArQUI0bXuAY5fNwIaYU6vpmEnbus2t7YuZyWNurkaOFEEyiNgI9XJEpcjl3+k70LKnRPLY89eECBEcw0gUEEBTRLSHzdNDNRXbVpJQ3/QNNK8cmULtc0V9GfXCNSbgNVU6/XGAnau25GzjF69XRmcbyUECNGVUGWfdStgf7h0i+1t23YOOqhMo61ttS/VUIBmUmDdXiKcOAJVF8g3Wq3XpPQExao3kAMiEKkAITrSjqPZYQho1Ce5gcJe/1X/3Xrrx93Fi//r5s2726lEg9rmMPqKViCAQCJgr1uaqGivW7YKiK34oZKPpqYm5mVw0SAwigAhmssDgSIFRrrhiXazYkWLe+ihL7o77pjDH58iXXk4AgjUTkBh+tSpXr+0Xnd3z+AqQZ///H1u3bpH3G23TeM1rXbdw5EDFSBEB9oxNCssAf2B0aRA1Tanl6Cz1TRaW1v8x6FsCCCAQBYE9DqnEWstu+lcgw/YKlPbuLHdh2lGqbPQy5xDqQKE6FIFeX5mBfRHZPv2ncOCs05YH3XaxBzqmzN7CXBiCCCQEtDqHzZJWq+PjY3JHRS5JTmXSb0KEKLrtec575wCGnnRihqaFGiradgDtRSdapwVnlm/mQsIAQTqWcBWAUmC9SF/Z0XN/9BcEH1tbr6b18l6vkDq5NwJ0XXS0Zzm6AIKzJ2dGnU+5D/CtM1uta2VNTSDnQ0BBBBAYLiARqbtroq2XrWVfWi0WsF67txPszIRF0+mBAjRmepOTqZYAdU5796917/4pzeNOre1rXFLly7iRb9YVB6PAAJ1L2ChWpMUtQpIT8+b3kTBOgnUzW7+/M8xOFH3V0rcAITouPuP1o9BQCPNnZ1P+Qkz6UmC2pVqnTXqrBd5NgQQQACB8gjodVevt6qptluX6yYwmlNi6+frdVfBmg2BWAQI0bH0FO0sWeDIkWM+OGtN5/RmN0JReGaSYMnM7AABBBAoSCBXCYieqDCdTFhcxEh1QZI8qFYChOhayXPcqgjkmyiokg0tT8eGAAIIIFBbgXSo1oi1Rqo1F0X/JYG6mcmKte0ijj5EgBDNJZFJAVvXWfXO6YmCOlndEIWJgpnsdk4KAQQyJGC3K7cJiwrVGqVuaXnYzZo1k7K7DPV1rKdCiI6152j3MAG90B4+/F/uhRdedCdPvnXV75uapru1a1e7lStbKNng2kEAAQQiE7Caai0/+vvfv+N+/euTflm9TZvanSaCM0odWYdmpLmE6Ix0ZD2ehj76O3o0WaNUs7+HjjjbqLOCMxMF6/EK4ZwRQCCrAnq91yeNNkG8oaHBl31oHX+VfrCWf1Z7PqzzIkSH1R+0ZhQBq29WYNao89CVNeypN93U6L7xjb/zJRtsCCCAAALZFrBaatVR62ZZ2hSiFagfeWQ1gTrb3V/TsyNE15Sfg+cTUHDu6nrWjzYMvYPg0OdSspFPk98jgAAC2RbQ3wx9OpkO1Bqh1qCKRqhZgSnb/V/tsyNEV1uc4xUkoJFmreWsF8J8m8Kz6uK4MUo+KX6PAAII1JeAljTdtm3H4M1eNDqtvxWaYM6GQKkChOhSBXl+WQUUmjs6tuYdddZBtSh/a+tylqgraw+wMwQQQCB7Air56Ozc4UepNSFRI9IK05pwrpFqNgTGIkCIHosazym7gEo12tsfH3b77aEH0o1RNJLAEnVl7wJ2iAACCNSFgAZrFKb37EluvKX6aQ3IaHSaCYl1cQmU7SQJ0WWjZEdjEdDowIYNj+ct26DeeSy6PAcBBBBAYCQBW+HjwAHdivzY4C3ItZrT2rWrgEMgrwAhOi8RD6iUgNb73L5954irbOi4Wv8zqXdeXKlmsF8EEEAAgToX0KehyQj1QV8/rXKPnTv/mb89dX5d5Dt9QnQ+IX5fEQGNAEyb9skR9014rgg7O0UAAQQQyCOgie1ag1oDOJR3cLmMJkCI5vqoiYBepBYufGDYsSnbqEl3cFAEEEAAAQQQKFKAEF0kGA8vn8Ctt85y/f39foeaMKg7Cz755JbyHYA9IYAAAggggAACFRIgRFcIlt3mF1ANmm6iok0zo1lmKL8Zj0AAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISIAQHVFn0VQEEEAAAQQQQACBMAQI0WH0A61AAAEEEEAAAQQQiEiAEB1RZ9FUBBBAAAEEEEAAgTAECNFh9AOtQAABBBBAAAEEEIhIgBAdUWfRVAQQQAABBBBAAIEwBAjRYfQDrUAAAQQQQAABBBCISOD/AYTV/3TCUQtkAAAAAElFTkSuQmCC', numberColumn: 1111, textFieldColumn: 'value', numberFieldset: 222222, - numberPanel: 66666 , - selectTable:'one', + numberPanel: 66666, + selectTable: 'one', checkboxTable: true, dateTimeTable: '2031-02-03T05:00:00', currencyTable: 4000, @@ -141,23 +147,22 @@ const submission = { hidden: 'hidden value', container: { textFieldContainer: 'value1' }, dataMap: { key: 'value1', key1: 'value2' }, - dataGrid: [ - { textFieldDataGrid: 'value1' }, - { textFieldDataGrid: 'value2' } - ], + dataGrid: [{ textFieldDataGrid: 'value1' }, { textFieldDataGrid: 'value2' }], editGrid: [{ textFieldEditGrid: 'value1' }, { textFieldEditGrid: 'value2' }], tree: { - children: [{ children: [], data: {textFieldTree: 'value2'} }], - data: { textFieldTree: 'value1' } + children: [{ children: [], data: { textFieldTree: 'value2' } }], + data: { textFieldTree: 'value1' }, }, - file: [{ - name: 'test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx', - originalName: 'test file.docx', - size: 11396, - storage: 'base64', - type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - url: 'data:application/vnd.openxmlformats-officedocument', - }], + file: [ + { + name: 'test file-15c248a4-401f-4456-aff9-abcbdf0f7bfa.docx', + originalName: 'test file.docx', + size: 11396, + storage: 'base64', + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + url: 'data:application/vnd.openxmlformats-officedocument', + }, + ], submit: true, }; diff --git a/test/forms/htmlRenderMode.d.ts b/test/forms/htmlRenderMode.d.ts index 0cb18c4dd3..b87735fd1e 100644 --- a/test/forms/htmlRenderMode.d.ts +++ b/test/forms/htmlRenderMode.d.ts @@ -1,28 +1,30 @@ declare namespace _default { - const title: string; - const display: string; - const type: string; - const name: string; - const components: ({ + const title: string; + const display: string; + const type: string; + const name: string; + const components: ( + | { hideLabel: boolean; clearOnHide: boolean; conditional: { - eq: string; - when: null; - show: string; + eq: string; + when: null; + show: string; }; theme: string; key: string; input: boolean; - components: ({ - hideLabel: boolean; - type: string; - conditional: { + components: ( + | { + hideLabel: boolean; + type: string; + conditional: { eq: string; when: null; show: string; - }; - validate: { + }; + validate: { customPrivate: boolean; custom: string; pattern: string; @@ -34,37 +36,38 @@ declare namespace _default { step?: undefined; max?: undefined; min?: undefined; - }; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - hidden: boolean; - clearOnHide: boolean; - autofocus: boolean; - spellcheck: boolean; - labelPosition?: undefined; - tags?: undefined; - properties?: undefined; - } | { - hideLabel: boolean; - conditional: { + }; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + hidden: boolean; + clearOnHide: boolean; + autofocus: boolean; + spellcheck: boolean; + labelPosition?: undefined; + tags?: undefined; + properties?: undefined; + } + | { + hideLabel: boolean; + conditional: { eq: string; when: null; show: string; - }; - type: string; - validate: { + }; + type: string; + validate: { custom: string; multiple: string; integer: string; @@ -76,29 +79,30 @@ declare namespace _default { pattern?: undefined; maxLength?: undefined; minLength?: undefined; - }; - persistent: boolean; - protected: boolean; - defaultValue: number; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputType: string; - tableView: boolean; - input: boolean; - hidden: boolean; - clearOnHide: boolean; - autofocus: boolean; - labelPosition: string; - tags: never[]; - properties: {}; - unique?: undefined; - multiple?: undefined; - inputMask?: undefined; - spellcheck?: undefined; - })[]; + }; + persistent: boolean; + protected: boolean; + defaultValue: number; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputType: string; + tableView: boolean; + input: boolean; + hidden: boolean; + clearOnHide: boolean; + autofocus: boolean; + labelPosition: string; + tags: never[]; + properties: {}; + unique?: undefined; + multiple?: undefined; + inputMask?: undefined; + spellcheck?: undefined; + } + )[]; title: string; type: string; tableView: boolean; @@ -112,151 +116,155 @@ declare namespace _default { leftIcon?: undefined; size?: undefined; label?: undefined; - } | { + } + | { hideLabel: boolean; tableView: boolean; clearOnHide: boolean; theme: string; key: string; input: boolean; - components: ({ - hideLabel: boolean; - clearOnHide: boolean; - hidden: boolean; - type: string; - conditional: { + components: ( + | { + hideLabel: boolean; + clearOnHide: boolean; + hidden: boolean; + type: string; + conditional: { eq: string; when: null; show: string; - }; - validate: { + }; + validate: { customPrivate: boolean; custom: string; pattern: string; maxLength: string; minLength: string; required: boolean; - }; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - autofocus: boolean; - spellcheck: boolean; - labelPosition: string; - inputFormat: string; - tags: never[]; - properties: {}; - data?: undefined; - dataSrc?: undefined; - valueProperty?: undefined; - refreshOn?: undefined; - filter?: undefined; - authenticate?: undefined; - template?: undefined; - lazyLoad?: undefined; - widget?: undefined; - searchField?: undefined; - components?: undefined; - legend?: undefined; - } | { - input: boolean; - tableView: boolean; - label: string; - key: string; - placeholder: string; - data: { + }; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + autofocus: boolean; + spellcheck: boolean; + labelPosition: string; + inputFormat: string; + tags: never[]; + properties: {}; + data?: undefined; + dataSrc?: undefined; + valueProperty?: undefined; + refreshOn?: undefined; + filter?: undefined; + authenticate?: undefined; + template?: undefined; + lazyLoad?: undefined; + widget?: undefined; + searchField?: undefined; + components?: undefined; + legend?: undefined; + } + | { + input: boolean; + tableView: boolean; + label: string; + key: string; + placeholder: string; + data: { values: { - value: string; - label: string; + value: string; + label: string; }[]; json: string; url: string; resource: string; custom: string; headers: { - value: string; - key: string; + value: string; + key: string; }[]; - }; - dataSrc: string; - valueProperty: string; - defaultValue: string; - refreshOn: string; - filter: string; - authenticate: boolean; - template: string; - multiple: boolean; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { + }; + dataSrc: string; + valueProperty: string; + defaultValue: string; + refreshOn: string; + filter: string; + authenticate: boolean; + template: string; + multiple: boolean; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + validate: { required: boolean; customPrivate?: undefined; pattern?: undefined; maxLength?: undefined; minLength?: undefined; - }; - type: string; - lazyLoad: boolean; - widget: string; - hideLabel: boolean; - labelPosition: string; - tags: never[]; - conditional: { + }; + type: string; + lazyLoad: boolean; + widget: string; + hideLabel: boolean; + labelPosition: string; + tags: never[]; + conditional: { show: string; when: null; eq: string; - }; - properties: {}; - searchField: string; - autofocus: boolean; - suffix?: undefined; - prefix?: undefined; - inputMask?: undefined; - inputType?: undefined; - spellcheck?: undefined; - inputFormat?: undefined; - components?: undefined; - legend?: undefined; - } | { - hideLabel: boolean; - clearOnHide: boolean; - conditional: { + }; + properties: {}; + searchField: string; + autofocus: boolean; + suffix?: undefined; + prefix?: undefined; + inputMask?: undefined; + inputType?: undefined; + spellcheck?: undefined; + inputFormat?: undefined; + components?: undefined; + legend?: undefined; + } + | { + hideLabel: boolean; + clearOnHide: boolean; + conditional: { eq: string; when: null; show: string; - }; - type: string; - components: { + }; + type: string; + components: { hideLabel: boolean; clearOnHide: boolean; hidden: boolean; type: string; conditional: { - eq: string; - when: null; - show: string; + eq: string; + when: null; + show: string; }; validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: string; - minLength: string; - required: boolean; + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: string; + minLength: string; + required: boolean; }; persistent: boolean; unique: boolean; @@ -274,41 +282,42 @@ declare namespace _default { input: boolean; autofocus: boolean; spellcheck: boolean; - }[]; - legend: string; - tableView: boolean; - input: boolean; - hidden?: undefined; - validate?: undefined; - persistent?: undefined; - unique?: undefined; - protected?: undefined; - defaultValue?: undefined; - multiple?: undefined; - suffix?: undefined; - prefix?: undefined; - placeholder?: undefined; - key?: undefined; - label?: undefined; - inputMask?: undefined; - inputType?: undefined; - autofocus?: undefined; - spellcheck?: undefined; - labelPosition?: undefined; - inputFormat?: undefined; - tags?: undefined; - properties?: undefined; - data?: undefined; - dataSrc?: undefined; - valueProperty?: undefined; - refreshOn?: undefined; - filter?: undefined; - authenticate?: undefined; - template?: undefined; - lazyLoad?: undefined; - widget?: undefined; - searchField?: undefined; - })[]; + }[]; + legend: string; + tableView: boolean; + input: boolean; + hidden?: undefined; + validate?: undefined; + persistent?: undefined; + unique?: undefined; + protected?: undefined; + defaultValue?: undefined; + multiple?: undefined; + suffix?: undefined; + prefix?: undefined; + placeholder?: undefined; + key?: undefined; + label?: undefined; + inputMask?: undefined; + inputType?: undefined; + autofocus?: undefined; + spellcheck?: undefined; + labelPosition?: undefined; + inputFormat?: undefined; + tags?: undefined; + properties?: undefined; + data?: undefined; + dataSrc?: undefined; + valueProperty?: undefined; + refreshOn?: undefined; + filter?: undefined; + authenticate?: undefined; + template?: undefined; + lazyLoad?: undefined; + widget?: undefined; + searchField?: undefined; + } + )[]; title: string; type: string; conditional?: undefined; @@ -322,108 +331,111 @@ declare namespace _default { leftIcon?: undefined; size?: undefined; label?: undefined; - } | { + } + | { properties: { - '': string; + '': string; }; conditional: { - eq: string; - when: null; - show: string; + eq: string; + when: null; + show: string; }; tags: never[]; hideLabel: boolean; breadcrumb: string; type: string; - components: ({ - autofocus: boolean; - input: boolean; - tableView: boolean; - inputType: string; - inputMask: string; - label: string; - key: string; - placeholder: string; - prefix: string; - suffix: string; - multiple: boolean; - defaultValue: string; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - spellcheck: boolean; - validate: { + components: ( + | { + autofocus: boolean; + input: boolean; + tableView: boolean; + inputType: string; + inputMask: string; + label: string; + key: string; + placeholder: string; + prefix: string; + suffix: string; + multiple: boolean; + defaultValue: string; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + spellcheck: boolean; + validate: { required: boolean; minLength: string; maxLength: string; pattern: string; custom: string; customPrivate: boolean; - }; - conditional: { + }; + conditional: { show: string; when: null; eq: string; - }; - type: string; - labelPosition: string; - inputFormat: string; - tags: never[]; - properties: { + }; + type: string; + labelPosition: string; + inputFormat: string; + tags: never[]; + properties: { ''?: undefined; - }; - hideLabel?: undefined; - components?: undefined; - tree?: undefined; - data?: undefined; - widget?: undefined; - dataSrc?: undefined; - valueProperty?: undefined; - refreshOn?: undefined; - filter?: undefined; - authenticate?: undefined; - template?: undefined; - } | { - properties: { + }; + hideLabel?: undefined; + components?: undefined; + tree?: undefined; + data?: undefined; + widget?: undefined; + dataSrc?: undefined; + valueProperty?: undefined; + refreshOn?: undefined; + filter?: undefined; + authenticate?: undefined; + template?: undefined; + } + | { + properties: { '': string; - }; - conditional: { + }; + conditional: { eq: string; when: null; show: string; - }; - tags: never[]; - hideLabel: boolean; - type: string; - clearOnHide: boolean; - hidden: boolean; - persistent: boolean; - protected: boolean; - key: string; - label: string; - tableView: boolean; - components: { + }; + tags: never[]; + hideLabel: boolean; + type: string; + clearOnHide: boolean; + hidden: boolean; + persistent: boolean; + protected: boolean; + key: string; + label: string; + tableView: boolean; + components: { properties: { - '': string; + '': string; }; tags: never[]; labelPosition: string; hideLabel: boolean; type: string; conditional: { - eq: string; - when: null; - show: string; + eq: string; + when: null; + show: string; }; validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: string; - minLength: string; - required: boolean; + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: string; + minLength: string; + required: boolean; }; clearOnHide: boolean; hidden: boolean; @@ -444,89 +456,91 @@ declare namespace _default { autofocus: boolean; spellcheck: boolean; inDataGrid: boolean; - }[]; - tree: boolean; - input: boolean; - autofocus: boolean; - inputType?: undefined; - inputMask?: undefined; - placeholder?: undefined; - prefix?: undefined; - suffix?: undefined; - multiple?: undefined; - defaultValue?: undefined; - unique?: undefined; - spellcheck?: undefined; - validate?: undefined; - labelPosition?: undefined; - inputFormat?: undefined; - data?: undefined; - widget?: undefined; - dataSrc?: undefined; - valueProperty?: undefined; - refreshOn?: undefined; - filter?: undefined; - authenticate?: undefined; - template?: undefined; - } | { - autofocus: boolean; - input: boolean; - tableView: boolean; - label: string; - key: string; - placeholder: string; - data: { + }[]; + tree: boolean; + input: boolean; + autofocus: boolean; + inputType?: undefined; + inputMask?: undefined; + placeholder?: undefined; + prefix?: undefined; + suffix?: undefined; + multiple?: undefined; + defaultValue?: undefined; + unique?: undefined; + spellcheck?: undefined; + validate?: undefined; + labelPosition?: undefined; + inputFormat?: undefined; + data?: undefined; + widget?: undefined; + dataSrc?: undefined; + valueProperty?: undefined; + refreshOn?: undefined; + filter?: undefined; + authenticate?: undefined; + template?: undefined; + } + | { + autofocus: boolean; + input: boolean; + tableView: boolean; + label: string; + key: string; + placeholder: string; + data: { values: { - value: string; - label: string; + value: string; + label: string; }[]; json: string; url: string; resource: string; custom: string; - }; - widget: string; - dataSrc: string; - valueProperty: string; - defaultValue: string; - refreshOn: string; - filter: string; - authenticate: boolean; - template: string; - multiple: boolean; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { + }; + widget: string; + dataSrc: string; + valueProperty: string; + defaultValue: string; + refreshOn: string; + filter: string; + authenticate: boolean; + template: string; + multiple: boolean; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + validate: { required: boolean; minLength?: undefined; maxLength?: undefined; pattern?: undefined; customPrivate?: undefined; - }; - type: string; - labelPosition: string; - tags: never[]; - conditional: { + }; + type: string; + labelPosition: string; + tags: never[]; + conditional: { show: string; when: null; eq: string; - }; - properties: { + }; + properties: { ''?: undefined; - }; - inputType?: undefined; - inputMask?: undefined; - prefix?: undefined; - suffix?: undefined; - spellcheck?: undefined; - inputFormat?: undefined; - hideLabel?: undefined; - components?: undefined; - tree?: undefined; - })[]; + }; + inputType?: undefined; + inputMask?: undefined; + prefix?: undefined; + suffix?: undefined; + spellcheck?: undefined; + inputFormat?: undefined; + hideLabel?: undefined; + components?: undefined; + tree?: undefined; + } + )[]; tableView: boolean; theme: string; title: string; @@ -540,164 +554,169 @@ declare namespace _default { leftIcon?: undefined; size?: undefined; label?: undefined; - } | { + } + | { hideLabel: boolean; clearOnHide: boolean; conditional: { - eq: string; - when: null; - show: string; + eq: string; + when: null; + show: string; }; theme: string; key: string; input: boolean; - components: ({ - hideLabel: boolean; - type: string; - conditional: { + components: ( + | { + hideLabel: boolean; + type: string; + conditional: { eq: string; when: null; show: string; - }; - validate: { + }; + validate: { customPrivate: boolean; custom: string; pattern: string; maxLength: string; minLength: string; required: boolean; - }; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - hidden: boolean; - clearOnHide: boolean; - autofocus: boolean; - spellcheck: boolean; - dataGridLabel?: undefined; - name?: undefined; - value?: undefined; - labelPosition?: undefined; - tags?: undefined; - properties?: undefined; - footer?: undefined; - width?: undefined; - height?: undefined; - penColor?: undefined; - backgroundColor?: undefined; - minWidth?: undefined; - maxWidth?: undefined; - lockKey?: undefined; - } | { - autofocus: boolean; - input: boolean; - inputType: string; - tableView: boolean; - label: string; - dataGridLabel: boolean; - key: string; - defaultValue: boolean; - protected: boolean; - persistent: boolean; - hidden: boolean; - name: string; - value: string; - clearOnHide: boolean; - validate: { + }; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + hidden: boolean; + clearOnHide: boolean; + autofocus: boolean; + spellcheck: boolean; + dataGridLabel?: undefined; + name?: undefined; + value?: undefined; + labelPosition?: undefined; + tags?: undefined; + properties?: undefined; + footer?: undefined; + width?: undefined; + height?: undefined; + penColor?: undefined; + backgroundColor?: undefined; + minWidth?: undefined; + maxWidth?: undefined; + lockKey?: undefined; + } + | { + autofocus: boolean; + input: boolean; + inputType: string; + tableView: boolean; + label: string; + dataGridLabel: boolean; + key: string; + defaultValue: boolean; + protected: boolean; + persistent: boolean; + hidden: boolean; + name: string; + value: string; + clearOnHide: boolean; + validate: { required: boolean; customPrivate?: undefined; pattern?: undefined; maxLength?: undefined; minLength?: undefined; - }; - type: string; - labelPosition: string; - hideLabel: boolean; - tags: never[]; - conditional: { + }; + type: string; + labelPosition: string; + hideLabel: boolean; + tags: never[]; + conditional: { show: string; when: null; eq: string; - }; - properties: { + }; + properties: { ''?: undefined; - }; - unique?: undefined; - multiple?: undefined; - suffix?: undefined; - prefix?: undefined; - placeholder?: undefined; - inputMask?: undefined; - spellcheck?: undefined; - footer?: undefined; - width?: undefined; - height?: undefined; - penColor?: undefined; - backgroundColor?: undefined; - minWidth?: undefined; - maxWidth?: undefined; - lockKey?: undefined; - } | { - input: boolean; - tableView: boolean; - label: string; - key: string; - placeholder: string; - footer: string; - width: string; - height: string; - penColor: string; - backgroundColor: string; - minWidth: string; - maxWidth: string; - protected: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - validate: { + }; + unique?: undefined; + multiple?: undefined; + suffix?: undefined; + prefix?: undefined; + placeholder?: undefined; + inputMask?: undefined; + spellcheck?: undefined; + footer?: undefined; + width?: undefined; + height?: undefined; + penColor?: undefined; + backgroundColor?: undefined; + minWidth?: undefined; + maxWidth?: undefined; + lockKey?: undefined; + } + | { + input: boolean; + tableView: boolean; + label: string; + key: string; + placeholder: string; + footer: string; + width: string; + height: string; + penColor: string; + backgroundColor: string; + minWidth: string; + maxWidth: string; + protected: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + validate: { required: boolean; customPrivate?: undefined; pattern?: undefined; maxLength?: undefined; minLength?: undefined; - }; - type: string; - hideLabel: boolean; - tags: never[]; - conditional: { + }; + type: string; + hideLabel: boolean; + tags: never[]; + conditional: { show: string; when: null; eq: string; - }; - properties: { + }; + properties: { '': string; - }; - lockKey: boolean; - unique?: undefined; - defaultValue?: undefined; - multiple?: undefined; - suffix?: undefined; - prefix?: undefined; - inputMask?: undefined; - inputType?: undefined; - autofocus?: undefined; - spellcheck?: undefined; - dataGridLabel?: undefined; - name?: undefined; - value?: undefined; - labelPosition?: undefined; - })[]; + }; + lockKey: boolean; + unique?: undefined; + defaultValue?: undefined; + multiple?: undefined; + suffix?: undefined; + prefix?: undefined; + inputMask?: undefined; + inputType?: undefined; + autofocus?: undefined; + spellcheck?: undefined; + dataGridLabel?: undefined; + name?: undefined; + value?: undefined; + labelPosition?: undefined; + } + )[]; title: string; type: string; tableView: boolean; @@ -711,7 +730,8 @@ declare namespace _default { leftIcon?: undefined; size?: undefined; label?: undefined; - } | { + } + | { hideLabel: boolean; type: string; theme: string; @@ -732,6 +752,7 @@ declare namespace _default { properties?: undefined; tags?: undefined; breadcrumb?: undefined; - })[]; + } + )[]; } export default _default; diff --git a/test/forms/htmlRenderMode.js b/test/forms/htmlRenderMode.js index 85d2e05132..b26db3c1e3 100644 --- a/test/forms/htmlRenderMode.js +++ b/test/forms/htmlRenderMode.js @@ -10,7 +10,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, theme: 'default', key: 'page1', @@ -22,7 +22,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -30,7 +30,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, persistent: true, unique: false, @@ -49,14 +49,14 @@ export default { hidden: false, clearOnHide: true, autofocus: false, - spellcheck: true + spellcheck: true, }, { hideLabel: false, conditional: { eq: '', when: null, - show: '' + show: '', }, type: 'number', validate: { @@ -66,7 +66,7 @@ export default { step: 'any', max: '', min: '', - required: true + required: true, }, persistent: true, protected: false, @@ -84,12 +84,12 @@ export default { autofocus: false, labelPosition: 'top', tags: [], - properties: {} - } + properties: {}, + }, ], title: 'First', type: 'panel', - tableView: false + tableView: false, }, { hideLabel: false, @@ -107,7 +107,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -115,7 +115,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: true + required: true, }, persistent: true, unique: false, @@ -136,7 +136,7 @@ export default { labelPosition: 'top', inputFormat: 'plain', tags: [], - properties: {} + properties: {}, }, { input: true, @@ -148,8 +148,8 @@ export default { values: [ { value: '', - label: '' - } + label: '', + }, ], json: '', url: 'https://examples.form.io/customer/submission', @@ -158,9 +158,9 @@ export default { headers: [ { value: '', - key: '' - } - ] + key: '', + }, + ], }, dataSrc: 'url', valueProperty: 'data.email', @@ -176,7 +176,7 @@ export default { hidden: false, clearOnHide: true, validate: { - required: false + required: false, }, type: 'select', lazyLoad: true, @@ -187,11 +187,11 @@ export default { conditional: { show: '', when: null, - eq: '' + eq: '', }, properties: {}, searchField: 'data.email', - autofocus: false + autofocus: false, }, { hideLabel: false, @@ -199,7 +199,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, type: 'fieldset', components: [ @@ -211,7 +211,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -219,7 +219,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, persistent: true, unique: false, @@ -236,25 +236,25 @@ export default { tableView: true, input: true, autofocus: false, - spellcheck: true - } + spellcheck: true, + }, ], legend: 'FieldSet Label', tableView: true, - input: false - } + input: false, + }, ], title: 'Page 2', - type: 'panel' + type: 'panel', }, { properties: { - '': '' + '': '', }, conditional: { eq: '', when: null, - show: '' + show: '', }, tags: [], hideLabel: false, @@ -286,27 +286,27 @@ export default { maxLength: '', pattern: '', custom: '', - customPrivate: false + customPrivate: false, }, conditional: { show: '', when: null, - eq: '' + eq: '', }, type: 'textfield', labelPosition: 'top', inputFormat: 'plain', tags: [], - properties: {} + properties: {}, }, { properties: { - '': '' + '': '', }, conditional: { eq: '', when: null, - show: '' + show: '', }, tags: [], hideLabel: false, @@ -321,7 +321,7 @@ export default { components: [ { properties: { - '': '' + '': '', }, tags: [], labelPosition: 'top', @@ -330,7 +330,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -338,7 +338,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, clearOnHide: true, hidden: false, @@ -358,11 +358,11 @@ export default { input: true, autofocus: false, spellcheck: true, - inDataGrid: true + inDataGrid: true, }, { properties: { - '': '' + '': '', }, tags: [], labelPosition: 'top', @@ -371,7 +371,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -379,7 +379,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, clearOnHide: true, hidden: false, @@ -399,11 +399,11 @@ export default { input: true, autofocus: false, spellcheck: true, - inDataGrid: true + inDataGrid: true, }, { properties: { - '': '' + '': '', }, tags: [], labelPosition: 'top', @@ -412,7 +412,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -420,7 +420,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, clearOnHide: true, hidden: false, @@ -440,11 +440,11 @@ export default { input: true, autofocus: false, spellcheck: true, - inDataGrid: true + inDataGrid: true, }, { properties: { - '': '' + '': '', }, tags: [], labelPosition: 'top', @@ -453,7 +453,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -461,7 +461,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, clearOnHide: true, hidden: false, @@ -481,12 +481,12 @@ export default { input: true, autofocus: false, spellcheck: true, - inDataGrid: true - } + inDataGrid: true, + }, ], tree: true, input: true, - autofocus: false + autofocus: false, }, { autofocus: false, @@ -499,29 +499,29 @@ export default { values: [ { value: 'orange', - label: 'Orange' + label: 'Orange', }, { value: 'apple', - label: 'Apple' + label: 'Apple', }, { value: 'banana', - label: 'Banana' + label: 'Banana', }, { value: 'strawberry', - label: 'Strawberry' + label: 'Strawberry', }, { value: 'kiwi', - label: 'Kiwi' - } + label: 'Kiwi', + }, ], json: '', url: '', resource: '', - custom: '' + custom: '', }, widget: 'html5', dataSrc: 'values', @@ -538,7 +538,7 @@ export default { hidden: false, clearOnHide: true, validate: { - required: false + required: false, }, type: 'select', labelPosition: 'top', @@ -546,17 +546,17 @@ export default { conditional: { show: '', when: null, - eq: '' + eq: '', }, - properties: {} - } + properties: {}, + }, ], tableView: false, theme: 'default', title: 'Page 3', input: false, key: 'panel', - clearOnHide: false + clearOnHide: false, }, { hideLabel: false, @@ -564,7 +564,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, theme: 'default', key: 'page3', @@ -576,7 +576,7 @@ export default { conditional: { eq: '', when: null, - show: '' + show: '', }, validate: { customPrivate: false, @@ -584,7 +584,7 @@ export default { pattern: '', maxLength: '', minLength: '', - required: false + required: false, }, persistent: true, unique: false, @@ -603,7 +603,7 @@ export default { hidden: false, clearOnHide: true, autofocus: false, - spellcheck: true + spellcheck: true, }, { autofocus: false, @@ -621,7 +621,7 @@ export default { value: '', clearOnHide: true, validate: { - required: false + required: false, }, type: 'checkbox', labelPosition: 'right', @@ -630,9 +630,9 @@ export default { conditional: { show: '', when: null, - eq: '' + eq: '', }, - properties: {} + properties: {}, }, { input: true, @@ -652,7 +652,7 @@ export default { hidden: false, clearOnHide: true, validate: { - required: false + required: false, }, type: 'signature', hideLabel: true, @@ -660,17 +660,17 @@ export default { conditional: { show: '', when: null, - eq: '' + eq: '', }, properties: { - '': '' + '': '', }, - lockKey: true - } + lockKey: true, + }, ], title: 'Last', type: 'panel', - tableView: false + tableView: false, }, { hideLabel: false, @@ -685,7 +685,7 @@ export default { key: 'submit', tableView: false, label: 'Submit', - input: true - } + input: true, + }, ], }; diff --git a/test/forms/modalEditGrid.d.ts b/test/forms/modalEditGrid.d.ts index 5f515e9b2b..e2c75f3fe2 100644 --- a/test/forms/modalEditGrid.d.ts +++ b/test/forms/modalEditGrid.d.ts @@ -1,43 +1,46 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { label: string; tableView: boolean; modal: boolean; validate: { - required: boolean; + required: boolean; }; key: string; type: string; input: boolean; components: { - label: string; - tableView: boolean; - components: ({ + label: string; + tableView: boolean; + components: ( + | { label: string; components: { + label: string; + key: string; + components: { label: string; + tableView: boolean; + validate: { + required: boolean; + }; key: string; - components: { - label: string; - tableView: boolean; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; - }[]; + type: string; + input: boolean; + }[]; }[]; tableView: boolean; key: string; type: string; input: boolean; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -45,13 +48,15 @@ declare namespace _default { type: string; input: boolean; components?: undefined; - })[]; - key: string; - type: string; - input: boolean; + } + )[]; + key: string; + type: string; + input: boolean; }[]; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -61,20 +66,21 @@ declare namespace _default { modal?: undefined; validate?: undefined; components?: undefined; - })[]; - const controller: string; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: never[]; - const settings: {}; - const properties: {}; - const name: string; - const path: string; + } + )[]; + const controller: string; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: never[]; + const settings: {}; + const properties: {}; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/modalEditGrid.js b/test/forms/modalEditGrid.js index 62b6a18a36..2cc294f0b3 100644 --- a/test/forms/modalEditGrid.js +++ b/test/forms/modalEditGrid.js @@ -9,7 +9,7 @@ export default { tableView: false, modal: true, validate: { - required: true + required: true, }, key: 'editGrid', type: 'editgrid', @@ -30,13 +30,13 @@ export default { label: 'Text Field', tableView: true, validate: { - required: true + required: true, }, key: 'textField', type: 'textfield', - input: true - } - ] + input: true, + }, + ], }, { label: 'Tab 2', @@ -46,19 +46,19 @@ export default { label: 'Text Field 2', tableView: true, validate: { - required: true + required: true, }, key: 'textField2', type: 'textfield', - input: true - } - ] - } + input: true, + }, + ], + }, ], tableView: false, key: 'tabs', type: 'tabs', - input: false + input: false, }, { label: 'Submit', @@ -66,14 +66,14 @@ export default { tableView: false, key: 'submit', type: 'button', - input: true - } + input: true, + }, ], key: 'form', type: 'form', - input: true - } - ] + input: true, + }, + ], }, { label: 'Submit', @@ -81,8 +81,8 @@ export default { tableView: false, key: 'submit', type: 'button', - input: true - } + input: true, + }, ], controller: '', revisions: '', @@ -91,18 +91,13 @@ export default { display: 'form', access: [ { - roles: [ - '5e96e79ee1c3ad3178454100', - '5e96e79ee1c3ad3178454101', - '5e96e79ee1c3ad3178454102' - ], - type: 'read_all' - } + roles: ['5e96e79ee1c3ad3178454100', '5e96e79ee1c3ad3178454101', '5e96e79ee1c3ad3178454102'], + type: 'read_all', + }, ], submissionAccess: [], settings: {}, properties: {}, name: 'modalEditGridValidation', - path: 'modaleditgridvalidation' + path: 'modaleditgridvalidation', }; - diff --git a/test/forms/nested-event-bubbling.js b/test/forms/nested-event-bubbling.js index de657c8e9a..29a34caaa9 100644 --- a/test/forms/nested-event-bubbling.js +++ b/test/forms/nested-event-bubbling.js @@ -5,7 +5,9 @@ import Webform from '../../src/Webform.js'; export default { title: 'Nested Form Event Bubbling', - form: { components: [{ key: 'form', type: 'form', components: [{ key: 'name', type: 'textfield' }] }] }, + form: { + components: [{ key: 'form', type: 'form', components: [{ key: 'name', type: 'textfield' }] }], + }, tests: { 'Event should bubble up to parent form'(form, done) { try { @@ -24,8 +26,8 @@ export default { // Check wrapper expect(formCmp).to.be.an.instanceof(FormComponent); - formCmp.subFormReady. - then(subForm => { + formCmp.subFormReady + .then((subForm) => { // Check nested form expect(subForm).to.be.an.instanceof(Webform); @@ -53,12 +55,11 @@ export default { expect(listener3nested.callCount, ENE).to.equal(2); expect(listener3parent.callCount, EBB).to.equal(2); done(); - }, done). - catch(done); - } - catch (error) { + }, done) + .catch(done); + } catch (error) { done(error); } - } - } + }, + }, }; diff --git a/test/forms/nested-form-validation.d.ts b/test/forms/nested-form-validation.d.ts index d4480579d3..0103b9bf9e 100644 --- a/test/forms/nested-form-validation.d.ts +++ b/test/forms/nested-form-validation.d.ts @@ -1,10 +1,10 @@ declare namespace _default { - export const title: string; - export { nestedConditionalForm as form }; - export const tests: { - 'Form validation should skip hidden nested form'(form: any, done: any): void; - 'Form validation should validate nested form'(form: any, done: any): void; - }; + export const title: string; + export { nestedConditionalForm as form }; + export const tests: { + 'Form validation should skip hidden nested form'(form: any, done: any): void; + 'Form validation should validate nested form'(form: any, done: any): void; + }; } export default _default; import { nestedConditionalForm } from '../fixtures'; diff --git a/test/forms/nested-form-validation.js b/test/forms/nested-form-validation.js index ab7323982a..16b5632e72 100644 --- a/test/forms/nested-form-validation.js +++ b/test/forms/nested-form-validation.js @@ -10,7 +10,7 @@ export default { const submission = { data: { radio: 'no', - } + }, }; Harness.onNext(form, 'change', () => { @@ -23,23 +23,24 @@ export default { const submission = { data: { radio: 'yes', - } + }, }; Harness.onNext(form, 'change', () => { - form.submit() + form + .submit() .then( () => expect.fail('Submit should reject'), - errors => { + (errors) => { expect(errors).to.be.lengthOf(1); expect(errors[0].message).to.equal('Name is required'); done(); - } + }, ) .catch(done); }); form.submission = submission; - } - } + }, + }, }; diff --git a/test/forms/nestedConditionalWizard.d.ts b/test/forms/nestedConditionalWizard.d.ts index be3197c6bf..e0e1fdb42c 100644 --- a/test/forms/nestedConditionalWizard.d.ts +++ b/test/forms/nestedConditionalWizard.d.ts @@ -1,15 +1,16 @@ declare namespace _default { - const type: string; - const tags: never[]; - const components: ({ + const type: string; + const tags: never[]; + const components: ( + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; @@ -19,21 +20,22 @@ declare namespace _default { useOriginalRevision?: undefined; display?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; input: boolean; @@ -41,151 +43,162 @@ declare namespace _default { useOriginalRevision?: undefined; display?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; tableView: boolean; - components: ({ - title: string; - label: string; - type: string; - key: string; - components: { + components: ( + | { + title: string; + label: string; + type: string; + key: string; + components: { label: string; optionsLabelPosition: string; inline: boolean; tableView: boolean; values: { - label: string; - value: string; - shortcut: string; + label: string; + value: string; + shortcut: string; }[]; key: string; type: string; input: boolean; - }[]; - input: boolean; - tableView: boolean; - breadcrumbClickable?: undefined; - buttonSettings?: undefined; - collapsible?: undefined; - conditional?: undefined; - } | { - title: string; - breadcrumbClickable: boolean; - buttonSettings: { + }[]; + input: boolean; + tableView: boolean; + breadcrumbClickable?: undefined; + buttonSettings?: undefined; + collapsible?: undefined; + conditional?: undefined; + } + | { + title: string; + breadcrumbClickable: boolean; + buttonSettings: { previous: boolean; cancel: boolean; next: boolean; - }; - collapsible: boolean; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: ({ - label: string; - inputType: string; - tableView: boolean; - key: string; - type: string; - name: string; - value: string; - input: boolean; - defaultValue: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - defaultOpen?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - hideLabel?: undefined; - components?: undefined; - } | { - label: string; - reorder: boolean; - addAnotherPosition: string; - defaultOpen: boolean; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - hideLabel: boolean; - tableView: boolean; - defaultValue: { - textField: string; - }[]; - key: string; - customConditional: string; - type: string; - input: boolean; - components: ({ + }; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: ( + | { label: string; + inputType: string; tableView: boolean; - validate: { - required: boolean; - }; key: string; type: string; + name: string; + value: string; input: boolean; - mask?: undefined; - spellcheck?: undefined; - delimiter?: undefined; - requireDecimal?: undefined; - inputFormat?: undefined; - } | { + defaultValue: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + defaultOpen?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + hideLabel?: undefined; + components?: undefined; + } + | { label: string; - mask: boolean; - spellcheck: boolean; + reorder: boolean; + addAnotherPosition: string; + defaultOpen: boolean; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + hideLabel: boolean; tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - validate: { - required: boolean; - }; + defaultValue: { + textField: string; + }[]; key: string; + customConditional: string; type: string; input: boolean; - })[]; - inputType?: undefined; - name?: undefined; - value?: undefined; - })[]; - conditional?: undefined; - } | { - title: string; - breadcrumbClickable: boolean; - buttonSettings: { + components: ( + | { + label: string; + tableView: boolean; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; + mask?: undefined; + spellcheck?: undefined; + delimiter?: undefined; + requireDecimal?: undefined; + inputFormat?: undefined; + } + | { + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; + } + )[]; + inputType?: undefined; + name?: undefined; + value?: undefined; + } + )[]; + conditional?: undefined; + } + | { + title: string; + breadcrumbClickable: boolean; + buttonSettings: { previous: boolean; cancel: boolean; next: boolean; - }; - collapsible: boolean; - key: string; - conditional: { + }; + collapsible: boolean; + key: string; + conditional: { show: boolean; when: string; eq: string; - }; - type: string; - label: string; - components: { + }; + type: string; + label: string; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - }[]; - input: boolean; - tableView: boolean; - })[]; + }[]; + input: boolean; + tableView: boolean; + } + )[]; useOriginalRevision: boolean; key: string; display: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; input: boolean; @@ -193,7 +206,8 @@ declare namespace _default { inline?: undefined; values?: undefined; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -207,10 +221,11 @@ declare namespace _default { components?: undefined; useOriginalRevision?: undefined; display?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/nestedConditionalWizard.js b/test/forms/nestedConditionalWizard.js index 2505d33ca6..0e7841ca6a 100644 --- a/test/forms/nestedConditionalWizard.js +++ b/test/forms/nestedConditionalWizard.js @@ -12,7 +12,8 @@ export default { label: 'Yes', value: 'yes', shortcut: '', - }, { + }, + { label: 'No', value: 'no', shortcut: '', @@ -21,7 +22,8 @@ export default { key: 'nestedForm', type: 'radio', input: true, - }, { + }, + { label: 'second question to open Nested form', optionsLabelPosition: 'right', inline: false, @@ -31,11 +33,13 @@ export default { label: 'Open child form', value: 'openChildForm', shortcut: '', - }, { + }, + { label: '2', value: '2', shortcut: '', - }, { + }, + { label: '3', value: '3', shortcut: '', @@ -49,7 +53,8 @@ export default { }, type: 'radio', input: true, - }, { + }, + { label: 'Form', tableView: true, components: [ @@ -69,7 +74,8 @@ export default { label: 'unhide page3', value: 'unhidePage3', shortcut: '', - }, { + }, + { label: 'Next question', value: 'nextQuestion', shortcut: '', @@ -82,7 +88,8 @@ export default { ], input: false, tableView: false, - }, { + }, + { title: 'Page 2', breadcrumbClickable: true, buttonSettings: { @@ -107,7 +114,8 @@ export default { value: 'Checkbox1', input: true, defaultValue: false, - }, { + }, + { label: 'Checkbox2', inputType: 'radio', tableView: false, @@ -117,7 +125,8 @@ export default { name: 'question', value: 'Checkbox2', input: true, - }, { + }, + { label: 'Data Grid', reorder: false, addAnotherPosition: 'bottom', @@ -133,7 +142,7 @@ export default { }, ], key: 'dataGrid', - customConditional: 'show = data.question === \'Checkbox2\';', + customConditional: "show = data.question === 'Checkbox2';", type: 'datagrid', input: true, components: [ @@ -146,7 +155,8 @@ export default { key: 'textField', type: 'textfield', input: true, - }, { + }, + { label: 'Number', mask: false, spellcheck: true, @@ -164,7 +174,8 @@ export default { ], }, ], - }, { + }, + { title: 'Page 3', breadcrumbClickable: true, buttonSettings: { @@ -204,7 +215,8 @@ export default { }, type: 'form', input: true, - }, { + }, + { type: 'button', label: 'Submit', key: 'submit', diff --git a/test/forms/nestedDataGridWithInitEmpty.d.ts b/test/forms/nestedDataGridWithInitEmpty.d.ts index 2de0b9c3bf..a4f9273ae2 100644 --- a/test/forms/nestedDataGridWithInitEmpty.d.ts +++ b/test/forms/nestedDataGridWithInitEmpty.d.ts @@ -1,11 +1,12 @@ declare namespace _default { - export { form }; - export { submission }; + export { form }; + export { submission }; } export default _default; declare namespace form { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; tableView: boolean; clearOnHide: boolean; @@ -15,35 +16,37 @@ declare namespace form { displayAsTable: boolean; input: boolean; components: { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: { - select: string; - email: string; - }[]; - key: string; - type: string; - input: boolean; - components: ({ + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: { + select: string; + email: string; + }[]; + key: string; + type: string; + input: boolean; + components: ( + | { label: string; widget: string; hideLabel: boolean; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; key: string; type: string; input: boolean; - } | { + } + | { label: string; hideLabel: boolean; tableView: boolean; @@ -52,10 +55,12 @@ declare namespace form { input: boolean; widget?: undefined; data?: undefined; - })[]; + } + )[]; }[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -66,20 +71,21 @@ declare namespace form { rowDrafts?: undefined; displayAsTable?: undefined; components?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } declare namespace submission { - namespace data { - const editGrid: { - dataGrid: { - select: string; - email: string; - }[]; - }[]; - const submit: boolean; - } + namespace data { + const editGrid: { + dataGrid: { + select: string; + email: string; + }[]; + }[]; + const submit: boolean; + } } diff --git a/test/forms/nestedDataGridWithInitEmpty.js b/test/forms/nestedDataGridWithInitEmpty.js index f335feb5a1..7c97a00d1a 100644 --- a/test/forms/nestedDataGridWithInitEmpty.js +++ b/test/forms/nestedDataGridWithInitEmpty.js @@ -61,25 +61,28 @@ const form = { }, ], title: 'FIO-2721', - display: 'form', + display: 'form', name: 'fio2721', path: 'fio2721', }; const submission = { data: { - editGrid: [{ - dataGrid: [{ - select: 'email', - email: 'hhh@gmail.com', - }] - }], - submit: true - } + editGrid: [ + { + dataGrid: [ + { + select: 'email', + email: 'hhh@gmail.com', + }, + ], + }, + ], + submit: true, + }, }; export default { form, submission, }; - diff --git a/test/forms/nestedDataGridsAndContainers.d.ts b/test/forms/nestedDataGridsAndContainers.d.ts index ded1f71177..83e2f18e1c 100644 --- a/test/forms/nestedDataGridsAndContainers.d.ts +++ b/test/forms/nestedDataGridsAndContainers.d.ts @@ -1,7 +1,31 @@ declare namespace _default { - const _id: string; - const type: string; - const components: { + const _id: string; + const type: string; + const components: { + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: { + container: { + dataGrid6: { + checkbox: boolean; + }[]; + }; + }[]; + key: string; + type: string; + input: boolean; + components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; reorder: boolean; addAnotherPosition: string; @@ -10,83 +34,62 @@ declare namespace _default { initEmpty: boolean; tableView: boolean; defaultValue: { - container: { - dataGrid6: { - checkbox: boolean; - }[]; - }; + checkbox: boolean; }[]; key: string; type: string; input: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - components: { + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + defaultValue?: undefined; + components?: undefined; + } + | { + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: { + number: string; + }[]; + key: string; + customConditional: string; + type: string; + input: boolean; + components: { label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; + mask: boolean; tableView: boolean; - defaultValue: { - checkbox: boolean; - }[]; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + truncateMultipleSpaces: boolean; key: string; type: string; input: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - defaultValue?: undefined; - components?: undefined; - } | { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: { - number: string; - }[]; - key: string; - customConditional: string; - type: string; - input: boolean; - components: { - label: string; - mask: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - truncateMultipleSpaces: boolean; - key: string; - type: string; - input: boolean; - }[]; - })[]; - }[]; - }[]; + }[]; + } + )[]; + }[]; }[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + }[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/nestedDataGridsAndContainers.js b/test/forms/nestedDataGridsAndContainers.js index db19194f33..a36b9f51e3 100644 --- a/test/forms/nestedDataGridsAndContainers.js +++ b/test/forms/nestedDataGridsAndContainers.js @@ -1,85 +1,85 @@ export default { - _id: '60dd99f437685ab150b72a41', - type: 'form', - components: [ - { - label: 'Data Grid', - reorder: false, - addAnotherPosition: 'bottom', - layoutFixed: false, - enableRowGroups: false, - initEmpty: false, - tableView: false, - defaultValue: [ { container: { dataGrid6: [ { checkbox: false } ] } } ], - key: 'dataGrid7', - type: 'datagrid', - input: true, - components: [ - { - label: 'Container', - tableView: false, - key: 'container', - type: 'container', - input: true, - components: [ - { - label: 'Data Grid', - reorder: false, - addAnotherPosition: 'bottom', - layoutFixed: false, - enableRowGroups: false, - initEmpty: false, - tableView: false, - defaultValue: [ { checkbox: false } ], - key: 'dataGrid6', - type: 'datagrid', - input: true, - components: [ - { - label: 'Checkbox', - tableView: false, - key: 'checkbox', - type: 'checkbox', - input: true - }, - { - label: 'Data Grid', - reorder: false, - addAnotherPosition: 'bottom', - layoutFixed: false, - enableRowGroups: false, - initEmpty: false, - tableView: false, - defaultValue: [ { number: '' } ], - key: 'dataGrid5', - customConditional: 'show = row.checkbox === true', - type: 'datagrid', - input: true, - components: [ - { - label: 'Number', - mask: false, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - truncateMultipleSpaces: false, - key: 'number', - type: 'number', - input: true - } - ] - } - ] - } - ] - } - ] - } - ], - title: 'test failure', - display: 'form', - name: 'testFailure', - path: 'testfailure', - machineName: 'cjksbatcpbhyfbs:testFailure', + _id: '60dd99f437685ab150b72a41', + type: 'form', + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{ container: { dataGrid6: [{ checkbox: false }] } }], + key: 'dataGrid7', + type: 'datagrid', + input: true, + components: [ + { + label: 'Container', + tableView: false, + key: 'container', + type: 'container', + input: true, + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{ checkbox: false }], + key: 'dataGrid6', + type: 'datagrid', + input: true, + components: [ + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + }, + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{ number: '' }], + key: 'dataGrid5', + customConditional: 'show = row.checkbox === true', + type: 'datagrid', + input: true, + components: [ + { + label: 'Number', + mask: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + key: 'number', + type: 'number', + input: true, + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + title: 'test failure', + display: 'form', + name: 'testFailure', + path: 'testfailure', + machineName: 'cjksbatcpbhyfbs:testFailure', }; diff --git a/test/forms/nestedModalWizard.json b/test/forms/nestedModalWizard.json index c9dbf19d37..c673776237 100644 --- a/test/forms/nestedModalWizard.json +++ b/test/forms/nestedModalWizard.json @@ -94,4 +94,4 @@ "title": "FJS-756: Parent", "display": "form", "name": "fjs756Parent" -} \ No newline at end of file +} diff --git a/test/forms/optionalSanitize.d.ts b/test/forms/optionalSanitize.d.ts index 117df6ce40..113d005a2c 100644 --- a/test/forms/optionalSanitize.d.ts +++ b/test/forms/optionalSanitize.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; tableView: boolean; key: string; @@ -8,7 +9,8 @@ declare namespace _default { input: boolean; autoExpand?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; autoExpand: boolean; tableView: boolean; @@ -16,7 +18,8 @@ declare namespace _default { type: string; input: boolean; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -24,8 +27,9 @@ declare namespace _default { input: boolean; tableView: boolean; autoExpand?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/optionalSanitize.js b/test/forms/optionalSanitize.js index b12ff0a5ec..5fdf5ce199 100644 --- a/test/forms/optionalSanitize.js +++ b/test/forms/optionalSanitize.js @@ -6,7 +6,7 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true + input: true, }, { label: 'Text Area', @@ -14,14 +14,14 @@ export default { tableView: true, key: 'textArea', type: 'textarea', - input: true + input: true, }, { label: 'Checkbox', tableView: false, key: 'checkbox', type: 'checkbox', - input: true + input: true, }, { type: 'button', @@ -29,8 +29,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'Optional Sanitize Test', display: 'form', diff --git a/test/forms/sameApiKeysLayoutComps.d.ts b/test/forms/sameApiKeysLayoutComps.d.ts index 1712c47e46..57f6d49a94 100644 --- a/test/forms/sameApiKeysLayoutComps.d.ts +++ b/test/forms/sameApiKeysLayoutComps.d.ts @@ -1,18 +1,20 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; components: { - label: string; - key: string; - components: never[]; + label: string; + key: string; + components: never[]; }[]; key: string; type: string; input: boolean; tableView: boolean; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -20,8 +22,9 @@ declare namespace _default { input: boolean; tableView: boolean; components?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/sameApiKeysLayoutComps.js b/test/forms/sameApiKeysLayoutComps.js index 4aa91cf073..a4e6b18018 100644 --- a/test/forms/sameApiKeysLayoutComps.js +++ b/test/forms/sameApiKeysLayoutComps.js @@ -7,15 +7,13 @@ export default { { label: 'Tab 1', key: 'tab1', - components: [ - - ] - } + components: [], + }, ], key: 'tabs', type: 'tabs', input: false, - tableView: false + tableView: false, }, { label: 'Tabs', @@ -23,15 +21,13 @@ export default { { label: 'Tab 1', key: 'tab2', - components: [ - - ] - } + components: [], + }, ], key: 'tabs', type: 'tabs', input: false, - tableView: false + tableView: false, }, { type: 'button', @@ -39,8 +35,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FIO-249', display: 'form', diff --git a/test/forms/simple.d.ts b/test/forms/simple.d.ts index acee5e2ab6..601b2e3a60 100644 --- a/test/forms/simple.d.ts +++ b/test/forms/simple.d.ts @@ -1,352 +1,360 @@ declare namespace _default { - const title: string; - namespace form { - export const _id: string; - export const modified: string; - const title_1: string; - export { title_1 as title }; - export const display: string; - export const type: string; - export const name: string; - export const path: string; - export const project: string; - export const created: string; - export const components: ({ - tags: never[]; - type: string; - conditional: { - eq: string; - when: null; - show: string; - }; - validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: number; - minLength: number; - required: boolean; - }; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - kickbox?: undefined; - maxDate?: undefined; - minDate?: undefined; - format?: undefined; - enableDate?: undefined; - enableTime?: undefined; - defaultDate?: undefined; - datepickerMode?: undefined; - datePicker?: undefined; - timePicker?: undefined; - theme?: undefined; - disableOnInvalid?: undefined; - action?: undefined; - block?: undefined; - rightIcon?: undefined; - leftIcon?: undefined; - size?: undefined; - } | { - tags: never[]; - type: string; - conditional: { - eq: string; - when: null; - show: string; - }; - validate: { - customPrivate: boolean; - custom: string; - pattern: string; - maxLength: string; - minLength: string; - required: boolean; - }; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - multiple: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputMask: string; - inputType: string; - tableView: boolean; - input: boolean; - kickbox?: undefined; - maxDate?: undefined; - minDate?: undefined; - format?: undefined; - enableDate?: undefined; - enableTime?: undefined; - defaultDate?: undefined; - datepickerMode?: undefined; - datePicker?: undefined; - timePicker?: undefined; - theme?: undefined; - disableOnInvalid?: undefined; - action?: undefined; - block?: undefined; - rightIcon?: undefined; - leftIcon?: undefined; - size?: undefined; - } | { - conditional: { - eq: string; - when: null; - show: string; - }; - tags: never[]; - type: string; - kickbox: { - enabled: boolean; - }; - persistent: boolean; - unique: boolean; - protected: boolean; - defaultValue: string; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputType: string; - tableView: boolean; - input: boolean; - validate?: undefined; - multiple?: undefined; - inputMask?: undefined; - maxDate?: undefined; - minDate?: undefined; - format?: undefined; - enableDate?: undefined; - enableTime?: undefined; - defaultDate?: undefined; - datepickerMode?: undefined; - datePicker?: undefined; - timePicker?: undefined; - theme?: undefined; - disableOnInvalid?: undefined; - action?: undefined; - block?: undefined; - rightIcon?: undefined; - leftIcon?: undefined; - size?: undefined; - } | { - conditional: { - eq: string; - when: null; - show: string; - }; - tags: never[]; - type: string; - persistent: boolean; - protected: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputType: string; - tableView: boolean; - input: boolean; - validate?: undefined; - unique?: undefined; - defaultValue?: undefined; - multiple?: undefined; - inputMask?: undefined; - kickbox?: undefined; - maxDate?: undefined; - minDate?: undefined; - format?: undefined; - enableDate?: undefined; - enableTime?: undefined; - defaultDate?: undefined; - datepickerMode?: undefined; - datePicker?: undefined; - timePicker?: undefined; - theme?: undefined; - disableOnInvalid?: undefined; - action?: undefined; - block?: undefined; - rightIcon?: undefined; - leftIcon?: undefined; - size?: undefined; - } | { - validate: { - custom: string; - customPrivate?: undefined; - pattern?: undefined; - maxLength?: undefined; - minLength?: undefined; - required?: undefined; - }; - conditional: { - eq: string; - when: null; - show: string; - }; - tags: never[]; - type: string; - persistent: boolean; - protected: boolean; - suffix: string; - prefix: string; - placeholder: string; - key: string; - label: string; - inputType: string; - tableView: boolean; - input: boolean; - unique?: undefined; - defaultValue?: undefined; - multiple?: undefined; - inputMask?: undefined; - kickbox?: undefined; - maxDate?: undefined; - minDate?: undefined; - format?: undefined; - enableDate?: undefined; - enableTime?: undefined; - defaultDate?: undefined; - datepickerMode?: undefined; - datePicker?: undefined; - timePicker?: undefined; - theme?: undefined; - disableOnInvalid?: undefined; - action?: undefined; - block?: undefined; - rightIcon?: undefined; - leftIcon?: undefined; - size?: undefined; - } | { - maxDate: null; - minDate: null; - input: boolean; - tableView: boolean; - label: string; - key: string; - placeholder: string; - format: string; - enableDate: boolean; - enableTime: boolean; - defaultDate: string; + const title: string; + namespace form { + export const _id: string; + export const modified: string; + const title_1: string; + export { title_1 as title }; + export const display: string; + export const type: string; + export const name: string; + export const path: string; + export const project: string; + export const created: string; + export const components: ( + | { + tags: never[]; + type: string; + conditional: { + eq: string; + when: null; + show: string; + }; + validate: { + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: number; + minLength: number; + required: boolean; + }; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + kickbox?: undefined; + maxDate?: undefined; + minDate?: undefined; + format?: undefined; + enableDate?: undefined; + enableTime?: undefined; + defaultDate?: undefined; + datepickerMode?: undefined; + datePicker?: undefined; + timePicker?: undefined; + theme?: undefined; + disableOnInvalid?: undefined; + action?: undefined; + block?: undefined; + rightIcon?: undefined; + leftIcon?: undefined; + size?: undefined; + } + | { + tags: never[]; + type: string; + conditional: { + eq: string; + when: null; + show: string; + }; + validate: { + customPrivate: boolean; + custom: string; + pattern: string; + maxLength: string; + minLength: string; + required: boolean; + }; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + multiple: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputMask: string; + inputType: string; + tableView: boolean; + input: boolean; + kickbox?: undefined; + maxDate?: undefined; + minDate?: undefined; + format?: undefined; + enableDate?: undefined; + enableTime?: undefined; + defaultDate?: undefined; + datepickerMode?: undefined; + datePicker?: undefined; + timePicker?: undefined; + theme?: undefined; + disableOnInvalid?: undefined; + action?: undefined; + block?: undefined; + rightIcon?: undefined; + leftIcon?: undefined; + size?: undefined; + } + | { + conditional: { + eq: string; + when: null; + show: string; + }; + tags: never[]; + type: string; + kickbox: { + enabled: boolean; + }; + persistent: boolean; + unique: boolean; + protected: boolean; + defaultValue: string; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputType: string; + tableView: boolean; + input: boolean; + validate?: undefined; + multiple?: undefined; + inputMask?: undefined; + maxDate?: undefined; + minDate?: undefined; + format?: undefined; + enableDate?: undefined; + enableTime?: undefined; + defaultDate?: undefined; + datepickerMode?: undefined; + datePicker?: undefined; + timePicker?: undefined; + theme?: undefined; + disableOnInvalid?: undefined; + action?: undefined; + block?: undefined; + rightIcon?: undefined; + leftIcon?: undefined; + size?: undefined; + } + | { + conditional: { + eq: string; + when: null; + show: string; + }; + tags: never[]; + type: string; + persistent: boolean; + protected: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputType: string; + tableView: boolean; + input: boolean; + validate?: undefined; + unique?: undefined; + defaultValue?: undefined; + multiple?: undefined; + inputMask?: undefined; + kickbox?: undefined; + maxDate?: undefined; + minDate?: undefined; + format?: undefined; + enableDate?: undefined; + enableTime?: undefined; + defaultDate?: undefined; + datepickerMode?: undefined; + datePicker?: undefined; + timePicker?: undefined; + theme?: undefined; + disableOnInvalid?: undefined; + action?: undefined; + block?: undefined; + rightIcon?: undefined; + leftIcon?: undefined; + size?: undefined; + } + | { + validate: { + custom: string; + customPrivate?: undefined; + pattern?: undefined; + maxLength?: undefined; + minLength?: undefined; + required?: undefined; + }; + conditional: { + eq: string; + when: null; + show: string; + }; + tags: never[]; + type: string; + persistent: boolean; + protected: boolean; + suffix: string; + prefix: string; + placeholder: string; + key: string; + label: string; + inputType: string; + tableView: boolean; + input: boolean; + unique?: undefined; + defaultValue?: undefined; + multiple?: undefined; + inputMask?: undefined; + kickbox?: undefined; + maxDate?: undefined; + minDate?: undefined; + format?: undefined; + enableDate?: undefined; + enableTime?: undefined; + defaultDate?: undefined; + datepickerMode?: undefined; + datePicker?: undefined; + timePicker?: undefined; + theme?: undefined; + disableOnInvalid?: undefined; + action?: undefined; + block?: undefined; + rightIcon?: undefined; + leftIcon?: undefined; + size?: undefined; + } + | { + maxDate: null; + minDate: null; + input: boolean; + tableView: boolean; + label: string; + key: string; + placeholder: string; + format: string; + enableDate: boolean; + enableTime: boolean; + defaultDate: string; + datepickerMode: string; + datePicker: { + showWeeks: boolean; + startingDay: number; + initDate: string; + minMode: string; + maxMode: string; + yearRange: string; datepickerMode: string; - datePicker: { - showWeeks: boolean; - startingDay: number; - initDate: string; - minMode: string; - maxMode: string; - yearRange: string; - datepickerMode: string; - }; - timePicker: { - hourStep: number; - minuteStep: number; - showMeridian: boolean; - readonlyInput: boolean; - mousewheel: boolean; - arrowkeys: boolean; - }; - protected: boolean; - persistent: boolean; - validate: { - required: boolean; - custom: string; - customPrivate?: undefined; - pattern?: undefined; - maxLength?: undefined; - minLength?: undefined; - }; - type: string; - tags: never[]; - conditional: { - show: string; - when: null; - eq: string; - }; - unique?: undefined; - defaultValue?: undefined; - multiple?: undefined; - suffix?: undefined; - prefix?: undefined; - inputMask?: undefined; - inputType?: undefined; - kickbox?: undefined; - theme?: undefined; - disableOnInvalid?: undefined; - action?: undefined; - block?: undefined; - rightIcon?: undefined; - leftIcon?: undefined; - size?: undefined; - } | { - type: string; - theme: string; - disableOnInvalid: boolean; - action: string; - block: boolean; - rightIcon: string; - leftIcon: string; - size: string; - key: string; - tableView: boolean; - label: string; - input: boolean; - tags?: undefined; - conditional?: undefined; - validate?: undefined; - persistent?: undefined; - unique?: undefined; - protected?: undefined; - defaultValue?: undefined; - multiple?: undefined; - suffix?: undefined; - prefix?: undefined; - placeholder?: undefined; - inputMask?: undefined; - inputType?: undefined; - kickbox?: undefined; - maxDate?: undefined; - minDate?: undefined; - format?: undefined; - enableDate?: undefined; - enableTime?: undefined; - defaultDate?: undefined; - datepickerMode?: undefined; - datePicker?: undefined; - timePicker?: undefined; - })[]; - export const owner: string; - export const submissionAccess: { - type: string; - roles: string[]; - }[]; - export const access: { - type: string; - roles: string[]; - }[]; - export const tags: never[]; - } - const tests: { - 'Test valid submission'(form: any, done: any): void; - 'Test invalid email'(form: any, done: any): void; - }; + }; + timePicker: { + hourStep: number; + minuteStep: number; + showMeridian: boolean; + readonlyInput: boolean; + mousewheel: boolean; + arrowkeys: boolean; + }; + protected: boolean; + persistent: boolean; + validate: { + required: boolean; + custom: string; + customPrivate?: undefined; + pattern?: undefined; + maxLength?: undefined; + minLength?: undefined; + }; + type: string; + tags: never[]; + conditional: { + show: string; + when: null; + eq: string; + }; + unique?: undefined; + defaultValue?: undefined; + multiple?: undefined; + suffix?: undefined; + prefix?: undefined; + inputMask?: undefined; + inputType?: undefined; + kickbox?: undefined; + theme?: undefined; + disableOnInvalid?: undefined; + action?: undefined; + block?: undefined; + rightIcon?: undefined; + leftIcon?: undefined; + size?: undefined; + } + | { + type: string; + theme: string; + disableOnInvalid: boolean; + action: string; + block: boolean; + rightIcon: string; + leftIcon: string; + size: string; + key: string; + tableView: boolean; + label: string; + input: boolean; + tags?: undefined; + conditional?: undefined; + validate?: undefined; + persistent?: undefined; + unique?: undefined; + protected?: undefined; + defaultValue?: undefined; + multiple?: undefined; + suffix?: undefined; + prefix?: undefined; + placeholder?: undefined; + inputMask?: undefined; + inputType?: undefined; + kickbox?: undefined; + maxDate?: undefined; + minDate?: undefined; + format?: undefined; + enableDate?: undefined; + enableTime?: undefined; + defaultDate?: undefined; + datepickerMode?: undefined; + datePicker?: undefined; + timePicker?: undefined; + } + )[]; + export const owner: string; + export const submissionAccess: { + type: string; + roles: string[]; + }[]; + export const access: { + type: string; + roles: string[]; + }[]; + export const tags: never[]; + } + const tests: { + 'Test valid submission'(form: any, done: any): void; + 'Test invalid email'(form: any, done: any): void; + }; } export default _default; diff --git a/test/forms/simple.js b/test/forms/simple.js index b0e6b9bfa5..1a4b6c9f19 100644 --- a/test/forms/simple.js +++ b/test/forms/simple.js @@ -5,185 +5,219 @@ export default { /** https://lyozsrwunugzxwe.form.io/basic */ form: { - '_id': '58813a6cf6267a006d569892', - 'modified': '2017-01-29T05:40:54.825Z', - 'title': 'Basic Form', - 'display': 'form', - 'type': 'form', - 'name': 'basicForm', - 'path': 'basic', - 'project': '58704bed7cc4b7006c4b8a6c', - 'created': '2017-01-19T22:15:08.941Z', - 'components': [{ - 'tags': [], - 'type': 'textfield', - 'conditional': {'eq': '', 'when': null, 'show': ''}, - 'validate': { - 'customPrivate': false, - 'custom': '', - 'pattern': '', - 'maxLength': 10, - 'minLength': 2, - 'required': false + _id: '58813a6cf6267a006d569892', + modified: '2017-01-29T05:40:54.825Z', + title: 'Basic Form', + display: 'form', + type: 'form', + name: 'basicForm', + path: 'basic', + project: '58704bed7cc4b7006c4b8a6c', + created: '2017-01-19T22:15:08.941Z', + components: [ + { + tags: [], + type: 'textfield', + conditional: { eq: '', when: null, show: '' }, + validate: { + customPrivate: false, + custom: '', + pattern: '', + maxLength: 10, + minLength: 2, + required: false, + }, + persistent: true, + unique: false, + protected: false, + defaultValue: '', + multiple: false, + suffix: '', + prefix: '', + placeholder: '', + key: 'firstName', + label: 'First Name', + inputMask: '', + inputType: 'text', + tableView: true, + input: true, }, - 'persistent': true, - 'unique': false, - 'protected': false, - 'defaultValue': '', - 'multiple': false, - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'firstName', - 'label': 'First Name', - 'inputMask': '', - 'inputType': 'text', - 'tableView': true, - 'input': true - }, { - 'tags': [], - 'type': 'textfield', - 'conditional': {'eq': '', 'when': null, 'show': ''}, - 'validate': { - 'customPrivate': false, - 'custom': '', - 'pattern': '', - 'maxLength': '', - 'minLength': '', - 'required': false + { + tags: [], + type: 'textfield', + conditional: { eq: '', when: null, show: '' }, + validate: { + customPrivate: false, + custom: '', + pattern: '', + maxLength: '', + minLength: '', + required: false, + }, + persistent: true, + unique: false, + protected: false, + defaultValue: '', + multiple: false, + suffix: '', + prefix: '', + placeholder: '', + key: 'lastName', + label: 'Last Name', + inputMask: '', + inputType: 'text', + tableView: true, + input: true, }, - 'persistent': true, - 'unique': false, - 'protected': false, - 'defaultValue': '', - 'multiple': false, - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'lastName', - 'label': 'Last Name', - 'inputMask': '', - 'inputType': 'text', - 'tableView': true, - 'input': true - }, { - 'conditional': {'eq': '', 'when': null, 'show': ''}, - 'tags': [], - 'type': 'email', - 'kickbox': {'enabled': false}, - 'persistent': true, - 'unique': false, - 'protected': false, - 'defaultValue': '', - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'email', - 'label': 'Email', - 'inputType': 'email', - 'tableView': true, - 'input': true - }, { - 'conditional': {'eq': '', 'when': null, 'show': ''}, - 'tags': [], - 'type': 'password', - 'persistent': true, - 'protected': true, - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'password', - 'label': 'Password', - 'inputType': 'password', - 'tableView': false, - 'input': true - }, { - 'validate': {'custom': "valid = (input == '{{ password }}') ? true : 'Passwords must match.';"}, - 'conditional': {'eq': '', 'when': null, 'show': ''}, - 'tags': [], - 'type': 'password', - 'persistent': true, - 'protected': true, - 'suffix': '', - 'prefix': '', - 'placeholder': '', - 'key': 'verifyPassword', - 'label': 'Verify Password', - 'inputType': 'password', - 'tableView': false, - 'input': true - }, { - 'maxDate': null, - 'minDate': null, - 'input': true, - 'tableView': true, - 'label': 'Date', - 'key': 'date', - 'placeholder': '', - 'format': 'yyyy-MM-dd hh:mm', - 'enableDate': true, - 'enableTime': true, - 'defaultDate': '', - 'datepickerMode': 'day', - 'datePicker': { - 'showWeeks': true, - 'startingDay': 0, - 'initDate': '', - 'minMode': 'day', - 'maxMode': 'year', - 'yearRange': '20', - 'datepickerMode': 'day' + { + conditional: { eq: '', when: null, show: '' }, + tags: [], + type: 'email', + kickbox: { enabled: false }, + persistent: true, + unique: false, + protected: false, + defaultValue: '', + suffix: '', + prefix: '', + placeholder: '', + key: 'email', + label: 'Email', + inputType: 'email', + tableView: true, + input: true, }, - 'timePicker': { - 'hourStep': 1, - 'minuteStep': 1, - 'showMeridian': true, - 'readonlyInput': false, - 'mousewheel': true, - 'arrowkeys': true + { + conditional: { eq: '', when: null, show: '' }, + tags: [], + type: 'password', + persistent: true, + protected: true, + suffix: '', + prefix: '', + placeholder: '', + key: 'password', + label: 'Password', + inputType: 'password', + tableView: false, + input: true, }, - 'protected': false, - 'persistent': true, - 'validate': {'required': false, 'custom': ''}, - 'type': 'datetime', - 'tags': [], - 'conditional': {'show': '', 'when': null, 'eq': ''} - }, { - 'type': 'button', - 'theme': 'primary', - 'disableOnInvalid': false, - 'action': 'submit', - 'block': false, - 'rightIcon': '', - 'leftIcon': '', - 'size': 'md', - 'key': 'submit', - 'tableView': false, - 'label': 'Submit', - 'input': true - }], - 'owner': '553dbfc08d22d5cb1a7024f2', - 'submissionAccess': [{'type': 'create_all', 'roles': []}, { - 'type': 'read_all', - 'roles': ['58704bed7cc4b7006c4b8a6f'] - }, {'type': 'update_all', 'roles': []}, {'type': 'delete_all', 'roles': []}, { - 'type': 'create_own', - 'roles': ['58704bed7cc4b7006c4b8a6f'] - }, {'type': 'read_own', 'roles': []}, {'type': 'update_own', 'roles': []}, { - 'type': 'delete_own', - 'roles': [] - }, {'type': 'team_read', 'roles': []}, {'type': 'team_write', 'roles': []}, {'type': 'team_admin', 'roles': []}], - 'access': [{'type': 'create_all', 'roles': []}, { - 'type': 'read_all', - 'roles': ['58704bed7cc4b7006c4b8a6d', '58704bed7cc4b7006c4b8a6e', '58704bed7cc4b7006c4b8a6f'] - }, {'type': 'update_all', 'roles': []}, {'type': 'delete_all', 'roles': []}, { - 'type': 'create_own', - 'roles': [] - }, {'type': 'read_own', 'roles': []}, {'type': 'update_own', 'roles': []}, { - 'type': 'delete_own', - 'roles': [] - }, {'type': 'team_read', 'roles': []}, {'type': 'team_write', 'roles': []}, {'type': 'team_admin', 'roles': []}], - 'tags': [] + { + validate: { + custom: "valid = (input == '{{ password }}') ? true : 'Passwords must match.';", + }, + conditional: { eq: '', when: null, show: '' }, + tags: [], + type: 'password', + persistent: true, + protected: true, + suffix: '', + prefix: '', + placeholder: '', + key: 'verifyPassword', + label: 'Verify Password', + inputType: 'password', + tableView: false, + input: true, + }, + { + maxDate: null, + minDate: null, + input: true, + tableView: true, + label: 'Date', + key: 'date', + placeholder: '', + format: 'yyyy-MM-dd hh:mm', + enableDate: true, + enableTime: true, + defaultDate: '', + datepickerMode: 'day', + datePicker: { + showWeeks: true, + startingDay: 0, + initDate: '', + minMode: 'day', + maxMode: 'year', + yearRange: '20', + datepickerMode: 'day', + }, + timePicker: { + hourStep: 1, + minuteStep: 1, + showMeridian: true, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, + }, + protected: false, + persistent: true, + validate: { required: false, custom: '' }, + type: 'datetime', + tags: [], + conditional: { show: '', when: null, eq: '' }, + }, + { + type: 'button', + theme: 'primary', + disableOnInvalid: false, + action: 'submit', + block: false, + rightIcon: '', + leftIcon: '', + size: 'md', + key: 'submit', + tableView: false, + label: 'Submit', + input: true, + }, + ], + owner: '553dbfc08d22d5cb1a7024f2', + submissionAccess: [ + { type: 'create_all', roles: [] }, + { + type: 'read_all', + roles: ['58704bed7cc4b7006c4b8a6f'], + }, + { type: 'update_all', roles: [] }, + { type: 'delete_all', roles: [] }, + { + type: 'create_own', + roles: ['58704bed7cc4b7006c4b8a6f'], + }, + { type: 'read_own', roles: [] }, + { type: 'update_own', roles: [] }, + { + type: 'delete_own', + roles: [], + }, + { type: 'team_read', roles: [] }, + { type: 'team_write', roles: [] }, + { type: 'team_admin', roles: [] }, + ], + access: [ + { type: 'create_all', roles: [] }, + { + type: 'read_all', + roles: ['58704bed7cc4b7006c4b8a6d', '58704bed7cc4b7006c4b8a6e', '58704bed7cc4b7006c4b8a6f'], + }, + { type: 'update_all', roles: [] }, + { type: 'delete_all', roles: [] }, + { + type: 'create_own', + roles: [], + }, + { type: 'read_own', roles: [] }, + { type: 'update_own', roles: [] }, + { + type: 'delete_own', + roles: [], + }, + { type: 'team_read', roles: [] }, + { type: 'team_write', roles: [] }, + { type: 'team_admin', roles: [] }, + ], + tags: [], }, tests: { 'Test valid submission'(form, done) { @@ -196,26 +230,33 @@ export default { password: '123test', verifyPassword: '123test', date: Harness.getDate(), - submit: false - } + submit: false, + }, }); done(); }, 'Test invalid email'(form, done) { - Harness.testErrors(form, { - data: { - date: Harness.getDate(), - firstName: 'test', - lastName: 'test2', - email: 'bademail', - submit: false, - password: '', - verifyPassword: '' - } - }, [{ - component: 'email', - message: 'Email must be a valid email.' - }], done); - } - } + Harness.testErrors( + form, + { + data: { + date: Harness.getDate(), + firstName: 'test', + lastName: 'test2', + email: 'bademail', + submit: false, + password: '', + verifyPassword: '', + }, + }, + [ + { + component: 'email', + message: 'Email must be a valid email.', + }, + ], + done, + ); + }, + }, }; diff --git a/test/forms/simpleTwoPagesWizard.d.ts b/test/forms/simpleTwoPagesWizard.d.ts index 06732d2991..3086f77f9f 100644 --- a/test/forms/simpleTwoPagesWizard.d.ts +++ b/test/forms/simpleTwoPagesWizard.d.ts @@ -1,51 +1,51 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: { - title: string; - breadcrumbClickable: boolean; - buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; - key: string; - type: string; - label: string; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; - input: boolean; - tableView: boolean; + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: { + title: string; + breadcrumbClickable: boolean; + buttonSettings: { + previous: boolean; + cancel: boolean; + next: boolean; + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: { - roles: never[]; - type: string; - }[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + input: boolean; + tableView: boolean; + }[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: { + roles: never[]; + type: string; + }[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/simpleTwoPagesWizard.js b/test/forms/simpleTwoPagesWizard.js index 74058176a6..4c845400db 100644 --- a/test/forms/simpleTwoPagesWizard.js +++ b/test/forms/simpleTwoPagesWizard.js @@ -1,167 +1,163 @@ export default { - '_id': '60817a3afc88e7048cbe5260', - 'type': 'form', - 'tags': [], - 'owner': '6038bed737595d104cfc358a', - 'components': [ - { - 'title': 'Wizard Page 1', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + _id: '60817a3afc88e7048cbe5260', + type: 'form', + tags: [], + owner: '6038bed737595d104cfc358a', + components: [ + { + title: 'Wizard Page 1', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'wizardPage1', - 'type': 'panel', - 'label': 'Page 1', - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'wizardPage1', + type: 'panel', + label: 'Page 1', + components: [ { - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField', - 'type': 'textfield', - 'input': true - } + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Wizard Page 2', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + title: 'Wizard Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'wizardPage2', - 'type': 'panel', - 'label': 'Page 2', - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'wizardPage2', + type: 'panel', + label: 'Page 2', + components: [ { - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField1', - 'type': 'textfield', - 'input': true - } + label: 'Text Field', + tableView: true, + key: 'textField1', + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Simple Two Page Wizard', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Simple Two Page Wizard', + display: 'wizard', + access: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ - '6038c83637595d104cfc3594', - '6038c83637595d104cfc3595', - '6038c83637595d104cfc3596' - ], - 'type': 'read_all' + roles: ['6038c83637595d104cfc3594', '6038c83637595d104cfc3595', '6038c83637595d104cfc3596'], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'submissionAccess': [ + submissionAccess: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [], - 'type': 'read_all' + roles: [], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'simpleTwoPageWizard', - 'path': 'simpletwopagewizard', - 'project': '6038c83637595d104cfc3593', - 'created': '2021-04-22T13:29:30.495Z', - 'modified': '2021-04-22T13:42:43.365Z', - 'machineName': 'dqroghuntybetsh:simpleTwoPageWizard' + controller: '', + properties: {}, + settings: {}, + name: 'simpleTwoPageWizard', + path: 'simpletwopagewizard', + project: '6038c83637595d104cfc3593', + created: '2021-04-22T13:29:30.495Z', + modified: '2021-04-22T13:42:43.365Z', + machineName: 'dqroghuntybetsh:simpleTwoPageWizard', }; diff --git a/test/forms/simpleWebform.js b/test/forms/simpleWebform.js index cea2975fe3..514b21d0a5 100644 --- a/test/forms/simpleWebform.js +++ b/test/forms/simpleWebform.js @@ -7,7 +7,7 @@ export default { validateWhenHidden: false, key: 'textField', type: 'textfield', - input: true + input: true, }, { type: 'button', @@ -15,9 +15,9 @@ export default { key: 'testSubmit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], display: 'form', type: 'form', -}; \ No newline at end of file +}; diff --git a/test/forms/simpleWizard.js b/test/forms/simpleWizard.js index 0a3881b6d5..8765b41503 100644 --- a/test/forms/simpleWizard.js +++ b/test/forms/simpleWizard.js @@ -20,7 +20,7 @@ export default { yearRows: 4, yearColumns: 5, minDate: null, - maxDate: null + maxDate: null, }, enableMinDateInput: false, enableMaxDateInput: false, @@ -43,7 +43,7 @@ export default { minDate: null, disableWeekends: false, disableWeekdays: false, - maxDate: null + maxDate: null, }, placeholder: '', prefix: '', @@ -80,19 +80,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -116,11 +116,11 @@ export default { showMeridian: true, readonlyInput: false, mousewheel: true, - arrowkeys: true + arrowkeys: true, }, customOptions: {}, - id: 'en3rnqk' - } + id: 'en3rnqk', + }, ], input: false, placeholder: '', @@ -160,19 +160,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -185,7 +185,7 @@ export default { lazyLoad: false, theme: 'default', breadcrumb: 'default', - id: 'elx26b' + id: 'elx26b', }, { title: 'Page 2', @@ -202,7 +202,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', displayMask: '', @@ -246,7 +246,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -258,7 +258,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -269,7 +269,7 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, @@ -278,8 +278,8 @@ export default { addons: [], inputType: 'text', id: 'euivbgw', - defaultValue: null - } + defaultValue: null, + }, ], input: false, placeholder: '', @@ -319,19 +319,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -344,7 +344,7 @@ export default { lazyLoad: false, theme: 'default', breadcrumb: 'default', - id: 'edm9ey' + id: 'edm9ey', }, { title: 'Page 3', @@ -361,7 +361,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', displayMask: '', @@ -405,7 +405,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -417,7 +417,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -428,7 +428,7 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, @@ -437,8 +437,8 @@ export default { addons: [], inputType: 'text', id: 'ea1kbm9', - defaultValue: null - } + defaultValue: null, + }, ], input: false, placeholder: '', @@ -478,19 +478,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -503,7 +503,7 @@ export default { lazyLoad: false, theme: 'default', breadcrumb: 'default', - id: 'ej30156' + id: 'ej30156', }, { title: 'Page 4', @@ -520,7 +520,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', displayMask: '', @@ -564,7 +564,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -576,7 +576,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -587,7 +587,7 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, @@ -596,8 +596,8 @@ export default { addons: [], inputType: 'text', id: 'e6qc7ks', - defaultValue: null - } + defaultValue: null, + }, ], input: false, placeholder: '', @@ -637,19 +637,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -662,7 +662,7 @@ export default { lazyLoad: false, theme: 'default', breadcrumb: 'default', - id: 'e6kih4r' + id: 'e6kih4r', }, { title: 'Page 5', @@ -679,7 +679,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', displayMask: '', @@ -723,7 +723,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -735,7 +735,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -746,7 +746,7 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, @@ -755,7 +755,7 @@ export default { addons: [], inputType: 'text', id: 'edk9c1d', - defaultValue: null + defaultValue: null, }, { input: true, @@ -790,7 +790,7 @@ export default { calculateValue: '', calculateServer: false, widget: { - type: 'input' + type: 'input', }, attributes: {}, validateOn: 'change', @@ -805,19 +805,19 @@ export default { maxLength: '', pattern: '', minWords: '', - maxWords: '' + maxWords: '', }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -838,8 +838,8 @@ export default { wysiwyg: false, editor: '', fixedSize: true, - id: 'e7dd0e8' - } + id: 'e7dd0e8', + }, ], input: false, placeholder: '', @@ -879,19 +879,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -904,8 +904,8 @@ export default { lazyLoad: false, theme: 'default', breadcrumb: 'default', - id: 'euq9qhq' - } + id: 'euq9qhq', + }, ], display: 'wizard', type: 'form', diff --git a/test/forms/simpleWizardWithRequiredFields.js b/test/forms/simpleWizardWithRequiredFields.js index 6791f19dcd..0badb355bb 100644 --- a/test/forms/simpleWizardWithRequiredFields.js +++ b/test/forms/simpleWizardWithRequiredFields.js @@ -1,140 +1,140 @@ export default { - "_id": "6740b7686f3a02cd736b5750", - "title": "form123", - "name": "form123", - "path": "form123", - "type": "form", - "display": "wizard", - "tags": [], - "access": [ + _id: '6740b7686f3a02cd736b5750', + title: 'form123', + name: 'form123', + path: 'form123', + type: 'form', + display: 'wizard', + tags: [], + access: [ + { + type: 'read_all', + roles: [ + '6740b7686f3a02cd736b56f3', + '6740b7686f3a02cd736b56f7', + '6740b7686f3a02cd736b56fb', + '6740b7686f3a02cd736b56ff', + '6740b7686f3a02cd736b5703', + '6740b7686f3a02cd736b5707', + '6740b7686f3a02cd736b570b', + '6740b7686f3a02cd736b570f', + '6740b7686f3a02cd736b5713', + '6740b7686f3a02cd736b5717', + '6740b7686f3a02cd736b571b', + '6740b7686f3a02cd736b571f', + '6740b7686f3a02cd736b5723', + '6740b7686f3a02cd736b5727', + '6740b7686f3a02cd736b572b', + '6740b7686f3a02cd736b572f', + '6740b7686f3a02cd736b5733', + '6740b7686f3a02cd736b5737', + '6740b7686f3a02cd736b573b', + '6740b7686f3a02cd736b573f', + '6740b7686f3a02cd736b5743', + '6740b7686f3a02cd736b5747', + '6740b7686f3a02cd736b574b', + ], + }, + ], + submissionAccess: [], + owner: null, + components: [ + { + title: 'Page 1', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: false, + next: true, + }, + navigateOnEnter: false, + saveOnEnter: false, + scrollToTop: false, + collapsible: false, + key: 'page1', + type: 'panel', + label: 'Page 1', + components: [ { - "type": "read_all", - "roles": [ - "6740b7686f3a02cd736b56f3", - "6740b7686f3a02cd736b56f7", - "6740b7686f3a02cd736b56fb", - "6740b7686f3a02cd736b56ff", - "6740b7686f3a02cd736b5703", - "6740b7686f3a02cd736b5707", - "6740b7686f3a02cd736b570b", - "6740b7686f3a02cd736b570f", - "6740b7686f3a02cd736b5713", - "6740b7686f3a02cd736b5717", - "6740b7686f3a02cd736b571b", - "6740b7686f3a02cd736b571f", - "6740b7686f3a02cd736b5723", - "6740b7686f3a02cd736b5727", - "6740b7686f3a02cd736b572b", - "6740b7686f3a02cd736b572f", - "6740b7686f3a02cd736b5733", - "6740b7686f3a02cd736b5737", - "6740b7686f3a02cd736b573b", - "6740b7686f3a02cd736b573f", - "6740b7686f3a02cd736b5743", - "6740b7686f3a02cd736b5747", - "6740b7686f3a02cd736b574b" - ] - } - ], - "submissionAccess": [], - "owner": null, - "components": [ - { - "title": "Page 1", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": false, - "next": true - }, - "navigateOnEnter": false, - "saveOnEnter": false, - "scrollToTop": false, - "collapsible": false, - "key": "page1", - "type": "panel", - "label": "Page 1", - "components": [ - { - "label": "Text Field", - "applyMaskOn": "change", - "tableView": true, - "validate": { - "required": true - }, - "key": "textField", - "type": "textfield", - "input": true - } - ], - "input": false, - "tableView": false + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + validate: { + required: true, + }, + key: 'textField', + type: 'textfield', + input: true, }, + ], + input: false, + tableView: false, + }, + { + title: 'Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + navigateOnEnter: false, + saveOnEnter: false, + scrollToTop: false, + collapsible: false, + key: 'page2', + type: 'panel', + label: 'Page 2', + components: [ { - "title": "Page 2", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "navigateOnEnter": false, - "saveOnEnter": false, - "scrollToTop": false, - "collapsible": false, - "key": "page2", - "type": "panel", - "label": "Page 2", - "components": [ - { - "label": "Number", - "applyMaskOn": "change", - "mask": false, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "truncateMultipleSpaces": false, - "key": "number", - "type": "number", - "input": true - } - ], - "input": false, - "tableView": false + label: 'Number', + applyMaskOn: 'change', + mask: false, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + truncateMultipleSpaces: false, + key: 'number', + type: 'number', + input: true, }, + ], + input: false, + tableView: false, + }, + { + title: 'Page 3', + label: 'Page 3', + type: 'panel', + key: 'page3', + components: [ { - "title": "Page 3", - "label": "Page 3", - "type": "panel", - "key": "page3", - "components": [ - { - "label": "Text Field", - "applyMaskOn": "change", - "tableView": true, - "validate": { - "required": true - }, - "validateWhenHidden": false, - "key": "textField1", - "type": "textfield", - "input": true - } - ], - "input": false, - "tableView": false - } - ], - "pdfComponents": [], - "settings": {}, - "properties": {}, - "machineName": "authoring-bsajzvvuohccvoq:form123", - "project": "6740b7686f3a02cd736b56e9", - "controller": "", - "revisions": "", - "submissionRevisions": "", - "_vid": 0, - "created": "2024-11-22T16:55:04.926Z", - "modified": "2024-11-22T16:55:04.928Z" -}; \ No newline at end of file + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + validate: { + required: true, + }, + validateWhenHidden: false, + key: 'textField1', + type: 'textfield', + input: true, + }, + ], + input: false, + tableView: false, + }, + ], + pdfComponents: [], + settings: {}, + properties: {}, + machineName: 'authoring-bsajzvvuohccvoq:form123', + project: '6740b7686f3a02cd736b56e9', + controller: '', + revisions: '', + submissionRevisions: '', + _vid: 0, + created: '2024-11-22T16:55:04.926Z', + modified: '2024-11-22T16:55:04.928Z', +}; diff --git a/test/forms/submissionSetter.d.ts b/test/forms/submissionSetter.d.ts index 811bea0075..2d1f9ff432 100644 --- a/test/forms/submissionSetter.d.ts +++ b/test/forms/submissionSetter.d.ts @@ -1,14 +1,16 @@ declare namespace _default { - const title: string; - namespace form { - const components: ({ - label: string; - mask: boolean; - tableView: boolean; - type: string; - input: boolean; - key: string; - components: ({ + const title: string; + namespace form { + const components: ( + | { + label: string; + mask: boolean; + tableView: boolean; + type: string; + input: boolean; + key: string; + components: ( + | { label: string; allowMultipleMasks: boolean; showWordCount: boolean; @@ -18,7 +20,7 @@ declare namespace _default { input: boolean; key: string; widget: { - type: string; + type: string; }; placeholder: string; prefix: string; @@ -49,20 +51,20 @@ declare namespace _default { clearOnRefresh: boolean; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - minLength: string; - maxLength: string; - minWords: string; - maxWords: string; - pattern: string; + required: boolean; + custom: string; + customPrivate: boolean; + minLength: string; + maxLength: string; + minWords: string; + maxWords: string; + pattern: string; }; conditional: { - show: null; - when: null; - eq: string; - json?: undefined; + show: null; + when: null; + eq: string; + json?: undefined; }; mask: boolean; inputType: string; @@ -70,9 +72,11 @@ declare namespace _default { id: string; columns?: undefined; autoAdjust?: undefined; - } | { - columns: ({ - components: { + } + | { + columns: ( + | { + components: { label: string; allowMultipleMasks: boolean; showWordCount: boolean; @@ -82,7 +86,7 @@ declare namespace _default { input: boolean; key: string; widget: { - type: string; + type: string; }; placeholder: string; prefix: string; @@ -113,76 +117,77 @@ declare namespace _default { clearOnRefresh: boolean; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - minLength: string; - maxLength: string; - minWords: string; - maxWords: string; - pattern: string; + required: boolean; + custom: string; + customPrivate: boolean; + minLength: string; + maxLength: string; + minWords: string; + maxWords: string; + pattern: string; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; mask: boolean; inputType: string; inputMask: string; id: string; - }[]; - width: number; - offset: number; - push: number; - pull: number; - type: string; - input: boolean; - key: string; - tableView: boolean; - label: string; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; - multiple: boolean; - defaultValue: null; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - dataGridLabel: boolean; - labelPosition: string; - labelWidth: number; - labelMargin: number; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: null; - refreshOn: string; - clearOnRefresh: boolean; - validateOn: string; - validate: { + }[]; + width: number; + offset: number; + push: number; + pull: number; + type: string; + input: boolean; + key: string; + tableView: boolean; + label: string; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + dataGridLabel: boolean; + labelPosition: string; + labelWidth: number; + labelMargin: number; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: null; + refreshOn: string; + clearOnRefresh: boolean; + validateOn: string; + validate: { required: boolean; custom: string; customPrivate: boolean; - }; - conditional: { + }; + conditional: { show: null; when: null; eq: string; - }; - id: string; - } | { - components: { + }; + id: string; + } + | { + components: { label: string; mask: boolean; tableView: boolean; @@ -219,71 +224,72 @@ declare namespace _default { clearOnRefresh: boolean; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - min: string; - max: string; - step: string; - integer: string; + required: boolean; + custom: string; + customPrivate: boolean; + min: string; + max: string; + step: string; + integer: string; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; id: string; - }[]; - width: number; - offset: number; - push: number; - pull: number; - type: string; - input: boolean; - key: string; - tableView: boolean; - label: string; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; - multiple: boolean; - defaultValue: null; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - dataGridLabel: boolean; - labelPosition: string; - labelWidth: number; - labelMargin: number; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: null; - refreshOn: string; - clearOnRefresh: boolean; - validateOn: string; - validate: { + }[]; + width: number; + offset: number; + push: number; + pull: number; + type: string; + input: boolean; + key: string; + tableView: boolean; + label: string; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + dataGridLabel: boolean; + labelPosition: string; + labelWidth: number; + labelMargin: number; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: null; + refreshOn: string; + clearOnRefresh: boolean; + validateOn: string; + validate: { required: boolean; custom: string; customPrivate: boolean; - }; - conditional: { + }; + conditional: { show: null; when: null; eq: string; - }; - id: string; - })[]; + }; + id: string; + } + )[]; label: string; mask: boolean; tableView: boolean; @@ -291,10 +297,10 @@ declare namespace _default { input: boolean; key: string; conditional: { - show: string; - when: string; - json: string; - eq: string; + show: string; + when: string; + json: string; + eq: string; }; customConditional: string; placeholder: string; @@ -327,14 +333,14 @@ declare namespace _default { clearOnRefresh: boolean; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - minLength?: undefined; - maxLength?: undefined; - minWords?: undefined; - maxWords?: undefined; - pattern?: undefined; + required: boolean; + custom: string; + customPrivate: boolean; + minLength?: undefined; + maxLength?: undefined; + minWords?: undefined; + maxWords?: undefined; + pattern?: undefined; }; autoAdjust: boolean; id: string; @@ -343,115 +349,121 @@ declare namespace _default { showCharCount?: undefined; inputType?: undefined; inputMask?: undefined; - })[]; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; - multiple: boolean; - defaultValue: null; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - dataGridLabel: boolean; - labelPosition: string; - labelWidth: number; - labelMargin: number; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: null; - refreshOn: string; - clearOnRefresh: boolean; - validateOn: string; - validate: { - required: boolean; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: null; - when: null; - eq: string; - }; - tree: boolean; - id: string; - disableOnInvalid?: undefined; - theme?: undefined; - size?: undefined; - leftIcon?: undefined; - rightIcon?: undefined; - block?: undefined; - action?: undefined; - } | { - type: string; - label: string; - key: string; - disableOnInvalid: boolean; - theme: string; - input: boolean; - tableView: boolean; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; - multiple: boolean; - defaultValue: null; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - dataGridLabel: boolean; - labelPosition: string; - labelWidth: number; - labelMargin: number; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: null; - refreshOn: string; - clearOnRefresh: boolean; - validateOn: string; - validate: { - required: boolean; - custom: string; - customPrivate: boolean; - }; - conditional: { - show: null; - when: null; - eq: string; - }; - size: string; - leftIcon: string; - rightIcon: string; - block: boolean; - action: string; - id: string; - mask?: undefined; - components?: undefined; - tree?: undefined; - })[]; - } - const tests: { - 'Should set submittion in form with container and layout components'(form: any, done: any): void; - }; + } + )[]; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + dataGridLabel: boolean; + labelPosition: string; + labelWidth: number; + labelMargin: number; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: null; + refreshOn: string; + clearOnRefresh: boolean; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + }; + conditional: { + show: null; + when: null; + eq: string; + }; + tree: boolean; + id: string; + disableOnInvalid?: undefined; + theme?: undefined; + size?: undefined; + leftIcon?: undefined; + rightIcon?: undefined; + block?: undefined; + action?: undefined; + } + | { + type: string; + label: string; + key: string; + disableOnInvalid: boolean; + theme: string; + input: boolean; + tableView: boolean; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + dataGridLabel: boolean; + labelPosition: string; + labelWidth: number; + labelMargin: number; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: null; + refreshOn: string; + clearOnRefresh: boolean; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + }; + conditional: { + show: null; + when: null; + eq: string; + }; + size: string; + leftIcon: string; + rightIcon: string; + block: boolean; + action: string; + id: string; + mask?: undefined; + components?: undefined; + tree?: undefined; + } + )[]; + } + const tests: { + 'Should set submittion in form with container and layout components'( + form: any, + done: any, + ): void; + }; } export default _default; diff --git a/test/forms/submissionSetter.js b/test/forms/submissionSetter.js index d94b68910e..abb31ef132 100644 --- a/test/forms/submissionSetter.js +++ b/test/forms/submissionSetter.js @@ -1,450 +1,463 @@ import Harness from '../../test/harness'; const initData = { - "data": { - "container": { - "name": "Alex", - "lastName": "Blume", - "age": 15 + data: { + container: { + name: 'Alex', + lastName: 'Blume', + age: 15, }, - "submit": false, + submit: false, }, - "metadata": {} -} + metadata: {}, +}; export default { title: 'Submittion test.', form: { - components: [{ - "label": "Container", - "mask": false, - "tableView": true, - "type": "container", - "input": true, - "key": "container", - "components": [{ - "label": "Name", - "allowMultipleMasks": false, - "showWordCount": false, - "showCharCount": false, - "tableView": true, - "type": "textfield", - "input": true, - "key": "name", - "widget": { - "type": "" - }, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "minLength": "", - "maxLength": "", - "minWords": "", - "maxWords": "", - "pattern": "" - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "mask": false, - "inputType": "text", - "inputMask": "", - "id": "ecdnsr" - }, { - "columns": [{ - "components": [{ - "label": "Last Name", - "allowMultipleMasks": false, - "showWordCount": false, - "showCharCount": false, - "tableView": true, - "type": "textfield", - "input": true, - "key": "lastName", - "widget": { - "type": "" + components: [ + { + label: 'Container', + mask: false, + tableView: true, + type: 'container', + input: true, + key: 'container', + components: [ + { + label: 'Name', + allowMultipleMasks: false, + showWordCount: false, + showCharCount: false, + tableView: true, + type: 'textfield', + input: true, + key: 'name', + widget: { + type: '', }, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "minLength": "", - "maxLength": "", - "minWords": "", - "maxWords": "", - "pattern": "" + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + minLength: '', + maxLength: '', + minWords: '', + maxWords: '', + pattern: '', }, - "conditional": { - "show": null, - "when": null, - "eq": "" + conditional: { + show: null, + when: null, + eq: '', }, - "mask": false, - "inputType": "text", - "inputMask": "", - "id": "entjs8" - }], - "width": 6, - "offset": 0, - "push": 0, - "pull": 0, - "type": "column", - "input": true, - "key": "", - "tableView": true, - "label": "", - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": null, - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false + mask: false, + inputType: 'text', + inputMask: '', + id: 'ecdnsr', }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "id": "ejvq5sq" - }, { - "components": [{ - "label": "Age", - "mask": false, - "tableView": true, - "type": "number", - "input": true, - "key": "age", - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": null, - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "min": "", - "max": "", - "step": "any", - "integer": "" + { + columns: [ + { + components: [ + { + label: 'Last Name', + allowMultipleMasks: false, + showWordCount: false, + showCharCount: false, + tableView: true, + type: 'textfield', + input: true, + key: 'lastName', + widget: { + type: '', + }, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + minLength: '', + maxLength: '', + minWords: '', + maxWords: '', + pattern: '', + }, + conditional: { + show: null, + when: null, + eq: '', + }, + mask: false, + inputType: 'text', + inputMask: '', + id: 'entjs8', + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + type: 'column', + input: true, + key: '', + tableView: true, + label: '', + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: null, + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + }, + conditional: { + show: null, + when: null, + eq: '', + }, + id: 'ejvq5sq', + }, + { + components: [ + { + label: 'Age', + mask: false, + tableView: true, + type: 'number', + input: true, + key: 'age', + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: null, + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + min: '', + max: '', + step: 'any', + integer: '', + }, + conditional: { + show: null, + when: null, + eq: '', + }, + id: 'etzejs8', + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + type: 'column', + input: true, + key: '', + tableView: true, + label: '', + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: null, + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + }, + conditional: { + show: null, + when: null, + eq: '', + }, + id: 'e3h50ec', + }, + ], + label: 'Columns', + mask: false, + tableView: false, + type: 'columns', + input: false, + key: 'columns', + conditional: { + show: '', + when: '', + json: '', + eq: '', }, - "conditional": { - "show": null, - "when": null, - "eq": "" + customConditional: '', + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: false, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: null, + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, }, - "id": "etzejs8" - }], - "width": 6, - "offset": 0, - "push": 0, - "pull": 0, - "type": "column", - "input": true, - "key": "", - "tableView": true, - "label": "", - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": null, - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" + autoAdjust: false, + id: 'egl50l', }, - "id": "e3h50ec" - }], - "label": "Columns", - "mask": false, - "tableView": false, - "type": "columns", - "input": false, - "key": "columns", - "conditional": { - "show": "", - "when": "", - "json": "", - "eq": "" + ], + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + dataGridLabel: false, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: null, + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, }, - "customConditional": "", - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": null, - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false + conditional: { + show: null, + when: null, + eq: '', }, - "autoAdjust": false, - "id": "egl50l" - }], - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": false, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": null, - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" + tree: true, + id: 'enm95bq', }, - "tree": true, - "id": "enm95bq" - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "theme": "primary", - "input": true, - "tableView": true, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": true, - "dataGridLabel": true, - "labelPosition": "top", - "labelWidth": 30, - "labelMargin": 3, - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "widget": null, - "refreshOn": "", - "clearOnRefresh": false, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" + { + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + theme: 'primary', + input: true, + tableView: true, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + dataGridLabel: true, + labelPosition: 'top', + labelWidth: 30, + labelMargin: 3, + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + widget: null, + refreshOn: '', + clearOnRefresh: false, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + }, + conditional: { + show: null, + when: null, + eq: '', + }, + size: 'md', + leftIcon: '', + rightIcon: '', + block: false, + action: 'submit', + id: 'elaidi', }, - "size": "md", - "leftIcon": "", - "rightIcon": "", - "block": false, - "action": "submit", - "id": "elaidi" - }] + ], }, tests: { 'Should set submittion in form with container and layout components'(form, done) { Harness.testSubmission(form, initData); done(); - } - } -} + }, + }, +}; diff --git a/test/forms/testApiKeysUniquifying.d.ts b/test/forms/testApiKeysUniquifying.d.ts index 6e91de72be..08424e3bbb 100644 --- a/test/forms/testApiKeysUniquifying.d.ts +++ b/test/forms/testApiKeysUniquifying.d.ts @@ -1,45 +1,47 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; tableView: boolean; key: string; type: string; input: boolean; components: { + label: string; + tableView: boolean; + rowDrafts: boolean; + key: string; + type: string; + displayAsTable: boolean; + input: boolean; + components: { label: string; - tableView: boolean; - rowDrafts: boolean; - key: string; - type: string; - displayAsTable: boolean; - input: boolean; - components: { + columns: { + components: { label: string; - columns: { - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - currentWidth: number; - }[]; + tableView: boolean; key: string; type: string; input: boolean; - tableView: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + currentWidth: number; }[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + }[]; }[]; collapsible?: undefined; disableOnInvalid?: undefined; - } | { + } + | { collapsible: boolean; key: string; type: string; @@ -47,51 +49,53 @@ declare namespace _default { input: boolean; tableView: boolean; components: { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: {}[]; - key: string; - type: string; - input: boolean; - components: ({ + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: {}[]; + key: string; + type: string; + input: boolean; + components: ( + | { key: string; type: string; label: string; input: boolean; tableView: boolean; components: { - label: string; - columns: { - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - currentWidth: number; + label: string; + columns: { + components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; - key: string; - type: string; - input: boolean; - tableView: boolean; + width: number; + offset: number; + push: number; + pull: number; + size: string; + currentWidth: number; + }[]; + key: string; + type: string; + input: boolean; + tableView: boolean; }[]; mask?: undefined; delimiter?: undefined; requireDecimal?: undefined; inputFormat?: undefined; truncateMultipleSpaces?: undefined; - } | { + } + | { label: string; mask: boolean; tableView: boolean; @@ -103,10 +107,12 @@ declare namespace _default { type: string; input: boolean; components?: undefined; - })[]; + } + )[]; }[]; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -115,8 +121,9 @@ declare namespace _default { tableView: boolean; components?: undefined; collapsible?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/testApiKeysUniquifying.js b/test/forms/testApiKeysUniquifying.js index 65843e0b9e..189dceba1b 100644 --- a/test/forms/testApiKeysUniquifying.js +++ b/test/forms/testApiKeysUniquifying.js @@ -27,15 +27,15 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true - } + input: true, + }, ], width: 6, offset: 0, push: 0, pull: 0, size: 'md', - currentWidth: 6 + currentWidth: 6, }, { components: [], @@ -44,17 +44,17 @@ export default { push: 0, pull: 0, size: 'md', - currentWidth: 6 - } + currentWidth: 6, + }, ], key: 'columns', type: 'columns', input: false, - tableView: false - } - ] - } - ] + tableView: false, + }, + ], + }, + ], }, { collapsible: false, @@ -72,9 +72,7 @@ export default { enableRowGroups: false, initEmpty: false, tableView: false, - defaultValue: [ - {} - ], + defaultValue: [{}], key: 'dataGrid', type: 'datagrid', input: true, @@ -96,15 +94,15 @@ export default { tableView: false, key: 'checkbox', type: 'checkbox', - input: true - } + input: true, + }, ], width: 6, offset: 0, push: 0, pull: 0, size: 'md', - currentWidth: 6 + currentWidth: 6, }, { components: [], @@ -113,15 +111,15 @@ export default { push: 0, pull: 0, size: 'md', - currentWidth: 6 - } + currentWidth: 6, + }, ], key: 'columns', type: 'columns', input: false, - tableView: false - } - ] + tableView: false, + }, + ], }, { label: 'Number', @@ -133,11 +131,11 @@ export default { truncateMultipleSpaces: false, key: 'number', type: 'number', - input: true - } - ] - } - ] + input: true, + }, + ], + }, + ], }, { type: 'button', @@ -145,8 +143,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FIO-3476', display: 'form', diff --git a/test/forms/translationErrorMessages.js b/test/forms/translationErrorMessages.js index f4a78afd5e..a591051ee2 100644 --- a/test/forms/translationErrorMessages.js +++ b/test/forms/translationErrorMessages.js @@ -1,25 +1,24 @@ export default { - name: "textrandom", - path: "textrandom", - type: "form", - display: "form", - components: [ - { - label: "My textField", - applyMaskOn: "change", - tableView: true, - validate: { - minLength: 5, - minWords: 2 - }, - validateWhenHidden: false, - key: "textField", - type: "textfield", - input: true - }, - ], - created: "2024-11-14T15:52:30.402Z", - modified: "2024-11-15T07:03:41.301Z", - machineName: "glvmkehegcvqksg:text", -} - + name: 'textrandom', + path: 'textrandom', + type: 'form', + display: 'form', + components: [ + { + label: 'My textField', + applyMaskOn: 'change', + tableView: true, + validate: { + minLength: 5, + minWords: 2, + }, + validateWhenHidden: false, + key: 'textField', + type: 'textfield', + input: true, + }, + ], + created: '2024-11-14T15:52:30.402Z', + modified: '2024-11-15T07:03:41.301Z', + machineName: 'glvmkehegcvqksg:text', +}; diff --git a/test/forms/translationTestForm.d.ts b/test/forms/translationTestForm.d.ts index a9f1eb0b02..d2630f8c78 100644 --- a/test/forms/translationTestForm.d.ts +++ b/test/forms/translationTestForm.d.ts @@ -1,27 +1,29 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; selectThreshold: number; validate: { - required: boolean; - onlyAvailableItems: boolean; + required: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; indexeddb: { - filter: {}; + filter: {}; }; input: boolean; showValidations?: undefined; - } | { + } + | { label: string; showValidations: boolean; tableView: boolean; @@ -32,11 +34,12 @@ declare namespace _default { selectThreshold?: undefined; validate?: undefined; indexeddb?: undefined; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/translationTestForm.js b/test/forms/translationTestForm.js index ed1d10e390..16c1cc9d3a 100644 --- a/test/forms/translationTestForm.js +++ b/test/forms/translationTestForm.js @@ -1,22 +1,34 @@ export default { - "type": "form", - "components": [ - { - "label": "select", - "tableView": true, - "data": { "values": [ { "label": "select", "value": "select" }, { "label": "error", "value": "error" } ] }, - "selectThreshold": 0.3, - "validate": { "required": true, "onlyAvailableItems": false }, - "key": "select", - "type": "select", - "indexeddb": { "filter": {} }, - "input": true - }, - { "label": "Submit", "showValidations": false, "tableView": false, "key": "submit", "type": "button", "input": true } - ], - "title": "test translation", - "display": "form", - "name": "testTranslation", - "path": "testtranslation", - "machineName": "cjksbatcpbhyfbs:testTranslation", + type: 'form', + components: [ + { + label: 'select', + tableView: true, + data: { + values: [ + { label: 'select', value: 'select' }, + { label: 'error', value: 'error' }, + ], + }, + selectThreshold: 0.3, + validate: { required: true, onlyAvailableItems: false }, + key: 'select', + type: 'select', + indexeddb: { filter: {} }, + input: true, + }, + { + label: 'Submit', + showValidations: false, + tableView: false, + key: 'submit', + type: 'button', + input: true, + }, + ], + title: 'test translation', + display: 'form', + name: 'testTranslation', + path: 'testtranslation', + machineName: 'cjksbatcpbhyfbs:testTranslation', }; diff --git a/test/forms/truncateMultipleSpaces.d.ts b/test/forms/truncateMultipleSpaces.d.ts index 468d748448..3aecf82604 100644 --- a/test/forms/truncateMultipleSpaces.d.ts +++ b/test/forms/truncateMultipleSpaces.d.ts @@ -1,26 +1,28 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; tableView: boolean; truncateMultipleSpaces: boolean; validate: { - required: boolean; - minLength?: undefined; - maxLength?: undefined; + required: boolean; + minLength?: undefined; + maxLength?: undefined; }; key: string; type: string; input: boolean; autoExpand?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; tableView: boolean; validate: { - minLength: number; - maxLength: number; - required?: undefined; + minLength: number; + maxLength: number; + required?: undefined; }; key: string; type: string; @@ -28,21 +30,23 @@ declare namespace _default { truncateMultipleSpaces: boolean; autoExpand?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; autoExpand: boolean; tableView: boolean; validate: { - minLength: number; - maxLength: number; - required?: undefined; + minLength: number; + maxLength: number; + required?: undefined; }; key: string; type: string; input: boolean; truncateMultipleSpaces: boolean; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -52,8 +56,9 @@ declare namespace _default { truncateMultipleSpaces?: undefined; validate?: undefined; autoExpand?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/truncateMultipleSpaces.js b/test/forms/truncateMultipleSpaces.js index c58c3cff23..b8353a33b7 100644 --- a/test/forms/truncateMultipleSpaces.js +++ b/test/forms/truncateMultipleSpaces.js @@ -6,23 +6,23 @@ export default { tableView: true, truncateMultipleSpaces: true, validate: { - required: true + required: true, }, key: 'textField1', type: 'textfield', - input: true + input: true, }, { label: 'Text Field', tableView: true, validate: { minLength: 5, - maxLength: 10 + maxLength: 10, }, key: 'textField', type: 'textfield', input: true, - truncateMultipleSpaces: true + truncateMultipleSpaces: true, }, { label: 'Text Area', @@ -30,12 +30,12 @@ export default { tableView: true, validate: { minLength: 5, - maxLength: 10 + maxLength: 10, }, key: 'textArea', type: 'textarea', input: true, - truncateMultipleSpaces: true + truncateMultipleSpaces: true, }, { type: 'button', @@ -43,8 +43,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FIO-2503', display: 'form', diff --git a/test/forms/updateErrorClasses-widgets.d.ts b/test/forms/updateErrorClasses-widgets.d.ts index b35d1c3064..969247bdb1 100644 --- a/test/forms/updateErrorClasses-widgets.d.ts +++ b/test/forms/updateErrorClasses-widgets.d.ts @@ -1,6 +1,7 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; description: string; tooltip: string; @@ -25,31 +26,31 @@ declare namespace _default { calculateServer: boolean; allowCalculateOverride: boolean; validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; errorLabel: string; key: string; conditional: { - show: null; - when: null; - eq: string; - json: string; + show: null; + when: null; + eq: string; + json: string; }; customConditional: string; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; name: string; @@ -90,7 +91,8 @@ declare namespace _default { action?: undefined; disableOnInvalid?: undefined; theme?: undefined; - } | { + } + | { label: string; labelPosition: string; displayInTimezone: string; @@ -111,29 +113,29 @@ declare namespace _default { enableDate: boolean; enableMinDateInput: boolean; datePicker: { - minDate: null; - maxDate: null; - disable: string; - disableFunction: string; - disableWeekends: boolean; - disableWeekdays: boolean; - showWeeks: boolean; - startingDay: number; - initDate: string; - minMode: string; - maxMode: string; - yearRows: number; - yearColumns: number; + minDate: null; + maxDate: null; + disable: string; + disableFunction: string; + disableWeekends: boolean; + disableWeekdays: boolean; + showWeeks: boolean; + startingDay: number; + initDate: string; + minMode: string; + maxMode: string; + yearRows: number; + yearColumns: number; }; enableMaxDateInput: boolean; enableTime: boolean; timePicker: { - showMeridian: boolean; - hourStep: number; - minuteStep: number; - readonlyInput: boolean; - mousewheel: boolean; - arrowkeys: boolean; + showMeridian: boolean; + hourStep: number; + minuteStep: number; + readonlyInput: boolean; + mousewheel: boolean; + arrowkeys: boolean; }; multiple: boolean; defaultValue: string; @@ -149,56 +151,56 @@ declare namespace _default { calculateServer: boolean; allowCalculateOverride: boolean; validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; unique: boolean; validateOn: string; errorLabel: string; key: string; conditional: { - show: null; - when: null; - eq: string; - json: string; + show: null; + when: null; + eq: string; + json: string; }; customConditional: string; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; timezone: string; input: boolean; widget: { - type: string; - displayInTimezone: string; - locale: string; - useLocaleSettings: boolean; - allowInput: boolean; - mode: string; - enableTime: boolean; - noCalendar: boolean; - format: string; - hourIncrement: number; - minuteIncrement: number; - time_24hr: boolean; - minDate: null; - disabledDates: string; - disableWeekends: boolean; - disableWeekdays: boolean; - disableFunction: string; - maxDate: null; + type: string; + displayInTimezone: string; + locale: string; + useLocaleSettings: boolean; + allowInput: boolean; + mode: string; + enableTime: boolean; + noCalendar: boolean; + format: string; + hourIncrement: number; + minuteIncrement: number; + time_24hr: boolean; + minDate: null; + disabledDates: string; + disableWeekends: boolean; + disableWeekdays: boolean; + disableFunction: string; + maxDate: null; }; prefix: string; suffix: string; @@ -220,7 +222,8 @@ declare namespace _default { action?: undefined; disableOnInvalid?: undefined; theme?: undefined; - } | { + } + | { input: boolean; label: string; tableView: boolean; @@ -253,49 +256,49 @@ declare namespace _default { calculateValue: string; calculateServer: boolean; widget: { - type: string; - displayInTimezone?: undefined; - locale?: undefined; - useLocaleSettings?: undefined; - allowInput?: undefined; - mode?: undefined; - enableTime?: undefined; - noCalendar?: undefined; - format?: undefined; - hourIncrement?: undefined; - minuteIncrement?: undefined; - time_24hr?: undefined; - minDate?: undefined; - disabledDates?: undefined; - disableWeekends?: undefined; - disableWeekdays?: undefined; - disableFunction?: undefined; - maxDate?: undefined; + type: string; + displayInTimezone?: undefined; + locale?: undefined; + useLocaleSettings?: undefined; + allowInput?: undefined; + mode?: undefined; + enableTime?: undefined; + noCalendar?: undefined; + format?: undefined; + hourIncrement?: undefined; + minuteIncrement?: undefined; + time_24hr?: undefined; + minDate?: undefined; + disabledDates?: undefined; + disableWeekends?: undefined; + disableWeekdays?: undefined; + disableFunction?: undefined; + maxDate?: undefined; }; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - customMessage?: undefined; - json?: undefined; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + customMessage?: undefined; + json?: undefined; }; conditional: { - show: null; - when: null; - eq: string; - json?: undefined; + show: null; + when: null; + eq: string; + json?: undefined; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -328,14 +331,15 @@ declare namespace _default { defaultDate?: undefined; timezone?: undefined; datepickerMode?: undefined; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const name: string; - const path: string; - const project: string; - const controller: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const name: string; + const path: string; + const project: string; + const controller: string; } export default _default; diff --git a/test/forms/updateErrorClasses-widgets.js b/test/forms/updateErrorClasses-widgets.js index e8bbcb8aed..e403dfe4a4 100644 --- a/test/forms/updateErrorClasses-widgets.js +++ b/test/forms/updateErrorClasses-widgets.js @@ -1,274 +1,274 @@ export default { - 'type': 'form', - 'components': [ - { - 'label': 'Show date', - 'description': '', - 'tooltip': '', - 'shortcut': '', - 'inputType': 'checkbox', - 'customClass': '', - 'tabindex': '', - 'hidden': false, - 'hideLabel': false, - 'autofocus': false, - 'disabled': false, - 'tableView': false, - 'modalEdit': false, - 'persistent': true, - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'allowCalculateOverride': false, - 'validate': { - 'required': false, - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'strictDateValidation': false, - 'multiple': false, - 'unique': false - }, - 'errorLabel': '', - 'key': 'showDate', - 'conditional': { - 'show': null, - 'when': null, - 'eq': '', - 'json': '' - }, - 'customConditional': '', - 'overlay': { - 'style': '', - 'page': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' - }, - 'type': 'checkbox', - 'name': '', - 'value': '', - 'input': true, - 'placeholder': '', - 'prefix': '', - 'suffix': '', - 'multiple': false, - 'unique': false, - 'refreshOn': '', - 'labelPosition': 'right', - 'widget': null, - 'validateOn': 'change', - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'dataGridLabel': true, - 'id': 'ehdh7jr', - 'defaultValue': false + type: 'form', + components: [ + { + label: 'Show date', + description: '', + tooltip: '', + shortcut: '', + inputType: 'checkbox', + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + strictDateValidation: false, + multiple: false, + unique: false, }, - { - 'label': 'condtional date', - 'labelPosition': 'top', - 'displayInTimezone': 'viewer', - 'useLocaleSettings': false, - 'allowInput': true, - 'format': 'yyyy-MM-dd', - 'placeholder': '', - 'description': '', - 'tooltip': '', - 'customClass': '', - 'tabindex': '', - 'hidden': false, - 'hideLabel': false, - 'autofocus': false, - 'disabled': false, - 'tableView': false, - 'modalEdit': false, - 'enableDate': true, - 'enableMinDateInput': false, - 'datePicker': { - 'minDate': null, - 'maxDate': null, - 'disable': '', - 'disableFunction': '', - 'disableWeekends': false, - 'disableWeekdays': false, - 'showWeeks': true, - 'startingDay': 0, - 'initDate': '', - 'minMode': 'day', - 'maxMode': 'year', - 'yearRows': 4, - 'yearColumns': 5 - }, - 'enableMaxDateInput': false, - 'enableTime': false, - 'timePicker': { - 'showMeridian': true, - 'hourStep': 1, - 'minuteStep': 1, - 'readonlyInput': false, - 'mousewheel': true, - 'arrowkeys': true - }, - 'multiple': false, - 'defaultValue': '', - 'defaultDate': '', - 'persistent': true, - 'protected': false, - 'dbIndex': false, - 'encrypted': false, - 'redrawOn': '', - 'clearOnHide': true, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'allowCalculateOverride': false, - 'validate': { - 'required': true, - 'customMessage': '', - 'custom': '', - 'customPrivate': false, - 'json': '', - 'strictDateValidation': false, - 'multiple': false, - 'unique': false - }, - 'unique': false, - 'validateOn': 'change', - 'errorLabel': '', - 'key': 'condtionalDate', - 'conditional': { - 'show': null, - 'when': null, - 'eq': '', - 'json': '' - }, - 'customConditional': 'show = data.showDate', - 'overlay': { - 'style': '', - 'page': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' - }, - 'type': 'datetime', - 'timezone': '', - 'input': true, - 'widget': { - 'type': 'calendar', - 'displayInTimezone': 'viewer', - 'locale': 'en', - 'useLocaleSettings': false, - 'allowInput': true, - 'mode': 'single', - 'enableTime': false, - 'noCalendar': false, - 'format': 'yyyy-MM-dd', - 'hourIncrement': 1, - 'minuteIncrement': 1, - 'time_24hr': false, - 'minDate': null, - 'disabledDates': '', - 'disableWeekends': false, - 'disableWeekdays': false, - 'disableFunction': '', - 'maxDate': null - }, - 'prefix': '', - 'suffix': '', - 'refreshOn': '', - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'datepickerMode': 'day', - 'id': 'e7l3bu6' + errorLabel: '', + key: 'showDate', + conditional: { + show: null, + when: null, + eq: '', + json: '', }, - { - 'input': true, - 'label': 'Submit', - 'tableView': false, - 'key': 'submit', - 'type': 'button', - 'placeholder': '', - 'prefix': '', - 'customClass': '', - 'suffix': '', - 'multiple': false, - 'defaultValue': null, - 'protected': false, - 'unique': false, - 'persistent': false, - 'hidden': false, - 'clearOnHide': true, - 'refreshOn': '', - 'redrawOn': '', - 'modalEdit': false, - 'labelPosition': 'top', - 'description': '', - 'errorLabel': '', - 'tooltip': '', - 'hideLabel': false, - 'tabindex': '', - 'disabled': false, - 'autofocus': false, - 'dbIndex': false, - 'customDefaultValue': '', - 'calculateValue': '', - 'calculateServer': false, - 'widget': { - 'type': 'input' - }, - 'validateOn': 'change', - 'validate': { - 'required': false, - 'custom': '', - 'customPrivate': false, - 'strictDateValidation': false, - 'multiple': false, - 'unique': false - }, - 'conditional': { - 'show': null, - 'when': null, - 'eq': '' - }, - 'overlay': { - 'style': '', - 'left': '', - 'top': '', - 'width': '', - 'height': '' - }, - 'allowCalculateOverride': false, - 'encrypted': false, - 'showCharCount': false, - 'showWordCount': false, - 'allowMultipleMasks': false, - 'size': 'md', - 'leftIcon': '', - 'rightIcon': '', - 'block': false, - 'action': 'submit', - 'disableOnInvalid': false, - 'theme': 'primary', - 'dataGridLabel': true, - 'id': 'e70j2cm' - } - ], - 'revisions': '', - '_vid': 0, - 'title': 'Test Form', - 'display': 'form', - 'name': 'testForm', - 'path': 'testform', - 'project': '5d1f50939cf719592fa10249', - 'controller': '' - }; + customConditional: '', + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'checkbox', + name: '', + value: '', + input: true, + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + unique: false, + refreshOn: '', + labelPosition: 'right', + widget: null, + validateOn: 'change', + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + dataGridLabel: true, + id: 'ehdh7jr', + defaultValue: false, + }, + { + label: 'condtional date', + labelPosition: 'top', + displayInTimezone: 'viewer', + useLocaleSettings: false, + allowInput: true, + format: 'yyyy-MM-dd', + placeholder: '', + description: '', + tooltip: '', + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + autofocus: false, + disabled: false, + tableView: false, + modalEdit: false, + enableDate: true, + enableMinDateInput: false, + datePicker: { + minDate: null, + maxDate: null, + disable: '', + disableFunction: '', + disableWeekends: false, + disableWeekdays: false, + showWeeks: true, + startingDay: 0, + initDate: '', + minMode: 'day', + maxMode: 'year', + yearRows: 4, + yearColumns: 5, + }, + enableMaxDateInput: false, + enableTime: false, + timePicker: { + showMeridian: true, + hourStep: 1, + minuteStep: 1, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, + }, + multiple: false, + defaultValue: '', + defaultDate: '', + persistent: true, + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validate: { + required: true, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + validateOn: 'change', + errorLabel: '', + key: 'condtionalDate', + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: 'show = data.showDate', + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'datetime', + timezone: '', + input: true, + widget: { + type: 'calendar', + displayInTimezone: 'viewer', + locale: 'en', + useLocaleSettings: false, + allowInput: true, + mode: 'single', + enableTime: false, + noCalendar: false, + format: 'yyyy-MM-dd', + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: false, + minDate: null, + disabledDates: '', + disableWeekends: false, + disableWeekdays: false, + disableFunction: '', + maxDate: null, + }, + prefix: '', + suffix: '', + refreshOn: '', + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + datepickerMode: 'day', + id: 'e7l3bu6', + }, + { + input: true, + label: 'Submit', + tableView: false, + key: 'submit', + type: 'button', + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: true, + refreshOn: '', + redrawOn: '', + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: { + type: 'input', + }, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + }, + conditional: { + show: null, + when: null, + eq: '', + }, + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', + }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + size: 'md', + leftIcon: '', + rightIcon: '', + block: false, + action: 'submit', + disableOnInvalid: false, + theme: 'primary', + dataGridLabel: true, + id: 'e70j2cm', + }, + ], + revisions: '', + _vid: 0, + title: 'Test Form', + display: 'form', + name: 'testForm', + path: 'testform', + project: '5d1f50939cf719592fa10249', + controller: '', +}; diff --git a/test/forms/validationCalls.js b/test/forms/validationCalls.js index 1924f30a1f..26f14b4d2d 100644 --- a/test/forms/validationCalls.js +++ b/test/forms/validationCalls.js @@ -4,60 +4,60 @@ import Harness from '../harness'; export default { title: 'Form Validation Test', - + form: { - "components": [ + components: [ { - "label": "validationCall Text 1", - "allowMultipleMasks": false, - "showWordCount": false, - "showCharCount": false, - "tableView": true, - "alwaysEnabled": false, - "type": "textfield", - "input": true, - "key": "textField", - "defaultValue": "", - "validate": { - "custom": "console.log('1');\nvalid = true;", - "unique": false, - "customMessage": "", - "json": "" + label: 'validationCall Text 1', + allowMultipleMasks: false, + showWordCount: false, + showCharCount: false, + tableView: true, + alwaysEnabled: false, + type: 'textfield', + input: true, + key: 'textField', + defaultValue: '', + validate: { + custom: "console.log('1');\nvalid = true;", + unique: false, + customMessage: '', + json: '', }, - "inputFormat": "plain", - "encrypted": false + inputFormat: 'plain', + encrypted: false, }, { - "label": "validationCall Number 1", - "mask": false, - "tableView": true, - "alwaysEnabled": false, - "type": "number", - "input": true, - "key": "number", - "validate": { - "custom": "console.log('2');\nvalid = true;", - "customMessage": "", - "json": "" + label: 'validationCall Number 1', + mask: false, + tableView: true, + alwaysEnabled: false, + type: 'number', + input: true, + key: 'number', + validate: { + custom: "console.log('2');\nvalid = true;", + customMessage: '', + json: '', }, - "delimiter": false, - "requireDecimal": false, - "encrypted": false, - "properties": {}, - "tags": [] + delimiter: false, + requireDecimal: false, + encrypted: false, + properties: {}, + tags: [], }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "theme": "primary", - "input": true, - "tableView": true - } - ] + type: 'button', + label: 'Submit', + key: 'submit', + disableOnInvalid: true, + theme: 'primary', + input: true, + tableView: true, + }, + ], }, - + tests: { 'validationCall Text 1 change should not trigger number validation'(form, done) { const [textfield, number] = form.components; @@ -110,6 +110,6 @@ export default { assert.equal(numberEvalSpy.callCount, 1); done(); }, 250); - } - } + }, + }, }; diff --git a/test/forms/webformWIthNestedWizard.js b/test/forms/webformWIthNestedWizard.js index 1b0d1857eb..16cf16f0ea 100644 --- a/test/forms/webformWIthNestedWizard.js +++ b/test/forms/webformWIthNestedWizard.js @@ -1,53 +1,53 @@ export default { - type: 'form', - components: [ - { - label: 'Parent Text', - tableView: true, - validate: { - required: true - }, - key: 'parentText', - type: 'textfield', - input: true - }, - { - label: 'Parent Number', - mask: false, - spellcheck: true, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - validate: { - required: true - }, - key: 'parentNumber', - type: 'number', - input: true - }, - { - label: 'Form Nested', - tableView: true, - useOriginalRevision: false, - key: 'formNested', - type: 'form', - input: true - }, - { - label: 'Submit', - showValidations: false, - tableView: false, - key: 'submit', - type: 'button', - input: true, - saveOnEnter: false - } - ], - revisions: '', - _vid: 0, - title: 'webform with nested wizard', - display: 'form', - name: 'webformWithNestedWizard', - path: 'webformwithnestedwizard' + type: 'form', + components: [ + { + label: 'Parent Text', + tableView: true, + validate: { + required: true, + }, + key: 'parentText', + type: 'textfield', + input: true, + }, + { + label: 'Parent Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + validate: { + required: true, + }, + key: 'parentNumber', + type: 'number', + input: true, + }, + { + label: 'Form Nested', + tableView: true, + useOriginalRevision: false, + key: 'formNested', + type: 'form', + input: true, + }, + { + label: 'Submit', + showValidations: false, + tableView: false, + key: 'submit', + type: 'button', + input: true, + saveOnEnter: false, + }, + ], + revisions: '', + _vid: 0, + title: 'webform with nested wizard', + display: 'form', + name: 'webformWithNestedWizard', + path: 'webformwithnestedwizard', }; diff --git a/test/forms/wizardChildForm.js b/test/forms/wizardChildForm.js index d7c6b8a109..a61d356153 100644 --- a/test/forms/wizardChildForm.js +++ b/test/forms/wizardChildForm.js @@ -1,82 +1,78 @@ export default { - '_id': '605aef5b8363cd1d20e40be7', - 'type': 'form', - 'tags': [], - 'owner': '6038bed737595d104cfc358a', - 'components': [ + _id: '605aef5b8363cd1d20e40be7', + type: 'form', + tags: [], + owner: '6038bed737595d104cfc358a', + components: [ { - 'title': 'Child Page 1', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + title: 'Child Page 1', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'childPage1', - 'type': 'panel', - 'label': 'Page 1', - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'childPage1', + type: 'panel', + label: 'Page 1', + components: [ { - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField', - 'type': 'textfield', - 'input': true - } + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Child Page 2', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + title: 'Child Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'childPage2', - 'type': 'panel', - 'label': 'Child Page 2', - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'childPage2', + type: 'panel', + label: 'Child Page 2', + components: [ { - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField1', - 'type': 'textfield', - 'input': true - } + label: 'Text Field', + tableView: true, + key: 'textField1', + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Child-Wizard', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Child-Wizard', + display: 'wizard', + access: [ { - 'roles': [ - '6038c83637595d104cfc3594', - '6038c83637595d104cfc3595', - '6038c83637595d104cfc3596' - ], - 'type': 'read_all' - } + roles: ['6038c83637595d104cfc3594', '6038c83637595d104cfc3595', '6038c83637595d104cfc3596'], + type: 'read_all', + }, ], - 'submissionAccess': [], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'childWizard', - 'path': 'childwizard', - 'project': '6038c83637595d104cfc3593', - 'created': '2021-03-24T07:50:51.842Z', - 'modified': '2021-03-24T07:50:51.855Z', - 'machineName': 'dqroghuntybetsh:childWizard' + submissionAccess: [], + controller: '', + properties: {}, + settings: {}, + name: 'childWizard', + path: 'childwizard', + project: '6038c83637595d104cfc3593', + created: '2021-03-24T07:50:51.842Z', + modified: '2021-03-24T07:50:51.855Z', + machineName: 'dqroghuntybetsh:childWizard', }; diff --git a/test/forms/wizardConditionalPages.d.ts b/test/forms/wizardConditionalPages.d.ts index 907f65945b..78865e79d9 100644 --- a/test/forms/wizardConditionalPages.d.ts +++ b/test/forms/wizardConditionalPages.d.ts @@ -1,20 +1,21 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - defaultValue: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + defaultValue: boolean; }[]; input: boolean; tableView: boolean; @@ -22,17 +23,18 @@ declare namespace _default { buttonSettings?: undefined; collapsible?: undefined; conditional?: undefined; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; @@ -40,50 +42,52 @@ declare namespace _default { buttonSettings?: undefined; collapsible?: undefined; conditional?: undefined; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; tableView: boolean; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; label: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: never[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: never[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardConditionalPages.js b/test/forms/wizardConditionalPages.js index 114d600119..25f9c3c5fd 100644 --- a/test/forms/wizardConditionalPages.js +++ b/test/forms/wizardConditionalPages.js @@ -1,96 +1,92 @@ export default { - '_id': '5f47eb138aeb8509a99f61d6', - 'type': 'form', - 'tags': [], - 'owner': '5e7d0c4ddae30a69f1c75eee', - 'components': [ + _id: '5f47eb138aeb8509a99f61d6', + type: 'form', + tags: [], + owner: '5e7d0c4ddae30a69f1c75eee', + components: [ { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'label': 'A', - 'tableView': false, - 'key': 'a', - 'type': 'checkbox', - 'input': true, - 'defaultValue': false - } + label: 'A', + tableView: false, + key: 'a', + type: 'checkbox', + input: true, + defaultValue: false, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'components': [ + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ { - 'label': 'B', - 'tableView': true, - 'key': 'b', - 'type': 'textfield', - 'input': true - } + label: 'B', + tableView: true, + key: 'b', + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 3', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + title: 'Page 3', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'collapsible': false, - 'tableView': false, - 'key': 'page3', - 'conditional': { - 'show': true, - 'when': 'a', - 'eq': 'true' + collapsible: false, + tableView: false, + key: 'page3', + conditional: { + show: true, + when: 'a', + eq: 'true', }, - 'type': 'panel', - 'label': 'Page 3', - 'components': [ + type: 'panel', + label: 'Page 3', + components: [ { - 'label': 'C', - 'tableView': true, - 'key': 'c', - 'type': 'textfield', - 'input': true - } + label: 'C', + tableView: true, + key: 'c', + type: 'textfield', + input: true, + }, ], - 'input': false - } + input: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Conditional Wizard Test', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Conditional Wizard Test', + display: 'wizard', + access: [ { - 'roles': [ - '5f47eadc8aeb8509a99f61b6', - '5f47eadc8aeb8509a99f61b7', - '5f47eadc8aeb8509a99f61b8' - ], - 'type': 'read_all' - } + roles: ['5f47eadc8aeb8509a99f61b6', '5f47eadc8aeb8509a99f61b7', '5f47eadc8aeb8509a99f61b8'], + type: 'read_all', + }, ], - 'submissionAccess': [], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'conditionalWizardTest', - 'path': 'conditionalwizardtest', - 'project': '5f47eadc8aeb8509a99f61b5', - 'created': '2020-08-27T17:19:15.128Z', - 'modified': '2020-08-27T17:19:15.131Z', - 'machineName': 'ywvqkdghljvoegd:conditionalWizardTest' + submissionAccess: [], + controller: '', + properties: {}, + settings: {}, + name: 'conditionalWizardTest', + path: 'conditionalwizardtest', + project: '5f47eadc8aeb8509a99f61b5', + created: '2020-08-27T17:19:15.128Z', + modified: '2020-08-27T17:19:15.131Z', + machineName: 'ywvqkdghljvoegd:conditionalWizardTest', }; diff --git a/test/forms/wizardForHtmlRenderModeTest.d.ts b/test/forms/wizardForHtmlRenderModeTest.d.ts index f19ec2b03b..20492d0acf 100644 --- a/test/forms/wizardForHtmlRenderModeTest.d.ts +++ b/test/forms/wizardForHtmlRenderModeTest.d.ts @@ -1,97 +1,98 @@ declare namespace _default { - export { form }; - export { submission }; + export { form }; + export { submission }; } export default _default; declare namespace form { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - min: string; - max: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - step: string; - integer: string; - }; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - input: boolean; + }; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + min: string; + max: string; + strictDateValidation: boolean; + multiple: boolean; unique: boolean; - refreshOn: string; - dataGridLabel: boolean; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - id: string; - defaultValue: null; + step: string; + integer: string; + }; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + unique: boolean; + refreshOn: string; + dataGridLabel: boolean; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + id: string; + defaultValue: null; }[]; input: boolean; placeholder: string; @@ -126,24 +127,24 @@ declare namespace form { attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -155,93 +156,94 @@ declare namespace form { theme: string; breadcrumb: string; id: string; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; - type: string; - input: boolean; - refreshOn: string; - dataGridLabel: boolean; - inputType: string; - id: string; - defaultValue: null; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + dataGridLabel: boolean; + inputType: string; + id: string; + defaultValue: null; }[]; input: boolean; placeholder: string; @@ -276,24 +278,24 @@ declare namespace form { attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -305,15 +307,16 @@ declare namespace form { theme: string; breadcrumb: string; id: string; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } declare namespace submission { - namespace data { - const number: number; - const textField: string; - } + namespace data { + const number: number; + const textField: string; + } } diff --git a/test/forms/wizardForHtmlRenderModeTest.js b/test/forms/wizardForHtmlRenderModeTest.js index 04c5dcb486..a68b151110 100644 --- a/test/forms/wizardForHtmlRenderModeTest.js +++ b/test/forms/wizardForHtmlRenderModeTest.js @@ -1,317 +1,324 @@ const form = { - "type": "form", - "components": [{ - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "components": [{ - "label": "Number", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + type: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Number', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + min: '', + max: '', + strictDateValidation: false, + multiple: false, + unique: false, + step: 'any', + integer: '', + }, + errorLabel: '', + key: 'number', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'number', + input: true, + unique: false, + refreshOn: '', + dataGridLabel: false, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: 'exvx54', + defaultValue: null, + }, + ], + input: false, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + tableView: false, + modalEdit: false, + dataGridLabel: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "customClass": "", - "tabindex": "", - "autocomplete": "", - "hidden": false, - "hideLabel": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": false, - "modalEdit": false, - "multiple": false, - "persistent": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "min": "", - "max": "", - "strictDateValidation": false, - "multiple": false, - "unique": false, - "step": "any", - "integer": "" + conditional: { + show: null, + when: null, + eq: '', }, - "errorLabel": "", - "key": "number", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "number", - "input": true, - "unique": false, - "refreshOn": "", - "dataGridLabel": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "id": "exvx54", - "defaultValue": null - }], - "input": false, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "tableView": false, - "modalEdit": false, - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + tree: false, + theme: 'default', + breadcrumb: 'default', + id: 'er8pwjk', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "tree": false, - "theme": "default", - "breadcrumb": "default", - "id": "er8pwjk" - }, { - "title": "Page 2", - "label": "Page 2", - "type": "panel", - "key": "page2", - "components": [{ - "label": "Text Field", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + { + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ + { + label: 'Text Field', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'textField', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'textfield', + input: true, + refreshOn: '', + dataGridLabel: false, + inputType: 'text', + id: 'ejmj41t', + defaultValue: null, + }, + ], + input: false, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + tableView: false, + modalEdit: false, + dataGridLabel: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "inputMask": "", - "allowMultipleMasks": false, - "customClass": "", - "tabindex": "", - "autocomplete": "", - "hidden": false, - "hideLabel": false, - "showWordCount": false, - "showCharCount": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": true, - "modalEdit": false, - "multiple": false, - "persistent": true, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "case": "", - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "pattern": "", - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "minLength": "", - "maxLength": "", - "strictDateValidation": false, - "multiple": false, - "unique": false + conditional: { + show: null, + when: null, + eq: '', }, - "unique": false, - "errorLabel": "", - "key": "textField", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "textfield", - "input": true, - "refreshOn": "", - "dataGridLabel": false, - "inputType": "text", - "id": "ejmj41t", - "defaultValue": null - }], - "input": false, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "tableView": false, - "modalEdit": false, - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + tree: false, + theme: 'default', + breadcrumb: 'default', + id: 'ew0o7w', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "tree": false, - "theme": "default", - "breadcrumb": "default", - "id": "ew0o7w" - }], - "title": "wizard first page subm test", - "display": "wizard", - "name": "wizardFirstPageSubmTest", - "path": "wizardfirstpagesubmtest", + ], + title: 'wizard first page subm test', + display: 'wizard', + name: 'wizardFirstPageSubmTest', + path: 'wizardfirstpagesubmtest', }; const submission = { data: { number: 111, - textField: 'test' - } + textField: 'test', + }, }; export default { diff --git a/test/forms/wizardNavigateOrSaveOnEnter.d.ts b/test/forms/wizardNavigateOrSaveOnEnter.d.ts index e059dca74d..a656bb706b 100644 --- a/test/forms/wizardNavigateOrSaveOnEnter.d.ts +++ b/test/forms/wizardNavigateOrSaveOnEnter.d.ts @@ -1,40 +1,43 @@ declare namespace _default { - export { form }; + export { form }; } export default _default; declare namespace form { - const display: string; - const components: ({ + const display: string; + const components: ( + | { title: string; label: string; type: string; key: string; navigateOnEnter: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; saveOnEnter?: undefined; - } | { + } + | { title: string; label: string; type: string; key: string; saveOnEnter: boolean; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; navigateOnEnter?: undefined; - })[]; + } + )[]; } diff --git a/test/forms/wizardNavigateOrSaveOnEnter.js b/test/forms/wizardNavigateOrSaveOnEnter.js index 494f15eb54..a06ce36050 100644 --- a/test/forms/wizardNavigateOrSaveOnEnter.js +++ b/test/forms/wizardNavigateOrSaveOnEnter.js @@ -1,51 +1,61 @@ const form = { - display: "wizard", - components: [{ - title: "Page 1", - label: "Page 1", - type: "panel", - key: "page1", + display: 'wizard', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', navigateOnEnter: true, - components: [{ - label: "Text Field", + components: [ + { + label: 'Text Field', tableView: true, - key: "textField", - type: "textfield", - input: true - }], + key: 'textField', + type: 'textfield', + input: true, + }, + ], input: false, - tableView: false - }, { - title: "Page 2", - label: "Page 2", - type: "panel", - key: "page2", + tableView: false, + }, + { + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', navigateOnEnter: true, - components: [{ - label: "Text Field", + components: [ + { + label: 'Text Field', tableView: true, - key: "textField1", - type: "textfield", - input: true - }], + key: 'textField1', + type: 'textfield', + input: true, + }, + ], input: false, - tableView: false - }, { - title: "Page 3", - label: "Page 3", - type: "panel", - key: "page3", + tableView: false, + }, + { + title: 'Page 3', + label: 'Page 3', + type: 'panel', + key: 'page3', saveOnEnter: true, - components: [{ - label: "Text Field", + components: [ + { + label: 'Text Field', tableView: true, - key: "textField2", - type: "textfield", - input: true - }], + key: 'textField2', + type: 'textfield', + input: true, + }, + ], input: false, - tableView: false - }] + tableView: false, + }, + ], }; export default { form }; diff --git a/test/forms/wizardParentForm.js b/test/forms/wizardParentForm.js index 3e41f74740..2791972a47 100644 --- a/test/forms/wizardParentForm.js +++ b/test/forms/wizardParentForm.js @@ -1,225 +1,221 @@ export default { - '_id': '605aefc88363cd1d20e40bee', - 'type': 'form', - 'tags': [], - 'owner': '6038bed737595d104cfc358a', - 'components': [ - { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + _id: '605aefc88363cd1d20e40bee', + type: 'form', + tags: [], + owner: '6038bed737595d104cfc358a', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'label': 'Radio', - 'optionsLabelPosition': 'right', - 'inline': false, - 'tableView': false, - 'values': [ + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ { - 'label': 'yes', - 'value': 'yes', - 'shortcut': '' + label: 'yes', + value: 'yes', + shortcut: '', }, { - 'label': 'no', - 'value': 'no', - 'shortcut': '' - } + label: 'no', + value: 'no', + shortcut: '', + }, ], - 'validate': { - 'onlyAvailableItems': false + validate: { + onlyAvailableItems: false, }, - 'key': 'radio1', - 'type': 'radio', - 'input': true + key: 'radio1', + type: 'radio', + input: true, }, { - 'label': 'Checkbox', - 'tableView': false, - 'key': 'checkbox', - 'type': 'checkbox', - 'input': true, - 'defaultValue': false - } + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + defaultValue: false, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 2', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + title: 'Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'page2', - 'conditional': { - 'show': true, - 'when': 'radio1', - 'eq': 'yes' + scrollToTop: false, + collapsible: false, + key: 'page2', + conditional: { + show: true, + when: 'radio1', + eq: 'yes', }, - 'type': 'panel', - 'label': 'Page 2', - 'components': [ + type: 'panel', + label: 'Page 2', + components: [ { - 'label': 'Text Field', - 'tableView': true, - 'key': 'textFieldNearForm', - 'conditional': { - 'show': true, - 'when': 'checkbox', - 'eq': 'true' + label: 'Text Field', + tableView: true, + key: 'textFieldNearForm', + conditional: { + show: true, + when: 'checkbox', + eq: 'true', }, - 'type': 'textfield', - 'input': true + type: 'textfield', + input: true, }, { - 'label': 'Form', - 'tableView': true, + label: 'Form', + tableView: true, // 'form': '605aef5b8363cd1d20e40be7', - 'useOriginalRevision': false, - 'key': 'formNested', - 'type': 'form', - 'input': true - } + useOriginalRevision: false, + key: 'formNested', + type: 'form', + input: true, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 3', - 'label': 'Page 3', - 'type': 'panel', - 'key': 'page3', - 'components': [ + title: 'Page 3', + label: 'Page 3', + type: 'panel', + key: 'page3', + components: [ { - 'label': 'Number', - 'mask': false, - 'spellcheck': true, - 'tableView': false, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'key': 'number', - 'type': 'number', - 'input': true - } + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Parent-Wizard', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Parent-Wizard', + display: 'wizard', + access: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ - '6038c83637595d104cfc3594', - '6038c83637595d104cfc3595', - '6038c83637595d104cfc3596' - ], - 'type': 'read_all' + roles: ['6038c83637595d104cfc3594', '6038c83637595d104cfc3595', '6038c83637595d104cfc3596'], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'submissionAccess': [ + submissionAccess: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [], - 'type': 'read_all' + roles: [], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'parentWizard', - 'path': 'parentwizard', - 'project': '6038c83637595d104cfc3593', - 'created': '2021-03-24T07:52:40.971Z', - 'modified': '2021-03-25T07:50:31.265Z', - 'machineName': 'dqroghuntybetsh:parentWizard' + controller: '', + properties: {}, + settings: {}, + name: 'parentWizard', + path: 'parentwizard', + project: '6038c83637595d104cfc3593', + created: '2021-03-24T07:52:40.971Z', + modified: '2021-03-25T07:50:31.265Z', + machineName: 'dqroghuntybetsh:parentWizard', }; diff --git a/test/forms/wizardPermission.d.ts b/test/forms/wizardPermission.d.ts index db857823f7..86c4095d8d 100644 --- a/test/forms/wizardPermission.d.ts +++ b/test/forms/wizardPermission.d.ts @@ -1,91 +1,91 @@ declare namespace _default { - const _id: string; - const title: string; - const name: string; - const path: string; - const type: string; - const display: string; - const tags: never[]; - const access: { - type: string; - roles: string[]; + const _id: string; + const title: string; + const name: string; + const path: string; + const type: string; + const display: string; + const tags: never[]; + const access: { + type: string; + roles: string[]; + }[]; + const submissionAccess: { + type: string; + roles: string[]; + }[]; + const owner: string; + const components: { + title: string; + label: string; + type: string; + key: string; + components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; - const submissionAccess: { - type: string; - roles: string[]; + input: boolean; + tableView: boolean; + }[]; + const settings: {}; + const properties: {}; + const project: string; + const controller: string; + const revisions: string; + const submissionRevisions: string; + const _vid: number; + const created: string; + const modified: string; + const machineName: string; + namespace fieldMatchAccess { + export const read: { + formFieldPath: string; + value: string; + operator: string; + valueType: string; + roles: never[]; }[]; - const owner: string; - const components: { - title: string; - label: string; - type: string; - key: string; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; - input: boolean; - tableView: boolean; + export const write: { + formFieldPath: string; + value: string; + operator: string; + valueType: string; + roles: never[]; }[]; - const settings: {}; - const properties: {}; - const project: string; - const controller: string; - const revisions: string; - const submissionRevisions: string; - const _vid: number; - const created: string; - const modified: string; - const machineName: string; - namespace fieldMatchAccess { - export const read: { - formFieldPath: string; - value: string; - operator: string; - valueType: string; - roles: never[]; - }[]; - export const write: { - formFieldPath: string; - value: string; - operator: string; - valueType: string; - roles: never[]; - }[]; - export const create: { - formFieldPath: string; - value: string; - operator: string; - valueType: string; - roles: never[]; - }[]; - export const admin: { - formFieldPath: string; - value: string; - operator: string; - valueType: string; - roles: never[]; - }[]; - const _delete: { - formFieldPath: string; - value: string; - operator: string; - valueType: string; - roles: never[]; - }[]; - export { _delete as delete }; - export const update: { - formFieldPath: string; - value: string; - operator: string; - valueType: string; - roles: never[]; - }[]; - const _id_1: string; - export { _id_1 as _id }; - } + export const create: { + formFieldPath: string; + value: string; + operator: string; + valueType: string; + roles: never[]; + }[]; + export const admin: { + formFieldPath: string; + value: string; + operator: string; + valueType: string; + roles: never[]; + }[]; + const _delete: { + formFieldPath: string; + value: string; + operator: string; + valueType: string; + roles: never[]; + }[]; + export { _delete as delete }; + export const update: { + formFieldPath: string; + value: string; + operator: string; + valueType: string; + roles: never[]; + }[]; + const _id_1: string; + export { _id_1 as _id }; + } } export default _default; diff --git a/test/forms/wizardPermission.js b/test/forms/wizardPermission.js index 67c6ea733f..a6afd9b944 100644 --- a/test/forms/wizardPermission.js +++ b/test/forms/wizardPermission.js @@ -21,11 +21,7 @@ export default { }, { type: 'read_all', - roles: [ - '62ead292aeb6eb30ebf49a58', - '62ead292aeb6eb30ebf49a5d', - '62ead292aeb6eb30ebf49a62', - ], + roles: ['62ead292aeb6eb30ebf49a58', '62ead292aeb6eb30ebf49a5d', '62ead292aeb6eb30ebf49a62'], }, { type: 'update_own', diff --git a/test/forms/wizardTestForm.d.ts b/test/forms/wizardTestForm.d.ts index bff6392262..8a5932f0c1 100644 --- a/test/forms/wizardTestForm.d.ts +++ b/test/forms/wizardTestForm.d.ts @@ -1,132 +1,141 @@ declare namespace _default { - export { form }; - export { submission }; - export { htmlModeValues }; + export { form }; + export { submission }; + export { htmlModeValues }; } export default _default; declare namespace form { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; label: string; type: string; key: string; input: boolean; tableView: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - breadcrumbClickable?: undefined; - buttonSettings?: undefined; - scrollToTop?: undefined; - collapsible?: undefined; - components?: undefined; - rowDrafts?: undefined; - } | { - breadcrumbClickable: boolean; - buttonSettings: { + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + breadcrumbClickable?: undefined; + buttonSettings?: undefined; + scrollToTop?: undefined; + collapsible?: undefined; + components?: undefined; + rowDrafts?: undefined; + } + | { + breadcrumbClickable: boolean; + buttonSettings: { previous: boolean; cancel: boolean; next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { label: string; tableView: boolean; validate: { - required: boolean; + required: boolean; }; key: string; type: string; input: boolean; - }[]; - rowDrafts?: undefined; - } | { - label: string; - tableView: boolean; - rowDrafts: boolean; - key: string; - type: string; - input: boolean; - components: { + }[]; + rowDrafts?: undefined; + } + | { + label: string; + tableView: boolean; + rowDrafts: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; selectThreshold: number; validate: { - onlyAvailableItems: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; indexeddb: { - filter: {}; + filter: {}; }; input: boolean; - }[]; - breadcrumbClickable?: undefined; - buttonSettings?: undefined; - scrollToTop?: undefined; - collapsible?: undefined; - })[]; - } | { + }[]; + breadcrumbClickable?: undefined; + buttonSettings?: undefined; + scrollToTop?: undefined; + collapsible?: undefined; + } + )[]; + } + | { title: string; label: string; type: string; key: string; - components: ({ - label: string; - columns: ({ - components: { - label: string; - tableView: boolean; - validate: { + components: ( + | { + label: string; + columns: ( + | { + components: { + label: string; + tableView: boolean; + validate: { required: boolean; - }; - key: string; - type: string; - input: boolean; - hideOnChildrenHidden: boolean; - defaultValue: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - } | { - components: { - label: string; - displayInTimezone: string; - format: string; - tableView: boolean; - enableMinDateInput: boolean; - datePicker: { + }; + key: string; + type: string; + input: boolean; + hideOnChildrenHidden: boolean; + defaultValue: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + | { + components: { + label: string; + displayInTimezone: string; + format: string; + tableView: boolean; + enableMinDateInput: boolean; + datePicker: { disableWeekends: boolean; disableWeekdays: boolean; - }; - enableMaxDateInput: boolean; - enableTime: boolean; - timePicker: { + }; + enableMaxDateInput: boolean; + enableTime: boolean; + timePicker: { showMeridian: boolean; - }; - key: string; - type: string; - input: boolean; - widget: { + }; + key: string; + type: string; + input: boolean; + widget: { type: string; displayInTimezone: string; locale: string; @@ -143,147 +152,155 @@ declare namespace form { disableWeekends: boolean; disableWeekdays: boolean; maxDate: null; - }; - hideOnChildrenHidden: boolean; - }[]; - width: number; - offset: number; - push: number; - pull: number; - size: string; - })[]; - key: string; - type: string; - input: boolean; - tableView: boolean; - reorder?: undefined; - addAnotherPosition?: undefined; - layoutFixed?: undefined; - enableRowGroups?: undefined; - initEmpty?: undefined; - defaultValue?: undefined; - components?: undefined; - } | { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: {}[]; - key: string; - type: string; - input: boolean; - components: { + }; + hideOnChildrenHidden: boolean; + }[]; + width: number; + offset: number; + push: number; + pull: number; + size: string; + } + )[]; + key: string; + type: string; + input: boolean; + tableView: boolean; + reorder?: undefined; + addAnotherPosition?: undefined; + layoutFixed?: undefined; + enableRowGroups?: undefined; + initEmpty?: undefined; + defaultValue?: undefined; + components?: undefined; + } + | { + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: {}[]; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - }[]; - columns?: undefined; - })[]; + }[]; + columns?: undefined; + } + )[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; label: string; type: string; key: string; - components: ({ - label: string; - key: string; - type: string; - input: boolean; - tableView: boolean; - components: { + components: ( + | { + label: string; + key: string; + type: string; + input: boolean; + tableView: boolean; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - }[]; - } | { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - components: { + }[]; + } + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; selectThreshold: number; validate: { - required: boolean; - onlyAvailableItems: boolean; + required: boolean; + onlyAvailableItems: boolean; }; key: string; type: string; indexeddb: { - filter: {}; + filter: {}; }; input: boolean; - }[]; - })[]; + }[]; + } + )[]; input: boolean; tableView: boolean; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const name: string; + const path: string; } declare namespace submission { - const _id: string; - const state: string; - namespace data { - const tags: string; - const textField: string; - const editGrid: { - select: string; - }[]; - const checkbox: boolean; - const dateTime: string; - const dataGrid: { - textField1: string; - }[]; - const email: string; - namespace container { - const select: string; - } - } -} -declare namespace htmlModeValues { - const tags_1: string; - export { tags_1 as tags }; - const textField_1: string; - export { textField_1 as textField }; - const editGrid_1: { - select: string; + const _id: string; + const state: string; + namespace data { + const tags: string; + const textField: string; + const editGrid: { + select: string; }[]; - export { editGrid_1 as editGrid }; - const checkbox_1: string; - export { checkbox_1 as checkbox }; - const dateTime_1: string; - export { dateTime_1 as dateTime }; - const dataGrid_1: { - textField1: string; + const checkbox: boolean; + const dateTime: string; + const dataGrid: { + textField1: string; }[]; - export { dataGrid_1 as dataGrid }; - const email_1: string; - export { email_1 as email }; - export namespace container_1 { - const select_1: string; - export { select_1 as select }; + const email: string; + namespace container { + const select: string; } - export { container_1 as container }; + } +} +declare namespace htmlModeValues { + const tags_1: string; + export { tags_1 as tags }; + const textField_1: string; + export { textField_1 as textField }; + const editGrid_1: { + select: string; + }[]; + export { editGrid_1 as editGrid }; + const checkbox_1: string; + export { checkbox_1 as checkbox }; + const dateTime_1: string; + export { dateTime_1 as dateTime }; + const dataGrid_1: { + textField1: string; + }[]; + export { dataGrid_1 as dataGrid }; + const email_1: string; + export { email_1 as email }; + export namespace container_1 { + const select_1: string; + export { select_1 as select }; + } + export { container_1 as container }; } diff --git a/test/forms/wizardTestForm.js b/test/forms/wizardTestForm.js index d03752ff64..4d5032cc1a 100644 --- a/test/forms/wizardTestForm.js +++ b/test/forms/wizardTestForm.js @@ -1,276 +1,326 @@ const form = { - 'type': 'form', - 'components': [{ - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'input': false, - 'tableView': false, - 'components': [{ - 'label': 'Tags', - 'tableView': false, - 'key': 'tags', - 'type': 'tags', - 'input': true - }, { - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true - }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'panel', - 'type': 'panel', - 'label': 'Panel', - 'input': false, - 'tableView': false, - 'components': [{ - 'label': 'Text Field', - 'tableView': true, - 'validate': { - 'required': true + type: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + input: false, + tableView: false, + components: [ + { + label: 'Tags', + tableView: false, + key: 'tags', + type: 'tags', + input: true, }, - 'key': 'textField', - 'type': 'textfield', - 'input': true - }] - }, { - 'label': 'Edit Grid', - 'tableView': false, - 'rowDrafts': false, - 'key': 'editGrid', - 'type': 'editgrid', - 'input': true, - 'components': [{ - 'label': 'Select', - 'tableView': true, - 'data': { - 'values': [{ - 'label': 'a', - 'value': 'a' - }, { - 'label': 'b', - 'value': 'b' - }, { - 'label': 'c', - 'value': 'c' - }] + { + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + scrollToTop: false, + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ + { + label: 'Text Field', + tableView: true, + validate: { + required: true, + }, + key: 'textField', + type: 'textfield', + input: true, + }, + ], }, - 'selectThreshold': 0.3, - 'validate': { - 'onlyAvailableItems': false + { + label: 'Edit Grid', + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + input: true, + components: [ + { + label: 'Select', + tableView: true, + data: { + values: [ + { + label: 'a', + value: 'a', + }, + { + label: 'b', + value: 'b', + }, + { + label: 'c', + value: 'c', + }, + ], + }, + selectThreshold: 0.3, + validate: { + onlyAvailableItems: false, + }, + key: 'select', + type: 'select', + indexeddb: { + filter: {}, + }, + input: true, + }, + ], }, - 'key': 'select', - 'type': 'select', - 'indexeddb': { - 'filter': {} + ], + }, + { + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ + { + label: 'Columns', + columns: [ + { + components: [ + { + label: 'Checkbox', + tableView: false, + validate: { + required: true, + }, + key: 'checkbox', + type: 'checkbox', + input: true, + hideOnChildrenHidden: false, + defaultValue: false, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + { + components: [ + { + label: 'Date / Time', + displayInTimezone: 'utc', + format: 'yyyy-MM-dd', + tableView: false, + enableMinDateInput: false, + datePicker: { + disableWeekends: false, + disableWeekdays: false, + }, + enableMaxDateInput: false, + enableTime: false, + timePicker: { + showMeridian: false, + }, + key: 'dateTime', + type: 'datetime', + input: true, + widget: { + type: 'calendar', + displayInTimezone: 'utc', + locale: 'en', + useLocaleSettings: false, + allowInput: true, + mode: 'single', + enableTime: false, + noCalendar: false, + format: 'yyyy-MM-dd', + hourIncrement: 1, + minuteIncrement: 1, + time_24hr: true, + minDate: null, + disableWeekends: false, + disableWeekdays: false, + maxDate: null, + }, + hideOnChildrenHidden: false, + }, + ], + width: 6, + offset: 0, + push: 0, + pull: 0, + size: 'md', + }, + ], + key: 'columns', + type: 'columns', + input: false, + tableView: false, }, - 'input': true - }] - }] - }, { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'components': [{ - 'label': 'Columns', - 'columns': [{ - 'components': [{ - 'label': 'Checkbox', - 'tableView': false, - 'validate': { - 'required': true - }, - 'key': 'checkbox', - 'type': 'checkbox', - 'input': true, - 'hideOnChildrenHidden': false, - 'defaultValue': false - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }, { - 'components': [{ - 'label': 'Date / Time', - 'displayInTimezone': 'utc', - 'format': 'yyyy-MM-dd', - 'tableView': false, - 'enableMinDateInput': false, - 'datePicker': { - 'disableWeekends': false, - 'disableWeekdays': false - }, - 'enableMaxDateInput': false, - 'enableTime': false, - 'timePicker': { - 'showMeridian': false - }, - 'key': 'dateTime', - 'type': 'datetime', - 'input': true, - 'widget': { - 'type': 'calendar', - 'displayInTimezone': 'utc', - 'locale': 'en', - 'useLocaleSettings': false, - 'allowInput': true, - 'mode': 'single', - 'enableTime': false, - 'noCalendar': false, - 'format': 'yyyy-MM-dd', - 'hourIncrement': 1, - 'minuteIncrement': 1, - 'time_24hr': true, - 'minDate': null, - 'disableWeekends': false, - 'disableWeekdays': false, - 'maxDate': null - }, - 'hideOnChildrenHidden': false - }], - 'width': 6, - 'offset': 0, - 'push': 0, - 'pull': 0, - 'size': 'md' - }], - 'key': 'columns', - 'type': 'columns', - 'input': false, - 'tableView': false - }, { - 'label': 'Data Grid', - 'reorder': false, - 'addAnotherPosition': 'bottom', - 'layoutFixed': false, - 'enableRowGroups': false, - 'initEmpty': false, - 'tableView': false, - 'defaultValue': [{}], - 'key': 'dataGrid', - 'type': 'datagrid', - 'input': true, - 'components': [{ - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField1', - 'type': 'textfield', - 'input': true - }] - }], - 'input': false, - 'tableView': false - }, { - 'title': 'Page 3', - 'label': 'Page 3', - 'type': 'panel', - 'key': 'page3', - 'components': [{ - 'label': 'Well', - 'key': 'well1', - 'type': 'well', - 'input': false, - 'tableView': false, - 'components': [{ - 'label': 'Email', - 'tableView': true, - 'key': 'email', - 'type': 'email', - 'input': true - }] - }, { - 'label': 'Container', - 'tableView': false, - 'key': 'container', - 'type': 'container', - 'input': true, - 'components': [{ - 'label': 'Select', - 'tableView': true, - 'data': { - 'values': [{ - 'label': 'value1', - 'value': 'value1' - }, { - 'label': 'value2', - 'value': 'value2' - }] + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{}], + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField1', + type: 'textfield', + input: true, + }, + ], }, - 'selectThreshold': 0.3, - 'validate': { - 'required': true, - 'onlyAvailableItems': false + ], + input: false, + tableView: false, + }, + { + title: 'Page 3', + label: 'Page 3', + type: 'panel', + key: 'page3', + components: [ + { + label: 'Well', + key: 'well1', + type: 'well', + input: false, + tableView: false, + components: [ + { + label: 'Email', + tableView: true, + key: 'email', + type: 'email', + input: true, + }, + ], }, - 'key': 'select', - 'type': 'select', - 'indexeddb': { - 'filter': {} + { + label: 'Container', + tableView: false, + key: 'container', + type: 'container', + input: true, + components: [ + { + label: 'Select', + tableView: true, + data: { + values: [ + { + label: 'value1', + value: 'value1', + }, + { + label: 'value2', + value: 'value2', + }, + ], + }, + selectThreshold: 0.3, + validate: { + required: true, + onlyAvailableItems: false, + }, + key: 'select', + type: 'select', + indexeddb: { + filter: {}, + }, + input: true, + }, + ], }, - 'input': true - }] - }], - 'input': false, - 'tableView': false - }], - 'revisions': '', - '_vid': 0, - 'title': 'wizard form for automated tests', - 'display': 'wizard', - 'name': 'wizardFormForAutomatedTests', - 'path': 'wizardformforautomatedtests', + ], + input: false, + tableView: false, + }, + ], + revisions: '', + _vid: 0, + title: 'wizard form for automated tests', + display: 'wizard', + name: 'wizardFormForAutomatedTests', + path: 'wizardformforautomatedtests', }; const submission = { - '_id': '6038a77ba21f9daee0ffdb6d', - 'state': 'submitted', - 'data': { - 'tags': 'tag1,tag2', - 'textField': 'text', - 'editGrid': [{ - 'select': 'a' - }, { - 'select': 'b' - }], - 'checkbox': true, - 'dateTime': '2021-02-16T21:00:00.000', - 'dataGrid': [{ - 'textField1': 'text1' - }, { - 'textField1': 'text2' - }], - 'email': 'user@example.com', - 'container': { - 'select': 'value1' - } + _id: '6038a77ba21f9daee0ffdb6d', + state: 'submitted', + data: { + tags: 'tag1,tag2', + textField: 'text', + editGrid: [ + { + select: 'a', + }, + { + select: 'b', + }, + ], + checkbox: true, + dateTime: '2021-02-16T21:00:00.000', + dataGrid: [ + { + textField1: 'text1', + }, + { + textField1: 'text2', + }, + ], + email: 'user@example.com', + container: { + select: 'value1', + }, }, }; const htmlModeValues = { - 'tags': 'tag1,tag2', - 'textField': 'text', - 'editGrid': [{ - 'select': 'a' - }, { - 'select': 'b' - }], - 'checkbox': 'True', - 'dateTime': '2021-02-16T21:00:00.000Z', - 'dataGrid': [{ - 'textField1': 'text1' - }, { - 'textField1': 'text2' - }], - 'email': 'user@example.com', - 'container': { - 'select': 'value1' - } + tags: 'tag1,tag2', + textField: 'text', + editGrid: [ + { + select: 'a', + }, + { + select: 'b', + }, + ], + checkbox: 'True', + dateTime: '2021-02-16T21:00:00.000Z', + dataGrid: [ + { + textField1: 'text1', + }, + { + textField1: 'text2', + }, + ], + email: 'user@example.com', + container: { + select: 'value1', + }, }; export default { form, submission, htmlModeValues }; diff --git a/test/forms/wizardTestFormWithNestedComponents.d.ts b/test/forms/wizardTestFormWithNestedComponents.d.ts index d3f0a2b252..d6fb3ee61c 100644 --- a/test/forms/wizardTestFormWithNestedComponents.d.ts +++ b/test/forms/wizardTestFormWithNestedComponents.d.ts @@ -1,134 +1,141 @@ declare namespace _default { - export { form }; + export { form }; } export default _default; declare namespace form { - const title: string; - const name: string; - const path: string; - const type: string; - const display: string; - const tags: never[]; - const components: { - title: string; - breadcrumbClickable: boolean; - buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; - }; - navigateOnEnter: boolean; - saveOnEnter: boolean; - scrollToTop: boolean; - collapsible: boolean; + const title: string; + const name: string; + const path: string; + const type: string; + const display: string; + const tags: never[]; + const components: { + title: string; + breadcrumbClickable: boolean; + buttonSettings: { + previous: boolean; + cancel: boolean; + next: boolean; + }; + navigateOnEnter: boolean; + saveOnEnter: boolean; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { + label: string; + tableView: boolean; + calculateValue: string; + key: string; + type: string; + input: boolean; + components: { + legend: string; + customClass: string; key: string; type: string; label: string; input: boolean; tableView: boolean; - components: { - label: string; - tableView: boolean; - calculateValue: string; - key: string; - type: string; - input: boolean; - components: { - legend: string; - customClass: string; + components: ( + | { + legend: string; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { + label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { + label: string; + value: string; + shortcut: string; + }[]; + validate: { + required: boolean; + }; key: string; type: string; + input: boolean; + }[]; + } + | { + legend: string; + key: string; + customConditional: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { + label: string; + value: string; + shortcut: string; + }[]; + validate: { + required: boolean; + }; + key: string; + type: string; input: boolean; + }[]; + } + | { + legend: string; + key: string; + customConditional: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { + label: string; tableView: boolean; - components: ({ - legend: string; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { - label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; - }[]; - } | { - legend: string; - key: string; - customConditional: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { - label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; - }[]; - } | { - legend: string; - key: string; - customConditional: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { - label: string; - tableView: boolean; - defaultValue: boolean; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; - }[]; - })[]; - }[]; - }[]; + defaultValue: boolean; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; + }[]; + } + )[]; + }[]; + }[]; + }[]; + const settings: {}; + const properties: {}; + const controller: string; + const revisions: string; + const submissionRevisions: string; + const _vid: number; + namespace config { + const containerDataSource: { + firstComponent: string; + types: ( + | { + secondComponent: string; + requiredComponent: string; + } + | { + secondComponent: string; + requiredComponent: {}; + } + )[]; }[]; - const settings: {}; - const properties: {}; - const controller: string; - const revisions: string; - const submissionRevisions: string; - const _vid: number; - namespace config { - const containerDataSource: { - firstComponent: string; - types: ({ - secondComponent: string; - requiredComponent: string; - } | { - secondComponent: string; - requiredComponent: {}; - })[]; - }[]; - } + } } diff --git a/test/forms/wizardTestFormWithNestedComponents.js b/test/forms/wizardTestFormWithNestedComponents.js index a3b746a718..4cf28cf6f9 100644 --- a/test/forms/wizardTestFormWithNestedComponents.js +++ b/test/forms/wizardTestFormWithNestedComponents.js @@ -83,8 +83,7 @@ const form = { { legend: 'Innermost Field Set B', key: 'innermostFieldSetB', - customConditional: - "show=!!_.get(data,'outerContainer.firstComponent');", + customConditional: "show=!!_.get(data,'outerContainer.firstComponent');", type: 'fieldset', label: 'Field Set', input: false, @@ -124,7 +123,8 @@ const form = { { legend: 'Innermost Field Set C', key: 'innermostFieldSetC', - customConditional: "let firstComponent=row.firstComponent;\nlet secondComponent=row.secondComponent;\nshow=false;\nif (!!firstComponent && !!secondComponent) {\n let selected=_.find(_.find(_.get(form,'config.containerDataSource',[]),item=>item.firstComponent===firstComponent).types,item=>item.secondComponent===secondComponent);\n show=_.isEmpty(_.get(selected,'requiredComponent'))===false;\n}\n", + customConditional: + "let firstComponent=row.firstComponent;\nlet secondComponent=row.secondComponent;\nshow=false;\nif (!!firstComponent && !!secondComponent) {\n let selected=_.find(_.find(_.get(form,'config.containerDataSource',[]),item=>item.firstComponent===firstComponent).types,item=>item.secondComponent===secondComponent);\n show=_.isEmpty(_.get(selected,'requiredComponent'))===false;\n}\n", type: 'fieldset', label: 'Innermost Field Set C', input: false, diff --git a/test/forms/wizardValidate.js b/test/forms/wizardValidate.js index e8e4f272ab..dd624f0f4a 100644 --- a/test/forms/wizardValidate.js +++ b/test/forms/wizardValidate.js @@ -3,392 +3,403 @@ export default { type: 'form', tags: [], owner: '5d20ecfe633c7486ffc33270', - components: [{ - title: 'Page 1', - label: 'Page 1', - type: 'panel', - key: 'page1', - components: [{ - label: 'A', - labelPosition: 'top', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'A', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { type: 'input' }, + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: true, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'a', + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: '', json: '' }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { style: '', page: '', left: '', top: '', width: '', height: '' }, + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'es79aho', + defaultValue: '', + }, + { + label: 'B', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { type: 'input' }, + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: true, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'b', + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: '', json: '' }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { style: '', page: '', left: '', top: '', width: '', height: '' }, + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'eu0fw', + defaultValue: '', + }, + ], + input: false, placeholder: '', - description: '', - tooltip: '', prefix: '', - suffix: '', - widget: {type: 'input'}, - inputMask: '', - allowMultipleMasks: false, customClass: '', - tabindex: '', - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, + suffix: '', multiple: false, - persistent: true, - inputFormat: 'plain', + defaultValue: null, protected: false, - dbIndex: false, - case: '', - encrypted: false, - redrawOn: '', - clearOnHide: true, - customDefaultValue: '', - calculateValue: '', - calculateServer: false, - allowCalculateOverride: false, - validateOn: 'change', - validate: { - required: true, - pattern: '', - customMessage: '', - custom: '', - customPrivate: false, - json: '', - minLength: '', - maxLength: '', - strictDateValidation: false, - multiple: false, - unique: false - }, unique: false, - errorLabel: '', - key: 'a', - tags: [], - properties: {}, - conditional: {show: null, when: null, eq: '', json: ''}, - customConditional: '', - logic: [], - attributes: {}, - overlay: {style: '', page: '', left: '', top: '', width: '', height: ''}, - type: 'textfield', - input: true, + persistent: false, + hidden: false, + clearOnHide: false, refreshOn: '', - inputType: 'text', - id: 'es79aho', - defaultValue: '' - }, { - label: 'B', + redrawOn: '', + tableView: false, + modalEdit: false, labelPosition: 'top', - placeholder: '', description: '', + errorLabel: '', tooltip: '', - prefix: '', - suffix: '', - widget: {type: 'input'}, - inputMask: '', - allowMultipleMasks: false, - customClass: '', - tabindex: '', - hidden: false, hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, + tabindex: '', disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: 'plain', - protected: false, + autofocus: false, dbIndex: false, - case: '', - encrypted: false, - redrawOn: '', - clearOnHide: true, customDefaultValue: '', calculateValue: '', - calculateServer: false, - allowCalculateOverride: false, + widget: null, + attributes: {}, validateOn: 'change', validate: { - required: true, - pattern: '', - customMessage: '', + required: false, custom: '', customPrivate: false, - json: '', - minLength: '', - maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, - unique: false, - errorLabel: '', - key: 'b', - tags: [], + conditional: { show: null, when: null, eq: '' }, + overlay: { style: '', left: '', top: '', width: '', height: '' }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, properties: {}, - conditional: {show: null, when: null, eq: '', json: ''}, - customConditional: '', - logic: [], - attributes: {}, - overlay: {style: '', page: '', left: '', top: '', width: '', height: ''}, - type: 'textfield', - input: true, - refreshOn: '', - inputType: 'text', - id: 'eu0fw', - defaultValue: '' - }], - input: false, - placeholder: '', - prefix: '', - customClass: '', - suffix: '', - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: false, - hidden: false, - clearOnHide: false, - refreshOn: '', - redrawOn: '', - tableView: false, - modalEdit: false, - labelPosition: 'top', - description: '', - errorLabel: '', - tooltip: '', - hideLabel: false, - tabindex: '', - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: '', - calculateValue: '', - widget: null, - attributes: {}, - validateOn: 'change', - validate: { - required: false, - custom: '', - customPrivate: false, - strictDateValidation: false, - multiple: false, - unique: false + allowMultipleMasks: false, + tree: false, + theme: 'default', + breadcrumb: 'default', + id: 'eidma3j', }, - conditional: {show: null, when: null, eq: ''}, - overlay: {style: '', left: '', top: '', width: '', height: ''}, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - tree: false, - theme: 'default', - breadcrumb: 'default', - id: 'eidma3j' - }, { - title: 'Page 2', - label: 'Page 2', - type: 'panel', - key: 'page2', - components: [{ - label: 'C', - labelPosition: 'top', + { + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ + { + label: 'C', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { type: 'input' }, + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: true, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'c', + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: '', json: '' }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { style: '', page: '', left: '', top: '', width: '', height: '' }, + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'eszf3hm', + defaultValue: '', + }, + { + label: 'D', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { type: 'input' }, + inputMask: '', + allowMultipleMasks: false, + customClass: '', + tabindex: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'plain', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: true, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'd', + tags: [], + properties: {}, + conditional: { show: null, when: null, eq: '', json: '' }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { style: '', page: '', left: '', top: '', width: '', height: '' }, + type: 'textfield', + input: true, + refreshOn: '', + inputType: 'text', + id: 'eyv6tv', + defaultValue: '', + }, + ], + input: false, placeholder: '', - description: '', - tooltip: '', prefix: '', - suffix: '', - widget: {type: 'input'}, - inputMask: '', - allowMultipleMasks: false, customClass: '', - tabindex: '', - hidden: false, - hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, - disabled: false, - tableView: true, - modalEdit: false, + suffix: '', multiple: false, - persistent: true, - inputFormat: 'plain', + defaultValue: null, protected: false, - dbIndex: false, - case: '', - encrypted: false, - redrawOn: '', - clearOnHide: true, - customDefaultValue: '', - calculateValue: '', - calculateServer: false, - allowCalculateOverride: false, - validateOn: 'change', - validate: { - required: true, - pattern: '', - customMessage: '', - custom: '', - customPrivate: false, - json: '', - minLength: '', - maxLength: '', - strictDateValidation: false, - multiple: false, - unique: false - }, unique: false, - errorLabel: '', - key: 'c', - tags: [], - properties: {}, - conditional: {show: null, when: null, eq: '', json: ''}, - customConditional: '', - logic: [], - attributes: {}, - overlay: {style: '', page: '', left: '', top: '', width: '', height: ''}, - type: 'textfield', - input: true, + persistent: false, + hidden: false, + clearOnHide: false, refreshOn: '', - inputType: 'text', - id: 'eszf3hm', - defaultValue: '' - }, { - label: 'D', + redrawOn: '', + tableView: false, + modalEdit: false, labelPosition: 'top', - placeholder: '', description: '', + errorLabel: '', tooltip: '', - prefix: '', - suffix: '', - widget: {type: 'input'}, - inputMask: '', - allowMultipleMasks: false, - customClass: '', - tabindex: '', - hidden: false, hideLabel: false, - showWordCount: false, - showCharCount: false, - mask: false, - autofocus: false, - spellcheck: true, + tabindex: '', disabled: false, - tableView: true, - modalEdit: false, - multiple: false, - persistent: true, - inputFormat: 'plain', - protected: false, + autofocus: false, dbIndex: false, - case: '', - encrypted: false, - redrawOn: '', - clearOnHide: true, customDefaultValue: '', calculateValue: '', - calculateServer: false, - allowCalculateOverride: false, + widget: null, + attributes: {}, validateOn: 'change', validate: { - required: true, - pattern: '', - customMessage: '', + required: false, custom: '', customPrivate: false, - json: '', - minLength: '', - maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, - unique: false, - errorLabel: '', - key: 'd', - tags: [], + conditional: { show: null, when: null, eq: '' }, + overlay: { style: '', left: '', top: '', width: '', height: '' }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, properties: {}, - conditional: {show: null, when: null, eq: '', json: ''}, - customConditional: '', - logic: [], - attributes: {}, - overlay: {style: '', page: '', left: '', top: '', width: '', height: ''}, - type: 'textfield', - input: true, - refreshOn: '', - inputType: 'text', - id: 'eyv6tv', - defaultValue: '' - }], - input: false, - placeholder: '', - prefix: '', - customClass: '', - suffix: '', - multiple: false, - defaultValue: null, - protected: false, - unique: false, - persistent: false, - hidden: false, - clearOnHide: false, - refreshOn: '', - redrawOn: '', - tableView: false, - modalEdit: false, - labelPosition: 'top', - description: '', - errorLabel: '', - tooltip: '', - hideLabel: false, - tabindex: '', - disabled: false, - autofocus: false, - dbIndex: false, - customDefaultValue: '', - calculateValue: '', - widget: null, - attributes: {}, - validateOn: 'change', - validate: { - required: false, - custom: '', - customPrivate: false, - strictDateValidation: false, - multiple: false, - unique: false + allowMultipleMasks: false, + tree: false, + theme: 'default', + breadcrumb: 'default', + id: 'eauobna', }, - conditional: {show: null, when: null, eq: ''}, - overlay: {style: '', left: '', top: '', width: '', height: ''}, - allowCalculateOverride: false, - encrypted: false, - showCharCount: false, - showWordCount: false, - properties: {}, - allowMultipleMasks: false, - tree: false, - theme: 'default', - breadcrumb: 'default', - id: 'eauobna' - }], + ], controller: '', revisions: '', _vid: 0, title: 'WIZARD', display: 'wizard', - access: [{ - roles: ['5e61b28b4600135be0bf681f', '5e61b28b4600135be0bf6820', '5e61b28b4600135be0bf6821'], - type: 'read_all' - }], + access: [ + { + roles: ['5e61b28b4600135be0bf681f', '5e61b28b4600135be0bf6820', '5e61b28b4600135be0bf6821'], + type: 'read_all', + }, + ], submissionAccess: [], settings: {}, properties: {}, @@ -397,5 +408,5 @@ export default { project: '5e61b28b4600135be0bf681e', created: '2020-03-07T20:39:27.702Z', modified: '2020-03-07T20:39:27.712Z', - machineName: 'nduruyqyruanuvd:wizard' + machineName: 'nduruyqyruanuvd:wizard', }; diff --git a/test/forms/wizardValidationOnNextBtn.d.ts b/test/forms/wizardValidationOnNextBtn.d.ts index 0cc2dc64d4..d5ee7c4df1 100644 --- a/test/forms/wizardValidationOnNextBtn.d.ts +++ b/test/forms/wizardValidationOnNextBtn.d.ts @@ -1,231 +1,234 @@ declare namespace _default { - const title: string; - const components: { - title: string; - label: string; - type: string; - key: string; - components: ({ - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; - unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + const title: string; + const components: { + title: string; + label: string; + type: string; + key: string; + components: ( + | { + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; - } | { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: number; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; + } + | { + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; - })[]; - input: boolean; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; - multiple: boolean; - defaultValue: null; - protected: boolean; - unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - refreshOn: string; - redrawOn: string; - tableView: boolean; - modalEdit: boolean; - labelPosition: string; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - widget: null; - attributes: {}; - validateOn: string; - validate: { + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { required: boolean; + pattern: string; + customMessage: string; custom: string; customPrivate: boolean; + json: string; + minLength: string; + maxLength: number; strictDateValidation: boolean; multiple: boolean; unique: boolean; - }; - conditional: { + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { show: null; when: null; eq: string; - }; - overlay: { + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { style: string; + page: string; left: string; top: string; width: string; height: string; - }; - allowCalculateOverride: boolean; - encrypted: boolean; - showCharCount: boolean; - showWordCount: boolean; - properties: {}; - allowMultipleMasks: boolean; - tree: boolean; - theme: string; - breadcrumb: string; - id: string; - }[]; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; + } + )[]; + input: boolean; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + refreshOn: string; + redrawOn: string; + tableView: boolean; + modalEdit: boolean; + labelPosition: string; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + widget: null; + attributes: {}; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; + }; + conditional: { + show: null; + when: null; + eq: string; + }; + overlay: { + style: string; + left: string; + top: string; + width: string; + height: string; + }; + allowCalculateOverride: boolean; + encrypted: boolean; + showCharCount: boolean; + showWordCount: boolean; + properties: {}; + allowMultipleMasks: boolean; + tree: boolean; + theme: string; + breadcrumb: string; + id: string; + }[]; } export default _default; diff --git a/test/forms/wizardValidationOnNextBtn.js b/test/forms/wizardValidationOnNextBtn.js index b71d996d9a..f96483df4d 100644 --- a/test/forms/wizardValidationOnNextBtn.js +++ b/test/forms/wizardValidationOnNextBtn.js @@ -16,7 +16,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -35,9 +35,9 @@ export default { multiple: false, persistent: true, inputFormat: 'plain', - 'protected': false, + protected: false, dbIndex: false, - 'case': '', + case: '', encrypted: false, redrawOn: '', clearOnHide: true, @@ -57,7 +57,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -68,7 +68,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -79,14 +79,14 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'eap4fh', - defaultValue: '' + defaultValue: '', }, { label: 'b', @@ -97,7 +97,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -116,9 +116,9 @@ export default { multiple: false, persistent: true, inputFormat: 'plain', - 'protected': false, + protected: false, dbIndex: false, - 'case': '', + case: '', encrypted: false, redrawOn: '', clearOnHide: true, @@ -138,7 +138,7 @@ export default { maxLength: 4, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -149,7 +149,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -160,15 +160,15 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'eo1khi9', - defaultValue: '' - } + defaultValue: '', + }, ], input: false, placeholder: '', @@ -177,7 +177,7 @@ export default { suffix: '', multiple: false, defaultValue: null, - 'protected': false, + protected: false, unique: false, persistent: false, hidden: false, @@ -206,19 +206,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -229,7 +229,7 @@ export default { tree: false, theme: 'default', breadcrumb: 'default', - id: 'etrhlbe' + id: 'etrhlbe', }, { title: 'Page 2', @@ -246,7 +246,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -265,9 +265,9 @@ export default { multiple: false, persistent: true, inputFormat: 'plain', - 'protected': false, + protected: false, dbIndex: false, - 'case': '', + case: '', encrypted: false, redrawOn: '', clearOnHide: true, @@ -287,7 +287,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -298,7 +298,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -309,15 +309,15 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'euovhcc', - defaultValue: '' - } + defaultValue: '', + }, ], input: false, placeholder: '', @@ -326,7 +326,7 @@ export default { suffix: '', multiple: false, defaultValue: null, - 'protected': false, + protected: false, unique: false, persistent: false, hidden: false, @@ -355,19 +355,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -378,8 +378,7 @@ export default { tree: false, theme: 'default', breadcrumb: 'default', - id: 'eij9ua' - } + id: 'eij9ua', + }, ], }; - diff --git a/test/forms/wizardValidationOnPageChanged.d.ts b/test/forms/wizardValidationOnPageChanged.d.ts index 37163856ae..ebdecda0e9 100644 --- a/test/forms/wizardValidationOnPageChanged.d.ts +++ b/test/forms/wizardValidationOnPageChanged.d.ts @@ -1,89 +1,91 @@ -declare namespace _default { const title: string; - const components: ({ +declare namespace _default { + const title: string; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: number; + maxLength: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: number; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; - type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; }[]; input: boolean; placeholder: string; @@ -116,24 +118,24 @@ declare namespace _default { const title: string; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -145,91 +147,92 @@ declare namespace _default { const title: string; theme: string; breadcrumb: string; id: string; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: number; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: number; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; - type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; }[]; input: boolean; placeholder: string; @@ -262,24 +265,24 @@ declare namespace _default { const title: string; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -291,91 +294,92 @@ declare namespace _default { const title: string; theme: string; breadcrumb: string; id: string; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - inputMask: string; - allowMultipleMasks: boolean; - customClass: string; - tabindex: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + inputMask: string; + allowMultipleMasks: boolean; + customClass: string; + tabindex: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; - type: string; - input: boolean; - refreshOn: string; - inputType: string; - id: string; - defaultValue: string; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + refreshOn: string; + inputType: string; + id: string; + defaultValue: string; }[]; input: boolean; placeholder: string; @@ -408,24 +412,24 @@ declare namespace _default { const title: string; attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; + show: null; + when: null; + eq: string; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; + style: string; + left: string; + top: string; + width: string; + height: string; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -437,6 +441,7 @@ declare namespace _default { const title: string; theme: string; breadcrumb: string; id: string; - })[]; + } + )[]; } export default _default; diff --git a/test/forms/wizardValidationOnPageChanged.js b/test/forms/wizardValidationOnPageChanged.js index 1746536179..b633010417 100644 --- a/test/forms/wizardValidationOnPageChanged.js +++ b/test/forms/wizardValidationOnPageChanged.js @@ -16,7 +16,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -35,9 +35,9 @@ export default { multiple: false, persistent: true, inputFormat: 'plain', - 'protected': false, + protected: false, dbIndex: false, - 'case': '', + case: '', encrypted: false, redrawOn: '', clearOnHide: true, @@ -57,7 +57,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -68,7 +68,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -79,15 +79,15 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'eap4fh', - defaultValue: '' - } + defaultValue: '', + }, ], input: false, placeholder: '', @@ -96,7 +96,7 @@ export default { suffix: '', multiple: false, defaultValue: null, - 'protected': false, + protected: false, unique: false, persistent: false, hidden: false, @@ -125,19 +125,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -148,7 +148,7 @@ export default { tree: false, theme: 'default', breadcrumb: 'default', - id: 'etrhlbe' + id: 'etrhlbe', }, { title: 'Page 2', @@ -165,7 +165,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -184,9 +184,9 @@ export default { multiple: false, persistent: true, inputFormat: 'plain', - 'protected': false, + protected: false, dbIndex: false, - 'case': '', + case: '', encrypted: false, redrawOn: '', clearOnHide: true, @@ -206,7 +206,7 @@ export default { maxLength: 4, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -217,7 +217,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -228,15 +228,15 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'eo1khi9', - defaultValue: '' - } + defaultValue: '', + }, ], input: false, placeholder: '', @@ -245,7 +245,7 @@ export default { suffix: '', multiple: false, defaultValue: null, - 'protected': false, + protected: false, unique: false, persistent: false, hidden: false, @@ -274,19 +274,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -297,7 +297,7 @@ export default { tree: false, theme: 'default', breadcrumb: 'default', - id: 'eij9ua' + id: 'eij9ua', }, { title: 'Page 3', @@ -314,7 +314,7 @@ export default { prefix: '', suffix: '', widget: { - type: 'input' + type: 'input', }, inputMask: '', allowMultipleMasks: false, @@ -333,9 +333,9 @@ export default { multiple: false, persistent: true, inputFormat: 'plain', - 'protected': false, + protected: false, dbIndex: false, - 'case': '', + case: '', encrypted: false, redrawOn: '', clearOnHide: true, @@ -355,7 +355,7 @@ export default { maxLength: '', strictDateValidation: false, multiple: false, - unique: false + unique: false, }, unique: false, errorLabel: '', @@ -366,7 +366,7 @@ export default { show: null, when: null, eq: '', - json: '' + json: '', }, customConditional: '', logic: [], @@ -377,15 +377,15 @@ export default { left: '', top: '', width: '', - height: '' + height: '', }, type: 'textfield', input: true, refreshOn: '', inputType: 'text', id: 'euovhcc', - defaultValue: '' - } + defaultValue: '', + }, ], input: false, placeholder: '', @@ -394,7 +394,7 @@ export default { suffix: '', multiple: false, defaultValue: null, - 'protected': false, + protected: false, unique: false, persistent: false, hidden: false, @@ -423,19 +423,19 @@ export default { customPrivate: false, strictDateValidation: false, multiple: false, - unique: false + unique: false, }, conditional: { show: null, when: null, - eq: '' + eq: '', }, overlay: { style: '', left: '', top: '', width: '', - height: '' + height: '', }, allowCalculateOverride: false, encrypted: false, @@ -446,7 +446,7 @@ export default { tree: false, theme: 'default', breadcrumb: 'default', - id: 'ebug75q' - } + id: 'ebug75q', + }, ], }; diff --git a/test/forms/wizardWithAllowPrevious.d.ts b/test/forms/wizardWithAllowPrevious.d.ts index fbd457d55a..3e43eced68 100644 --- a/test/forms/wizardWithAllowPrevious.d.ts +++ b/test/forms/wizardWithAllowPrevious.d.ts @@ -1,37 +1,40 @@ declare namespace _default { - const type: string; - const tags: never[]; - const components: ({ + const type: string; + const tags: never[]; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - defaultValue: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + defaultValue: boolean; }[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/wizardWithAllowPrevious.js b/test/forms/wizardWithAllowPrevious.js index 9a7d33bb3f..683b3c0fa2 100644 --- a/test/forms/wizardWithAllowPrevious.js +++ b/test/forms/wizardWithAllowPrevious.js @@ -1,43 +1,43 @@ export default { - 'type': 'form', - 'tags': [], - 'components': [ + type: 'form', + tags: [], + components: [ { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'label': 'A', - 'tableView': false, - 'key': 'a', - 'type': 'checkbox', - 'input': true, - 'defaultValue': false - } + label: 'A', + tableView: false, + key: 'a', + type: 'checkbox', + input: true, + defaultValue: false, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'components': [ + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ { - 'label': 'B', - 'tableView': true, - 'key': 'b', - 'type': 'textfield', - 'input': true - } + label: 'B', + tableView: true, + key: 'b', + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, ], - 'title': 'wizardWithAllowPreviousTest', - 'display': 'wizard', + title: 'wizardWithAllowPreviousTest', + display: 'wizard', }; diff --git a/test/forms/wizardWithCheckboxes.js b/test/forms/wizardWithCheckboxes.js index 5faa35adb0..4ed8d1d813 100644 --- a/test/forms/wizardWithCheckboxes.js +++ b/test/forms/wizardWithCheckboxes.js @@ -1,44 +1,44 @@ export default { - 'title': 'wizardWithCheckbox', - 'name': 'wizardWithCheckbox', - 'type': 'form', - 'display': 'wizard', - 'components': [ + title: 'wizardWithCheckbox', + name: 'wizardWithCheckbox', + type: 'form', + display: 'wizard', + components: [ { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'label': 'Radio', - 'optionsLabelPosition': 'right', - 'inline': false, - 'tableView': false, - 'values': [ + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ { - 'label': 'a', - 'value': 'a', - 'shortcut': '' - } + label: 'a', + value: 'a', + shortcut: '', + }, ], - 'key': 'radio', - 'type': 'radio', - 'input': true, - 'inputType': 'checkbox' - } + key: 'radio', + type: 'radio', + input: true, + inputType: 'checkbox', + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'input': false, - 'tableView': false, - 'components': [] - } - ] + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + input: false, + tableView: false, + components: [], + }, + ], }; diff --git a/test/forms/wizardWithComponentsWithSameApi.d.ts b/test/forms/wizardWithComponentsWithSameApi.d.ts index 354505705e..41c4fccbdd 100644 --- a/test/forms/wizardWithComponentsWithSameApi.d.ts +++ b/test/forms/wizardWithComponentsWithSameApi.d.ts @@ -1,48 +1,51 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; label: string; type: string; key: string; components: { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; key: string; type: string; input: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; + }[]; }[]; input: boolean; tableView: boolean; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithCustomConditionalPage.d.ts b/test/forms/wizardWithCustomConditionalPage.d.ts index 0e827e1b91..69d746934e 100644 --- a/test/forms/wizardWithCustomConditionalPage.d.ts +++ b/test/forms/wizardWithCustomConditionalPage.d.ts @@ -1,31 +1,33 @@ declare namespace _default { - const type: string; - const tags: never[]; - const components: ({ + const type: string; + const tags: never[]; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - defaultValue: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + defaultValue: boolean; }[]; input: boolean; tableView: boolean; breadcrumbClickable?: undefined; buttonSettings?: undefined; collapsible?: undefined; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; tableView: boolean; @@ -34,23 +36,24 @@ declare namespace _default { type: string; label: string; components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; }[]; input: boolean; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithCustomConditionalPage.js b/test/forms/wizardWithCustomConditionalPage.js index 2a505088be..9983e506f3 100644 --- a/test/forms/wizardWithCustomConditionalPage.js +++ b/test/forms/wizardWithCustomConditionalPage.js @@ -1,52 +1,59 @@ export default { - "type": "form", - "tags": [], - "components": [{ - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "components": [{ - "label": "Checkbox", - "tableView": false, - "key": "checkbox", - "type": "checkbox", - "input": true, - "defaultValue": false - }], - "input": false, - "tableView": false - }, { - "title": "Page 2", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true + type: 'form', + tags: [], + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + defaultValue: false, + }, + ], + input: false, + tableView: false, }, - "collapsible": false, - "tableView": false, - "key": "page2", - "customConditional": "show = data.checkbox === true;", - "type": "panel", - "label": "Page 2", - "components": [{ - "label": "Number", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "number", - "type": "number", - "input": true - }], - "input": false - }], - "title": "wizard test", - "display": "wizard", - "name": "wizardTest", - "path": "wizardtest", - "machineName": "nyisrmnbdpnjfut:wizardTest" + { + title: 'Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + tableView: false, + key: 'page2', + customConditional: 'show = data.checkbox === true;', + type: 'panel', + label: 'Page 2', + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + ], + input: false, + }, + ], + title: 'wizard test', + display: 'wizard', + name: 'wizardTest', + path: 'wizardtest', + machineName: 'nyisrmnbdpnjfut:wizardTest', }; diff --git a/test/forms/wizardWithDataGridAndEditGrid.d.ts b/test/forms/wizardWithDataGridAndEditGrid.d.ts index 91942f8618..b5ff59b3de 100644 --- a/test/forms/wizardWithDataGridAndEditGrid.d.ts +++ b/test/forms/wizardWithDataGridAndEditGrid.d.ts @@ -1,75 +1,78 @@ declare namespace _default { - const type: string; - const components: { - title: string; - label: string; - type: string; - key: string; - components: ({ + const type: string; + const components: { + title: string; + label: string; + type: string; + key: string; + components: ( + | { + label: string; + tableView: boolean; + rowDrafts: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; - rowDrafts: boolean; key: string; type: string; input: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; - breadcrumbClickable?: undefined; - buttonSettings?: undefined; - scrollToTop?: undefined; - collapsible?: undefined; - } | { - breadcrumbClickable: boolean; - buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; + }[]; + breadcrumbClickable?: undefined; + buttonSettings?: undefined; + scrollToTop?: undefined; + collapsible?: undefined; + } + | { + breadcrumbClickable: boolean; + buttonSettings: { + previous: boolean; + cancel: boolean; + next: boolean; + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { + label: string; + reorder: boolean; + addAnotherPosition: string; + layoutFixed: boolean; + enableRowGroups: boolean; + initEmpty: boolean; + tableView: boolean; + defaultValue: {}[]; key: string; type: string; - label: string; input: boolean; - tableView: boolean; components: { - label: string; - reorder: boolean; - addAnotherPosition: string; - layoutFixed: boolean; - enableRowGroups: boolean; - initEmpty: boolean; - tableView: boolean; - defaultValue: {}[]; - key: string; - type: string; - input: boolean; - components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; - }[]; + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; }[]; - rowDrafts?: undefined; - })[]; - input: boolean; - tableView: boolean; - }[]; - const title: string; - const display: string; - const name: string; - const path: string; + }[]; + rowDrafts?: undefined; + } + )[]; + input: boolean; + tableView: boolean; + }[]; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/wizardWithDataGridAndEditGrid.js b/test/forms/wizardWithDataGridAndEditGrid.js index fa2b2fde30..610a79b3c9 100644 --- a/test/forms/wizardWithDataGridAndEditGrid.js +++ b/test/forms/wizardWithDataGridAndEditGrid.js @@ -1,70 +1,76 @@ export default { - type: 'form', - components: [ - { - title: 'Page 1', - label: 'Page 1', - type: 'panel', - key: 'page1', - components: [ - { - label: 'Edit Grid', - tableView: false, - rowDrafts: false, - key: 'editGrid', - type: 'editgrid', - input: true, - components: [ - { label: 'Text Field', tableView: true, key: 'textField', type: 'textfield', input: true } - ] - }, - { - breadcrumbClickable: true, - buttonSettings: { previous: true, cancel: true, next: true }, - scrollToTop: false, - collapsible: false, - key: 'panel', - type: 'panel', - label: 'Panel', - input: false, - tableView: false, - components: [ - { - label: 'Data Grid', - reorder: false, - addAnotherPosition: 'bottom', - layoutFixed: false, - enableRowGroups: false, - initEmpty: false, - tableView: false, - defaultValue: [ {} ], - key: 'dataGrid', - type: 'datagrid', - input: true, - components: [ - { - label: 'Number', - mask: false, - spellcheck: true, - tableView: false, - delimiter: false, - requireDecimal: false, - inputFormat: 'plain', - key: 'number', - type: 'number', - input: true - } - ] - } - ] - } - ], - input: false, - tableView: false - } - ], - title: 'test saving data', - display: 'wizard', - name: 'testSavingData', - path: 'testsavingdata', + type: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Edit Grid', + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + input: true, + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + ], + }, + { + breadcrumbClickable: true, + buttonSettings: { previous: true, cancel: true, next: true }, + scrollToTop: false, + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + defaultValue: [{}], + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + ], + }, + ], + }, + ], + input: false, + tableView: false, + }, + ], + title: 'test saving data', + display: 'wizard', + name: 'testSavingData', + path: 'testsavingdata', }; diff --git a/test/forms/wizardWithEditGrid.d.ts b/test/forms/wizardWithEditGrid.d.ts index 8bfda0840d..fa0b4e6d46 100644 --- a/test/forms/wizardWithEditGrid.d.ts +++ b/test/forms/wizardWithEditGrid.d.ts @@ -1,51 +1,54 @@ declare namespace _default { - const type: string; - const tags: never[]; - const components: ({ + const type: string; + const tags: never[]; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; disabled?: undefined; - } | { + } + | { title: string; label: string; type: string; key: string; components: { + label: string; + tableView: boolean; + rowDrafts: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; tableView: boolean; - rowDrafts: boolean; key: string; type: string; input: boolean; - components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - }[]; + }[]; }[]; input: boolean; tableView: boolean; disabled: boolean; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/forms/wizardWithEditGrid.js b/test/forms/wizardWithEditGrid.js index 6676298f31..918490e6b2 100644 --- a/test/forms/wizardWithEditGrid.js +++ b/test/forms/wizardWithEditGrid.js @@ -1,49 +1,58 @@ export default { - 'type': 'form', - 'tags': [], - 'components': [{ - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [{ - 'label': 'Number', - 'mask': false, - 'spellcheck': true, - 'tableView': false, - 'delimiter': false, - 'requireDecimal': false, - 'inputFormat': 'plain', - 'key': 'number', - 'type': 'number', - 'input': true - }], - 'input': false, - 'tableView': false - }, { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'components': [{ - 'label': 'Edit Grid', - 'tableView': false, - 'rowDrafts': false, - 'key': 'editGrid', - 'type': 'editgrid', - 'input': true, - 'components': [{ - 'label': 'Text Field', - 'tableView': true, - 'key': 'textField', - 'type': 'textfield', - 'input': true - }] - }], - 'input': false, - 'tableView': false, - 'disabled': true, - }], - 'title': 'editGridInsideWizardTest', - 'display': 'wizard', + type: 'form', + tags: [], + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + ], + input: false, + tableView: false, + }, + { + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ + { + label: 'Edit Grid', + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + input: true, + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + ], + }, + ], + input: false, + tableView: false, + disabled: true, + }, + ], + title: 'editGridInsideWizardTest', + display: 'wizard', }; diff --git a/test/forms/wizardWithFirstConditionalPage.d.ts b/test/forms/wizardWithFirstConditionalPage.d.ts index b8be1b8ecb..06218672e7 100644 --- a/test/forms/wizardWithFirstConditionalPage.d.ts +++ b/test/forms/wizardWithFirstConditionalPage.d.ts @@ -1,48 +1,50 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: ({ + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: ( + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; label: string; components: { - label: string; - tableView: boolean; - validate: { - required: boolean; - }; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + validate: { + required: boolean; + }; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; @@ -50,24 +52,25 @@ declare namespace _default { buttonSettings?: undefined; collapsible?: undefined; conditional?: undefined; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: never[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: never[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithFirstConditionalPage.js b/test/forms/wizardWithFirstConditionalPage.js index 7d7c2d7f77..d6cc3ec914 100644 --- a/test/forms/wizardWithFirstConditionalPage.js +++ b/test/forms/wizardWithFirstConditionalPage.js @@ -60,11 +60,7 @@ export default { display: 'wizard', access: [ { - roles: [ - '5f47eadc8aeb8509a99f61b6', - '5f47eadc8aeb8509a99f61b7', - '5f47eadc8aeb8509a99f61b8', - ], + roles: ['5f47eadc8aeb8509a99f61b6', '5f47eadc8aeb8509a99f61b7', '5f47eadc8aeb8509a99f61b8'], type: 'read_all', }, ], diff --git a/test/forms/wizardWithHiddenPanel.d.ts b/test/forms/wizardWithHiddenPanel.d.ts index 92953a1cf7..027180aab4 100644 --- a/test/forms/wizardWithHiddenPanel.d.ts +++ b/test/forms/wizardWithHiddenPanel.d.ts @@ -1,7 +1,8 @@ declare namespace _default { - const _id: string; - const type: string; - const components: ({ + const _id: string; + const type: string; + const components: ( + | { title: string; label: string; type: string; @@ -9,86 +10,86 @@ declare namespace _default { input: boolean; tableView: boolean; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - min: string; - max: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - step: string; - integer: string; - }; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - input: boolean; + }; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + min: string; + max: string; + strictDateValidation: boolean; + multiple: boolean; unique: boolean; - refreshOn: string; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - id: string; - defaultValue: null; + step: string; + integer: string; + }; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + unique: boolean; + refreshOn: string; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + id: string; + defaultValue: null; }[]; placeholder: string; prefix: string; @@ -120,26 +121,26 @@ declare namespace _default { attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; - json?: undefined; + show: null; + when: null; + eq: string; + json?: undefined; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -157,15 +158,16 @@ declare namespace _default { tags?: undefined; nextPage?: undefined; logic?: undefined; - } | { + } + | { title: string; theme: string; breadcrumb: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; tooltip: string; customClass: string; @@ -179,97 +181,97 @@ declare namespace _default { properties: {}; customConditional: string; conditional: { - json: string; - show: null; - when: null; - eq: string; + json: string; + show: null; + when: null; + eq: string; }; nextPage: string; logic: never[]; attributes: {}; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; label: string; tabindex: string; components: { - label: string; - tableView: boolean; - key: string; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + refreshOn: string; + redrawOn: string; + modalEdit: boolean; + labelPosition: string; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + widget: { type: string; - input: boolean; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; + }; + attributes: {}; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; multiple: boolean; - defaultValue: null; - protected: boolean; unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - refreshOn: string; - redrawOn: string; - modalEdit: boolean; - labelPosition: string; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - widget: { - type: string; - }; - attributes: {}; - validateOn: string; - validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - minLength: string; - maxLength: string; - pattern: string; - }; - conditional: { - show: null; - when: null; - eq: string; - }; - overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - }; - allowCalculateOverride: boolean; - encrypted: boolean; - showCharCount: boolean; - showWordCount: boolean; - properties: {}; - allowMultipleMasks: boolean; - mask: boolean; - inputType: string; - inputFormat: string; - inputMask: string; - spellcheck: boolean; - id: string; + minLength: string; + maxLength: string; + pattern: string; + }; + conditional: { + show: null; + when: null; + eq: string; + }; + overlay: { + style: string; + left: string; + top: string; + width: string; + height: string; + }; + allowCalculateOverride: boolean; + encrypted: boolean; + showCharCount: boolean; + showWordCount: boolean; + properties: {}; + allowMultipleMasks: boolean; + mask: boolean; + inputType: string; + inputFormat: string; + inputMask: string; + spellcheck: boolean; + id: string; }[]; input: boolean; tableView: boolean; @@ -295,12 +297,12 @@ declare namespace _default { widget: null; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -309,99 +311,100 @@ declare namespace _default { allowMultipleMasks: boolean; tree: boolean; id: string; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - editor: string; - autoExpand: boolean; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - showWordCount: boolean; - showCharCount: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { + type: string; + }; + editor: string; + autoExpand: boolean; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + showWordCount: boolean; + showCharCount: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + case: string; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + pattern: string; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + minLength: string; + maxLength: string; + minWords: string; + maxWords: string; + strictDateValidation: boolean; multiple: boolean; - persistent: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - case: string; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - pattern: string; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - minLength: string; - maxLength: string; - minWords: string; - maxWords: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - }; unique: boolean; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - fixedSize: boolean; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; - attributes: {}; - type: string; - rows: number; - wysiwyg: boolean; - input: boolean; - refreshOn: string; - allowMultipleMasks: boolean; - mask: boolean; - inputType: string; - inputMask: string; - id: string; - defaultValue: null; + }; + unique: boolean; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + fixedSize: boolean; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + attributes: {}; + type: string; + rows: number; + wysiwyg: boolean; + input: boolean; + refreshOn: string; + allowMultipleMasks: boolean; + mask: boolean; + inputType: string; + inputMask: string; + id: string; + defaultValue: null; }[]; input: boolean; placeholder: string; @@ -435,26 +438,26 @@ declare namespace _default { attributes: {}; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; conditional: { - show: null; - when: null; - eq: string; - json?: undefined; + show: null; + when: null; + eq: string; + json?: undefined; }; overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - page?: undefined; + style: string; + left: string; + top: string; + width: string; + height: string; + page?: undefined; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -472,13 +475,14 @@ declare namespace _default { tags?: undefined; nextPage?: undefined; logic?: undefined; - })[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithHiddenPanel.js b/test/forms/wizardWithHiddenPanel.js index d2e4401e86..f5a46ae201 100644 --- a/test/forms/wizardWithHiddenPanel.js +++ b/test/forms/wizardWithHiddenPanel.js @@ -1,467 +1,477 @@ export default { - "_id": "5fad32107fabb08b982efcbc", - "type": "form", - "components": [{ - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "input": false, - "tableView": false, - "components": [{ - "label": "Number", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + _id: '5fad32107fabb08b982efcbc', + type: 'form', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + input: false, + tableView: false, + components: [ + { + label: 'Number', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + min: '', + max: '', + strictDateValidation: false, + multiple: false, + unique: false, + step: 'any', + integer: '', + }, + errorLabel: '', + key: 'number', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'number', + input: true, + unique: false, + refreshOn: '', + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: 'evnv4vv', + defaultValue: null, + }, + ], + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "customClass": "", - "tabindex": "", - "autocomplete": "", - "hidden": false, - "hideLabel": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": false, - "modalEdit": false, - "multiple": false, - "persistent": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "min": "", - "max": "", - "strictDateValidation": false, - "multiple": false, - "unique": false, - "step": "any", - "integer": "" + conditional: { + show: null, + when: null, + eq: '', }, - "errorLabel": "", - "key": "number", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "number", - "input": true, - "unique": false, - "refreshOn": "", - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "id": "evnv4vv", - "defaultValue": null - }], - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "tree": false, - "theme": "default", - "breadcrumb": "default", - "id": "e3zq9o" - }, { - "title": "Page 2", - "theme": "default", - "breadcrumb": "default", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "tooltip": "", - "customClass": "", - "collapsible": false, - "hidden": true, - "hideLabel": false, - "disabled": false, - "modalEdit": false, - "key": "page2", - "tags": [], - "properties": {}, - "customConditional": "", - "conditional": { - "json": "", - "show": null, - "when": null, - "eq": "" + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + tree: false, + theme: 'default', + breadcrumb: 'default', + id: 'e3zq9o', }, - "nextPage": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "panel", - "label": "Page 2", - "tabindex": "", - "components": [{ - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "refreshOn": "", - "redrawOn": "", - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": { - "type": "input" + { + title: 'Page 2', + theme: 'default', + breadcrumb: 'default', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false, - "minLength": "", - "maxLength": "", - "pattern": "" + tooltip: '', + customClass: '', + collapsible: false, + hidden: true, + hideLabel: false, + disabled: false, + modalEdit: false, + key: 'page2', + tags: [], + properties: {}, + customConditional: '', + conditional: { + json: '', + show: null, + when: null, + eq: '', }, - "conditional": { - "show": null, - "when": null, - "eq": "" + nextPage: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + type: 'panel', + label: 'Page 2', + tabindex: '', + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: '', + redrawOn: '', + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: { + type: 'input', + }, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: '', + maxLength: '', + pattern: '', + }, + conditional: { + show: null, + when: null, + eq: '', + }, + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', + }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: 'text', + inputFormat: 'plain', + inputMask: '', + spellcheck: true, + id: 'efg5kvc', + }, + ], + input: false, + tableView: false, + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + labelPosition: 'top', + description: '', + errorLabel: '', + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "mask": false, - "inputType": "text", - "inputFormat": "plain", - "inputMask": "", - "spellcheck": true, - "id": "efg5kvc" - }], - "input": false, - "tableView": false, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "labelPosition": "top", - "description": "", - "errorLabel": "", - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: false, + id: 'efbo5r6', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": false, - "id": "efbo5r6" - }, { - "title": "Page 3", - "label": "Page 3", - "type": "panel", - "key": "page3", - "components": [{ - "label": "Text Area", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" - }, - "editor": "", - "autoExpand": false, - "customClass": "", - "tabindex": "", - "autocomplete": "", - "hidden": false, - "hideLabel": false, - "showWordCount": false, - "showCharCount": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": true, - "modalEdit": false, - "multiple": false, - "persistent": true, - "inputFormat": "html", - "protected": false, - "dbIndex": false, - "case": "", - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "pattern": "", - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "minLength": "", - "maxLength": "", - "minWords": "", - "maxWords": "", - "strictDateValidation": false, - "multiple": false, - "unique": false + { + title: 'Page 3', + label: 'Page 3', + type: 'panel', + key: 'page3', + components: [ + { + label: 'Text Area', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + editor: '', + autoExpand: false, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + showWordCount: false, + showCharCount: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: true, + modalEdit: false, + multiple: false, + persistent: true, + inputFormat: 'html', + protected: false, + dbIndex: false, + case: '', + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + pattern: '', + customMessage: '', + custom: '', + customPrivate: false, + json: '', + minLength: '', + maxLength: '', + minWords: '', + maxWords: '', + strictDateValidation: false, + multiple: false, + unique: false, + }, + unique: false, + errorLabel: '', + key: 'textArea', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + fixedSize: true, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + attributes: {}, + type: 'textarea', + rows: 3, + wysiwyg: false, + input: true, + refreshOn: '', + allowMultipleMasks: false, + mask: false, + inputType: 'text', + inputMask: '', + id: 'ew497n', + defaultValue: null, + }, + ], + input: false, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + hidden: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + tableView: false, + modalEdit: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "unique": false, - "errorLabel": "", - "key": "textArea", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + conditional: { + show: null, + when: null, + eq: '', }, - "customConditional": "", - "logic": [], - "fixedSize": true, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', }, - "attributes": {}, - "type": "textarea", - "rows": 3, - "wysiwyg": false, - "input": true, - "refreshOn": "", - "allowMultipleMasks": false, - "mask": false, - "inputType": "text", - "inputMask": "", - "id": "ew497n", - "defaultValue": null - }], - "input": false, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "tableView": false, - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + tree: false, + theme: 'default', + breadcrumb: 'default', + id: 'eqgqlyk', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "tree": false, - "theme": "default", - "breadcrumb": "default", - "id": "eqgqlyk" - }], - "revisions": "", - "_vid": 0, - "title": "testHiddenWIzardPannel", - "display": "wizard", - "name": "testHiddenWIzardPannel", - "path": "testhiddenwizardpannel", - "machineName": "cjksbatcpbhyfbs:testHiddenWIzardPannel" -} + ], + revisions: '', + _vid: 0, + title: 'testHiddenWIzardPannel', + display: 'wizard', + name: 'testHiddenWIzardPannel', + path: 'testhiddenwizardpannel', + machineName: 'cjksbatcpbhyfbs:testHiddenWIzardPannel', +}; diff --git a/test/forms/wizardWithNestedWizard.d.ts b/test/forms/wizardWithNestedWizard.d.ts index 4b9c50d154..602079a5ef 100644 --- a/test/forms/wizardWithNestedWizard.d.ts +++ b/test/forms/wizardWithNestedWizard.d.ts @@ -1,109 +1,112 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: { - title: string; - breadcrumbClickable: boolean; - buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; - key: string; - type: string; - label: string; - components: { - _id: string; + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: { + title: string; + breadcrumbClickable: boolean; + buttonSettings: { + previous: boolean; + cancel: boolean; + next: boolean; + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + components: { + _id: string; + type: string; + tags: never[]; + owner: string; + components: ( + | { + title: string; + label: string; type: string; - tags: never[]; - owner: string; - components: ({ - title: string; + key: string; + components: { + label: string; + optionsLabelPosition: string; + inline: boolean; + tableView: boolean; + values: { label: string; - type: string; - key: string; - components: { - label: string; - optionsLabelPosition: string; - inline: boolean; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - key: string; - type: string; - input: boolean; - }[]; - input: boolean; - tableView: boolean; - } | { - title: string; - label: string; - type: string; - key: string; - components: { - label: string; - tableView: boolean; - key: string; - conditional: { - show: boolean; - when: string; - eq: string; - }; - type: string; - input: boolean; - }[]; - input: boolean; - tableView: boolean; - })[]; - revisions: string; - _vid: number; + value: string; + shortcut: string; + }[]; + key: string; + type: string; + input: boolean; + }[]; + input: boolean; + tableView: boolean; + } + | { title: string; - display: string; - access: { - roles: string[]; - type: string; + label: string; + type: string; + key: string; + components: { + label: string; + tableView: boolean; + key: string; + conditional: { + show: boolean; + when: string; + eq: string; + }; + type: string; + input: boolean; }[]; - submissionAccess: never[]; - controller: string; - properties: {}; - settings: {}; - name: string; - path: string; - project: string; - created: string; - modified: string; - machineName: string; - }[]; - input: boolean; - tableView: boolean; - }[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { + input: boolean; + tableView: boolean; + } + )[]; + revisions: string; + _vid: number; + title: string; + display: string; + access: { roles: string[]; type: string; + }[]; + submissionAccess: never[]; + controller: string; + properties: {}; + settings: {}; + name: string; + path: string; + project: string; + created: string; + modified: string; + machineName: string; }[]; - const submissionAccess: { - roles: never[]; - type: string; - }[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + input: boolean; + tableView: boolean; + }[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: { + roles: never[]; + type: string; + }[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithNestedWizard.js b/test/forms/wizardWithNestedWizard.js index 8c74db54b5..4cdf52f50e 100644 --- a/test/forms/wizardWithNestedWizard.js +++ b/test/forms/wizardWithNestedWizard.js @@ -1,278 +1,251 @@ export default { - '_id': '602f96f83c44983fdb716195', - 'type': 'form', - 'tags': [ - ], - 'owner': '5f0d6449e8072d87fbc559b1', - 'components': [ - { - 'title': 'Parent Page 1', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + _id: '602f96f83c44983fdb716195', + type: 'form', + tags: [], + owner: '5f0d6449e8072d87fbc559b1', + components: [ + { + title: 'Parent Page 1', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'page1', - 'type': 'panel', - 'label': 'Page 1', - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'page1', + type: 'panel', + label: 'Page 1', + components: [ { - '_id': '602d249a907df059111efe72', - 'type': 'form', - 'tags': [], - 'owner': '5f0d6449e8072d87fbc559b1', - 'components': [ + _id: '602d249a907df059111efe72', + type: 'form', + tags: [], + owner: '5f0d6449e8072d87fbc559b1', + components: [ { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'label': 'Radio', - 'optionsLabelPosition': 'right', - 'inline': false, - 'tableView': false, - 'values': [ + label: 'Radio', + optionsLabelPosition: 'right', + inline: false, + tableView: false, + values: [ { - 'label': 'one', - 'value': 'one', - 'shortcut': '' + label: 'one', + value: 'one', + shortcut: '', }, { - 'label': 'two', - 'value': 'two', - 'shortcut': '' + label: 'two', + value: 'two', + shortcut: '', }, { - 'label': 'three', - 'value': 'three', - 'shortcut': '' - } + label: 'three', + value: 'three', + shortcut: '', + }, ], - 'key': 'radio1', - 'type': 'radio', - 'input': true - } + key: 'radio1', + type: 'radio', + input: true, + }, ], - 'input': false, - 'tableView': false + input: false, + tableView: false, }, { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'components': [ + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ { - 'label': 'One', - 'tableView': true, - 'key': 'textField', - 'conditional': { - 'show': true, - 'when': 'radio1', - 'eq': 'one' + label: 'One', + tableView: true, + key: 'textField', + conditional: { + show: true, + when: 'radio1', + eq: 'one', }, - 'type': 'textfield', - 'input': true + type: 'textfield', + input: true, }, { - 'label': 'Two', - 'tableView': true, - 'key': 'textField1', - 'conditional': { - 'show': true, - 'when': 'radio1', - 'eq': 'two' + label: 'Two', + tableView: true, + key: 'textField1', + conditional: { + show: true, + when: 'radio1', + eq: 'two', }, - 'type': 'textfield', - 'input': true + type: 'textfield', + input: true, }, { - 'label': 'Three', - 'tableView': true, - 'key': 'textField2', - 'conditional': { - 'show': true, - 'when': 'radio1', - 'eq': 'three' + label: 'Three', + tableView: true, + key: 'textField2', + conditional: { + show: true, + when: 'radio1', + eq: 'three', }, - 'type': 'textfield', - 'input': true - } + type: 'textfield', + input: true, + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Child Wizard Display Test', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Child Wizard Display Test', + display: 'wizard', + access: [ { - 'roles': [ + roles: [ '5cef8c28ed02e550f760a50e', '5cef8c28ed02e525c560a50f', '5cef8c28ed02e569ec60a510', - '5f68ca5eaaf6804cdd6124ef' + '5f68ca5eaaf6804cdd6124ef', ], - 'type': 'read_all' - } - ], - 'submissionAccess': [ + type: 'read_all', + }, ], - 'controller': '', - 'properties': { - }, - 'settings': { - }, - 'name': 'childWizardDisplayTest', - 'path': 'childwizarddisplaytest', - 'project': '5cef8c28ed02e5396860a50d', - 'created': '2021-02-17T14:13:46.163Z', - 'modified': '2021-02-17T14:13:46.168Z', - 'machineName': 'ieroeaewjerkyws:childWizardDisplayTest', - } - ], - 'input': false, - 'tableView': false, - } + submissionAccess: [], + controller: '', + properties: {}, + settings: {}, + name: 'childWizardDisplayTest', + path: 'childwizarddisplaytest', + project: '5cef8c28ed02e5396860a50d', + created: '2021-02-17T14:13:46.163Z', + modified: '2021-02-17T14:13:46.168Z', + machineName: 'ieroeaewjerkyws:childWizardDisplayTest', + }, + ], + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Nested Wizard Test With Additional components', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Nested Wizard Test With Additional components', + display: 'wizard', + access: [ { - 'roles': [ - ], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [ - ], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [ - ], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ + roles: [ '5cef8c28ed02e550f760a50e', '5cef8c28ed02e525c560a50f', '5cef8c28ed02e569ec60a510', - '5f68ca5eaaf6804cdd6124ef' + '5f68ca5eaaf6804cdd6124ef', ], - 'type': 'read_all' + type: 'read_all', }, { - 'roles': [ - ], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [ - ], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [ - ], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [ - ], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [ - ], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [ - ], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [ - ], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'submissionAccess': [ + submissionAccess: [ { - 'roles': [ - ], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [ - ], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [ - ], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ - ], - 'type': 'read_all' + roles: [], + type: 'read_all', }, { - 'roles': [ - ], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [ - ], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [ - ], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [ - ], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [ - ], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [ - ], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [ - ], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'controller': '', - 'properties': { - }, - 'settings': { - }, - 'name': 'nestedWizardTestWithAdditionalComponents', - 'path': 'nestedwizardtestwithadditionalcomponents', - 'project': '5cef8c28ed02e5396860a50d', - 'created': '2021-02-19T10:46:16.031Z', - 'modified': '2021-02-22T11:14:27.829Z', - 'machineName': 'ieroeaewjerkyws:nestedWizardTestWithAdditionalComponents', + controller: '', + properties: {}, + settings: {}, + name: 'nestedWizardTestWithAdditionalComponents', + path: 'nestedwizardtestwithadditionalcomponents', + project: '5cef8c28ed02e5396860a50d', + created: '2021-02-19T10:46:16.031Z', + modified: '2021-02-22T11:14:27.829Z', + machineName: 'ieroeaewjerkyws:nestedWizardTestWithAdditionalComponents', }; diff --git a/test/forms/wizardWithNestedWizardInEditGrid.d.ts b/test/forms/wizardWithNestedWizardInEditGrid.d.ts index b0e4d811ba..c1be4b3fb9 100644 --- a/test/forms/wizardWithNestedWizardInEditGrid.d.ts +++ b/test/forms/wizardWithNestedWizardInEditGrid.d.ts @@ -1,52 +1,52 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: { - title: string; + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: { + title: string; + label: string; + type: string; + key: string; + components: { + label: string; + tableView: boolean; + rowDrafts: boolean; + key: string; + type: string; + input: boolean; + components: { label: string; - type: string; - key: string; - components: { - label: string; - tableView: boolean; - rowDrafts: boolean; - key: string; - type: string; - input: boolean; - components: { - label: string; - tableView: boolean; - useOriginalRevision: boolean; - key: string; - type: string; - input: boolean; - }[]; - }[]; - input: boolean; tableView: boolean; - }[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: { - roles: never[]; + useOriginalRevision: boolean; + key: string; type: string; + input: boolean; + }[]; }[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + input: boolean; + tableView: boolean; + }[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: { + roles: never[]; + type: string; + }[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithNestedWizardInEditGrid.js b/test/forms/wizardWithNestedWizardInEditGrid.js index a96915fe9a..299f4eec9d 100644 --- a/test/forms/wizardWithNestedWizardInEditGrid.js +++ b/test/forms/wizardWithNestedWizardInEditGrid.js @@ -1,146 +1,142 @@ export default { - '_id': '6081766efc88e7048cbe5245', - 'type': 'form', - 'tags': [], - 'owner': '6038bed737595d104cfc358a', - 'components': [ - { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + _id: '6081766efc88e7048cbe5245', + type: 'form', + tags: [], + owner: '6038bed737595d104cfc358a', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'label': 'Edit Grid', - 'tableView': false, - 'rowDrafts': false, - 'key': 'editGrid', - 'type': 'editgrid', - 'input': true, - 'components': [ + label: 'Edit Grid', + tableView: false, + rowDrafts: false, + key: 'editGrid', + type: 'editgrid', + input: true, + components: [ { - 'label': 'Form', - 'tableView': true, + label: 'Form', + tableView: true, // 'form': '60817a3afc88e7048cbe5260', - 'useOriginalRevision': false, - 'key': 'formNested', - 'type': 'form', - 'input': true - } - ] - } + useOriginalRevision: false, + key: 'formNested', + type: 'form', + input: true, + }, + ], + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Wizard with Nested Wizard in Edit Grid', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Wizard with Nested Wizard in Edit Grid', + display: 'wizard', + access: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ - '6038c83637595d104cfc3594', - '6038c83637595d104cfc3595', - '6038c83637595d104cfc3596' - ], - 'type': 'read_all' + roles: ['6038c83637595d104cfc3594', '6038c83637595d104cfc3595', '6038c83637595d104cfc3596'], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'submissionAccess': [ + submissionAccess: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [], - 'type': 'read_all' + roles: [], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'wizardWithNestedWizardInEditGrid', - 'path': 'wizardwithnestedwizardineditgrid', - 'project': '6038c83637595d104cfc3593', - 'created': '2021-04-22T13:13:18.336Z', - 'modified': '2021-04-22T14:21:14.725Z', - 'machineName': 'dqroghuntybetsh:11112' + controller: '', + properties: {}, + settings: {}, + name: 'wizardWithNestedWizardInEditGrid', + path: 'wizardwithnestedwizardineditgrid', + project: '6038c83637595d104cfc3593', + created: '2021-04-22T13:13:18.336Z', + modified: '2021-04-22T14:21:14.725Z', + machineName: 'dqroghuntybetsh:11112', }; diff --git a/test/forms/wizardWithPanel.d.ts b/test/forms/wizardWithPanel.d.ts index 3361dffa75..aeda0d7edd 100644 --- a/test/forms/wizardWithPanel.d.ts +++ b/test/forms/wizardWithPanel.d.ts @@ -1,59 +1,59 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: { - title: string; + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: { + title: string; + label: string; + type: string; + key: string; + components: { + breadcrumbClickable: boolean; + buttonSettings: { + previous: boolean; + cancel: boolean; + next: boolean; + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + input: boolean; + tableView: boolean; + components: { label: string; - type: string; - key: string; - components: { - breadcrumbClickable: boolean; - buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; - key: string; - type: string; - label: string; - input: boolean; - tableView: boolean; - components: { - label: string; - tableView: boolean; - useOriginalRevision: boolean; - key: string; - type: string; - input: boolean; - }[]; - }[]; - input: boolean; tableView: boolean; - }[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: { - roles: never[]; + useOriginalRevision: boolean; + key: string; type: string; + input: boolean; + }[]; }[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + input: boolean; + tableView: boolean; + }[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: { + roles: never[]; + type: string; + }[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithPanel.js b/test/forms/wizardWithPanel.js index e593cfd039..e03fbefc4a 100644 --- a/test/forms/wizardWithPanel.js +++ b/test/forms/wizardWithPanel.js @@ -1,153 +1,149 @@ export default { - '_id': '6086964cae4deb1b602846da', - 'type': 'form', - 'tags': [], - 'owner': '6038bed737595d104cfc358a', - 'components': [ - { - 'title': 'Page 1', - 'label': 'Page 1', - 'type': 'panel', - 'key': 'page1', - 'components': [ + _id: '6086964cae4deb1b602846da', + type: 'form', + tags: [], + owner: '6038bed737595d104cfc358a', + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ { - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'panel', - 'type': 'panel', - 'label': 'Panel', - 'input': false, - 'tableView': false, - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'panel', + type: 'panel', + label: 'Panel', + input: false, + tableView: false, + components: [ { - 'label': 'Form', - 'tableView': true, + label: 'Form', + tableView: true, // 'form': '60869600ae4deb1b602846d3', - 'useOriginalRevision': false, - 'key': 'middleForm', - 'type': 'form', - 'input': true - } - ] - } + useOriginalRevision: false, + key: 'middleForm', + type: 'form', + input: true, + }, + ], + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Wizard with Panel', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Wizard with Panel', + display: 'wizard', + access: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ - '6038c83637595d104cfc3594', - '6038c83637595d104cfc3595', - '6038c83637595d104cfc3596' - ], - 'type': 'read_all' + roles: ['6038c83637595d104cfc3594', '6038c83637595d104cfc3595', '6038c83637595d104cfc3596'], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'submissionAccess': [ + submissionAccess: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [], - 'type': 'read_all' + roles: [], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'wizardWithPanel', - 'path': 'wizardwithpanel', - 'project': '6038c83637595d104cfc3593', - 'created': '2021-04-26T10:30:36.217Z', - 'modified': '2021-04-26T10:36:27.653Z', - 'machineName': 'dqroghuntybetsh:wizardWithPanel' + controller: '', + properties: {}, + settings: {}, + name: 'wizardWithPanel', + path: 'wizardwithpanel', + project: '6038c83637595d104cfc3593', + created: '2021-04-26T10:30:36.217Z', + modified: '2021-04-26T10:36:27.653Z', + machineName: 'dqroghuntybetsh:wizardWithPanel', }; diff --git a/test/forms/wizardWithPrefixComps.d.ts b/test/forms/wizardWithPrefixComps.d.ts index dc7a9590b2..7c5c7c0c2a 100644 --- a/test/forms/wizardWithPrefixComps.d.ts +++ b/test/forms/wizardWithPrefixComps.d.ts @@ -1,15 +1,16 @@ declare namespace _default { - export { form }; - export { submission }; + export { form }; + export { submission }; } export default _default; declare namespace form { - const type: string; - const title: string; - const display: string; - const name: string; - const path: string; - const components: ({ + const type: string; + const title: string; + const display: string; + const name: string; + const path: string; + const components: ( + | { label: string; tableView: boolean; key: string; @@ -17,27 +18,29 @@ declare namespace form { input: boolean; title?: undefined; components?: undefined; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - })[]; + } + )[]; } declare namespace submission { - namespace data { - const prefixTextField: string; - const page1TextField: string; - const page2TextField: string; - const suffixTextField: string; - } + namespace data { + const prefixTextField: string; + const page1TextField: string; + const page2TextField: string; + const suffixTextField: string; + } } diff --git a/test/forms/wizardWithPrefixComps.js b/test/forms/wizardWithPrefixComps.js index 8131d27a48..361c0e2ced 100644 --- a/test/forms/wizardWithPrefixComps.js +++ b/test/forms/wizardWithPrefixComps.js @@ -1,65 +1,68 @@ const form = { - "type": "form", - "title": "wizard with prefix Components test", - "display": "wizard", - "name": "5904", - "path": "5904", - "components": [ + type: 'form', + title: 'wizard with prefix Components test', + display: 'wizard', + name: '5904', + path: '5904', + components: [ { - "label": "Prefix Text Field", - "tableView": true, - "key": "prefixTextField", - "type": "textfield", - "input": true + label: 'Prefix Text Field', + tableView: true, + key: 'prefixTextField', + type: 'textfield', + input: true, }, { - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "components": [ - { - "label": "Page 1 Text Field", - "tableView": true, - "key": "page1TextField", - "type": "textfield", - "input": true - }], - "input": false, - "tableView": false + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Page 1 Text Field', + tableView: true, + key: 'page1TextField', + type: 'textfield', + input: true, + }, + ], + input: false, + tableView: false, }, { - "title": "Page 2", - "label": "Page 2", - "type": "panel", - "key": "page2", - "components": [ - { - "label": "Page 2 Text Field", - "tableView": true, - "key": "page2TextField", - "type": "textfield", - "input": true - }], - "input": false, - "tableView": false + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + components: [ + { + label: 'Page 2 Text Field', + tableView: true, + key: 'page2TextField', + type: 'textfield', + input: true, + }, + ], + input: false, + tableView: false, }, { - "label": "Suffix Text Field", - "tableView": true, - "key": "suffixTextField", - "type": "textfield", - "input": true - }], + label: 'Suffix Text Field', + tableView: true, + key: 'suffixTextField', + type: 'textfield', + input: true, + }, + ], }; const submission = { data: { - "prefixTextField":"prefix", - "page1TextField":"page1", - "page2TextField":"page2", - "suffixTextField":"suffix", - } + prefixTextField: 'prefix', + page1TextField: 'page1', + page2TextField: 'page2', + suffixTextField: 'suffix', + }, }; export default { diff --git a/test/forms/wizardWithRequiredFields.js b/test/forms/wizardWithRequiredFields.js index e32bf2f564..da6117a466 100644 --- a/test/forms/wizardWithRequiredFields.js +++ b/test/forms/wizardWithRequiredFields.js @@ -1,69 +1,69 @@ export default { - 'type': 'form', - 'components': [ + type: 'form', + components: [ + { + title: 'Page With Required Field', + label: 'Page With Required Field', + type: 'panel', + key: 'pageWithRequiredField', + components: [ { - 'title': 'Page With Required Field', - 'label': 'Page With Required Field', - 'type': 'panel', - 'key': 'pageWithRequiredField', - 'components': [ + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + validate: { + required: true, + }, + validateWhenHidden: false, + key: 'textField', + type: 'textfield', + input: true, + }, + { + label: 'Data Grid', + reorder: false, + addAnotherPosition: 'bottom', + layoutFixed: false, + enableRowGroups: false, + initEmpty: false, + tableView: false, + validateWhenHidden: false, + key: 'dataGrid', + type: 'datagrid', + input: true, + components: [ { - 'label': 'Text Field', - 'applyMaskOn': 'change', - 'tableView': true, - 'validate': { - 'required': true - }, - 'validateWhenHidden': false, - 'key': 'textField', - 'type': 'textfield', - 'input': true + label: 'Text Field', + applyMaskOn: 'change', + tableView: true, + validate: { + required: true, + }, + validateWhenHidden: false, + key: 'textField', + type: 'textfield', + input: true, }, - { - 'label': 'Data Grid', - 'reorder': false, - 'addAnotherPosition': 'bottom', - 'layoutFixed': false, - 'enableRowGroups': false, - 'initEmpty': false, - 'tableView': false, - 'validateWhenHidden': false, - 'key': 'dataGrid', - 'type': 'datagrid', - 'input': true, - 'components': [ - { - 'label': 'Text Field', - 'applyMaskOn': 'change', - 'tableView': true, - 'validate': { - 'required': true - }, - 'validateWhenHidden': false, - 'key': 'textField', - 'type': 'textfield', - 'input': true - } - ] - } - ], - 'input': false, - 'tableView': false + ], }, - { - 'title': 'Page 2', - 'label': 'Page 2', - 'type': 'panel', - 'key': 'page2', - 'input': false, - 'tableView': false, - 'components': [] - } - ], - 'revisions': '', - '_vid': 0, - 'title': 'nested wizard with required fields', - 'display': 'wizard', - 'name': 'nestedWizard', - 'path': 'nestedwizard' -} \ No newline at end of file + ], + input: false, + tableView: false, + }, + { + title: 'Page 2', + label: 'Page 2', + type: 'panel', + key: 'page2', + input: false, + tableView: false, + components: [], + }, + ], + revisions: '', + _vid: 0, + title: 'nested wizard with required fields', + display: 'wizard', + name: 'nestedWizard', + path: 'nestedwizard', +}; diff --git a/test/forms/wizardWithSelectBoxes.d.ts b/test/forms/wizardWithSelectBoxes.d.ts index faed85865c..0a9f39a376 100644 --- a/test/forms/wizardWithSelectBoxes.d.ts +++ b/test/forms/wizardWithSelectBoxes.d.ts @@ -1,54 +1,57 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { title: string; label: string; type: string; key: string; components: { + label: string; + optionsLabelPosition: string; + tableView: boolean; + values: { label: string; - optionsLabelPosition: string; - tableView: boolean; - values: { - label: string; - value: string; - shortcut: string; - }[]; - validate: { - onlyAvailableItems: boolean; - minSelectedCount: number; - maxSelectedCount: number; - }; - key: string; - type: string; - input: boolean; - inputType: string; - defaultValue: { - one: boolean; - two: boolean; - three: boolean; - four: boolean; - five: boolean; - }; + value: string; + shortcut: string; + }[]; + validate: { + onlyAvailableItems: boolean; + minSelectedCount: number; + maxSelectedCount: number; + }; + key: string; + type: string; + input: boolean; + inputType: string; + defaultValue: { + one: boolean; + two: boolean; + three: boolean; + four: boolean; + five: boolean; + }; }[]; input: boolean; tableView: boolean; - } | { + } + | { title: string; label: string; type: string; key: string; components: { - label: string; - autoExpand: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; + label: string; + autoExpand: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - })[]; - const display: string; + } + )[]; + const display: string; } export default _default; diff --git a/test/forms/wizardWithSelectBoxes.js b/test/forms/wizardWithSelectBoxes.js index a62474f706..154acd8623 100644 --- a/test/forms/wizardWithSelectBoxes.js +++ b/test/forms/wizardWithSelectBoxes.js @@ -15,33 +15,33 @@ export default { { label: 'One', value: 'one', - shortcut: '' + shortcut: '', }, { label: 'Two', value: 'two', - shortcut: '' + shortcut: '', }, { label: 'Three', value: 'three', - shortcut: '' + shortcut: '', }, { label: 'Four', value: 'four', - shortcut: '' + shortcut: '', }, { label: 'Five', value: 'five', - shortcut: '' - } + shortcut: '', + }, ], validate: { onlyAvailableItems: false, minSelectedCount: 2, - maxSelectedCount: 4 + maxSelectedCount: 4, }, key: 'selectBoxes', type: 'selectboxes', @@ -52,12 +52,12 @@ export default { two: false, three: false, four: false, - five: false - } - } + five: false, + }, + }, ], input: false, - tableView: false + tableView: false, }, { title: 'Page 2', @@ -71,12 +71,12 @@ export default { tableView: true, key: 'textArea', type: 'textarea', - input: true - } + input: true, + }, ], input: false, - tableView: false - } + tableView: false, + }, ], display: 'wizard', }; diff --git a/test/forms/wizardWithSimpleConditionalPage.d.ts b/test/forms/wizardWithSimpleConditionalPage.d.ts index e93b494fb6..19022ab56f 100644 --- a/test/forms/wizardWithSimpleConditionalPage.d.ts +++ b/test/forms/wizardWithSimpleConditionalPage.d.ts @@ -1,18 +1,19 @@ declare namespace _default { - const type: string; - const tags: never[]; - const components: ({ + const type: string; + const tags: never[]; + const components: ( + | { title: string; label: string; type: string; key: string; components: { - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - defaultValue: boolean; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + defaultValue: boolean; }[]; input: boolean; tableView: boolean; @@ -20,42 +21,44 @@ declare namespace _default { buttonSettings?: undefined; collapsible?: undefined; conditional?: undefined; - } | { + } + | { title: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; collapsible: boolean; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; label: string; components: { - label: string; - mask: boolean; - spellcheck: boolean; - tableView: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - key: string; - type: string; - input: boolean; + label: string; + mask: boolean; + spellcheck: boolean; + tableView: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + key: string; + type: string; + input: boolean; }[]; input: boolean; tableView: boolean; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; - const machineName: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithSimpleConditionalPage.js b/test/forms/wizardWithSimpleConditionalPage.js index 27962d150a..679dd5487e 100644 --- a/test/forms/wizardWithSimpleConditionalPage.js +++ b/test/forms/wizardWithSimpleConditionalPage.js @@ -1,56 +1,63 @@ export default { - "type": "form", - "tags": [], - "components": [{ - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "components": [{ - "label": "Checkbox", - "tableView": false, - "key": "checkbox", - "type": "checkbox", - "input": true, - "defaultValue": false - }], - "input": false, - "tableView": false - }, { - "title": "Page 2", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true + type: 'form', + tags: [], + components: [ + { + title: 'Page 1', + label: 'Page 1', + type: 'panel', + key: 'page1', + components: [ + { + label: 'Checkbox', + tableView: false, + key: 'checkbox', + type: 'checkbox', + input: true, + defaultValue: false, + }, + ], + input: false, + tableView: false, }, - "collapsible": false, - "key": "page2", - "conditional": { - "show": true, - "when": "checkbox", - "eq": "true" + { + title: 'Page 2', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, + }, + collapsible: false, + key: 'page2', + conditional: { + show: true, + when: 'checkbox', + eq: 'true', + }, + type: 'panel', + label: 'Page 2', + components: [ + { + label: 'Number', + mask: false, + spellcheck: true, + tableView: false, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + key: 'number', + type: 'number', + input: true, + }, + ], + input: false, + tableView: false, }, - "type": "panel", - "label": "Page 2", - "components": [{ - "label": "Number", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "number", - "type": "number", - "input": true - }], - "input": false, - "tableView": false - }], - "title": "wizard test", - "display": "wizard", - "name": "wizardTest", - "path": "wizardtest", - "machineName": "nyisrmnbdpnjfut:wizardTest" + ], + title: 'wizard test', + display: 'wizard', + name: 'wizardTest', + path: 'wizardtest', + machineName: 'nyisrmnbdpnjfut:wizardTest', }; diff --git a/test/forms/wizardWithTooltip.d.ts b/test/forms/wizardWithTooltip.d.ts index ef76c8ed84..07f51325f7 100644 --- a/test/forms/wizardWithTooltip.d.ts +++ b/test/forms/wizardWithTooltip.d.ts @@ -1,15 +1,16 @@ declare namespace _default { - const _id: string; - const type: string; - const components: ({ + const _id: string; + const type: string; + const components: ( + | { title: string; theme: string; breadcrumb: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; tooltip: string; customClass: string; @@ -23,107 +24,107 @@ declare namespace _default { properties: {}; customConditional: string; conditional: { - json: string; - show: null; - when: null; - eq: string; + json: string; + show: null; + when: null; + eq: string; }; nextPage: string; logic: never[]; attributes: {}; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; label: string; tabindex: string; components: { - label: string; - labelPosition: string; - placeholder: string; - description: string; - tooltip: string; - prefix: string; - suffix: string; - widget: { - type: string; - }; - customClass: string; - tabindex: string; - autocomplete: string; - hidden: boolean; - hideLabel: boolean; - mask: boolean; - autofocus: boolean; - spellcheck: boolean; - disabled: boolean; - tableView: boolean; - modalEdit: boolean; - multiple: boolean; - persistent: boolean; - delimiter: boolean; - requireDecimal: boolean; - inputFormat: string; - protected: boolean; - dbIndex: boolean; - encrypted: boolean; - redrawOn: string; - clearOnHide: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - allowCalculateOverride: boolean; - validateOn: string; - validate: { - required: boolean; - customMessage: string; - custom: string; - customPrivate: boolean; - json: string; - min: string; - max: string; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - step: string; - integer: string; - }; - errorLabel: string; - key: string; - tags: never[]; - properties: {}; - conditional: { - show: null; - when: null; - eq: string; - json: string; - }; - customConditional: string; - logic: never[]; - attributes: {}; - overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; - }; + label: string; + labelPosition: string; + placeholder: string; + description: string; + tooltip: string; + prefix: string; + suffix: string; + widget: { type: string; - input: boolean; + }; + customClass: string; + tabindex: string; + autocomplete: string; + hidden: boolean; + hideLabel: boolean; + mask: boolean; + autofocus: boolean; + spellcheck: boolean; + disabled: boolean; + tableView: boolean; + modalEdit: boolean; + multiple: boolean; + persistent: boolean; + delimiter: boolean; + requireDecimal: boolean; + inputFormat: string; + protected: boolean; + dbIndex: boolean; + encrypted: boolean; + redrawOn: string; + clearOnHide: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + allowCalculateOverride: boolean; + validateOn: string; + validate: { + required: boolean; + customMessage: string; + custom: string; + customPrivate: boolean; + json: string; + min: string; + max: string; + strictDateValidation: boolean; + multiple: boolean; unique: boolean; - refreshOn: string; - dataGridLabel: boolean; - showCharCount: boolean; - showWordCount: boolean; - allowMultipleMasks: boolean; - id: string; - defaultValue: null; + step: string; + integer: string; + }; + errorLabel: string; + key: string; + tags: never[]; + properties: {}; + conditional: { + show: null; + when: null; + eq: string; + json: string; + }; + customConditional: string; + logic: never[]; + attributes: {}; + overlay: { + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; + }; + type: string; + input: boolean; + unique: boolean; + refreshOn: string; + dataGridLabel: boolean; + showCharCount: boolean; + showWordCount: boolean; + allowMultipleMasks: boolean; + id: string; + defaultValue: null; }[]; input: boolean; tableView: boolean; @@ -150,12 +151,12 @@ declare namespace _default { widget: null; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -164,15 +165,16 @@ declare namespace _default { allowMultipleMasks: boolean; tree: boolean; id: string; - } | { + } + | { title: string; theme: string; breadcrumb: string; breadcrumbClickable: boolean; buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; + previous: boolean; + cancel: boolean; + next: boolean; }; tooltip: string; customClass: string; @@ -186,98 +188,98 @@ declare namespace _default { properties: {}; customConditional: string; conditional: { - json: string; - show: null; - when: null; - eq: string; + json: string; + show: null; + when: null; + eq: string; }; nextPage: string; logic: never[]; attributes: {}; overlay: { - style: string; - page: string; - left: string; - top: string; - width: string; - height: string; + style: string; + page: string; + left: string; + top: string; + width: string; + height: string; }; type: string; label: string; tabindex: string; components: { - label: string; - tableView: boolean; - key: string; + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + placeholder: string; + prefix: string; + customClass: string; + suffix: string; + multiple: boolean; + defaultValue: null; + protected: boolean; + unique: boolean; + persistent: boolean; + hidden: boolean; + clearOnHide: boolean; + refreshOn: string; + redrawOn: string; + modalEdit: boolean; + dataGridLabel: boolean; + labelPosition: string; + description: string; + errorLabel: string; + tooltip: string; + hideLabel: boolean; + tabindex: string; + disabled: boolean; + autofocus: boolean; + dbIndex: boolean; + customDefaultValue: string; + calculateValue: string; + calculateServer: boolean; + widget: { type: string; - input: boolean; - placeholder: string; - prefix: string; - customClass: string; - suffix: string; + }; + attributes: {}; + validateOn: string; + validate: { + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; multiple: boolean; - defaultValue: null; - protected: boolean; unique: boolean; - persistent: boolean; - hidden: boolean; - clearOnHide: boolean; - refreshOn: string; - redrawOn: string; - modalEdit: boolean; - dataGridLabel: boolean; - labelPosition: string; - description: string; - errorLabel: string; - tooltip: string; - hideLabel: boolean; - tabindex: string; - disabled: boolean; - autofocus: boolean; - dbIndex: boolean; - customDefaultValue: string; - calculateValue: string; - calculateServer: boolean; - widget: { - type: string; - }; - attributes: {}; - validateOn: string; - validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; - minLength: string; - maxLength: string; - pattern: string; - }; - conditional: { - show: null; - when: null; - eq: string; - }; - overlay: { - style: string; - left: string; - top: string; - width: string; - height: string; - }; - allowCalculateOverride: boolean; - encrypted: boolean; - showCharCount: boolean; - showWordCount: boolean; - properties: {}; - allowMultipleMasks: boolean; - mask: boolean; - inputType: string; - inputFormat: string; - inputMask: string; - spellcheck: boolean; - id: string; + minLength: string; + maxLength: string; + pattern: string; + }; + conditional: { + show: null; + when: null; + eq: string; + }; + overlay: { + style: string; + left: string; + top: string; + width: string; + height: string; + }; + allowCalculateOverride: boolean; + encrypted: boolean; + showCharCount: boolean; + showWordCount: boolean; + properties: {}; + allowMultipleMasks: boolean; + mask: boolean; + inputType: string; + inputFormat: string; + inputMask: string; + spellcheck: boolean; + id: string; }[]; input: boolean; tableView: boolean; @@ -304,12 +306,12 @@ declare namespace _default { widget: null; validateOn: string; validate: { - required: boolean; - custom: string; - customPrivate: boolean; - strictDateValidation: boolean; - multiple: boolean; - unique: boolean; + required: boolean; + custom: string; + customPrivate: boolean; + strictDateValidation: boolean; + multiple: boolean; + unique: boolean; }; allowCalculateOverride: boolean; encrypted: boolean; @@ -318,10 +320,11 @@ declare namespace _default { allowMultipleMasks: boolean; tree: boolean; id: string; - })[]; - const title: string; - const display: string; - const name: string; - const path: string; + } + )[]; + const title: string; + const display: string; + const name: string; + const path: string; } export default _default; diff --git a/test/forms/wizardWithTooltip.js b/test/forms/wizardWithTooltip.js index c55a4ca5d3..dea172462b 100644 --- a/test/forms/wizardWithTooltip.js +++ b/test/forms/wizardWithTooltip.js @@ -1,326 +1,333 @@ export default { - "_id": "5fec7ca48da957762c7842ee", - "type": "form", - "components": [{ - "title": "Page 1 title", - "theme": "default", - "breadcrumb": "default", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "tooltip": "tooltip for page 1", - "customClass": "", - "collapsible": false, - "hidden": false, - "hideLabel": false, - "disabled": false, - "modalEdit": false, - "key": "page1", - "tags": [], - "properties": {}, - "customConditional": "", - "conditional": { - "json": "", - "show": null, - "when": null, - "eq": "" - }, - "nextPage": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "panel", - "label": "Page 1 title", - "tabindex": "", - "components": [{ - "label": "Number", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + _id: '5fec7ca48da957762c7842ee', + type: 'form', + components: [ + { + title: 'Page 1 title', + theme: 'default', + breadcrumb: 'default', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - "customClass": "", - "tabindex": "", - "autocomplete": "", - "hidden": false, - "hideLabel": false, - "mask": false, - "autofocus": false, - "spellcheck": true, - "disabled": false, - "tableView": false, - "modalEdit": false, - "multiple": false, - "persistent": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "protected": false, - "dbIndex": false, - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "allowCalculateOverride": false, - "validateOn": "change", - "validate": { - "required": false, - "customMessage": "", - "custom": "", - "customPrivate": false, - "json": "", - "min": "", - "max": "", - "strictDateValidation": false, - "multiple": false, - "unique": false, - "step": "any", - "integer": "" + tooltip: 'tooltip for page 1', + customClass: '', + collapsible: false, + hidden: false, + hideLabel: false, + disabled: false, + modalEdit: false, + key: 'page1', + tags: [], + properties: {}, + customConditional: '', + conditional: { + json: '', + show: null, + when: null, + eq: '', }, - "errorLabel": "", - "key": "number", - "tags": [], - "properties": {}, - "conditional": { - "show": null, - "when": null, - "eq": "", - "json": "" + nextPage: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - "customConditional": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + type: 'panel', + label: 'Page 1 title', + tabindex: '', + components: [ + { + label: 'Number', + labelPosition: 'top', + placeholder: '', + description: '', + tooltip: '', + prefix: '', + suffix: '', + widget: { + type: 'input', + }, + customClass: '', + tabindex: '', + autocomplete: '', + hidden: false, + hideLabel: false, + mask: false, + autofocus: false, + spellcheck: true, + disabled: false, + tableView: false, + modalEdit: false, + multiple: false, + persistent: true, + delimiter: false, + requireDecimal: false, + inputFormat: 'plain', + protected: false, + dbIndex: false, + encrypted: false, + redrawOn: '', + clearOnHide: true, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + allowCalculateOverride: false, + validateOn: 'change', + validate: { + required: false, + customMessage: '', + custom: '', + customPrivate: false, + json: '', + min: '', + max: '', + strictDateValidation: false, + multiple: false, + unique: false, + step: 'any', + integer: '', + }, + errorLabel: '', + key: 'number', + tags: [], + properties: {}, + conditional: { + show: null, + when: null, + eq: '', + json: '', + }, + customConditional: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', + }, + type: 'number', + input: true, + unique: false, + refreshOn: '', + dataGridLabel: false, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + id: 'eb4c1oj', + defaultValue: null, + }, + ], + input: false, + tableView: false, + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + dataGridLabel: false, + labelPosition: 'top', + description: '', + errorLabel: '', + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "type": "number", - "input": true, - "unique": false, - "refreshOn": "", - "dataGridLabel": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "id": "eb4c1oj", - "defaultValue": null - }], - "input": false, - "tableView": false, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": false, - "id": "epqpqle" - }, { - "title": "Page 2 title", - "theme": "default", - "breadcrumb": "default", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "tooltip": "tooltip for page 2", - "customClass": "", - "collapsible": false, - "hidden": false, - "hideLabel": false, - "disabled": false, - "modalEdit": false, - "key": "page2", - "tags": [], - "properties": {}, - "customConditional": "", - "conditional": { - "json": "", - "show": null, - "when": null, - "eq": "" - }, - "nextPage": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: false, + id: 'epqpqle', }, - "type": "panel", - "label": "Page 2 title", - "tabindex": "", - "components": [{ - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, - "refreshOn": "", - "redrawOn": "", - "modalEdit": false, - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": { - "type": "input" + { + title: 'Page 2 title', + theme: 'default', + breadcrumb: 'default', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false, - "minLength": "", - "maxLength": "", - "pattern": "" + tooltip: 'tooltip for page 2', + customClass: '', + collapsible: false, + hidden: false, + hideLabel: false, + disabled: false, + modalEdit: false, + key: 'page2', + tags: [], + properties: {}, + customConditional: '', + conditional: { + json: '', + show: null, + when: null, + eq: '', }, - "conditional": { - "show": null, - "when": null, - "eq": "" + nextPage: '', + logic: [], + attributes: {}, + overlay: { + style: '', + page: '', + left: '', + top: '', + width: '', + height: '', }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + type: 'panel', + label: 'Page 2 title', + tabindex: '', + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + placeholder: '', + prefix: '', + customClass: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: true, + hidden: false, + clearOnHide: true, + refreshOn: '', + redrawOn: '', + modalEdit: false, + dataGridLabel: false, + labelPosition: 'top', + description: '', + errorLabel: '', + tooltip: '', + hideLabel: false, + tabindex: '', + disabled: false, + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: { + type: 'input', + }, + attributes: {}, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, + minLength: '', + maxLength: '', + pattern: '', + }, + conditional: { + show: null, + when: null, + eq: '', + }, + overlay: { + style: '', + left: '', + top: '', + width: '', + height: '', + }, + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + properties: {}, + allowMultipleMasks: false, + mask: false, + inputType: 'text', + inputFormat: 'plain', + inputMask: '', + spellcheck: true, + id: 'eh695m', + }, + ], + input: false, + tableView: false, + placeholder: '', + prefix: '', + suffix: '', + multiple: false, + defaultValue: null, + protected: false, + unique: false, + persistent: false, + clearOnHide: false, + refreshOn: '', + redrawOn: '', + dataGridLabel: false, + labelPosition: 'top', + description: '', + errorLabel: '', + autofocus: false, + dbIndex: false, + customDefaultValue: '', + calculateValue: '', + calculateServer: false, + widget: null, + validateOn: 'change', + validate: { + required: false, + custom: '', + customPrivate: false, + strictDateValidation: false, + multiple: false, + unique: false, }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "mask": false, - "inputType": "text", - "inputFormat": "plain", - "inputMask": "", - "spellcheck": true, - "id": "eh695m" - }], - "input": false, - "tableView": false, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false + allowCalculateOverride: false, + encrypted: false, + showCharCount: false, + showWordCount: false, + allowMultipleMasks: false, + tree: false, + id: 'eexnju', }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": false, - "id": "eexnju" - }], - "title": "testTooltips", - "display": "wizard", - "name": "testTooltips", - "path": "testtooltips", -} + ], + title: 'testTooltips', + display: 'wizard', + name: 'testTooltips', + path: 'testtooltips', +}; diff --git a/test/forms/wizardWithWizard.d.ts b/test/forms/wizardWithWizard.d.ts index 72f5f8bf06..17cf1cb97f 100644 --- a/test/forms/wizardWithWizard.d.ts +++ b/test/forms/wizardWithWizard.d.ts @@ -1,52 +1,52 @@ declare namespace _default { - const _id: string; - const type: string; - const tags: never[]; - const owner: string; - const components: { - title: string; - breadcrumbClickable: boolean; - buttonSettings: { - previous: boolean; - cancel: boolean; - next: boolean; - }; - scrollToTop: boolean; - collapsible: boolean; - key: string; - type: string; - label: string; - components: { - label: string; - tableView: boolean; - useOriginalRevision: boolean; - key: string; - type: string; - input: boolean; - }[]; - input: boolean; - tableView: boolean; + const _id: string; + const type: string; + const tags: never[]; + const owner: string; + const components: { + title: string; + breadcrumbClickable: boolean; + buttonSettings: { + previous: boolean; + cancel: boolean; + next: boolean; + }; + scrollToTop: boolean; + collapsible: boolean; + key: string; + type: string; + label: string; + components: { + label: string; + tableView: boolean; + useOriginalRevision: boolean; + key: string; + type: string; + input: boolean; }[]; - const revisions: string; - const _vid: number; - const title: string; - const display: string; - const access: { - roles: string[]; - type: string; - }[]; - const submissionAccess: { - roles: never[]; - type: string; - }[]; - const controller: string; - const properties: {}; - const settings: {}; - const name: string; - const path: string; - const project: string; - const created: string; - const modified: string; - const machineName: string; + input: boolean; + tableView: boolean; + }[]; + const revisions: string; + const _vid: number; + const title: string; + const display: string; + const access: { + roles: string[]; + type: string; + }[]; + const submissionAccess: { + roles: never[]; + type: string; + }[]; + const controller: string; + const properties: {}; + const settings: {}; + const name: string; + const path: string; + const project: string; + const created: string; + const modified: string; + const machineName: string; } export default _default; diff --git a/test/forms/wizardWithWizard.js b/test/forms/wizardWithWizard.js index f5c17893d6..5f74567d13 100644 --- a/test/forms/wizardWithWizard.js +++ b/test/forms/wizardWithWizard.js @@ -1,144 +1,140 @@ export default { - '_id': '60869600ae4deb1b602846d3', - 'type': 'form', - 'tags': [], - 'owner': '6038bed737595d104cfc358a', - 'components': [ - { - 'title': 'Page 1', - 'breadcrumbClickable': true, - 'buttonSettings': { - 'previous': true, - 'cancel': true, - 'next': true + _id: '60869600ae4deb1b602846d3', + type: 'form', + tags: [], + owner: '6038bed737595d104cfc358a', + components: [ + { + title: 'Page 1', + breadcrumbClickable: true, + buttonSettings: { + previous: true, + cancel: true, + next: true, }, - 'scrollToTop': false, - 'collapsible': false, - 'key': 'page1', - 'type': 'panel', - 'label': 'Page 2', - 'components': [ + scrollToTop: false, + collapsible: false, + key: 'page1', + type: 'panel', + label: 'Page 2', + components: [ { - 'label': 'Form', - 'tableView': true, + label: 'Form', + tableView: true, // 'form': '60817a3afc88e7048cbe5260', - 'useOriginalRevision': false, - 'key': 'childForm', - 'type': 'form', - 'input': true - } + useOriginalRevision: false, + key: 'childForm', + type: 'form', + input: true, + }, ], - 'input': false, - 'tableView': false - } + input: false, + tableView: false, + }, ], - 'revisions': '', - '_vid': 0, - 'title': 'Wizard With Wizard', - 'display': 'wizard', - 'access': [ + revisions: '', + _vid: 0, + title: 'Wizard With Wizard', + display: 'wizard', + access: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [ - '6038c83637595d104cfc3594', - '6038c83637595d104cfc3595', - '6038c83637595d104cfc3596' - ], - 'type': 'read_all' + roles: ['6038c83637595d104cfc3594', '6038c83637595d104cfc3595', '6038c83637595d104cfc3596'], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'submissionAccess': [ + submissionAccess: [ { - 'roles': [], - 'type': 'create_own' + roles: [], + type: 'create_own', }, { - 'roles': [], - 'type': 'create_all' + roles: [], + type: 'create_all', }, { - 'roles': [], - 'type': 'read_own' + roles: [], + type: 'read_own', }, { - 'roles': [], - 'type': 'read_all' + roles: [], + type: 'read_all', }, { - 'roles': [], - 'type': 'update_own' + roles: [], + type: 'update_own', }, { - 'roles': [], - 'type': 'update_all' + roles: [], + type: 'update_all', }, { - 'roles': [], - 'type': 'delete_own' + roles: [], + type: 'delete_own', }, { - 'roles': [], - 'type': 'delete_all' + roles: [], + type: 'delete_all', }, { - 'roles': [], - 'type': 'team_read' + roles: [], + type: 'team_read', }, { - 'roles': [], - 'type': 'team_write' + roles: [], + type: 'team_write', }, { - 'roles': [], - 'type': 'team_admin' - } + roles: [], + type: 'team_admin', + }, ], - 'controller': '', - 'properties': {}, - 'settings': {}, - 'name': 'wizardWithWizard', - 'path': 'wizardwithwizard', - 'project': '6038c83637595d104cfc3593', - 'created': '2021-04-26T10:29:20.041Z', - 'modified': '2021-04-26T11:09:02.497Z', - 'machineName': 'dqroghuntybetsh:wizardWithWizard' + controller: '', + properties: {}, + settings: {}, + name: 'wizardWithWizard', + path: 'wizardwithwizard', + project: '6038c83637595d104cfc3593', + created: '2021-04-26T10:29:20.041Z', + modified: '2021-04-26T11:09:02.497Z', + machineName: 'dqroghuntybetsh:wizardWithWizard', }; diff --git a/test/formtest/advanced.json b/test/formtest/advanced.json index df80c58116..7b19046343 100644 --- a/test/formtest/advanced.json +++ b/test/formtest/advanced.json @@ -654,11 +654,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e4", - "5692b920d1028f01000407e5", - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"], "type": "read_all" }, { @@ -704,9 +700,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e6"], "type": "read_all" }, { diff --git a/test/formtest/advancedLogicForm.json b/test/formtest/advancedLogicForm.json index 95c1bd2abe..7a2684ffdb 100644 --- a/test/formtest/advancedLogicForm.json +++ b/test/formtest/advancedLogicForm.json @@ -1,52 +1,60 @@ { "type": "form", - "components": [{ - "label": "Checkbox", - "tableView": false, - "defaultValue": false, - "key": "requestedCovers.HOUSECONTENT_JEWELRY", - "type": "checkbox", - "input": true - }, { - "label": "Currency", - "mask": false, - "spellcheck": true, - "tableView": false, - "currency": "USD", - "inputFormat": "plain", - "key": "currency", - "logic": [{ - "name": "Logic", - "trigger": { - "type": "simple", - "simple": { - "show": true, - "when": "requestedCovers.HOUSECONTENT_JEWELRY", - "eq": "true" + "components": [ + { + "label": "Checkbox", + "tableView": false, + "defaultValue": false, + "key": "requestedCovers.HOUSECONTENT_JEWELRY", + "type": "checkbox", + "input": true + }, + { + "label": "Currency", + "mask": false, + "spellcheck": true, + "tableView": false, + "currency": "USD", + "inputFormat": "plain", + "key": "currency", + "logic": [ + { + "name": "Logic", + "trigger": { + "type": "simple", + "simple": { + "show": true, + "when": "requestedCovers.HOUSECONTENT_JEWELRY", + "eq": "true" + } + }, + "actions": [ + { + "name": "Action", + "type": "property", + "property": { + "label": "Disabled", + "value": "disabled", + "type": "boolean" + }, + "state": true + } + ] } - }, - "actions": [{ - "name": "Action", - "type": "property", - "property": { - "label": "Disabled", - "value": "disabled", - "type": "boolean" - }, - "state": true - }] - }], - "type": "currency", - "input": true, - "delimiter": true - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "input": true, - "tableView": false - }], + ], + "type": "currency", + "input": true, + "delimiter": true + }, + { + "type": "button", + "label": "Submit", + "key": "submit", + "disableOnInvalid": true, + "input": true, + "tableView": false + } + ], "title": "dotNotation", - "display": "form" + "display": "form" } diff --git a/test/formtest/basic.json b/test/formtest/basic.json index e59719d0f3..b91ba5b3d1 100644 --- a/test/formtest/basic.json +++ b/test/formtest/basic.json @@ -502,11 +502,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e4", - "5692b920d1028f01000407e5", - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"], "type": "read_all" }, { @@ -552,9 +548,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e6"], "type": "read_all" }, { diff --git a/test/formtest/blurValidationInsidePanel.json b/test/formtest/blurValidationInsidePanel.json index 21ca341fb6..07f510cf68 100644 --- a/test/formtest/blurValidationInsidePanel.json +++ b/test/formtest/blurValidationInsidePanel.json @@ -1,32 +1,37 @@ { "type": "form", - "_id":"5f05ddf647b38b48d175d76f", - "components": [{ - "collapsible": false, - "tableView": false, - "key": "panel", - "type": "panel", - "label": "Panel", - "input": false, - "components": [{ - "label": "Text Field", - "tableView": true, - "validateOn": "blur", - "validate": { - "minLength": 5 - }, - "key": "textField", - "type": "textfield", - "input": true - }] - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "input": true, - "tableView": false - }], + "_id": "5f05ddf647b38b48d175d76f", + "components": [ + { + "collapsible": false, + "tableView": false, + "key": "panel", + "type": "panel", + "label": "Panel", + "input": false, + "components": [ + { + "label": "Text Field", + "tableView": true, + "validateOn": "blur", + "validate": { + "minLength": 5 + }, + "key": "textField", + "type": "textfield", + "input": true + } + ] + }, + { + "type": "button", + "label": "Submit", + "key": "submit", + "disableOnInvalid": true, + "input": true, + "tableView": false + } + ], "title": "blurInsidePanel", "display": "form", "name": "blurInsidePanel", diff --git a/test/formtest/calculateValueInEditingMode.json b/test/formtest/calculateValueInEditingMode.json index aa082b75b4..db397de344 100644 --- a/test/formtest/calculateValueInEditingMode.json +++ b/test/formtest/calculateValueInEditingMode.json @@ -62,11 +62,7 @@ "access": [ { - "roles": [ - "5ebb002541fe5bae34e9fd0c", - "5ebb002541fe5b081de9fd0d", - "5ebb002541fe5b6664e9fd0e" - ], + "roles": ["5ebb002541fe5bae34e9fd0c", "5ebb002541fe5b081de9fd0d", "5ebb002541fe5b6664e9fd0e"], "type": "read_all" } ], diff --git a/test/formtest/calculateValueWithManualOverride.json b/test/formtest/calculateValueWithManualOverride.json index e98fb89858..d1fb08269f 100644 --- a/test/formtest/calculateValueWithManualOverride.json +++ b/test/formtest/calculateValueWithManualOverride.json @@ -1,9 +1,7 @@ { "_id": "5ebbcbbd555a6e16803b2510", "type": "form", - "tags": [ - - ], + "tags": [], "owner": "5e05a6b7549cdc2ece30c6b0", "components": [ { @@ -49,12 +47,8 @@ }, "errorLabel": "", "key": "checkbox", - "tags": [ - - ], - "properties": { - - }, + "tags": [], + "properties": {}, "conditional": { "show": null, "when": null, @@ -62,12 +56,8 @@ "json": "" }, "customConditional": "", - "logic": [ - - ], - "attributes": { - - }, + "logic": [], + "attributes": {}, "overlay": { "style": "", "page": "", @@ -153,12 +143,8 @@ "unique": false, "errorLabel": "", "key": "dataGrid", - "tags": [ - - ], - "properties": { - - }, + "tags": [], + "properties": {}, "conditional": { "show": false, "when": "checkbox", @@ -166,12 +152,8 @@ "json": "" }, "customConditional": "", - "logic": [ - - ], - "attributes": { - - }, + "logic": [], + "attributes": {}, "overlay": { "style": "", "page": "", @@ -218,9 +200,7 @@ "widget": { "type": "input" }, - "attributes": { - - }, + "attributes": {}, "validateOn": "change", "validate": { "required": false, @@ -249,9 +229,7 @@ "encrypted": false, "showCharCount": false, "showWordCount": false, - "properties": { - - }, + "properties": {}, "allowMultipleMasks": false, "mask": false, "inputType": "text", @@ -302,9 +280,7 @@ "widget": { "type": "input" }, - "attributes": { - - }, + "attributes": {}, "validateOn": "change", "validate": { "required": false, @@ -332,9 +308,7 @@ "encrypted": false, "showCharCount": false, "showWordCount": false, - "properties": { - - }, + "properties": {}, "allowMultipleMasks": false, "mask": false, "inputType": "text", @@ -389,9 +363,7 @@ "customDefaultValue": "", "calculateValue": "", "widget": null, - "attributes": { - - }, + "attributes": {}, "validateOn": "change", "validate": { "required": false, @@ -417,9 +389,7 @@ "encrypted": false, "showCharCount": false, "showWordCount": false, - "properties": { - - }, + "properties": {}, "allowMultipleMasks": false, "tree": false, "id": "erit9d9", @@ -460,9 +430,7 @@ "widget": { "type": "input" }, - "attributes": { - - }, + "attributes": {}, "validateOn": "change", "validate": { "required": false, @@ -488,9 +456,7 @@ "encrypted": false, "showCharCount": false, "showWordCount": false, - "properties": { - - }, + "properties": {}, "allowMultipleMasks": false, "size": "md", "leftIcon": "", @@ -510,23 +476,13 @@ "display": "form", "access": [ { - "roles": [ - "5e96e79ee1c3ad3178454100", - "5e96e79ee1c3ad3178454101", - "5e96e79ee1c3ad3178454102" - ], + "roles": ["5e96e79ee1c3ad3178454100", "5e96e79ee1c3ad3178454101", "5e96e79ee1c3ad3178454102"], "type": "read_all" } ], - "submissionAccess": [ - - ], - "settings": { - - }, - "properties": { - - }, + "submissionAccess": [], + "settings": {}, + "properties": {}, "name": "ccc", "path": "ccc", "project": "5e96e79ee1c3ad31784540ff", diff --git a/test/formtest/calculateZeroValue.json b/test/formtest/calculateZeroValue.json index 3c0d24f473..1c49f0552a 100644 --- a/test/formtest/calculateZeroValue.json +++ b/test/formtest/calculateZeroValue.json @@ -39,4 +39,4 @@ "display": "form", "name": "calcWithFalseValue", "path": "calcwithfalsevalue" -} \ No newline at end of file +} diff --git a/test/formtest/calculatedNotPersistentValue.json b/test/formtest/calculatedNotPersistentValue.json index 9ef8c46b5a..122b821def 100644 --- a/test/formtest/calculatedNotPersistentValue.json +++ b/test/formtest/calculatedNotPersistentValue.json @@ -25,11 +25,7 @@ "display": "form", "access": [ { - "roles": [ - "5ebb002541fe5bae34e9fd0c", - "5ebb002541fe5b081de9fd0d", - "5ebb002541fe5b6664e9fd0e" - ], + "roles": ["5ebb002541fe5bae34e9fd0c", "5ebb002541fe5b081de9fd0d", "5ebb002541fe5b6664e9fd0e"], "type": "read_all" } ], diff --git a/test/formtest/calculatedSelectboxes.json b/test/formtest/calculatedSelectboxes.json index 52c090cbd9..91e2927141 100644 --- a/test/formtest/calculatedSelectboxes.json +++ b/test/formtest/calculatedSelectboxes.json @@ -74,11 +74,7 @@ "display": "form", "access": [ { - "roles": [ - "5ec618dbca7d5e849d3266f7", - "5ec618dbca7d5eac193266f8", - "5ec618dbca7d5e4ab43266f9" - ], + "roles": ["5ec618dbca7d5e849d3266f7", "5ec618dbca7d5eac193266f8", "5ec618dbca7d5e4ab43266f9"], "type": "read_all" } ], diff --git a/test/formtest/calculatedValueForm.json b/test/formtest/calculatedValueForm.json index 07c9eb5441..718ae50fcc 100644 --- a/test/formtest/calculatedValueForm.json +++ b/test/formtest/calculatedValueForm.json @@ -1,47 +1,52 @@ { "type": "form", - "components": [{ - "input": true, - "tableView": true, - "inputType": "text", - "label": "Amount 1", - "key": "amount1", - "delimiter": true, - "decimalLimit": 2, - "requireDecimal": true, - "type": "currency" - }, { - "input": true, - "tableView": true, - "inputType": "text", - "label": "Amount 2", - "key": "amount2", - "delimiter": true, - "decimalLimit": 2, - "requireDecimal": true, - "type": "currency" - }, { - "label": "Total", - "mask": false, - "spellcheck": true, - "tableView": true, - "currency": "USD", - "inputFormat": "plain", - "calculateValue": "var temp = [data.amount1, data.amount2];\nvar total = 0;\n\nfor (var i = 0; i < temp.length; i++) {\n total += !isNaN(temp[i]) ? temp[i] : 0;\n}\n\nvalue = total;", - "key": "currency", - "type": "currency", - "input": true, - "inputType": "text", - "delimiter": true, - "decimalLimit": 2, - "requireDecimal": true - }, { - "input": true, - "label": "Submit", - "tableView": false, - "key": "submit", - "type": "button" - }], + "components": [ + { + "input": true, + "tableView": true, + "inputType": "text", + "label": "Amount 1", + "key": "amount1", + "delimiter": true, + "decimalLimit": 2, + "requireDecimal": true, + "type": "currency" + }, + { + "input": true, + "tableView": true, + "inputType": "text", + "label": "Amount 2", + "key": "amount2", + "delimiter": true, + "decimalLimit": 2, + "requireDecimal": true, + "type": "currency" + }, + { + "label": "Total", + "mask": false, + "spellcheck": true, + "tableView": true, + "currency": "USD", + "inputFormat": "plain", + "calculateValue": "var temp = [data.amount1, data.amount2];\nvar total = 0;\n\nfor (var i = 0; i < temp.length; i++) {\n total += !isNaN(temp[i]) ? temp[i] : 0;\n}\n\nvalue = total;", + "key": "currency", + "type": "currency", + "input": true, + "inputType": "text", + "delimiter": true, + "decimalLimit": 2, + "requireDecimal": true + }, + { + "input": true, + "label": "Submit", + "tableView": false, + "key": "submit", + "type": "button" + } + ], "name": "preventOverriding", "path": "preventoverriding" } diff --git a/test/formtest/columnsForm.json b/test/formtest/columnsForm.json index ecb39bea1f..05ce4bd65d 100644 --- a/test/formtest/columnsForm.json +++ b/test/formtest/columnsForm.json @@ -7,9 +7,7 @@ "label": "Columns", "columns": [ { - "components": [ - - ], + "components": [], "width": 6, "offset": 0, "push": 0, @@ -17,9 +15,7 @@ "size": "md" }, { - "components": [ - - ], + "components": [], "width": 6, "offset": 0, "push": 0, @@ -40,11 +36,7 @@ "display": "form", "access": [ { - "roles": [ - "5ec618dbca7d5e849d3266f7", - "5ec618dbca7d5eac193266f8", - "5ec618dbca7d5e4ab43266f9" - ], + "roles": ["5ec618dbca7d5e849d3266f7", "5ec618dbca7d5eac193266f8", "5ec618dbca7d5e4ab43266f9"], "type": "read_all" } ], diff --git a/test/formtest/conditionalLogicForm.json b/test/formtest/conditionalLogicForm.json index 64d3153af7..5c4fac87d6 100644 --- a/test/formtest/conditionalLogicForm.json +++ b/test/formtest/conditionalLogicForm.json @@ -1,76 +1,91 @@ { "type": "form", - "components": [{ - "label": "Container", - "tableView": false, - "key": "container1", - "type": "container", - "input": true, - "components": [{ - "label": "Radio", - "optionsLabelPosition": "right", - "inline": false, + "components": [ + { + "label": "Container", "tableView": false, - "values": [{ - "label": "yes", - "value": "yes", - "shortcut": "" - }, { - "label": "no", - "value": "no", - "shortcut": "" - }], - "key": "radio1", - "type": "radio", - "input": true - }, { - "label": "Text Field", - "tableView": true, - "key": "textField", - "conditional": { - "show": true, - "when": "container1.radio1", - "eq": "yes" - }, - "type": "textfield", - "input": true - }] - }, { - "label": "Container", - "tableView": false, - "key": "container2", - "type": "container", - "input": true, - "components": [{ - "label": "Radio", - "optionsLabelPosition": "right", - "inline": false, + "key": "container1", + "type": "container", + "input": true, + "components": [ + { + "label": "Radio", + "optionsLabelPosition": "right", + "inline": false, + "tableView": false, + "values": [ + { + "label": "yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "no", + "value": "no", + "shortcut": "" + } + ], + "key": "radio1", + "type": "radio", + "input": true + }, + { + "label": "Text Field", + "tableView": true, + "key": "textField", + "conditional": { + "show": true, + "when": "container1.radio1", + "eq": "yes" + }, + "type": "textfield", + "input": true + } + ] + }, + { + "label": "Container", "tableView": false, - "values": [{ - "label": "yes", - "value": "yes", - "shortcut": "" - }, { - "label": "no", - "value": "no", - "shortcut": "" - }], - "key": "radio1", - "type": "radio", - "input": true - }, { - "label": "Text Field", - "tableView": true, - "key": "textField", - "conditional": { - "show": true, - "when": "container2.radio1", - "eq": "yes" - }, - "type": "textfield", - "input": true - }] - }], + "key": "container2", + "type": "container", + "input": true, + "components": [ + { + "label": "Radio", + "optionsLabelPosition": "right", + "inline": false, + "tableView": false, + "values": [ + { + "label": "yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "no", + "value": "no", + "shortcut": "" + } + ], + "key": "radio1", + "type": "radio", + "input": true + }, + { + "label": "Text Field", + "tableView": true, + "key": "textField", + "conditional": { + "show": true, + "when": "container2.radio1", + "eq": "yes" + }, + "type": "textfield", + "input": true + } + ] + } + ], "title": "equalKeys", "display": "form", "path": "equalkeys" diff --git a/test/formtest/data.json b/test/formtest/data.json index 618777694c..411be6c93c 100644 --- a/test/formtest/data.json +++ b/test/formtest/data.json @@ -672,11 +672,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e4", - "5692b920d1028f01000407e5", - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"], "type": "read_all" }, { @@ -722,9 +718,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e6"], "type": "read_all" }, { diff --git a/test/formtest/defaults.json b/test/formtest/defaults.json index 0d37434e25..a7d1ab5055 100644 --- a/test/formtest/defaults.json +++ b/test/formtest/defaults.json @@ -1860,11 +1860,7 @@ "display": "form", "access": [ { - "roles": [ - "5692b920d1028f01000407e4", - "5692b920d1028f01000407e5", - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"], "type": "read_all" } ], diff --git a/test/formtest/disabledNestedForm.json b/test/formtest/disabledNestedForm.json index 892c524827..5cc8473f6f 100644 --- a/test/formtest/disabledNestedForm.json +++ b/test/formtest/disabledNestedForm.json @@ -54,4 +54,4 @@ "title": "FJS-1136", "display": "form", "name": "fjs1136" -} \ No newline at end of file +} diff --git a/test/formtest/displayAsModalEditGrid.json b/test/formtest/displayAsModalEditGrid.json index 7d688af00b..c2fa4754e4 100644 --- a/test/formtest/displayAsModalEditGrid.json +++ b/test/formtest/displayAsModalEditGrid.json @@ -1,9 +1,7 @@ { "_id": "5ece2d11b8c2fe102c726057", "type": "form", - "tags": [ - - ], + "tags": [], "owner": "5e05a6b7549cdc2ece30c6b0", "components": [ { @@ -37,9 +35,7 @@ "key": "select1", "type": "select", "indexeddb": { - "filter": { - - } + "filter": {} }, "input": true }, @@ -127,9 +123,7 @@ "key": "select", "type": "select", "indexeddb": { - "filter": { - - } + "filter": {} }, "input": true } @@ -163,23 +157,13 @@ "display": "form", "access": [ { - "roles": [ - "5e96e79ee1c3ad3178454100", - "5e96e79ee1c3ad3178454101", - "5e96e79ee1c3ad3178454102" - ], + "roles": ["5e96e79ee1c3ad3178454100", "5e96e79ee1c3ad3178454101", "5e96e79ee1c3ad3178454102"], "type": "read_all" } ], - "submissionAccess": [ - - ], - "settings": { - - }, - "properties": { - - }, + "submissionAccess": [], + "settings": {}, + "properties": {}, "name": "modalSelectValidation", "path": "modalselectvalidation", "created": "2020-05-27T09:04:17.962Z", diff --git a/test/formtest/editGridModalDraftsTest.json b/test/formtest/editGridModalDraftsTest.json index 785ce01cb1..f521ad8c6d 100644 --- a/test/formtest/editGridModalDraftsTest.json +++ b/test/formtest/editGridModalDraftsTest.json @@ -1,50 +1,50 @@ { - "type": "form", - "tags": [], - "components": [ - { - "label": "Edit Grid", - "tableView": false, - "modal": true, - "rowDrafts": true, - "key": "editGrid", - "type": "editgrid", - "input": true, - "components": [ - { - "label": "Text Field", - "tableView": true, - "validate": { "required": true }, - "key": "textField", - "type": "textfield", - "input": true - }, - { - "label": "Number", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "validate": { "required": true }, - "key": "number", - "type": "number", - "input": true - } - ] - }, - { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - } - ], - "title": "editGridDraftsTest", - "display": "form", - "name": "editGridDraftsTest", - "path": "editgriddraftstest" + "type": "form", + "tags": [], + "components": [ + { + "label": "Edit Grid", + "tableView": false, + "modal": true, + "rowDrafts": true, + "key": "editGrid", + "type": "editgrid", + "input": true, + "components": [ + { + "label": "Text Field", + "tableView": true, + "validate": { "required": true }, + "key": "textField", + "type": "textfield", + "input": true + }, + { + "label": "Number", + "mask": false, + "spellcheck": true, + "tableView": false, + "delimiter": false, + "requireDecimal": false, + "inputFormat": "plain", + "validate": { "required": true }, + "key": "number", + "type": "number", + "input": true + } + ] + }, + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], + "title": "editGridDraftsTest", + "display": "form", + "name": "editGridDraftsTest", + "path": "editgriddraftstest" } diff --git a/test/formtest/formComponentWithConditionalRenderingForm.json b/test/formtest/formComponentWithConditionalRenderingForm.json index dcbbe2f39e..d98083d037 100644 --- a/test/formtest/formComponentWithConditionalRenderingForm.json +++ b/test/formtest/formComponentWithConditionalRenderingForm.json @@ -1,40 +1,44 @@ { "type": "form", - "components": [{ - "label": "Checkbox", - "tableView": false, - "key": "checkbox", - "type": "checkbox", - "input": true - }, - { - "label": "Form", - "tableView": true, - "form": "5e87a5b828d01e257e7142b0", - "key": "form", - "conditional": { + "components": [ + { + "label": "Checkbox", + "tableView": false, + "key": "checkbox", + "type": "checkbox", + "input": true + }, + { + "label": "Form", + "tableView": true, + "form": "5e87a5b828d01e257e7142b0", + "key": "form", + "conditional": { "show": true, "when": "checkbox", "eq": "true" + }, + "type": "form", + "input": true, + "components": [ + { + "label": "Text Field", + "tableView": true, + "key": "textField", + "type": "textfield", + "input": true + } + ] }, - "type": "form", - "input": true, - "components": [{ - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true - }] - }, - { + { "type": "button", "label": "Submit", "key": "submit", "disableOnInvalid": true, "input": true, "tableView": false - }], + } + ], "title": "formComponentWithConditionalRenderingTest", "display": "form", "name": "formComponentWithConditionalRenderingTest", diff --git a/test/formtest/formWithCollapsedPanel.json b/test/formtest/formWithCollapsedPanel.json index 039d61e60b..090ca28ec0 100644 --- a/test/formtest/formWithCollapsedPanel.json +++ b/test/formtest/formWithCollapsedPanel.json @@ -1,53 +1,63 @@ { "type": "form", - "components": [{ - "collapsible": true, - "key": "panel", - "type": "panel", - "label": "Panel", - "input": false, - "tableView": false, - "components": [{ - "label": "Columns", - "columns": [{ - "components": [{ - "label": "Text Field", - "tableView": true, - "validate": { - "required": true - }, - "key": "textField", - "type": "textfield", - "input": true, - "hideOnChildrenHidden": false - }], - "width": 6, - "offset": 0, - "push": 0, - "pull": 0, - "size": "md" - }, { - "components": [], - "width": 6, - "offset": 0, - "push": 0, - "pull": 0, - "size": "md" - }], - "key": "columns", - "type": "columns", + "components": [ + { + "collapsible": true, + "key": "panel", + "type": "panel", + "label": "Panel", "input": false, - "tableView": false - }], - "collapsed": true - }, { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - }], + "tableView": false, + "components": [ + { + "label": "Columns", + "columns": [ + { + "components": [ + { + "label": "Text Field", + "tableView": true, + "validate": { + "required": true + }, + "key": "textField", + "type": "textfield", + "input": true, + "hideOnChildrenHidden": false + } + ], + "width": 6, + "offset": 0, + "push": 0, + "pull": 0, + "size": "md" + }, + { + "components": [], + "width": 6, + "offset": 0, + "push": 0, + "pull": 0, + "size": "md" + } + ], + "key": "columns", + "type": "columns", + "input": false, + "tableView": false + } + ], + "collapsed": true + }, + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], "title": "panelCollapsing", "display": "form", "name": "panelCollapsing", diff --git a/test/formtest/formWithCustomFormatDate.json b/test/formtest/formWithCustomFormatDate.json index 8cebbfe0bc..a72da41fe0 100644 --- a/test/formtest/formWithCustomFormatDate.json +++ b/test/formtest/formWithCustomFormatDate.json @@ -1,107 +1,111 @@ { "type": "form", - "components": [{ - "label": "Data Grid", - "reorder": false, - "addAnotherPosition": "bottom", - "defaultOpen": false, - "layoutFixed": false, - "enableRowGroups": false, - "initEmpty": false, - "tableView": false, - "defaultValue": [{}], - "key": "dataGrid", - "type": "datagrid", - "input": true, - "components": [ - { - "label": "Date / Time", - "format": "dd-MM-yyyy", - "tableView": false, - "enableMinDateInput": false, - "datePicker": { - "disableWeekends": false, - "disableWeekdays": false - }, - "enableMaxDateInput": false, - "key": "dateTime", - "type": "datetime", - "input": true, - "widget": { - "type": "calendar", - "displayInTimezone": "viewer", - "locale": "en", - "useLocaleSettings": false, - "allowInput": true, - "mode": "single", - "enableTime": true, - "noCalendar": false, - "format": "dd-MM-yyyy", - "hourIncrement": 1, - "minuteIncrement": 1, - "time_24hr": false, - "minDate": null, - "disableWeekends": false, - "disableWeekdays": false, - "maxDate": null - } - }, - { - "label": "Text Field2", - "widget": { - "type": "calendar", - "altInput": true, - "allowInput": true, - "clickOpens": true, - "enableDate": true, - "enableTime": true, - "mode": "single", - "noCalendar": false, + "components": [ + { + "label": "Data Grid", + "reorder": false, + "addAnotherPosition": "bottom", + "defaultOpen": false, + "layoutFixed": false, + "enableRowGroups": false, + "initEmpty": false, + "tableView": false, + "defaultValue": [{}], + "key": "dataGrid", + "type": "datagrid", + "input": true, + "components": [ + { + "label": "Date / Time", "format": "dd-MM-yyyy", - "dateFormat": "yyyy-MM-ddTHH:mm:ssZ", - "useLocaleSettings": false, - "hourIncrement": 1, - "minuteIncrement": 5, - "time_24hr": false, - "saveAs": "date" + "tableView": false, + "enableMinDateInput": false, + "datePicker": { + "disableWeekends": false, + "disableWeekdays": false + }, + "enableMaxDateInput": false, + "key": "dateTime", + "type": "datetime", + "input": true, + "widget": { + "type": "calendar", + "displayInTimezone": "viewer", + "locale": "en", + "useLocaleSettings": false, + "allowInput": true, + "mode": "single", + "enableTime": true, + "noCalendar": false, + "format": "dd-MM-yyyy", + "hourIncrement": 1, + "minuteIncrement": 1, + "time_24hr": false, + "minDate": null, + "disableWeekends": false, + "disableWeekdays": false, + "maxDate": null + } }, - "tableView": true, - "key": "textField2", - "type": "textfield", - "input": true - }, - { - "label": "Text Field", - "widget": { - "type": "calendar", - "altInput": true, - "allowInput": true, - "clickOpens": true, - "enableDate": true, - "enableTime": false, - "mode": "single", - "noCalendar": false, - "format": "dd-MM-yyyy", - "dateFormat": "dd-MM-yyyy", - "useLocaleSettings": false, - "hourIncrement": 1, - "minuteIncrement": 5, - "time_24hr": false, - "saveAs": "date" - }, - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true - }] - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "input": true, - "tableView": false - }], + { + "label": "Text Field2", + "widget": { + "type": "calendar", + "altInput": true, + "allowInput": true, + "clickOpens": true, + "enableDate": true, + "enableTime": true, + "mode": "single", + "noCalendar": false, + "format": "dd-MM-yyyy", + "dateFormat": "yyyy-MM-ddTHH:mm:ssZ", + "useLocaleSettings": false, + "hourIncrement": 1, + "minuteIncrement": 5, + "time_24hr": false, + "saveAs": "date" + }, + "tableView": true, + "key": "textField2", + "type": "textfield", + "input": true + }, + { + "label": "Text Field", + "widget": { + "type": "calendar", + "altInput": true, + "allowInput": true, + "clickOpens": true, + "enableDate": true, + "enableTime": false, + "mode": "single", + "noCalendar": false, + "format": "dd-MM-yyyy", + "dateFormat": "dd-MM-yyyy", + "useLocaleSettings": false, + "hourIncrement": 1, + "minuteIncrement": 5, + "time_24hr": false, + "saveAs": "date" + }, + "tableView": true, + "key": "textField", + "type": "textfield", + "input": true + } + ] + }, + { + "type": "button", + "label": "Submit", + "key": "submit", + "disableOnInvalid": true, + "input": true, + "tableView": false + } + ], "title": "automatedtest", "display": "form", "name": "automatedtest", diff --git a/test/formtest/formWithDateTimeComponents.json b/test/formtest/formWithDateTimeComponents.json index 7027aec025..8ac2b3b718 100644 --- a/test/formtest/formWithDateTimeComponents.json +++ b/test/formtest/formWithDateTimeComponents.json @@ -1,77 +1,83 @@ { "type": "form", - "components": [{ - "collapsible": true, - "key": "panel", - "type": "panel", - "label": "Panel", - "input": false, - "tableView": false, - "components": [{ - "label": "Date / Time", - "format": "dd-MM-yyyy", + "components": [ + { + "collapsible": true, + "key": "panel", + "type": "panel", + "label": "Panel", + "input": false, "tableView": false, - "enableMinDateInput": false, - "datePicker": { - "disableWeekends": false, - "disableWeekdays": false - }, - "enableMaxDateInput": false, - "key": "dateTime1", - "type": "datetime", + "components": [ + { + "label": "Date / Time", + "format": "dd-MM-yyyy", + "tableView": false, + "enableMinDateInput": false, + "datePicker": { + "disableWeekends": false, + "disableWeekdays": false + }, + "enableMaxDateInput": false, + "key": "dateTime1", + "type": "datetime", + "input": true, + "widget": { + "type": "calendar", + "displayInTimezone": "viewer", + "locale": "en", + "useLocaleSettings": false, + "allowInput": true, + "mode": "single", + "enableTime": true, + "noCalendar": false, + "format": "dd-MM-yyyy", + "hourIncrement": 1, + "minuteIncrement": 1, + "time_24hr": false, + "minDate": null, + "disableWeekends": false, + "disableWeekdays": false, + "maxDate": null + } + }, + { + "label": "Text Field", + "widget": { + "type": "calendar", + "altInput": true, + "allowInput": true, + "clickOpens": true, + "enableDate": true, + "enableTime": true, + "mode": "single", + "noCalendar": false, + "format": "dd-MM-yyyy", + "dateFormat": "yyyy-MM-ddTHH:mm:ssZ", + "useLocaleSettings": false, + "hourIncrement": 1, + "minuteIncrement": 5, + "time_24hr": false, + "saveAs": "date" + }, + "tableView": true, + "key": "textField1", + "type": "textfield", + "input": true + } + ], + "collapsed": false + }, + { + "type": "button", + "label": "Submit", + "key": "submit", + "disableOnInvalid": true, "input": true, - "widget": { - "type": "calendar", - "displayInTimezone": "viewer", - "locale": "en", - "useLocaleSettings": false, - "allowInput": true, - "mode": "single", - "enableTime": true, - "noCalendar": false, - "format": "dd-MM-yyyy", - "hourIncrement": 1, - "minuteIncrement": 1, - "time_24hr": false, - "minDate": null, - "disableWeekends": false, - "disableWeekdays": false, - "maxDate": null - } - }, { - "label": "Text Field", - "widget": { - "type": "calendar", - "altInput": true, - "allowInput": true, - "clickOpens": true, - "enableDate": true, - "enableTime": true, - "mode": "single", - "noCalendar": false, - "format": "dd-MM-yyyy", - "dateFormat": "yyyy-MM-ddTHH:mm:ssZ", - "useLocaleSettings": false, - "hourIncrement": 1, - "minuteIncrement": 5, - "time_24hr": false, - "saveAs": "date" - }, - "tableView": true, - "key": "textField1", - "type": "textfield", - "input": true - }], - "collapsed": false - }, { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "input": true, - "tableView": false - }], - "title": "testDateRedrawing", + "tableView": false + } + ], + "title": "testDateRedrawing", "display": "form", "name": "testDateRedrawing", "path": "testdateredrawing", diff --git a/test/formtest/formWithEditGridDraftModalNestedForm.json b/test/formtest/formWithEditGridDraftModalNestedForm.json index b6629889dc..97c4fb5194 100644 --- a/test/formtest/formWithEditGridDraftModalNestedForm.json +++ b/test/formtest/formWithEditGridDraftModalNestedForm.json @@ -1,42 +1,46 @@ { "type": "form", - "components": [{ - "label": "Edit Grid", - "tableView": false, - "modal": true, - "rowDrafts": true, - "key": "editGrid", - "type": "editgrid", - "input": true, - "components": [{ - "type": "form", - "components": [{ - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true - }], - "title": "smallChildForm", - "display": "form", - "name": "smallChildForm", - "path": "smallchildform", - "machineName": "cjksbatcpbhyfbs:smallChildForm" - }] - }, { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - }], + "components": [ + { + "label": "Edit Grid", + "tableView": false, + "modal": true, + "rowDrafts": true, + "key": "editGrid", + "type": "editgrid", + "input": true, + "components": [ + { + "type": "form", + "components": [ + { + "label": "Text Field", + "tableView": true, + "key": "textField", + "type": "textfield", + "input": true + } + ], + "title": "smallChildForm", + "display": "form", + "name": "smallChildForm", + "path": "smallchildform", + "machineName": "cjksbatcpbhyfbs:smallChildForm" + } + ] + }, + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], "title": "testEditGrid333", "display": "form", "name": "testEditGrid333", "path": "testeditgrid333", "machineName": "cjksbatcpbhyfbs:testEditGrid333" } - - - diff --git a/test/formtest/formWithObjectValueSelect.json b/test/formtest/formWithObjectValueSelect.json index b129d6f87e..ec04185597 100644 --- a/test/formtest/formWithObjectValueSelect.json +++ b/test/formtest/formWithObjectValueSelect.json @@ -5,7 +5,8 @@ "path": "testconditionsselect", "type": "form", "display": "form", - "components": [{ + "components": [ + { "label": "Select ref", "widget": "choicesjs", "tableView": true, @@ -94,7 +95,8 @@ "conditional": { "show": true, "conjunction": "all", - "conditions": [{ + "conditions": [ + { "component": "selectRef", "operator": "isEqual", "value": { diff --git a/test/formtest/formWithResetValue.d.ts b/test/formtest/formWithResetValue.d.ts index 96b48a325c..ddff632e3d 100644 --- a/test/formtest/formWithResetValue.d.ts +++ b/test/formtest/formWithResetValue.d.ts @@ -1,20 +1,21 @@ declare namespace _default { - const type: string; - const components: ({ + const type: string; + const components: ( + | { label: string; widget: string; tableView: boolean; data: { - values: { - label: string; - value: string; - }[]; + values: { + label: string; + value: string; + }[]; }; selectThreshold: number; key: string; type: string; indexeddb: { - filter: {}; + filter: {}; }; input: boolean; collapsible?: undefined; @@ -24,33 +25,37 @@ declare namespace _default { showValidations?: undefined; theme?: undefined; disableOnInvalid?: undefined; - } | { + } + | { collapsible: boolean; key: string; conditional: { - show: boolean; - when: string; - eq: string; + show: boolean; + when: string; + eq: string; }; type: string; label: string; input: boolean; tableView: boolean; - components: ({ - label: string; - tableView: boolean; - key: string; - type: string; - input: boolean; - autoExpand?: undefined; - } | { - label: string; - autoExpand: boolean; - tableView: boolean; - key: string; - type: string; - input: boolean; - })[]; + components: ( + | { + label: string; + tableView: boolean; + key: string; + type: string; + input: boolean; + autoExpand?: undefined; + } + | { + label: string; + autoExpand: boolean; + tableView: boolean; + key: string; + type: string; + input: boolean; + } + )[]; widget?: undefined; data?: undefined; selectThreshold?: undefined; @@ -59,7 +64,8 @@ declare namespace _default { showValidations?: undefined; theme?: undefined; disableOnInvalid?: undefined; - } | { + } + | { label: string; action: string; showValidations: boolean; @@ -76,7 +82,8 @@ declare namespace _default { conditional?: undefined; components?: undefined; disableOnInvalid?: undefined; - } | { + } + | { type: string; label: string; key: string; @@ -93,8 +100,9 @@ declare namespace _default { action?: undefined; showValidations?: undefined; theme?: undefined; - })[]; - const title: string; - const display: string; + } + )[]; + const title: string; + const display: string; } export default _default; diff --git a/test/formtest/formWithResetValue.js b/test/formtest/formWithResetValue.js index c08242a743..d54f5fecbe 100644 --- a/test/formtest/formWithResetValue.js +++ b/test/formtest/formWithResetValue.js @@ -9,23 +9,21 @@ export default { values: [ { label: 'Yes', - value: 'yes' + value: 'yes', }, { label: 'No', - value: 'no' - } - ] + value: 'no', + }, + ], }, selectThreshold: 0.3, key: 'showPanel', type: 'select', indexeddb: { - filter: { - - } + filter: {}, }, - input: true + input: true, }, { collapsible: false, @@ -33,7 +31,7 @@ export default { conditional: { show: true, when: 'showPanel', - eq: 'yes' + eq: 'yes', }, type: 'panel', label: 'Panel', @@ -45,7 +43,7 @@ export default { tableView: true, key: 'textField', type: 'textfield', - input: true + input: true, }, { label: 'Text Area', @@ -53,9 +51,9 @@ export default { tableView: true, key: 'textArea', type: 'textarea', - input: true - } - ] + input: true, + }, + ], }, { label: 'Reset', @@ -65,7 +63,7 @@ export default { tableView: false, key: 'reset', type: 'button', - input: true + input: true, }, { type: 'button', @@ -73,8 +71,8 @@ export default { key: 'submit', disableOnInvalid: true, input: true, - tableView: false - } + tableView: false, + }, ], title: 'FJS-1369', display: 'form', diff --git a/test/formtest/formWithTimeComponent.json b/test/formtest/formWithTimeComponent.json index ba954ce208..c6e74d7ae2 100644 --- a/test/formtest/formWithTimeComponent.json +++ b/test/formtest/formWithTimeComponent.json @@ -1,26 +1,26 @@ { - "type": "form", - "components": [ - { - "label": "Time", - "inputType": "text", - "tableView": true, - "key": "time", - "type": "time", - "input": true, - "inputMask": "99:99" - }, - { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - } - ], - "title": "TimeTest666", - "display": "form", - "name": "timeTest666", - "path": "timetest666" + "type": "form", + "components": [ + { + "label": "Time", + "inputType": "text", + "tableView": true, + "key": "time", + "type": "time", + "input": true, + "inputMask": "99:99" + }, + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], + "title": "TimeTest666", + "display": "form", + "name": "timeTest666", + "path": "timetest666" } diff --git a/test/formtest/index.d.ts b/test/formtest/index.d.ts index ec628ae9ca..07864029bc 100644 --- a/test/formtest/index.d.ts +++ b/test/formtest/index.d.ts @@ -1 +1,46 @@ -export { advanced, basic, data, defaults, layout, premium, settingErrors, clearOnHide, manualOverride, uniqueApiKeys, uniqueApiKeysLayout, uniqueApiKeysSameLevel, validationOnBlur, calculateValueWithManualOverride, calculateValueWithSubmissionMetadata, displayAsModalEditGrid, formWithAdvancedLogic, formWithPatternValidation, calculatedSelectboxes, columnsForm, calculateZeroValue, formWithConditionalLogic, formWithCalculatedValueWithoutOverriding, formWithTimeComponent, formWithEditGridModalDrafts, formWithBlurValidationInsidePanel, modalEditComponents, calculatedNotPersistentValue, calculateValueInEditingMode, initiallyCollapsedPanel, multipleTextareaInsideConditionalComponent, formComponentWithConditionalRenderingForm, disabledNestedForm, propertyActions, formWithEditGridAndNestedDraftModalRow, formWithDateTimeComponents, formWithCollapsedPanel, formWithCustomFormatDate, wizardWithHiddenPanel, wizardWithSimpleConditionalPage, wizardWithTooltip, resourceKeyCamelCase, tooltipActivateCheckbox, uniqueApiKeysTranslation }; +export { + advanced, + basic, + data, + defaults, + layout, + premium, + settingErrors, + clearOnHide, + manualOverride, + uniqueApiKeys, + uniqueApiKeysLayout, + uniqueApiKeysSameLevel, + validationOnBlur, + calculateValueWithManualOverride, + calculateValueWithSubmissionMetadata, + displayAsModalEditGrid, + formWithAdvancedLogic, + formWithPatternValidation, + calculatedSelectboxes, + columnsForm, + calculateZeroValue, + formWithConditionalLogic, + formWithCalculatedValueWithoutOverriding, + formWithTimeComponent, + formWithEditGridModalDrafts, + formWithBlurValidationInsidePanel, + modalEditComponents, + calculatedNotPersistentValue, + calculateValueInEditingMode, + initiallyCollapsedPanel, + multipleTextareaInsideConditionalComponent, + formComponentWithConditionalRenderingForm, + disabledNestedForm, + propertyActions, + formWithEditGridAndNestedDraftModalRow, + formWithDateTimeComponents, + formWithCollapsedPanel, + formWithCustomFormatDate, + wizardWithHiddenPanel, + wizardWithSimpleConditionalPage, + wizardWithTooltip, + resourceKeyCamelCase, + tooltipActivateCheckbox, + uniqueApiKeysTranslation, +}; diff --git a/test/formtest/index.js b/test/formtest/index.js index ac4d15f9fa..638e5947c0 100644 --- a/test/formtest/index.js +++ b/test/formtest/index.js @@ -89,5 +89,5 @@ module.exports = { wizardWithTooltip, resourceKeyCamelCase, tooltipActivateCheckbox, - formWithObjectValueSelect + formWithObjectValueSelect, }; diff --git a/test/formtest/initiallyCollapsedPanel.json b/test/formtest/initiallyCollapsedPanel.json index 546e3ffc2d..eb85bb5004 100644 --- a/test/formtest/initiallyCollapsedPanel.json +++ b/test/formtest/initiallyCollapsedPanel.json @@ -36,4 +36,4 @@ "title": "FJS-1118 Collapsed Panels", "display": "form", "name": "fjs1118CollapsedPanels" -} \ No newline at end of file +} diff --git a/test/formtest/layout.json b/test/formtest/layout.json index 778b1a4ad2..52abb75c78 100644 --- a/test/formtest/layout.json +++ b/test/formtest/layout.json @@ -1390,11 +1390,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e4", - "5692b920d1028f01000407e5", - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"], "type": "read_all" }, { @@ -1440,9 +1436,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e6"], "type": "read_all" }, { @@ -1450,9 +1444,7 @@ "type": "update_own" }, { - "roles": [ - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e6"], "type": "update_all" }, { diff --git a/test/formtest/manualOverride.json b/test/formtest/manualOverride.json index baef507e58..6585e5ba69 100644 --- a/test/formtest/manualOverride.json +++ b/test/formtest/manualOverride.json @@ -1,52 +1,55 @@ { "type": "form", - "components": [{ - "label": "Number1", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "calculateServer": false, - "validate": { - "required": true + "components": [ + { + "label": "Number1", + "mask": false, + "spellcheck": true, + "tableView": false, + "delimiter": false, + "requireDecimal": false, + "inputFormat": "plain", + "calculateServer": false, + "validate": { + "required": true + }, + "key": "number1", + "type": "number", + "input": true }, - "key": "number1", - "type": "number", - "input": true - }, { - "label": "Number2", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "calculateValue": { - "_camelCase": { - "var": "row.number1" - } + { + "label": "Number2", + "mask": false, + "spellcheck": true, + "tableView": false, + "delimiter": false, + "requireDecimal": false, + "inputFormat": "plain", + "calculateValue": { + "_camelCase": { + "var": "row.number1" + } + }, + "calculateServer": false, + "allowCalculateOverride": true, + "validate": { + "required": true + }, + "key": "number2", + "type": "number", + "input": true }, - "calculateServer": false, - "allowCalculateOverride": true, - "validate": { - "required": true - }, - "key": "number2", - "type": "number", - "input": true - }, { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - }], + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], "title": "manualOverrideTest", "display": "form", "name": "manualOverrideTest", "path": "manualoverridetest" } - diff --git a/test/formtest/modalEditComponents.json b/test/formtest/modalEditComponents.json index 2211e2739e..2e5bf66b57 100644 --- a/test/formtest/modalEditComponents.json +++ b/test/formtest/modalEditComponents.json @@ -67,9 +67,7 @@ "key": "select", "type": "select", "indexeddb": { - "filter": { - - } + "filter": {} }, "input": true }, diff --git a/test/formtest/multipleTextareaInsideConditionalComponent.json b/test/formtest/multipleTextareaInsideConditionalComponent.json index 0105aeca3f..51f8cc63f9 100644 --- a/test/formtest/multipleTextareaInsideConditionalComponent.json +++ b/test/formtest/multipleTextareaInsideConditionalComponent.json @@ -78,9 +78,7 @@ "spellcheck": true, "tableView": true, "multiple": true, - "defaultValue": [ - "" - ], + "defaultValue": [""], "calculateServer": false, "validate": { "multiple": true @@ -104,4 +102,4 @@ "title": "FJS-1118 Collapsed Panels", "display": "form", "name": "fjs1118CollapsedPanels" -} \ No newline at end of file +} diff --git a/test/formtest/patternValidation.json b/test/formtest/patternValidation.json index 9a091fcaca..3fddb56734 100644 --- a/test/formtest/patternValidation.json +++ b/test/formtest/patternValidation.json @@ -1,23 +1,26 @@ { "type": "form", - "components": [{ - "label": "Text Field", - "tableView": true, - "validate": { - "required": true, - "pattern": "\\w" + "components": [ + { + "label": "Text Field", + "tableView": true, + "validate": { + "required": true, + "pattern": "\\w" + }, + "key": "textField", + "type": "textfield", + "input": true }, - "key": "textField", - "type": "textfield", - "input": true - }, { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - }], - "title": "formValidation", + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], + "title": "formValidation", "display": "form" } diff --git a/test/formtest/premium.json b/test/formtest/premium.json index 96c83ca48d..f8645cff86 100644 --- a/test/formtest/premium.json +++ b/test/formtest/premium.json @@ -204,11 +204,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e4", - "5692b920d1028f01000407e5", - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e4", "5692b920d1028f01000407e5", "5692b920d1028f01000407e6"], "type": "read_all" }, { @@ -254,9 +250,7 @@ "type": "read_own" }, { - "roles": [ - "5692b920d1028f01000407e6" - ], + "roles": ["5692b920d1028f01000407e6"], "type": "read_all" }, { diff --git a/test/formtest/propertyActions.json b/test/formtest/propertyActions.json index 1e7100c62c..8c1947f47a 100644 --- a/test/formtest/propertyActions.json +++ b/test/formtest/propertyActions.json @@ -130,4 +130,4 @@ "title": "FJS-1180", "display": "form", "name": "fjs1180" -} \ No newline at end of file +} diff --git a/test/formtest/tooltipActivateCheckbox.json b/test/formtest/tooltipActivateCheckbox.json index e52f346e7c..f9f3ea2ad9 100644 --- a/test/formtest/tooltipActivateCheckbox.json +++ b/test/formtest/tooltipActivateCheckbox.json @@ -1,134 +1,130 @@ { - "_id": "634d04a9b80651a7bae4157d", - "type": "form", - "tags": [], - "owner": "63046ffc99344cae68c78fbe", - "components": [ - { - "label": "Checkbox", - "tooltip": "tooltip", - "tableView": false, - "key": "checkbox", - "type": "checkbox", - "input": true, - "defaultValue": false - }, - { - "type": "button", - "label": "Submit", - "key": "submit", - "disableOnInvalid": true, - "input": true, - "tableView": false - } - ], - "revisions": "", - "_vid": 0, - "title": "5236", - "display": "form", - "access": [ - { - "roles": [], - "type": "create_own" - }, - { - "roles": [], - "type": "create_all" - }, - { - "roles": [], - "type": "read_own" - }, - { - "roles": [ - "6304702a0023ac6c2a5a3927", - "6304702a0023ac6ca65a392c", - "6304702a0023ac1e565a3931" - ], - "type": "read_all" - }, - { - "roles": [], - "type": "update_own" - }, - { - "roles": [], - "type": "update_all" - }, - { - "roles": [], - "type": "delete_own" - }, - { - "roles": [], - "type": "delete_all" - }, - { - "roles": [], - "type": "team_read" - }, - { - "roles": [], - "type": "team_write" - }, - { - "roles": [], - "type": "team_admin" - } - ], - "submissionAccess": [ - { - "roles": [], - "type": "create_own" - }, - { - "roles": [], - "type": "create_all" - }, - { - "roles": [], - "type": "read_own" - }, - { - "roles": [], - "type": "read_all" - }, - { - "roles": [], - "type": "update_own" - }, - { - "roles": [], - "type": "update_all" - }, - { - "roles": [], - "type": "delete_own" - }, - { - "roles": [], - "type": "delete_all" - }, - { - "roles": [], - "type": "team_read" - }, - { - "roles": [], - "type": "team_write" - }, - { - "roles": [], - "type": "team_admin" - } - ], - "controller": "", - "properties": {}, - "settings": {}, - "name": "5236", - "path": "5236", - "project": "6304702a0023ac17265a3920", - "created": "2022-10-17T07:30:49.019Z", - "modified": "2022-10-17T08:09:01.525Z", - "machineName": "zwxvvydfeeytjgw:5236" -} \ No newline at end of file + "_id": "634d04a9b80651a7bae4157d", + "type": "form", + "tags": [], + "owner": "63046ffc99344cae68c78fbe", + "components": [ + { + "label": "Checkbox", + "tooltip": "tooltip", + "tableView": false, + "key": "checkbox", + "type": "checkbox", + "input": true, + "defaultValue": false + }, + { + "type": "button", + "label": "Submit", + "key": "submit", + "disableOnInvalid": true, + "input": true, + "tableView": false + } + ], + "revisions": "", + "_vid": 0, + "title": "5236", + "display": "form", + "access": [ + { + "roles": [], + "type": "create_own" + }, + { + "roles": [], + "type": "create_all" + }, + { + "roles": [], + "type": "read_own" + }, + { + "roles": ["6304702a0023ac6c2a5a3927", "6304702a0023ac6ca65a392c", "6304702a0023ac1e565a3931"], + "type": "read_all" + }, + { + "roles": [], + "type": "update_own" + }, + { + "roles": [], + "type": "update_all" + }, + { + "roles": [], + "type": "delete_own" + }, + { + "roles": [], + "type": "delete_all" + }, + { + "roles": [], + "type": "team_read" + }, + { + "roles": [], + "type": "team_write" + }, + { + "roles": [], + "type": "team_admin" + } + ], + "submissionAccess": [ + { + "roles": [], + "type": "create_own" + }, + { + "roles": [], + "type": "create_all" + }, + { + "roles": [], + "type": "read_own" + }, + { + "roles": [], + "type": "read_all" + }, + { + "roles": [], + "type": "update_own" + }, + { + "roles": [], + "type": "update_all" + }, + { + "roles": [], + "type": "delete_own" + }, + { + "roles": [], + "type": "delete_all" + }, + { + "roles": [], + "type": "team_read" + }, + { + "roles": [], + "type": "team_write" + }, + { + "roles": [], + "type": "team_admin" + } + ], + "controller": "", + "properties": {}, + "settings": {}, + "name": "5236", + "path": "5236", + "project": "6304702a0023ac17265a3920", + "created": "2022-10-17T07:30:49.019Z", + "modified": "2022-10-17T08:09:01.525Z", + "machineName": "zwxvvydfeeytjgw:5236" +} diff --git a/test/formtest/uniqueApiKeys.json b/test/formtest/uniqueApiKeys.json index 17ba91ba01..73b726c702 100644 --- a/test/formtest/uniqueApiKeys.json +++ b/test/formtest/uniqueApiKeys.json @@ -1,91 +1,77 @@ { "_id": "5e70ecc6579bb457608756cf", "type": "form", - "tags": [ - -], + "tags": [], "owner": "5e3bb355308fc84ff88614bf", "components": [ - { - "label": "Text Field", - "spellcheck": true, - "tableView": true, - "calculateServer": false, - "validate": { - "required": true - }, - "key": "textField", - "type": "textfield", - "input": true - }, - { - "label": "Show", - "optionsLabelPosition": "right", - "inline": false, - "tableView": false, - "values": [ - { - "label": "show", - "value": "show", - "shortcut": "" + { + "label": "Text Field", + "spellcheck": true, + "tableView": true, + "calculateServer": false, + "validate": { + "required": true }, - { - "label": "hide", - "value": "hide", - "shortcut": "" - } - ], - "calculateServer": false, - "key": "show", - "type": "radio", - "input": true - }, - { - "label": "Edit Grid", - "disableAddingRemovingRows": false, - "tableView": false, - "modal": false, - "calculateServer": false, - "key": "editGrid", - "type": "editgrid", - "input": true, - "components": [ - - ] - }, - { - "label": "Submit", - "showValidations": false, - "tableView": false, - "key": "submit", - "type": "button", - "input": true - } -], + "key": "textField", + "type": "textfield", + "input": true + }, + { + "label": "Show", + "optionsLabelPosition": "right", + "inline": false, + "tableView": false, + "values": [ + { + "label": "show", + "value": "show", + "shortcut": "" + }, + { + "label": "hide", + "value": "hide", + "shortcut": "" + } + ], + "calculateServer": false, + "key": "show", + "type": "radio", + "input": true + }, + { + "label": "Edit Grid", + "disableAddingRemovingRows": false, + "tableView": false, + "modal": false, + "calculateServer": false, + "key": "editGrid", + "type": "editgrid", + "input": true, + "components": [] + }, + { + "label": "Submit", + "showValidations": false, + "tableView": false, + "key": "submit", + "type": "button", + "input": true + } + ], "controller": "", "revisions": "", "_vid": 0, "title": "conditionalNested", "display": "form", "access": [ - { - "roles": [ - "5e3bb35c308fc84ff88614d0", - "5e3bb35c308fc84ff88614d1", - "5e3bb35c308fc84ff88614d2" - ], - "type": "read_all" - } -], - "submissionAccess": [ - -], - "settings": { - -}, - "properties": { - -}, + { + "roles": ["5e3bb35c308fc84ff88614d0", "5e3bb35c308fc84ff88614d1", "5e3bb35c308fc84ff88614d2"], + "type": "read_all" + } + ], + "submissionAccess": [], + "settings": {}, + "properties": {}, "name": "uniqueApiKeyDataComponents", "path": "uniqueApiKeyDataComponents" } diff --git a/test/formtest/uniqueApiKeysLayout.json b/test/formtest/uniqueApiKeysLayout.json index b56742075c..b5661afa91 100644 --- a/test/formtest/uniqueApiKeysLayout.json +++ b/test/formtest/uniqueApiKeysLayout.json @@ -1,9 +1,7 @@ { "_id": "5e70ecc6579bb457608756cf", "type": "form", - "tags": [ - - ], + "tags": [], "owner": "5e3bb355308fc84ff88614bf", "components": [ { @@ -53,23 +51,13 @@ "display": "form", "access": [ { - "roles": [ - "5e3bb35c308fc84ff88614d0", - "5e3bb35c308fc84ff88614d1", - "5e3bb35c308fc84ff88614d2" - ], + "roles": ["5e3bb35c308fc84ff88614d0", "5e3bb35c308fc84ff88614d1", "5e3bb35c308fc84ff88614d2"], "type": "read_all" } ], - "submissionAccess": [ - - ], - "settings": { - - }, - "properties": { - - }, + "submissionAccess": [], + "settings": {}, + "properties": {}, "name": "uniqueApiKeyLayoutComponents", "path": "uniqueApiKeyLayoutComponents" } diff --git a/test/formtest/uniqueApiKeysSameLevel.json b/test/formtest/uniqueApiKeysSameLevel.json index 1d7a073e06..08480fc8cc 100644 --- a/test/formtest/uniqueApiKeysSameLevel.json +++ b/test/formtest/uniqueApiKeysSameLevel.json @@ -1,9 +1,7 @@ { "_id": "5e70ecc6579bb457608756cf", "type": "form", - "tags": [ - - ], + "tags": [], "owner": "5e3bb355308fc84ff88614bf", "components": [ { @@ -43,23 +41,13 @@ "display": "form", "access": [ { - "roles": [ - "5e3bb35c308fc84ff88614d0", - "5e3bb35c308fc84ff88614d1", - "5e3bb35c308fc84ff88614d2" - ], + "roles": ["5e3bb35c308fc84ff88614d0", "5e3bb35c308fc84ff88614d1", "5e3bb35c308fc84ff88614d2"], "type": "read_all" } ], - "submissionAccess": [ - - ], - "settings": { - - }, - "properties": { - - }, + "submissionAccess": [], + "settings": {}, + "properties": {}, "name": "uniqueApiKeysSameLevel", "path": "uniqueapikeyssamelevel" } diff --git a/test/formtest/uniqueApiKeysTranslation.json b/test/formtest/uniqueApiKeysTranslation.json index 47aad0aaad..9f6642337c 100644 --- a/test/formtest/uniqueApiKeysTranslation.json +++ b/test/formtest/uniqueApiKeysTranslation.json @@ -9,11 +9,7 @@ "access": [ { "type": "read_all", - "roles": [ - "664ccde9fab50fab9641b6d8", - "664ccde9fab50fab9641b6e0", - "664ccde9fab50fab9641b6e4" - ] + "roles": ["664ccde9fab50fab9641b6d8", "664ccde9fab50fab9641b6e0", "664ccde9fab50fab9641b6e4"] } ], "submissionAccess": [], @@ -37,12 +33,8 @@ "input": true } ], - "settings": { - - }, - "properties": { - - }, + "settings": {}, + "properties": {}, "project": "664ccde8fab50fab9641b6d1", "controller": "", "revisions": "", diff --git a/test/formtest/validationOnBlur.json b/test/formtest/validationOnBlur.json index f5def2ebe9..1ca5925f4c 100644 --- a/test/formtest/validationOnBlur.json +++ b/test/formtest/validationOnBlur.json @@ -1,9 +1,7 @@ { "_id": "5eba7e8f6447a450fc3b9fc7", "type": "form", - "tags": [ - - ], + "tags": [], "owner": "5e05a6b7549cdc2ece30c6b0", "components": [ { @@ -44,23 +42,13 @@ "display": "form", "access": [ { - "roles": [ - "5e96e79ee1c3ad3178454100", - "5e96e79ee1c3ad3178454101", - "5e96e79ee1c3ad3178454102" - ], + "roles": ["5e96e79ee1c3ad3178454100", "5e96e79ee1c3ad3178454101", "5e96e79ee1c3ad3178454102"], "type": "read_all" } ], - "submissionAccess": [ - - ], - "settings": { - - }, - "properties": { - - }, + "submissionAccess": [], + "settings": {}, + "properties": {}, "name": "onBlur", "path": "onblur" } diff --git a/test/formtest/wizardWithHiddenPanel.json b/test/formtest/wizardWithHiddenPanel.json index ef3bdc63a4..0779f18693 100644 --- a/test/formtest/wizardWithHiddenPanel.json +++ b/test/formtest/wizardWithHiddenPanel.json @@ -1,75 +1,186 @@ { "_id": "5fad32107fabb08b982efcbc", "type": "form", - "components": [{ - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "input": false, - "tableView": false, - "components": [{ - "label": "Number", - "labelPosition": "top", + "components": [ + { + "title": "Page 1", + "label": "Page 1", + "type": "panel", + "key": "page1", + "input": false, + "tableView": false, + "components": [ + { + "label": "Number", + "labelPosition": "top", + "placeholder": "", + "description": "", + "tooltip": "", + "prefix": "", + "suffix": "", + "widget": { + "type": "input" + }, + "customClass": "", + "tabindex": "", + "autocomplete": "", + "hidden": false, + "hideLabel": false, + "mask": false, + "autofocus": false, + "spellcheck": true, + "disabled": false, + "tableView": false, + "modalEdit": false, + "multiple": false, + "persistent": true, + "delimiter": false, + "requireDecimal": false, + "inputFormat": "plain", + "protected": false, + "dbIndex": false, + "encrypted": false, + "redrawOn": "", + "clearOnHide": true, + "customDefaultValue": "", + "calculateValue": "", + "calculateServer": false, + "allowCalculateOverride": false, + "validateOn": "change", + "validate": { + "required": false, + "customMessage": "", + "custom": "", + "customPrivate": false, + "json": "", + "min": "", + "max": "", + "strictDateValidation": false, + "multiple": false, + "unique": false, + "step": "any", + "integer": "" + }, + "errorLabel": "", + "key": "number", + "tags": [], + "properties": {}, + "conditional": { + "show": null, + "when": null, + "eq": "", + "json": "" + }, + "customConditional": "", + "logic": [], + "attributes": {}, + "overlay": { + "style": "", + "page": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "type": "number", + "input": true, + "unique": false, + "refreshOn": "", + "showCharCount": false, + "showWordCount": false, + "allowMultipleMasks": false, + "id": "evnv4vv", + "defaultValue": null + } + ], "placeholder": "", - "description": "", - "tooltip": "", "prefix": "", - "suffix": "", - "widget": { - "type": "input" - }, "customClass": "", - "tabindex": "", - "autocomplete": "", + "suffix": "", + "multiple": false, + "defaultValue": null, + "protected": false, + "unique": false, + "persistent": false, "hidden": false, + "clearOnHide": false, + "refreshOn": "", + "redrawOn": "", + "modalEdit": false, + "labelPosition": "top", + "description": "", + "errorLabel": "", + "tooltip": "", "hideLabel": false, - "mask": false, - "autofocus": false, - "spellcheck": true, + "tabindex": "", "disabled": false, - "tableView": false, - "modalEdit": false, - "multiple": false, - "persistent": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "protected": false, + "autofocus": false, "dbIndex": false, - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, "customDefaultValue": "", "calculateValue": "", "calculateServer": false, - "allowCalculateOverride": false, + "widget": null, + "attributes": {}, "validateOn": "change", "validate": { "required": false, - "customMessage": "", "custom": "", "customPrivate": false, - "json": "", - "min": "", - "max": "", "strictDateValidation": false, "multiple": false, - "unique": false, - "step": "any", - "integer": "" + "unique": false }, - "errorLabel": "", - "key": "number", + "conditional": { + "show": null, + "when": null, + "eq": "" + }, + "overlay": { + "style": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "allowCalculateOverride": false, + "encrypted": false, + "showCharCount": false, + "showWordCount": false, + "properties": {}, + "allowMultipleMasks": false, + "tree": false, + "theme": "default", + "breadcrumb": "default", + "id": "e3zq9o" + }, + { + "title": "Page 2", + "theme": "default", + "breadcrumb": "default", + "breadcrumbClickable": true, + "buttonSettings": { + "previous": true, + "cancel": true, + "next": true + }, + "tooltip": "", + "customClass": "", + "collapsible": false, + "hidden": true, + "hideLabel": false, + "disabled": false, + "modalEdit": false, + "key": "page2", "tags": [], "properties": {}, + "customConditional": "", "conditional": { + "json": "", "show": null, "when": null, - "eq": "", - "json": "" + "eq": "" }, - "customConditional": "", + "nextPage": "", "logic": [], "attributes": {}, "overlay": { @@ -80,152 +191,106 @@ "width": "", "height": "" }, - "type": "number", - "input": true, - "unique": false, - "refreshOn": "", - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "id": "evnv4vv", - "defaultValue": null - }], - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "tree": false, - "theme": "default", - "breadcrumb": "default", - "id": "e3zq9o" - }, { - "title": "Page 2", - "theme": "default", - "breadcrumb": "default", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "tooltip": "", - "customClass": "", - "collapsible": false, - "hidden": true, - "hideLabel": false, - "disabled": false, - "modalEdit": false, - "key": "page2", - "tags": [], - "properties": {}, - "customConditional": "", - "conditional": { - "json": "", - "show": null, - "when": null, - "eq": "" - }, - "nextPage": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "panel", - "label": "Page 2", - "tabindex": "", - "components": [{ - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true, + "type": "panel", + "label": "Page 2", + "tabindex": "", + "components": [ + { + "label": "Text Field", + "tableView": true, + "key": "textField", + "type": "textfield", + "input": true, + "placeholder": "", + "prefix": "", + "customClass": "", + "suffix": "", + "multiple": false, + "defaultValue": null, + "protected": false, + "unique": false, + "persistent": true, + "hidden": false, + "clearOnHide": true, + "refreshOn": "", + "redrawOn": "", + "modalEdit": false, + "labelPosition": "top", + "description": "", + "errorLabel": "", + "tooltip": "", + "hideLabel": false, + "tabindex": "", + "disabled": false, + "autofocus": false, + "dbIndex": false, + "customDefaultValue": "", + "calculateValue": "", + "calculateServer": false, + "widget": { + "type": "input" + }, + "attributes": {}, + "validateOn": "change", + "validate": { + "required": false, + "custom": "", + "customPrivate": false, + "strictDateValidation": false, + "multiple": false, + "unique": false, + "minLength": "", + "maxLength": "", + "pattern": "" + }, + "conditional": { + "show": null, + "when": null, + "eq": "" + }, + "overlay": { + "style": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "allowCalculateOverride": false, + "encrypted": false, + "showCharCount": false, + "showWordCount": false, + "properties": {}, + "allowMultipleMasks": false, + "mask": false, + "inputType": "text", + "inputFormat": "plain", + "inputMask": "", + "spellcheck": true, + "id": "efg5kvc" + } + ], + "input": false, + "tableView": false, "placeholder": "", "prefix": "", - "customClass": "", "suffix": "", "multiple": false, "defaultValue": null, "protected": false, "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, + "persistent": false, + "clearOnHide": false, "refreshOn": "", "redrawOn": "", - "modalEdit": false, "labelPosition": "top", "description": "", "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, "autofocus": false, "dbIndex": false, "customDefaultValue": "", "calculateValue": "", "calculateServer": false, - "widget": { - "type": "input" - }, - "attributes": {}, + "widget": null, "validateOn": "change", "validate": { "required": false, @@ -233,230 +298,175 @@ "customPrivate": false, "strictDateValidation": false, "multiple": false, - "unique": false, - "minLength": "", - "maxLength": "", - "pattern": "" - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + "unique": false }, "allowCalculateOverride": false, "encrypted": false, "showCharCount": false, "showWordCount": false, - "properties": {}, "allowMultipleMasks": false, - "mask": false, - "inputType": "text", - "inputFormat": "plain", - "inputMask": "", - "spellcheck": true, - "id": "efg5kvc" - }], - "input": false, - "tableView": false, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "labelPosition": "top", - "description": "", - "errorLabel": "", - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false + "tree": false, + "id": "efbo5r6" }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": false, - "id": "efbo5r6" - }, { - "title": "Page 3", - "label": "Page 3", - "type": "panel", - "key": "page3", - "components": [{ - "label": "Text Area", - "labelPosition": "top", + { + "title": "Page 3", + "label": "Page 3", + "type": "panel", + "key": "page3", + "components": [ + { + "label": "Text Area", + "labelPosition": "top", + "placeholder": "", + "description": "", + "tooltip": "", + "prefix": "", + "suffix": "", + "widget": { + "type": "input" + }, + "editor": "", + "autoExpand": false, + "customClass": "", + "tabindex": "", + "autocomplete": "", + "hidden": false, + "hideLabel": false, + "showWordCount": false, + "showCharCount": false, + "autofocus": false, + "spellcheck": true, + "disabled": false, + "tableView": true, + "modalEdit": false, + "multiple": false, + "persistent": true, + "inputFormat": "html", + "protected": false, + "dbIndex": false, + "case": "", + "encrypted": false, + "redrawOn": "", + "clearOnHide": true, + "customDefaultValue": "", + "calculateValue": "", + "calculateServer": false, + "allowCalculateOverride": false, + "validateOn": "change", + "validate": { + "required": false, + "pattern": "", + "customMessage": "", + "custom": "", + "customPrivate": false, + "json": "", + "minLength": "", + "maxLength": "", + "minWords": "", + "maxWords": "", + "strictDateValidation": false, + "multiple": false, + "unique": false + }, + "unique": false, + "errorLabel": "", + "key": "textArea", + "tags": [], + "properties": {}, + "conditional": { + "show": null, + "when": null, + "eq": "", + "json": "" + }, + "customConditional": "", + "logic": [], + "fixedSize": true, + "overlay": { + "style": "", + "page": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "attributes": {}, + "type": "textarea", + "rows": 3, + "wysiwyg": false, + "input": true, + "refreshOn": "", + "allowMultipleMasks": false, + "mask": false, + "inputType": "text", + "inputMask": "", + "id": "ew497n", + "defaultValue": null + } + ], + "input": false, "placeholder": "", - "description": "", - "tooltip": "", "prefix": "", - "suffix": "", - "widget": { - "type": "input" - }, - "editor": "", - "autoExpand": false, "customClass": "", - "tabindex": "", - "autocomplete": "", + "suffix": "", + "multiple": false, + "defaultValue": null, + "protected": false, + "unique": false, + "persistent": false, "hidden": false, + "clearOnHide": false, + "refreshOn": "", + "redrawOn": "", + "tableView": false, + "modalEdit": false, + "labelPosition": "top", + "description": "", + "errorLabel": "", + "tooltip": "", "hideLabel": false, - "showWordCount": false, - "showCharCount": false, - "autofocus": false, - "spellcheck": true, + "tabindex": "", "disabled": false, - "tableView": true, - "modalEdit": false, - "multiple": false, - "persistent": true, - "inputFormat": "html", - "protected": false, + "autofocus": false, "dbIndex": false, - "case": "", - "encrypted": false, - "redrawOn": "", - "clearOnHide": true, "customDefaultValue": "", "calculateValue": "", "calculateServer": false, - "allowCalculateOverride": false, + "widget": null, + "attributes": {}, "validateOn": "change", "validate": { "required": false, - "pattern": "", - "customMessage": "", "custom": "", "customPrivate": false, - "json": "", - "minLength": "", - "maxLength": "", - "minWords": "", - "maxWords": "", "strictDateValidation": false, "multiple": false, "unique": false }, - "unique": false, - "errorLabel": "", - "key": "textArea", - "tags": [], - "properties": {}, "conditional": { "show": null, "when": null, - "eq": "", - "json": "" + "eq": "" }, - "customConditional": "", - "logic": [], - "fixedSize": true, "overlay": { "style": "", - "page": "", "left": "", "top": "", "width": "", "height": "" }, - "attributes": {}, - "type": "textarea", - "rows": 3, - "wysiwyg": false, - "input": true, - "refreshOn": "", + "allowCalculateOverride": false, + "encrypted": false, + "showCharCount": false, + "showWordCount": false, + "properties": {}, "allowMultipleMasks": false, - "mask": false, - "inputType": "text", - "inputMask": "", - "id": "ew497n", - "defaultValue": null - }], - "input": false, - "placeholder": "", - "prefix": "", - "customClass": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "hidden": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "tableView": false, - "modalEdit": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "attributes": {}, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "properties": {}, - "allowMultipleMasks": false, - "tree": false, - "theme": "default", - "breadcrumb": "default", - "id": "eqgqlyk" - }], + "tree": false, + "theme": "default", + "breadcrumb": "default", + "id": "eqgqlyk" + } + ], "revisions": "", "_vid": 0, "title": "testHiddenWIzardPannel", diff --git a/test/formtest/wizardWithSimpleConditionalPage.json b/test/formtest/wizardWithSimpleConditionalPage.json index ae991d072f..091601ae3d 100644 --- a/test/formtest/wizardWithSimpleConditionalPage.json +++ b/test/formtest/wizardWithSimpleConditionalPage.json @@ -1,53 +1,60 @@ { "type": "form", "tags": [], - "components": [{ - "title": "Page 1", - "label": "Page 1", - "type": "panel", - "key": "page1", - "components": [{ - "label": "Checkbox", - "tableView": false, - "key": "checkbox", - "type": "checkbox", - "input": true, - "defaultValue": false - }], - "input": false, - "tableView": false - }, { - "title": "Page 2", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true + "components": [ + { + "title": "Page 1", + "label": "Page 1", + "type": "panel", + "key": "page1", + "components": [ + { + "label": "Checkbox", + "tableView": false, + "key": "checkbox", + "type": "checkbox", + "input": true, + "defaultValue": false + } + ], + "input": false, + "tableView": false }, - "collapsible": false, - "key": "page2", - "conditional": { - "show": true, - "when": "checkbox", - "eq": "true" - }, - "type": "panel", - "label": "Page 2", - "components": [{ - "label": "Number", - "mask": false, - "spellcheck": true, - "tableView": false, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", - "key": "number", - "type": "number", - "input": true - }], - "input": false, - "tableView": false - }], + { + "title": "Page 2", + "breadcrumbClickable": true, + "buttonSettings": { + "previous": true, + "cancel": true, + "next": true + }, + "collapsible": false, + "key": "page2", + "conditional": { + "show": true, + "when": "checkbox", + "eq": "true" + }, + "type": "panel", + "label": "Page 2", + "components": [ + { + "label": "Number", + "mask": false, + "spellcheck": true, + "tableView": false, + "delimiter": false, + "requireDecimal": false, + "inputFormat": "plain", + "key": "number", + "type": "number", + "input": true + } + ], + "input": false, + "tableView": false + } + ], "title": "wizard test", "display": "wizard", "name": "wizardTest", diff --git a/test/formtest/wizardWithTooltip.json b/test/formtest/wizardWithTooltip.json index 7486775d42..b45e3fd8f9 100644 --- a/test/formtest/wizardWithTooltip.json +++ b/test/formtest/wizardWithTooltip.json @@ -1,109 +1,201 @@ { "_id": "5fec7ca48da957762c7842ee", "type": "form", - "components": [{ - "title": "Page 1 title", - "theme": "default", - "breadcrumb": "default", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "tooltip": "tooltip for page 1", - "customClass": "", - "collapsible": false, - "hidden": false, - "hideLabel": false, - "disabled": false, - "modalEdit": false, - "key": "page1", - "tags": [], - "properties": {}, - "customConditional": "", - "conditional": { - "json": "", - "show": null, - "when": null, - "eq": "" - }, - "nextPage": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "panel", - "label": "Page 1 title", - "tabindex": "", - "components": [{ - "label": "Number", - "labelPosition": "top", - "placeholder": "", - "description": "", - "tooltip": "", - "prefix": "", - "suffix": "", - "widget": { - "type": "input" + "components": [ + { + "title": "Page 1 title", + "theme": "default", + "breadcrumb": "default", + "breadcrumbClickable": true, + "buttonSettings": { + "previous": true, + "cancel": true, + "next": true }, + "tooltip": "tooltip for page 1", "customClass": "", - "tabindex": "", - "autocomplete": "", + "collapsible": false, "hidden": false, "hideLabel": false, - "mask": false, - "autofocus": false, - "spellcheck": true, "disabled": false, - "tableView": false, "modalEdit": false, + "key": "page1", + "tags": [], + "properties": {}, + "customConditional": "", + "conditional": { + "json": "", + "show": null, + "when": null, + "eq": "" + }, + "nextPage": "", + "logic": [], + "attributes": {}, + "overlay": { + "style": "", + "page": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "type": "panel", + "label": "Page 1 title", + "tabindex": "", + "components": [ + { + "label": "Number", + "labelPosition": "top", + "placeholder": "", + "description": "", + "tooltip": "", + "prefix": "", + "suffix": "", + "widget": { + "type": "input" + }, + "customClass": "", + "tabindex": "", + "autocomplete": "", + "hidden": false, + "hideLabel": false, + "mask": false, + "autofocus": false, + "spellcheck": true, + "disabled": false, + "tableView": false, + "modalEdit": false, + "multiple": false, + "persistent": true, + "delimiter": false, + "requireDecimal": false, + "inputFormat": "plain", + "protected": false, + "dbIndex": false, + "encrypted": false, + "redrawOn": "", + "clearOnHide": true, + "customDefaultValue": "", + "calculateValue": "", + "calculateServer": false, + "allowCalculateOverride": false, + "validateOn": "change", + "validate": { + "required": false, + "customMessage": "", + "custom": "", + "customPrivate": false, + "json": "", + "min": "", + "max": "", + "strictDateValidation": false, + "multiple": false, + "unique": false, + "step": "any", + "integer": "" + }, + "errorLabel": "", + "key": "number", + "tags": [], + "properties": {}, + "conditional": { + "show": null, + "when": null, + "eq": "", + "json": "" + }, + "customConditional": "", + "logic": [], + "attributes": {}, + "overlay": { + "style": "", + "page": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "type": "number", + "input": true, + "unique": false, + "refreshOn": "", + "dataGridLabel": false, + "showCharCount": false, + "showWordCount": false, + "allowMultipleMasks": false, + "id": "eb4c1oj", + "defaultValue": null + } + ], + "input": false, + "tableView": false, + "placeholder": "", + "prefix": "", + "suffix": "", "multiple": false, - "persistent": true, - "delimiter": false, - "requireDecimal": false, - "inputFormat": "plain", + "defaultValue": null, "protected": false, - "dbIndex": false, - "encrypted": false, + "unique": false, + "persistent": false, + "clearOnHide": false, + "refreshOn": "", "redrawOn": "", - "clearOnHide": true, + "dataGridLabel": false, + "labelPosition": "top", + "description": "", + "errorLabel": "", + "autofocus": false, + "dbIndex": false, "customDefaultValue": "", "calculateValue": "", "calculateServer": false, - "allowCalculateOverride": false, + "widget": null, "validateOn": "change", "validate": { "required": false, - "customMessage": "", "custom": "", "customPrivate": false, - "json": "", - "min": "", - "max": "", "strictDateValidation": false, "multiple": false, - "unique": false, - "step": "any", - "integer": "" + "unique": false }, - "errorLabel": "", - "key": "number", + "allowCalculateOverride": false, + "encrypted": false, + "showCharCount": false, + "showWordCount": false, + "allowMultipleMasks": false, + "tree": false, + "id": "epqpqle" + }, + { + "title": "Page 2 title", + "theme": "default", + "breadcrumb": "default", + "breadcrumbClickable": true, + "buttonSettings": { + "previous": true, + "cancel": true, + "next": true + }, + "tooltip": "tooltip for page 2", + "customClass": "", + "collapsible": false, + "hidden": false, + "hideLabel": false, + "disabled": false, + "modalEdit": false, + "key": "page2", "tags": [], "properties": {}, + "customConditional": "", "conditional": { + "json": "", "show": null, "when": null, - "eq": "", - "json": "" + "eq": "" }, - "customConditional": "", + "nextPage": "", "logic": [], "attributes": {}, "overlay": { @@ -114,134 +206,108 @@ "width": "", "height": "" }, - "type": "number", - "input": true, - "unique": false, - "refreshOn": "", - "dataGridLabel": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "id": "eb4c1oj", - "defaultValue": null - }], - "input": false, - "tableView": false, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": false, - "id": "epqpqle" - }, { - "title": "Page 2 title", - "theme": "default", - "breadcrumb": "default", - "breadcrumbClickable": true, - "buttonSettings": { - "previous": true, - "cancel": true, - "next": true - }, - "tooltip": "tooltip for page 2", - "customClass": "", - "collapsible": false, - "hidden": false, - "hideLabel": false, - "disabled": false, - "modalEdit": false, - "key": "page2", - "tags": [], - "properties": {}, - "customConditional": "", - "conditional": { - "json": "", - "show": null, - "when": null, - "eq": "" - }, - "nextPage": "", - "logic": [], - "attributes": {}, - "overlay": { - "style": "", - "page": "", - "left": "", - "top": "", - "width": "", - "height": "" - }, - "type": "panel", - "label": "Page 2 title", - "tabindex": "", - "components": [{ - "label": "Text Field", - "tableView": true, - "key": "textField", - "type": "textfield", - "input": true, + "type": "panel", + "label": "Page 2 title", + "tabindex": "", + "components": [ + { + "label": "Text Field", + "tableView": true, + "key": "textField", + "type": "textfield", + "input": true, + "placeholder": "", + "prefix": "", + "customClass": "", + "suffix": "", + "multiple": false, + "defaultValue": null, + "protected": false, + "unique": false, + "persistent": true, + "hidden": false, + "clearOnHide": true, + "refreshOn": "", + "redrawOn": "", + "modalEdit": false, + "dataGridLabel": false, + "labelPosition": "top", + "description": "", + "errorLabel": "", + "tooltip": "", + "hideLabel": false, + "tabindex": "", + "disabled": false, + "autofocus": false, + "dbIndex": false, + "customDefaultValue": "", + "calculateValue": "", + "calculateServer": false, + "widget": { + "type": "input" + }, + "attributes": {}, + "validateOn": "change", + "validate": { + "required": false, + "custom": "", + "customPrivate": false, + "strictDateValidation": false, + "multiple": false, + "unique": false, + "minLength": "", + "maxLength": "", + "pattern": "" + }, + "conditional": { + "show": null, + "when": null, + "eq": "" + }, + "overlay": { + "style": "", + "left": "", + "top": "", + "width": "", + "height": "" + }, + "allowCalculateOverride": false, + "encrypted": false, + "showCharCount": false, + "showWordCount": false, + "properties": {}, + "allowMultipleMasks": false, + "mask": false, + "inputType": "text", + "inputFormat": "plain", + "inputMask": "", + "spellcheck": true, + "id": "eh695m" + } + ], + "input": false, + "tableView": false, "placeholder": "", "prefix": "", - "customClass": "", "suffix": "", "multiple": false, "defaultValue": null, "protected": false, "unique": false, - "persistent": true, - "hidden": false, - "clearOnHide": true, + "persistent": false, + "clearOnHide": false, "refreshOn": "", "redrawOn": "", - "modalEdit": false, "dataGridLabel": false, "labelPosition": "top", "description": "", "errorLabel": "", - "tooltip": "", - "hideLabel": false, - "tabindex": "", - "disabled": false, "autofocus": false, "dbIndex": false, "customDefaultValue": "", "calculateValue": "", "calculateServer": false, - "widget": { - "type": "input" - }, - "attributes": {}, + "widget": null, "validateOn": "change", "validate": { "required": false, @@ -249,76 +315,17 @@ "customPrivate": false, "strictDateValidation": false, "multiple": false, - "unique": false, - "minLength": "", - "maxLength": "", - "pattern": "" - }, - "conditional": { - "show": null, - "when": null, - "eq": "" - }, - "overlay": { - "style": "", - "left": "", - "top": "", - "width": "", - "height": "" + "unique": false }, "allowCalculateOverride": false, "encrypted": false, "showCharCount": false, "showWordCount": false, - "properties": {}, "allowMultipleMasks": false, - "mask": false, - "inputType": "text", - "inputFormat": "plain", - "inputMask": "", - "spellcheck": true, - "id": "eh695m" - }], - "input": false, - "tableView": false, - "placeholder": "", - "prefix": "", - "suffix": "", - "multiple": false, - "defaultValue": null, - "protected": false, - "unique": false, - "persistent": false, - "clearOnHide": false, - "refreshOn": "", - "redrawOn": "", - "dataGridLabel": false, - "labelPosition": "top", - "description": "", - "errorLabel": "", - "autofocus": false, - "dbIndex": false, - "customDefaultValue": "", - "calculateValue": "", - "calculateServer": false, - "widget": null, - "validateOn": "change", - "validate": { - "required": false, - "custom": "", - "customPrivate": false, - "strictDateValidation": false, - "multiple": false, - "unique": false - }, - "allowCalculateOverride": false, - "encrypted": false, - "showCharCount": false, - "showWordCount": false, - "allowMultipleMasks": false, - "tree": false, - "id": "eexnju" - }], + "tree": false, + "id": "eexnju" + } + ], "title": "testTooltips", "display": "wizard", "name": "testTooltips", diff --git a/test/harness.d.ts b/test/harness.d.ts index 9009dfb9b3..8b1511b2f2 100644 --- a/test/harness.d.ts +++ b/test/harness.d.ts @@ -1,39 +1,65 @@ export default Harness; declare namespace Harness { - export function builderBefore(done: any, options?: {}): void; - export function builderAfter(done: any): void; - export function getBuilder(): any; - export function saveComponent(): void; - export function buildComponent(type: any, container: any): any; - export function setComponentProperty(property: any, before: any, after: any, cb: any): void; - export function testBuilderProperty(property: any, before: any, after: any, previewRegEx: any, cb: any): void; - export function getDate(): string; - export function testCreate(Component: any, componentSettings: any, options?: {}): Promise; - export function testConditionals(form: any, submission: any, hidden: any, done: any): void; - export function testVisibility(component: any, query: any, visible: any): void; - export function testComponentVisibility(component: any, query: any, visible: any): void; - export function clickElement(component: any, query: any): any; - export function dispatchEvent(eventType: any, element: any, query: any, beforeDispatch: any): any; - export function testElements(component: any, query: any, number: any): any; - export function testElement(component: any, query: any, exists: any): any; - export function testInnerHtml(component: any, query: any, content: any): void; - export function testAttribute(component: any, query: any, attribute: any, value: any): void; - export function testHasClass(component: any, query: any, className: any): void; - export function testModalWrapperErrorClasses(component: any, shouldBeInvalid?: boolean, query?: string): void; - export function testElementAttribute(element: any, attribute: any, expected: any): any; - export function testSetGet(component: any, value: any): any; - export function setInputValue(component: any, name: any, value: any): any; - export function getInputValue(component: any, name: any, value: any, valueProperty?: string): void; - export function setTagsValue(values: any, component: any): void; - export function testSetInput(component: any, input: any, output: any, visible: any, index?: number): any; - export function testSubmission(form: any, submission: any, onChange: any): void; - export function testErrors(form: any, submission: any, errors: any, done: any): void; - export function testValid(component: any, value: any): Promise; - export function testInvalid(component: any, value: any, field: any, expectedError: any): Promise; - export function testComponent(component: any, test: any, done: any): void; - export function testWizardPrevPage(form: any, errors: any, onPrevPage: any): any; - export function testWizardNextPage(form: any, errors: any, onNextPage: any): any; - export function testNumberBlur(cmp: any, inv: any, outv: any, display: any, index?: number): void; - export { onNext }; + export function builderBefore(done: any, options?: {}): void; + export function builderAfter(done: any): void; + export function getBuilder(): any; + export function saveComponent(): void; + export function buildComponent(type: any, container: any): any; + export function setComponentProperty(property: any, before: any, after: any, cb: any): void; + export function testBuilderProperty( + property: any, + before: any, + after: any, + previewRegEx: any, + cb: any, + ): void; + export function getDate(): string; + export function testCreate(Component: any, componentSettings: any, options?: {}): Promise; + export function testConditionals(form: any, submission: any, hidden: any, done: any): void; + export function testVisibility(component: any, query: any, visible: any): void; + export function testComponentVisibility(component: any, query: any, visible: any): void; + export function clickElement(component: any, query: any): any; + export function dispatchEvent(eventType: any, element: any, query: any, beforeDispatch: any): any; + export function testElements(component: any, query: any, number: any): any; + export function testElement(component: any, query: any, exists: any): any; + export function testInnerHtml(component: any, query: any, content: any): void; + export function testAttribute(component: any, query: any, attribute: any, value: any): void; + export function testHasClass(component: any, query: any, className: any): void; + export function testModalWrapperErrorClasses( + component: any, + shouldBeInvalid?: boolean, + query?: string, + ): void; + export function testElementAttribute(element: any, attribute: any, expected: any): any; + export function testSetGet(component: any, value: any): any; + export function setInputValue(component: any, name: any, value: any): any; + export function getInputValue( + component: any, + name: any, + value: any, + valueProperty?: string, + ): void; + export function setTagsValue(values: any, component: any): void; + export function testSetInput( + component: any, + input: any, + output: any, + visible: any, + index?: number, + ): any; + export function testSubmission(form: any, submission: any, onChange: any): void; + export function testErrors(form: any, submission: any, errors: any, done: any): void; + export function testValid(component: any, value: any): Promise; + export function testInvalid( + component: any, + value: any, + field: any, + expectedError: any, + ): Promise; + export function testComponent(component: any, test: any, done: any): void; + export function testWizardPrevPage(form: any, errors: any, onPrevPage: any): any; + export function testWizardNextPage(form: any, errors: any, onNextPage: any): any; + export function testNumberBlur(cmp: any, inv: any, outv: any, display: any, index?: number): void; + export { onNext }; } declare function onNext(cmp: any, event: any, cb: any): void; diff --git a/test/harness.js b/test/harness.js index cf4f3cc510..ea42c1ce44 100644 --- a/test/harness.js +++ b/test/harness.js @@ -31,7 +31,7 @@ function onNext(cmp, event, cb) { const Harness = { builderBefore(done, options = {}) { - var html; // Unsure what _your code_ needs here -- using `undefined` to trigger default value + var html; // Unsure what _your code_ needs here -- using `undefined` to trigger default value var opt = { url: 'http://localhost/' }; this.jsdom = require('jsdom-global')(html, opt); window.confirm = () => true; @@ -55,7 +55,7 @@ const Harness = { const click = new MouseEvent('click', { view: window, bubbles: true, - cancelable: true + cancelable: true, }); const saveBtn = formBuilder.instance.componentEdit.querySelector('[ref="saveButton"]'); @@ -90,12 +90,12 @@ const Harness = { let component = webformBuilder.element.querySelector(`span[data-type='${type}']`); if (component) { component = component && component.cloneNode(true); - const element = container || webformBuilder.element.querySelector('.drag-container.formio-builder-form'); + const element = + container || webformBuilder.element.querySelector('.drag-container.formio-builder-form'); element.appendChild(component); builderGroup = document.getElementById(`group-container-${groupName}`); webformBuilder.onDrop(component, element, builderGroup); - } - else { + } else { return; } @@ -127,15 +127,21 @@ const Harness = { }, getDate() { - let timestamp = (new Date()).getTime(); + let timestamp = new Date().getTime(); timestamp = parseInt(timestamp / 1000, 10); - return (new Date(timestamp * 1000)).toISOString(); + return new Date(timestamp * 1000).toISOString(); }, testCreate(Component, componentSettings, options = {}) { const compSettings = _.cloneDeep(componentSettings); - const component = new Component(compSettings, _.merge({ - events: new EventEmitter(), - }, options)); + const component = new Component( + compSettings, + _.merge( + { + events: new EventEmitter(), + }, + options, + ), + ); component.pristine = false; component.componentsMap[component.key] = component; return new Promise((resolve) => { @@ -154,9 +160,12 @@ const Harness = { if (hidden.includes(comp.component.key)) { // Should be hidden. assert(!comp.visible, 'Element should not be visible'); - assert.equal(comp.element.childElementCount, 0, 'Hidden elements should not have children'); - } - else { + assert.equal( + comp.element.childElementCount, + 0, + 'Hidden elements should not have children', + ); + } else { // Should be visible. assert(comp.visible, 'Element should not be hidden'); assert.notEqual(comp.element.childElementCount, 0, 'Element must be visible'); @@ -170,9 +179,11 @@ const Harness = { const element = component.element.querySelector(query); assert(element, `${query} not found`); if (visible) { - assert((element.style.visibility === '') || (element.style.visibility === 'visible'), 'Element must be visible'); - } - else { + assert( + element.style.visibility === '' || element.style.visibility === 'visible', + 'Element must be visible', + ); + } else { assert(element.style.visibility === 'hidden', 'Element must be hidden'); } }, @@ -182,8 +193,7 @@ const Harness = { const isHidden = element.className.includes('formio-hidden'); if (visible) { assert(!isHidden, 'Element must be visible'); - } - else { + } else { assert(isHidden, 'Element must be hidden'); } }, @@ -191,7 +201,7 @@ const Harness = { const clickEvent = new MouseEvent('click', { view: window, bubbles: true, - cancelable: true + cancelable: true, }); let element = query; if (typeof query === 'string') { @@ -236,18 +246,22 @@ const Harness = { assert(element, `${query} not found`); assert(element.className.split(' ').includes(className)); }, - testModalWrapperErrorClasses(component, shouldBeInvalid = true, query = '[ref="openModalWrapper"]') { + testModalWrapperErrorClasses( + component, + shouldBeInvalid = true, + query = '[ref="openModalWrapper"]', + ) { const modalWrapper = component.element.querySelector(query); assert(modalWrapper, `${query} not found`); assert.equal( modalWrapper.className.split(' ').includes('formio-error-wrapper'), shouldBeInvalid, - `Should ${shouldBeInvalid ? '' : 'not'} have error class` + `Should ${shouldBeInvalid ? '' : 'not'} have error class`, ); assert.equal( modalWrapper.className.split(' ').includes('has-message'), shouldBeInvalid, - `Should ${shouldBeInvalid ? '' : 'not'} have class indicating that the component has a message` + `Should ${shouldBeInvalid ? '' : 'not'} have class indicating that the component has a message`, ); }, testElementAttribute(element, attribute, expected) { @@ -279,7 +293,7 @@ const Harness = { const inputEvent = new Event('input', { bubbles: true, cancelable: true }); const element = component.choices.input.element; - values.forEach(value => { + values.forEach((value) => { element.value = value; element.dispatchEvent(inputEvent); element.dispatchEvent(blurEvent); @@ -326,8 +340,7 @@ const Harness = { if (valid) { assert.equal(component.dataValue, value); resolve(); - } - else { + } else { reject('Component should be valid'); } resolved = true; @@ -426,6 +439,6 @@ const Harness = { assert.strictEqual(cmp.getValueAt(index), outv); assert.strictEqual(input.value, display); }, - onNext + onNext, }; export default Harness; diff --git a/test/numberFormatPolyfill.js b/test/numberFormatPolyfill.js index 0fe5ec685c..07d31203d2 100644 --- a/test/numberFormatPolyfill.js +++ b/test/numberFormatPolyfill.js @@ -3,188 +3,223 @@ // Adapted from here: https://polyfill.io/v3/polyfill.js?features=Intl.~locale.en-US,Intl.~locale.de,Intl.~locale.fr,Intl.~locale.en-GB&flags=always (function (undefined) { - // Intl - ! function (e, r) { - e.IntlPolyfill = r() - }(this, function () { - "use strict"; + // Intl + !(function (e, r) { + e.IntlPolyfill = r(); + })(this, function () { + 'use strict'; function e(e) { - if ("function" == typeof Math.log10) return Math.floor(Math.log10(e)); + if ('function' == typeof Math.log10) return Math.floor(Math.log10(e)); var r = Math.round(Math.log(e) * Math.LOG10E); - return r - (Number("1e" + r) > e) + return r - (Number('1e' + r) > e); } function r(e) { - for (var t in e)(e instanceof r || Me.call(e, t)) && Ie(this, t, { - value: e[t], - enumerable: !0, - writable: !0, - configurable: !0 - }) + for (var t in e) + (e instanceof r || Me.call(e, t)) && + Ie(this, t, { + value: e[t], + enumerable: !0, + writable: !0, + configurable: !0, + }); } function t() { - Ie(this, "length", { + Ie(this, 'length', { writable: !0, - value: 0 - }), arguments.length && Ge.apply(this, qe.call(arguments)) + value: 0, + }), + arguments.length && Ge.apply(this, qe.call(arguments)); } function n() { if ($e.disableRegExpRestore) return function () {}; - for (var e = { - lastMatch: RegExp.lastMatch || "", - leftContext: RegExp.leftContext, - multiline: RegExp.multiline, - input: RegExp.input - }, r = !1, n = 1; n <= 9; n++) r = (e["$" + n] = RegExp["$" + n]) || r; + for ( + var e = { + lastMatch: RegExp.lastMatch || '', + leftContext: RegExp.leftContext, + multiline: RegExp.multiline, + input: RegExp.input, + }, + r = !1, + n = 1; + n <= 9; + n++ + ) + r = (e['$' + n] = RegExp['$' + n]) || r; return function () { var n = /[.?*+^$[\]\\(){}|-]/g, - a = e.lastMatch.replace(n, "\\$&"), - i = new t; + a = e.lastMatch.replace(n, '\\$&'), + i = new t(); if (r) for (var o = 1; o <= 9; o++) { - var s = e["$" + o]; - s ? (s = s.replace(n, "\\$&"), a = a.replace(s, "(" + s + ")")) : a = "()" + a, Ge.call(i, a.slice(0, a.indexOf("(") + 1)), a = a.slice(a.indexOf("(") + 1) + var s = e['$' + o]; + s ? ((s = s.replace(n, '\\$&')), (a = a.replace(s, '(' + s + ')'))) : (a = '()' + a), + Ge.call(i, a.slice(0, a.indexOf('(') + 1)), + (a = a.slice(a.indexOf('(') + 1)); } - var l = Ze.call(i, "") + a; + var l = Ze.call(i, '') + a; l = l.replace(/(\\\(|\\\)|[^()])+/g, function (e) { - return "[\\s\\S]{" + e.replace("\\", "").length + "}" + return '[\\s\\S]{' + e.replace('\\', '').length + '}'; }); - var c = new RegExp(l, e.multiline ? "gm" : "g"); - c.lastIndex = e.leftContext.length, c.exec(e.input) - } + var c = new RegExp(l, e.multiline ? 'gm' : 'g'); + (c.lastIndex = e.leftContext.length), c.exec(e.input); + }; } function a(e) { - if (null === e) throw new TypeError("Cannot convert null or undefined to object"); - return "object" === ("undefined" == typeof e ? "undefined" : Ne.typeof(e)) ? e : Object(e) + if (null === e) throw new TypeError('Cannot convert null or undefined to object'); + return 'object' === ('undefined' == typeof e ? 'undefined' : Ne.typeof(e)) ? e : Object(e); } function i(e) { - return "number" == typeof e ? e : Number(e) + return 'number' == typeof e ? e : Number(e); } function o(e) { var r = i(e); - return isNaN(r) ? 0 : 0 === r || r === -0 || r === +(1 / 0) || r === -(1 / 0) ? r : r < 0 ? Math.floor(Math.abs(r)) * -1 : Math.floor(Math.abs(r)) + return isNaN(r) + ? 0 + : 0 === r || r === -0 || r === +(1 / 0) || r === -(1 / 0) + ? r + : r < 0 + ? Math.floor(Math.abs(r)) * -1 + : Math.floor(Math.abs(r)); } function s(e) { var r = o(e); - return r <= 0 ? 0 : r === 1 / 0 ? Math.pow(2, 53) - 1 : Math.min(r, Math.pow(2, 53) - 1) + return r <= 0 ? 0 : r === 1 / 0 ? Math.pow(2, 53) - 1 : Math.min(r, Math.pow(2, 53) - 1); } function l(e) { - return Me.call(e, "__getInternalProperties") ? e.__getInternalProperties(Ke) : Re(null) + return Me.call(e, '__getInternalProperties') ? e.__getInternalProperties(Ke) : Re(null); } function c(e) { - cr = e + cr = e; } function u(e) { - for (var r = e.length; r--;) { + for (var r = e.length; r--; ) { var t = e.charAt(r); - t >= "a" && t <= "z" && (e = e.slice(0, r) + t.toUpperCase() + e.slice(r + 1)) + t >= 'a' && t <= 'z' && (e = e.slice(0, r) + t.toUpperCase() + e.slice(r + 1)); } - return e + return e; } function g(e) { - return !!ir.test(e) && (!or.test(e) && !sr.test(e)) + return !!ir.test(e) && !or.test(e) && !sr.test(e); } function f(e) { var r = void 0, t = void 0; - e = e.toLowerCase(), t = e.split("-"); + (e = e.toLowerCase()), (t = e.split('-')); for (var n = 1, a = t.length; n < a; n++) if (2 === t[n].length) t[n] = t[n].toUpperCase(); else if (4 === t[n].length) t[n] = t[n].charAt(0).toUpperCase() + t[n].slice(1); - else if (1 === t[n].length && "x" !== t[n]) break; - e = Ze.call(t, "-"), (r = e.match(lr)) && r.length > 1 && (r.sort(), e = e.replace(RegExp("(?:" + lr.source + ")+", "i"), Ze.call(r, ""))), Me.call(ur.tags, e) && (e = ur.tags[e]), t = e.split("-"); - for (var i = 1, o = t.length; i < o; i++) Me.call(ur.subtags, t[i]) ? t[i] = ur.subtags[t[i]] : Me.call(ur.extLang, t[i]) && (t[i] = ur.extLang[t[i]][0], 1 === i && ur.extLang[t[1]][1] === t[0] && (t = qe.call(t, i++), o -= 1)); - return Ze.call(t, "-") + else if (1 === t[n].length && 'x' !== t[n]) break; + (e = Ze.call(t, '-')), + (r = e.match(lr)) && + r.length > 1 && + (r.sort(), (e = e.replace(RegExp('(?:' + lr.source + ')+', 'i'), Ze.call(r, '')))), + Me.call(ur.tags, e) && (e = ur.tags[e]), + (t = e.split('-')); + for (var i = 1, o = t.length; i < o; i++) + Me.call(ur.subtags, t[i]) + ? (t[i] = ur.subtags[t[i]]) + : Me.call(ur.extLang, t[i]) && + ((t[i] = ur.extLang[t[i]][0]), + 1 === i && ur.extLang[t[1]][1] === t[0] && ((t = qe.call(t, i++)), (o -= 1))); + return Ze.call(t, '-'); } function m() { - return cr + return cr; } function v(e) { var r = String(e), t = u(r); - return gr.test(t) !== !1 + return gr.test(t) !== !1; } function d(e) { - if (void 0 === e) return new t; - var r = new t; - e = "string" == typeof e ? [e] : e; - for (var n = a(e), i = s(n.length), o = 0; o < i;) { + if (void 0 === e) return new t(); + var r = new t(); + e = 'string' == typeof e ? [e] : e; + for (var n = a(e), i = s(n.length), o = 0; o < i; ) { var l = String(o), c = l in n; if (c) { var u = n[l]; - if (null === u || "string" != typeof u && "object" !== ("undefined" == typeof u ? "undefined" : Ne.typeof(u))) throw new TypeError("String or Object type expected"); + if ( + null === u || + ('string' != typeof u && + 'object' !== ('undefined' == typeof u ? 'undefined' : Ne.typeof(u))) + ) + throw new TypeError('String or Object type expected'); var m = String(u); if (!g(m)) throw new RangeError("'" + m + "' is not a structurally valid language tag"); - m = f(m), Ae.call(r, m) === -1 && Ge.call(r, m) + (m = f(m)), Ae.call(r, m) === -1 && Ge.call(r, m); } - o++ + o++; } - return r + return r; } function h(e, r) { - for (var t = r; t;) { + for (var t = r; t; ) { if (Ae.call(e, t) > -1) return t; - var n = t.lastIndexOf("-"); + var n = t.lastIndexOf('-'); if (n < 0) return; - n >= 2 && "-" === t.charAt(n - 2) && (n -= 2), t = t.substring(0, n) + n >= 2 && '-' === t.charAt(n - 2) && (n -= 2), (t = t.substring(0, n)); } } function p(e, t) { - for (var n = 0, a = t.length, i = void 0, o = void 0, s = void 0; n < a && !i;) o = t[n], s = String(o).replace(fr, ""), i = h(e, s), n++; - var l = new r; + for (var n = 0, a = t.length, i = void 0, o = void 0, s = void 0; n < a && !i; ) + (o = t[n]), (s = String(o).replace(fr, '')), (i = h(e, s)), n++; + var l = new r(); if (void 0 !== i) { - if (l["[[locale]]"] = i, String(o) !== String(s)) { + if (((l['[[locale]]'] = i), String(o) !== String(s))) { var c = o.match(fr)[0], - u = o.indexOf("-u-"); - l["[[extension]]"] = c, l["[[extensionIndex]]"] = u + u = o.indexOf('-u-'); + (l['[[extension]]'] = c), (l['[[extensionIndex]]'] = u); } - } else l["[[locale]]"] = m(); - return l + } else l['[[locale]]'] = m(); + return l; } function y(e, r) { - return p(e, r) + return p(e, r); } function b(e, t, n, a, i) { - if (0 === e.length) throw new ReferenceError("No locale data has been provided for this object yet."); - var o = n["[[localeMatcher]]"], + if (0 === e.length) + throw new ReferenceError('No locale data has been provided for this object yet.'); + var o = n['[[localeMatcher]]'], s = void 0; - s = "lookup" === o ? p(e, t) : y(e, t); - var l = s["[[locale]]"], + s = 'lookup' === o ? p(e, t) : y(e, t); + var l = s['[[locale]]'], c = void 0, u = void 0; - if (Me.call(s, "[[extension]]")) { - var g = s["[[extension]]"], + if (Me.call(s, '[[extension]]')) { + var g = s['[[extension]]'], m = String.prototype.split; - c = m.call(g, "-"), u = c.length + (c = m.call(g, '-')), (u = c.length); } - var v = new r; - v["[[dataLocale]]"] = l; - for (var d = "-u", h = 0, b = a.length; h < b;) { + var v = new r(); + v['[[dataLocale]]'] = l; + for (var d = '-u', h = 0, b = a.length; h < b; ) { var w = a[h], x = i[l], j = x[w], D = j[0], - z = "", + z = '', k = Ae; if (void 0 !== c) { var O = k.call(c, w); @@ -192,430 +227,533 @@ if (O + 1 < u && c[O + 1].length > 2) { var F = c[O + 1], S = k.call(j, F); - S !== -1 && (D = F, z = "-" + w + "-" + D) + S !== -1 && ((D = F), (z = '-' + w + '-' + D)); } else { - var E = k(j, "true"); - E !== -1 && (D = "true") + var E = k(j, 'true'); + E !== -1 && (D = 'true'); } } - if (Me.call(n, "[[" + w + "]]")) { - var L = n["[[" + w + "]]"]; - k.call(j, L) !== -1 && L !== D && (D = L, z = "") + if (Me.call(n, '[[' + w + ']]')) { + var L = n['[[' + w + ']]']; + k.call(j, L) !== -1 && L !== D && ((D = L), (z = '')); } - v["[[" + w + "]]"] = D, d += z, h++ + (v['[[' + w + ']]'] = D), (d += z), h++; } if (d.length > 2) { - var P = l.indexOf("-x-"); + var P = l.indexOf('-x-'); if (P === -1) l += d; else { var N = l.substring(0, P), T = l.substring(P); - l = N + d + T + l = N + d + T; } - l = f(l) + l = f(l); } - return v["[[locale]]"] = l, v + return (v['[[locale]]'] = l), v; } function w(e, r) { - for (var n = r.length, a = new t, i = 0; i < n;) { + for (var n = r.length, a = new t(), i = 0; i < n; ) { var o = r[i], - s = String(o).replace(fr, ""), + s = String(o).replace(fr, ''), l = h(e, s); - void 0 !== l && Ge.call(a, o), i++ + void 0 !== l && Ge.call(a, o), i++; } var c = qe.call(a); - return c + return c; } function x(e, r) { - return w(e, r) + return w(e, r); } function j(e, t, n) { var i = void 0, o = void 0; - if (void 0 !== n && (n = new r(a(n)), i = n.localeMatcher, void 0 !== i && (i = String(i), "lookup" !== i && "best fit" !== i))) throw new RangeError('matcher should be "lookup" or "best fit"'); - o = void 0 === i || "best fit" === i ? x(e, t) : w(e, t); - for (var s in o) Me.call(o, s) && Ie(o, s, { - writable: !1, - configurable: !1, - value: o[s] - }); - return Ie(o, "length", { - writable: !1 - }), o + if ( + void 0 !== n && + ((n = new r(a(n))), + (i = n.localeMatcher), + void 0 !== i && ((i = String(i)), 'lookup' !== i && 'best fit' !== i)) + ) + throw new RangeError('matcher should be "lookup" or "best fit"'); + o = void 0 === i || 'best fit' === i ? x(e, t) : w(e, t); + for (var s in o) + Me.call(o, s) && + Ie(o, s, { + writable: !1, + configurable: !1, + value: o[s], + }); + return ( + Ie(o, 'length', { + writable: !1, + }), + o + ); } function D(e, r, t, n, a) { var i = e[r]; if (void 0 !== i) { - if (i = "boolean" === t ? Boolean(i) : "string" === t ? String(i) : i, void 0 !== n && Ae.call(n, i) === -1) throw new RangeError("'" + i + "' is not an allowed value for `" + r + "`"); - return i + if ( + ((i = 'boolean' === t ? Boolean(i) : 'string' === t ? String(i) : i), + void 0 !== n && Ae.call(n, i) === -1) + ) + throw new RangeError("'" + i + "' is not an allowed value for `" + r + '`'); + return i; } - return a + return a; } function z(e, r, t, n, a) { var i = e[r]; if (void 0 !== i) { - if (i = Number(i), isNaN(i) || i < t || i > n) throw new RangeError("Value is not a number or outside accepted range"); - return Math.floor(i) + if (((i = Number(i)), isNaN(i) || i < t || i > n)) + throw new RangeError('Value is not a number or outside accepted range'); + return Math.floor(i); } - return a + return a; } function k(e) { - for (var r = d(e), t = [], n = r.length, a = 0; a < n;) t[a] = r[a], a++; - return t + for (var r = d(e), t = [], n = r.length, a = 0; a < n; ) (t[a] = r[a]), a++; + return t; } function O() { var e = arguments[0], r = arguments[1]; - return this && this !== mr ? F(a(this), e, r) : new mr.NumberFormat(e, r) + return this && this !== mr ? F(a(this), e, r) : new mr.NumberFormat(e, r); } function F(e, i, o) { var s = l(e), c = n(); - if (s["[[initializedIntlObject]]"] === !0) throw new TypeError("`this` object has already been initialized as an Intl object"); - Ie(e, "__getInternalProperties", { + if (s['[[initializedIntlObject]]'] === !0) + throw new TypeError('`this` object has already been initialized as an Intl object'); + Ie(e, '__getInternalProperties', { value: function () { - if (arguments[0] === Ke) return s - } - }), s["[[initializedIntlObject]]"] = !0; + if (arguments[0] === Ke) return s; + }, + }), + (s['[[initializedIntlObject]]'] = !0); var u = d(i); o = void 0 === o ? {} : a(o); - var g = new r, - f = D(o, "localeMatcher", "string", new t("lookup", "best fit"), "best fit"); - g["[[localeMatcher]]"] = f; - var m = $e.NumberFormat["[[localeData]]"], - h = b($e.NumberFormat["[[availableLocales]]"], u, g, $e.NumberFormat["[[relevantExtensionKeys]]"], m); - s["[[locale]]"] = h["[[locale]]"], s["[[numberingSystem]]"] = h["[[nu]]"], s["[[dataLocale]]"] = h["[[dataLocale]]"]; - var p = h["[[dataLocale]]"], - y = D(o, "style", "string", new t("decimal", "percent", "currency"), "decimal"); - s["[[style]]"] = y; - var w = D(o, "currency", "string"); + var g = new r(), + f = D(o, 'localeMatcher', 'string', new t('lookup', 'best fit'), 'best fit'); + g['[[localeMatcher]]'] = f; + var m = $e.NumberFormat['[[localeData]]'], + h = b( + $e.NumberFormat['[[availableLocales]]'], + u, + g, + $e.NumberFormat['[[relevantExtensionKeys]]'], + m, + ); + (s['[[locale]]'] = h['[[locale]]']), + (s['[[numberingSystem]]'] = h['[[nu]]']), + (s['[[dataLocale]]'] = h['[[dataLocale]]']); + var p = h['[[dataLocale]]'], + y = D(o, 'style', 'string', new t('decimal', 'percent', 'currency'), 'decimal'); + s['[[style]]'] = y; + var w = D(o, 'currency', 'string'); if (void 0 !== w && !v(w)) throw new RangeError("'" + w + "' is not a valid currency code"); - if ("currency" === y && void 0 === w) throw new TypeError("Currency code is required when style is currency"); + if ('currency' === y && void 0 === w) + throw new TypeError('Currency code is required when style is currency'); var x = void 0; - "currency" === y && (w = w.toUpperCase(), s["[[currency]]"] = w, x = S(w)); - var j = D(o, "currencyDisplay", "string", new t("code", "symbol", "name"), "symbol"); - "currency" === y && (s["[[currencyDisplay]]"] = j); - var k = z(o, "minimumIntegerDigits", 1, 21, 1); - s["[[minimumIntegerDigits]]"] = k; - var O = "currency" === y ? x : 0, - F = z(o, "minimumFractionDigits", 0, 20, O); - s["[[minimumFractionDigits]]"] = F; - var L = "currency" === y ? Math.max(F, x) : "percent" === y ? Math.max(F, 0) : Math.max(F, 3), - P = z(o, "maximumFractionDigits", F, 20, L); - s["[[maximumFractionDigits]]"] = P; + 'currency' === y && ((w = w.toUpperCase()), (s['[[currency]]'] = w), (x = S(w))); + var j = D(o, 'currencyDisplay', 'string', new t('code', 'symbol', 'name'), 'symbol'); + 'currency' === y && (s['[[currencyDisplay]]'] = j); + var k = z(o, 'minimumIntegerDigits', 1, 21, 1); + s['[[minimumIntegerDigits]]'] = k; + var O = 'currency' === y ? x : 0, + F = z(o, 'minimumFractionDigits', 0, 20, O); + s['[[minimumFractionDigits]]'] = F; + var L = 'currency' === y ? Math.max(F, x) : 'percent' === y ? Math.max(F, 0) : Math.max(F, 3), + P = z(o, 'maximumFractionDigits', F, 20, L); + s['[[maximumFractionDigits]]'] = P; var N = o.minimumSignificantDigits, T = o.maximumSignificantDigits; - void 0 === N && void 0 === T || (N = z(o, "minimumSignificantDigits", 1, 21, 1), T = z(o, "maximumSignificantDigits", N, 21, 21), s["[[minimumSignificantDigits]]"] = N, s["[[maximumSignificantDigits]]"] = T); - var _ = D(o, "useGrouping", "boolean", void 0, !0); - s["[[useGrouping]]"] = _; + (void 0 === N && void 0 === T) || + ((N = z(o, 'minimumSignificantDigits', 1, 21, 1)), + (T = z(o, 'maximumSignificantDigits', N, 21, 21)), + (s['[[minimumSignificantDigits]]'] = N), + (s['[[maximumSignificantDigits]]'] = T)); + var _ = D(o, 'useGrouping', 'boolean', void 0, !0); + s['[[useGrouping]]'] = _; var M = m[p], I = M.patterns, A = I[y]; - return s["[[positivePattern]]"] = A.positivePattern, s["[[negativePattern]]"] = A.negativePattern, s["[[boundFormat]]"] = void 0, s["[[initializedNumberFormat]]"] = !0, _e && (e.format = E.call(e)), c(), e + return ( + (s['[[positivePattern]]'] = A.positivePattern), + (s['[[negativePattern]]'] = A.negativePattern), + (s['[[boundFormat]]'] = void 0), + (s['[[initializedNumberFormat]]'] = !0), + _e && (e.format = E.call(e)), + c(), + e + ); } function S(e) { - return void 0 !== vr[e] ? vr[e] : 2 + return void 0 !== vr[e] ? vr[e] : 2; } function E() { - var e = null !== this && "object" === Ne.typeof(this) && l(this); - if (!e || !e["[[initializedNumberFormat]]"]) throw new TypeError("`this` value for format() is not an initialized Intl.NumberFormat object."); - if (void 0 === e["[[boundFormat]]"]) { + var e = null !== this && 'object' === Ne.typeof(this) && l(this); + if (!e || !e['[[initializedNumberFormat]]']) + throw new TypeError( + '`this` value for format() is not an initialized Intl.NumberFormat object.', + ); + if (void 0 === e['[[boundFormat]]']) { var r = function (e) { - return T(this, Number(e)) + return T(this, Number(e)); }, t = Ue.call(r, this); - e["[[boundFormat]]"] = t + e['[[boundFormat]]'] = t; } - return e["[[boundFormat]]"] + return e['[[boundFormat]]']; } function L() { var e = arguments.length <= 0 || void 0 === arguments[0] ? void 0 : arguments[0], - r = null !== this && "object" === Ne.typeof(this) && l(this); - if (!r || !r["[[initializedNumberFormat]]"]) throw new TypeError("`this` value for formatToParts() is not an initialized Intl.NumberFormat object."); + r = null !== this && 'object' === Ne.typeof(this) && l(this); + if (!r || !r['[[initializedNumberFormat]]']) + throw new TypeError( + '`this` value for formatToParts() is not an initialized Intl.NumberFormat object.', + ); var t = Number(e); - return P(this, t) + return P(this, t); } function P(e, r) { for (var t = N(e, r), n = [], a = 0, i = 0; t.length > i; i++) { var o = t[i], s = {}; - s.type = o["[[type]]"], s.value = o["[[value]]"], n[a] = s, a += 1 + (s.type = o['[[type]]']), (s.value = o['[[value]]']), (n[a] = s), (a += 1); } - return n + return n; } function N(e, r) { var n = l(e), - a = n["[[dataLocale]]"], - i = n["[[numberingSystem]]"], - o = $e.NumberFormat["[[localeData]]"][a], + a = n['[[dataLocale]]'], + i = n['[[numberingSystem]]'], + o = $e.NumberFormat['[[localeData]]'][a], s = o.symbols[i] || o.symbols.latn, c = void 0; - !isNaN(r) && r < 0 ? (r = -r, c = n["[[negativePattern]]"]) : c = n["[[positivePattern]]"]; - for (var u = new t, g = c.indexOf("{", 0), f = 0, m = 0, v = c.length; g > -1 && g < v;) { - if (f = c.indexOf("}", g), f === -1) throw new Error; + !isNaN(r) && r < 0 + ? ((r = -r), (c = n['[[negativePattern]]'])) + : (c = n['[[positivePattern]]']); + for (var u = new t(), g = c.indexOf('{', 0), f = 0, m = 0, v = c.length; g > -1 && g < v; ) { + if (((f = c.indexOf('}', g)), f === -1)) throw new Error(); if (g > m) { var d = c.substring(m, g); Ge.call(u, { - "[[type]]": "literal", - "[[value]]": d - }) + '[[type]]': 'literal', + '[[value]]': d, + }); } var h = c.substring(g + 1, f); - if ("number" === h) + if ('number' === h) if (isNaN(r)) { var p = s.nan; Ge.call(u, { - "[[type]]": "nan", - "[[value]]": p - }) + '[[type]]': 'nan', + '[[value]]': p, + }); } else if (isFinite(r)) { - "percent" === n["[[style]]"] && isFinite(r) && (r *= 100); - var y = void 0; - y = Me.call(n, "[[minimumSignificantDigits]]") && Me.call(n, "[[maximumSignificantDigits]]") ? _(r, n["[[minimumSignificantDigits]]"], n["[[maximumSignificantDigits]]"]) : M(r, n["[[minimumIntegerDigits]]"], n["[[minimumFractionDigits]]"], n["[[maximumFractionDigits]]"]), dr[i] ? ! function () { - var e = dr[i]; - y = String(y).replace(/\d/g, function (r) { - return e[r] - }) - }() : y = String(y); - var b = void 0, - w = void 0, - x = y.indexOf(".", 0); - if (x > 0 ? (b = y.substring(0, x), w = y.substring(x + 1, x.length)) : (b = y, w = void 0), n["[[useGrouping]]"] === !0) { - var j = s.group, - D = [], - z = o.patterns.primaryGroupSize || 3, - k = o.patterns.secondaryGroupSize || z; - if (b.length > z) { - var O = b.length - z, - F = O % k, - S = b.slice(0, F); - for (S.length && Ge.call(D, S); F < O;) Ge.call(D, b.slice(F, F + k)), F += k; - Ge.call(D, b.slice(O)) - } else Ge.call(D, b); - if (0 === D.length) throw new Error; - for (; D.length;) { - var E = Be.call(D); + 'percent' === n['[[style]]'] && isFinite(r) && (r *= 100); + var y = void 0; + (y = + Me.call(n, '[[minimumSignificantDigits]]') && + Me.call(n, '[[maximumSignificantDigits]]') + ? _(r, n['[[minimumSignificantDigits]]'], n['[[maximumSignificantDigits]]']) + : M( + r, + n['[[minimumIntegerDigits]]'], + n['[[minimumFractionDigits]]'], + n['[[maximumFractionDigits]]'], + )), + dr[i] + ? !(function () { + var e = dr[i]; + y = String(y).replace(/\d/g, function (r) { + return e[r]; + }); + })() + : (y = String(y)); + var b = void 0, + w = void 0, + x = y.indexOf('.', 0); + if ( + (x > 0 + ? ((b = y.substring(0, x)), (w = y.substring(x + 1, x.length))) + : ((b = y), (w = void 0)), + n['[[useGrouping]]'] === !0) + ) { + var j = s.group, + D = [], + z = o.patterns.primaryGroupSize || 3, + k = o.patterns.secondaryGroupSize || z; + if (b.length > z) { + var O = b.length - z, + F = O % k, + S = b.slice(0, F); + for (S.length && Ge.call(D, S); F < O; ) Ge.call(D, b.slice(F, F + k)), (F += k); + Ge.call(D, b.slice(O)); + } else Ge.call(D, b); + if (0 === D.length) throw new Error(); + for (; D.length; ) { + var E = Be.call(D); + Ge.call(u, { + '[[type]]': 'integer', + '[[value]]': E, + }), + D.length && + Ge.call(u, { + '[[type]]': 'group', + '[[value]]': j, + }); + } + } else Ge.call(u, { - "[[type]]": "integer", - "[[value]]": E - }), D.length && Ge.call(u, { - "[[type]]": "group", - "[[value]]": j - }) + '[[type]]': 'integer', + '[[value]]': b, + }); + if (void 0 !== w) { + var L = s.decimal; + Ge.call(u, { + '[[type]]': 'decimal', + '[[value]]': L, + }), + Ge.call(u, { + '[[type]]': 'fraction', + '[[value]]': w, + }); } - } else Ge.call(u, { - "[[type]]": "integer", - "[[value]]": b - }); - if (void 0 !== w) { - var L = s.decimal; + } else { + var P = s.infinity; Ge.call(u, { - "[[type]]": "decimal", - "[[value]]": L - }), Ge.call(u, { - "[[type]]": "fraction", - "[[value]]": w - }) + '[[type]]': 'infinity', + '[[value]]': P, + }); } - } else { - var P = s.infinity; - Ge.call(u, { - "[[type]]": "infinity", - "[[value]]": P - }) - } else if ("plusSign" === h) { + else if ('plusSign' === h) { var N = s.plusSign; Ge.call(u, { - "[[type]]": "plusSign", - "[[value]]": N - }) - } else if ("minusSign" === h) { + '[[type]]': 'plusSign', + '[[value]]': N, + }); + } else if ('minusSign' === h) { var T = s.minusSign; Ge.call(u, { - "[[type]]": "minusSign", - "[[value]]": T - }) - } else if ("percentSign" === h && "percent" === n["[[style]]"]) { + '[[type]]': 'minusSign', + '[[value]]': T, + }); + } else if ('percentSign' === h && 'percent' === n['[[style]]']) { var I = s.percentSign; Ge.call(u, { - "[[type]]": "literal", - "[[value]]": I - }) - } else if ("currency" === h && "currency" === n["[[style]]"]) { - var A = n["[[currency]]"], + '[[type]]': 'literal', + '[[value]]': I, + }); + } else if ('currency' === h && 'currency' === n['[[style]]']) { + var A = n['[[currency]]'], R = void 0; - "code" === n["[[currencyDisplay]]"] ? R = A : "symbol" === n["[[currencyDisplay]]"] ? R = o.currencies[A] || A : "name" === n["[[currencyDisplay]]"] && (R = A), Ge.call(u, { - "[[type]]": "currency", - "[[value]]": R - }) + 'code' === n['[[currencyDisplay]]'] + ? (R = A) + : 'symbol' === n['[[currencyDisplay]]'] + ? (R = o.currencies[A] || A) + : 'name' === n['[[currencyDisplay]]'] && (R = A), + Ge.call(u, { + '[[type]]': 'currency', + '[[value]]': R, + }); } else { var q = c.substring(g, f); Ge.call(u, { - "[[type]]": "literal", - "[[value]]": q - }) + '[[type]]': 'literal', + '[[value]]': q, + }); } - m = f + 1, g = c.indexOf("{", m) + (m = f + 1), (g = c.indexOf('{', m)); } if (m < v) { var C = c.substring(m, v); Ge.call(u, { - "[[type]]": "literal", - "[[value]]": C - }) + '[[type]]': 'literal', + '[[value]]': C, + }); } - return u + return u; } function T(e, r) { - for (var t = N(e, r), n = "", a = 0; t.length > a; a++) { + for (var t = N(e, r), n = '', a = 0; t.length > a; a++) { var i = t[a]; - n += i["[[value]]"] + n += i['[[value]]']; } - return n + return n; } function _(r, t, n) { var a = n, i = void 0, o = void 0; - if (0 === r) i = Ze.call(Array(a + 1), "0"), o = 0; + if (0 === r) (i = Ze.call(Array(a + 1), '0')), (o = 0); else { o = e(Math.abs(r)); var s = Math.round(Math.exp(Math.abs(o - a + 1) * Math.LN10)); - i = String(Math.round(o - a + 1 < 0 ? r * s : r / s)) + i = String(Math.round(o - a + 1 < 0 ? r * s : r / s)); } - if (o >= a) return i + Ze.call(Array(o - a + 1 + 1), "0"); + if (o >= a) return i + Ze.call(Array(o - a + 1 + 1), '0'); if (o === a - 1) return i; - if (o >= 0 ? i = i.slice(0, o + 1) + "." + i.slice(o + 1) : o < 0 && (i = "0." + Ze.call(Array(-(o + 1) + 1), "0") + i), i.indexOf(".") >= 0 && n > t) { - for (var l = n - t; l > 0 && "0" === i.charAt(i.length - 1);) i = i.slice(0, -1), l--; - "." === i.charAt(i.length - 1) && (i = i.slice(0, -1)) + if ( + (o >= 0 + ? (i = i.slice(0, o + 1) + '.' + i.slice(o + 1)) + : o < 0 && (i = '0.' + Ze.call(Array(-(o + 1) + 1), '0') + i), + i.indexOf('.') >= 0 && n > t) + ) { + for (var l = n - t; l > 0 && '0' === i.charAt(i.length - 1); ) (i = i.slice(0, -1)), l--; + '.' === i.charAt(i.length - 1) && (i = i.slice(0, -1)); } - return i + return i; } function M(e, r, t, n) { var a = n, i = Math.pow(10, a) * e, - o = 0 === i ? "0" : i.toFixed(0), + o = 0 === i ? '0' : i.toFixed(0), s = void 0, - l = (s = o.indexOf("e")) > -1 ? o.slice(s + 1) : 0; - l && (o = o.slice(0, s).replace(".", ""), o += Ze.call(Array(l - (o.length - 1) + 1), "0")); + l = (s = o.indexOf('e')) > -1 ? o.slice(s + 1) : 0; + l && + ((o = o.slice(0, s).replace('.', '')), (o += Ze.call(Array(l - (o.length - 1) + 1), '0'))); var c = void 0; if (0 !== a) { var u = o.length; if (u <= a) { - var g = Ze.call(Array(a + 1 - u + 1), "0"); - o = g + o, u = a + 1 + var g = Ze.call(Array(a + 1 - u + 1), '0'); + (o = g + o), (u = a + 1); } var f = o.substring(0, u - a), m = o.substring(u - a, o.length); - o = f + "." + m, c = f.length + (o = f + '.' + m), (c = f.length); } else c = o.length; - for (var v = n - t; v > 0 && "0" === o.slice(-1);) o = o.slice(0, -1), v--; - if ("." === o.slice(-1) && (o = o.slice(0, -1)), c < r) { - var d = Ze.call(Array(r - c + 1), "0"); - o = d + o + for (var v = n - t; v > 0 && '0' === o.slice(-1); ) (o = o.slice(0, -1)), v--; + if (('.' === o.slice(-1) && (o = o.slice(0, -1)), c < r)) { + var d = Ze.call(Array(r - c + 1), '0'); + o = d + o; } - return o + return o; } function I(e) { - for (var r = 0; r < wr.length; r += 1) - if (e.hasOwnProperty(wr[r])) return !1; - return !0 + for (var r = 0; r < wr.length; r += 1) if (e.hasOwnProperty(wr[r])) return !1; + return !0; } function A(e) { - for (var r = 0; r < br.length; r += 1) - if (e.hasOwnProperty(br[r])) return !1; - return !0 + for (var r = 0; r < br.length; r += 1) if (e.hasOwnProperty(br[r])) return !1; + return !0; } function R(e, r) { - for (var t = { - _: {} - }, n = 0; n < br.length; n += 1) e[br[n]] && (t[br[n]] = e[br[n]]), e._[br[n]] && (t._[br[n]] = e._[br[n]]); - for (var a = 0; a < wr.length; a += 1) r[wr[a]] && (t[wr[a]] = r[wr[a]]), r._[wr[a]] && (t._[wr[a]] = r._[wr[a]]); - return t + for ( + var t = { + _: {}, + }, + n = 0; + n < br.length; + n += 1 + ) + e[br[n]] && (t[br[n]] = e[br[n]]), e._[br[n]] && (t._[br[n]] = e._[br[n]]); + for (var a = 0; a < wr.length; a += 1) + r[wr[a]] && (t[wr[a]] = r[wr[a]]), r._[wr[a]] && (t._[wr[a]] = r._[wr[a]]); + return t; } function q(e) { - return e.pattern12 = e.extendedPattern.replace(/'([^']*)'/g, function (e, r) { - return r ? r : "'" - }), e.pattern = e.pattern12.replace("{ampm}", "").replace(pr, ""), e + return ( + (e.pattern12 = e.extendedPattern.replace(/'([^']*)'/g, function (e, r) { + return r ? r : "'"; + })), + (e.pattern = e.pattern12.replace('{ampm}', '').replace(pr, '')), + e + ); } function C(e, r) { switch (e.charAt(0)) { - case "G": - return r.era = ["short", "short", "short", "long", "narrow"][e.length - 1], "{era}"; - case "y": - case "Y": - case "u": - case "U": - case "r": - return r.year = 2 === e.length ? "2-digit" : "numeric", "{year}"; - case "Q": - case "q": - return r.quarter = ["numeric", "2-digit", "short", "long", "narrow"][e.length - 1], "{quarter}"; - case "M": - case "L": - return r.month = ["numeric", "2-digit", "short", "long", "narrow"][e.length - 1], "{month}"; - case "w": - return r.week = 2 === e.length ? "2-digit" : "numeric", "{weekday}"; - case "W": - return r.week = "numeric", "{weekday}"; - case "d": - return r.day = 2 === e.length ? "2-digit" : "numeric", "{day}"; - case "D": - case "F": - case "g": - return r.day = "numeric", "{day}"; - case "E": - return r.weekday = ["short", "short", "short", "long", "narrow", "short"][e.length - 1], "{weekday}"; - case "e": - return r.weekday = ["numeric", "2-digit", "short", "long", "narrow", "short"][e.length - 1], "{weekday}"; - case "c": - return r.weekday = ["numeric", void 0, "short", "long", "narrow", "short"][e.length - 1], "{weekday}"; - case "a": - case "b": - case "B": - return r.hour12 = !0, "{ampm}"; - case "h": - case "H": - return r.hour = 2 === e.length ? "2-digit" : "numeric", "{hour}"; - case "k": - case "K": - return r.hour12 = !0, r.hour = 2 === e.length ? "2-digit" : "numeric", "{hour}"; - case "m": - return r.minute = 2 === e.length ? "2-digit" : "numeric", "{minute}"; - case "s": - return r.second = 2 === e.length ? "2-digit" : "numeric", "{second}"; - case "S": - case "A": - return r.second = "numeric", "{second}"; - case "z": - case "Z": - case "O": - case "v": - case "V": - case "X": - case "x": - return r.timeZoneName = e.length < 4 ? "short" : "long", "{timeZoneName}" + case 'G': + return (r.era = ['short', 'short', 'short', 'long', 'narrow'][e.length - 1]), '{era}'; + case 'y': + case 'Y': + case 'u': + case 'U': + case 'r': + return (r.year = 2 === e.length ? '2-digit' : 'numeric'), '{year}'; + case 'Q': + case 'q': + return ( + (r.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][e.length - 1]), + '{quarter}' + ); + case 'M': + case 'L': + return ( + (r.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][e.length - 1]), '{month}' + ); + case 'w': + return (r.week = 2 === e.length ? '2-digit' : 'numeric'), '{weekday}'; + case 'W': + return (r.week = 'numeric'), '{weekday}'; + case 'd': + return (r.day = 2 === e.length ? '2-digit' : 'numeric'), '{day}'; + case 'D': + case 'F': + case 'g': + return (r.day = 'numeric'), '{day}'; + case 'E': + return ( + (r.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][e.length - 1]), + '{weekday}' + ); + case 'e': + return ( + (r.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][e.length - 1]), + '{weekday}' + ); + case 'c': + return ( + (r.weekday = ['numeric', void 0, 'short', 'long', 'narrow', 'short'][e.length - 1]), + '{weekday}' + ); + case 'a': + case 'b': + case 'B': + return (r.hour12 = !0), '{ampm}'; + case 'h': + case 'H': + return (r.hour = 2 === e.length ? '2-digit' : 'numeric'), '{hour}'; + case 'k': + case 'K': + return (r.hour12 = !0), (r.hour = 2 === e.length ? '2-digit' : 'numeric'), '{hour}'; + case 'm': + return (r.minute = 2 === e.length ? '2-digit' : 'numeric'), '{minute}'; + case 's': + return (r.second = 2 === e.length ? '2-digit' : 'numeric'), '{second}'; + case 'S': + case 'A': + return (r.second = 'numeric'), '{second}'; + case 'z': + case 'Z': + case 'O': + case 'v': + case 'V': + case 'X': + case 'x': + return (r.timeZoneName = e.length < 4 ? 'short' : 'long'), '{timeZoneName}'; } } @@ -623,13 +761,17 @@ if (!yr.test(r)) { var t = { originalPattern: r, - _: {} + _: {}, }; - return t.extendedPattern = r.replace(hr, function (e) { - return C(e, t._) - }), e.replace(hr, function (e) { - return C(e, t) - }), q(t) + return ( + (t.extendedPattern = r.replace(hr, function (e) { + return C(e, t._); + })), + e.replace(hr, function (e) { + return C(e, t); + }), + q(t) + ); } } @@ -645,256 +787,384 @@ c = void 0, u = [], g = []; - for (i in r) r.hasOwnProperty(i) && (o = r[i], s = G(i, o), s && (a.push(s), I(s) ? g.push(s) : A(s) && u.push(s))); - for (i in t) t.hasOwnProperty(i) && (o = t[i], s = G(i, o), s && (a.push(s), u.push(s))); - for (i in n) n.hasOwnProperty(i) && (o = n[i], s = G(i, o), s && (a.push(s), g.push(s))); + for (i in r) + r.hasOwnProperty(i) && + ((o = r[i]), (s = G(i, o)), s && (a.push(s), I(s) ? g.push(s) : A(s) && u.push(s))); + for (i in t) t.hasOwnProperty(i) && ((o = t[i]), (s = G(i, o)), s && (a.push(s), u.push(s))); + for (i in n) n.hasOwnProperty(i) && ((o = n[i]), (s = G(i, o)), s && (a.push(s), g.push(s))); for (l = 0; l < u.length; l += 1) - for (c = 0; c < g.length; c += 1) o = "long" === g[c].month ? g[c].weekday ? e.full : e.long : "short" === g[c].month ? e.medium : e.short, s = R(g[c], u[l]), s.originalPattern = o, s.extendedPattern = o.replace("{0}", u[l].extendedPattern).replace("{1}", g[c].extendedPattern).replace(/^[,\s]+|[,\s]+$/gi, ""), a.push(q(s)); - return a + for (c = 0; c < g.length; c += 1) + (o = + 'long' === g[c].month + ? g[c].weekday + ? e.full + : e.long + : 'short' === g[c].month + ? e.medium + : e.short), + (s = R(g[c], u[l])), + (s.originalPattern = o), + (s.extendedPattern = o + .replace('{0}', u[l].extendedPattern) + .replace('{1}', g[c].extendedPattern) + .replace(/^[,\s]+|[,\s]+$/gi, '')), + a.push(q(s)); + return a; } function B(e, r) { if (xr[e] && xr[e][r]) { var t; - return t = { - originalPattern: xr[e][r], - _: ge({}, e, r), - extendedPattern: "{" + e + "}" - }, ge(t, e, r), ge(t, "pattern12", "{" + e + "}"), ge(t, "pattern", "{" + e + "}"), t + return ( + (t = { + originalPattern: xr[e][r], + _: ge({}, e, r), + extendedPattern: '{' + e + '}', + }), + ge(t, e, r), + ge(t, 'pattern12', '{' + e + '}'), + ge(t, 'pattern', '{' + e + '}'), + t + ); } } function U(e, r, t, n, a) { var i = e[r] && e[r][t] ? e[r][t] : e.gregory[t], o = { - narrow: ["short", "long"], - short: ["long", "narrow"], - long: ["short", "narrow"] + narrow: ['short', 'long'], + short: ['long', 'narrow'], + long: ['short', 'narrow'], }, s = Me.call(i, n) ? i[n] : Me.call(i, o[n][0]) ? i[o[n][0]] : i[o[n][1]]; - return null !== a ? s[a] : s + return null !== a ? s[a] : s; } function $() { var e = arguments[0], r = arguments[1]; - return this && this !== mr ? K(a(this), e, r) : new mr.DateTimeFormat(e, r) + return this && this !== mr ? K(a(this), e, r) : new mr.DateTimeFormat(e, r); } function K(e, a, i) { var o = l(e), s = n(); - if (o["[[initializedIntlObject]]"] === !0) throw new TypeError("`this` object has already been initialized as an Intl object"); - Ie(e, "__getInternalProperties", { + if (o['[[initializedIntlObject]]'] === !0) + throw new TypeError('`this` object has already been initialized as an Intl object'); + Ie(e, '__getInternalProperties', { value: function () { - if (arguments[0] === Ke) return o - } - }), o["[[initializedIntlObject]]"] = !0; + if (arguments[0] === Ke) return o; + }, + }), + (o['[[initializedIntlObject]]'] = !0); var c = d(a); - i = H(i, "any", "date"); - var g = new r, - f = D(i, "localeMatcher", "string", new t("lookup", "best fit"), "best fit"); - g["[[localeMatcher]]"] = f; + i = H(i, 'any', 'date'); + var g = new r(), + f = D(i, 'localeMatcher', 'string', new t('lookup', 'best fit'), 'best fit'); + g['[[localeMatcher]]'] = f; var m = $e.DateTimeFormat, - v = m["[[localeData]]"], - h = b(m["[[availableLocales]]"], c, g, m["[[relevantExtensionKeys]]"], v); - o["[[locale]]"] = h["[[locale]]"], o["[[calendar]]"] = h["[[ca]]"], o["[[numberingSystem]]"] = h["[[nu]]"], o["[[dataLocale]]"] = h["[[dataLocale]]"]; - var p = h["[[dataLocale]]"], + v = m['[[localeData]]'], + h = b(m['[[availableLocales]]'], c, g, m['[[relevantExtensionKeys]]'], v); + (o['[[locale]]'] = h['[[locale]]']), + (o['[[calendar]]'] = h['[[ca]]']), + (o['[[numberingSystem]]'] = h['[[nu]]']), + (o['[[dataLocale]]'] = h['[[dataLocale]]']); + var p = h['[[dataLocale]]'], y = i.timeZone; - if (void 0 !== y && (y = u(y), "UTC" !== y)) throw new RangeError("timeZone is not supported."); - o["[[timeZone]]"] = y, g = new r; + if (void 0 !== y && ((y = u(y)), 'UTC' !== y)) + throw new RangeError('timeZone is not supported.'); + (o['[[timeZone]]'] = y), (g = new r()); for (var w in Dr) if (Me.call(Dr, w)) { - var x = D(i, w, "string", Dr[w]); - g["[[" + w + "]]"] = x - } var j = void 0, + var x = D(i, w, 'string', Dr[w]); + g['[[' + w + ']]'] = x; + } + var j = void 0, z = v[p], k = Y(z.formats); - if (f = D(i, "formatMatcher", "string", new t("basic", "best fit"), "best fit"), z.formats = k, "basic" === f) j = W(g, k); + if ( + ((f = D(i, 'formatMatcher', 'string', new t('basic', 'best fit'), 'best fit')), + (z.formats = k), + 'basic' === f) + ) + j = W(g, k); else { - var O = D(i, "hour12", "boolean"); - g.hour12 = void 0 === O ? z.hour12 : O, j = X(g, k) + var O = D(i, 'hour12', 'boolean'); + (g.hour12 = void 0 === O ? z.hour12 : O), (j = X(g, k)); } for (var F in Dr) if (Me.call(Dr, F) && Me.call(j, F)) { var S = j[F]; - S = j._ && Me.call(j._, F) ? j._[F] : S, o["[[" + F + "]]"] = S - } var E = void 0, - L = D(i, "hour12", "boolean"); - if (o["[[hour]]"]) - if (L = void 0 === L ? z.hour12 : L, o["[[hour12]]"] = L, L === !0) { + (S = j._ && Me.call(j._, F) ? j._[F] : S), (o['[[' + F + ']]'] = S); + } + var E = void 0, + L = D(i, 'hour12', 'boolean'); + if (o['[[hour]]']) + if (((L = void 0 === L ? z.hour12 : L), (o['[[hour12]]'] = L), L === !0)) { var P = z.hourNo0; - o["[[hourNo0]]"] = P, E = j.pattern12 + (o['[[hourNo0]]'] = P), (E = j.pattern12); } else E = j.pattern; else E = j.pattern; - return o["[[pattern]]"] = E, o["[[boundFormat]]"] = void 0, o["[[initializedDateTimeFormat]]"] = !0, _e && (e.format = V.call(e)), s(), e + return ( + (o['[[pattern]]'] = E), + (o['[[boundFormat]]'] = void 0), + (o['[[initializedDateTimeFormat]]'] = !0), + _e && (e.format = V.call(e)), + s(), + e + ); } function Y(e) { - return "[object Array]" === Object.prototype.toString.call(e) ? e : Z(e) + return '[object Array]' === Object.prototype.toString.call(e) ? e : Z(e); } function H(e, t, n) { if (void 0 === e) e = null; else { var i = a(e); - e = new r; - for (var o in i) e[o] = i[o] + e = new r(); + for (var o in i) e[o] = i[o]; } var s = Re; e = s(e); var l = !0; - return "date" !== t && "any" !== t || void 0 === e.weekday && void 0 === e.year && void 0 === e.month && void 0 === e.day || (l = !1), "time" !== t && "any" !== t || void 0 === e.hour && void 0 === e.minute && void 0 === e.second || (l = !1), !l || "date" !== n && "all" !== n || (e.year = e.month = e.day = "numeric"), !l || "time" !== n && "all" !== n || (e.hour = e.minute = e.second = "numeric"), e + return ( + ('date' !== t && 'any' !== t) || + (void 0 === e.weekday && void 0 === e.year && void 0 === e.month && void 0 === e.day) || + (l = !1), + ('time' !== t && 'any' !== t) || + (void 0 === e.hour && void 0 === e.minute && void 0 === e.second) || + (l = !1), + !l || ('date' !== n && 'all' !== n) || (e.year = e.month = e.day = 'numeric'), + !l || ('time' !== n && 'all' !== n) || (e.hour = e.minute = e.second = 'numeric'), + e + ); } function W(e, r) { - for (var t = 120, n = 20, a = 8, i = 6, o = 6, s = 3, l = -(1 / 0), c = void 0, u = 0, g = r.length; u < g;) { + for ( + var t = 120, + n = 20, + a = 8, + i = 6, + o = 6, + s = 3, + l = -(1 / 0), + c = void 0, + u = 0, + g = r.length; + u < g; + + ) { var f = r[u], m = 0; for (var v in Dr) if (Me.call(Dr, v)) { - var d = e["[[" + v + "]]"], + var d = e['[[' + v + ']]'], h = Me.call(f, v) ? f[v] : void 0; if (void 0 === d && void 0 !== h) m -= n; else if (void 0 !== d && void 0 === h) m -= t; else { - var p = ["2-digit", "numeric", "narrow", "short", "long"], + var p = ['2-digit', 'numeric', 'narrow', 'short', 'long'], y = Ae.call(p, d), b = Ae.call(p, h), w = Math.max(Math.min(b - y, 2), -2); - 2 === w ? m -= i : 1 === w ? m -= s : w === -1 ? m -= o : w === -2 && (m -= a) + 2 === w ? (m -= i) : 1 === w ? (m -= s) : w === -1 ? (m -= o) : w === -2 && (m -= a); } - } m > l && (l = m, c = f), u++ + } + m > l && ((l = m), (c = f)), u++; } - return c + return c; } function X(e, r) { var t = []; - for (var n in Dr) Me.call(Dr, n) && void 0 !== e["[[" + n + "]]"] && t.push(n); + for (var n in Dr) Me.call(Dr, n) && void 0 !== e['[[' + n + ']]'] && t.push(n); if (1 === t.length) { - var a = B(t[0], e["[[" + t[0] + "]]"]); - if (a) return a + var a = B(t[0], e['[[' + t[0] + ']]']); + if (a) return a; } - for (var i = 120, o = 20, s = 8, l = 6, c = 6, u = 3, g = 2, f = 1, m = -(1 / 0), v = void 0, d = 0, h = r.length; d < h;) { + for ( + var i = 120, + o = 20, + s = 8, + l = 6, + c = 6, + u = 3, + g = 2, + f = 1, + m = -(1 / 0), + v = void 0, + d = 0, + h = r.length; + d < h; + + ) { var p = r[d], y = 0; for (var b in Dr) if (Me.call(Dr, b)) { - var w = e["[[" + b + "]]"], + var w = e['[[' + b + ']]'], x = Me.call(p, b) ? p[b] : void 0, j = Me.call(p._, b) ? p._[b] : void 0; - if (w !== j && (y -= g), void 0 === w && void 0 !== x) y -= o; + if ((w !== j && (y -= g), void 0 === w && void 0 !== x)) y -= o; else if (void 0 !== w && void 0 === x) y -= i; else { - var D = ["2-digit", "numeric", "narrow", "short", "long"], + var D = ['2-digit', 'numeric', 'narrow', 'short', 'long'], z = Ae.call(D, w), k = Ae.call(D, x), O = Math.max(Math.min(k - z, 2), -2); - k <= 1 && z >= 2 || k >= 2 && z <= 1 ? O > 0 ? y -= l : O < 0 && (y -= s) : O > 1 ? y -= u : O < -1 && (y -= c) + (k <= 1 && z >= 2) || (k >= 2 && z <= 1) + ? O > 0 + ? (y -= l) + : O < 0 && (y -= s) + : O > 1 + ? (y -= u) + : O < -1 && (y -= c); } - } p._.hour12 !== e.hour12 && (y -= f), y > m && (m = y, v = p), d++ + } + p._.hour12 !== e.hour12 && (y -= f), y > m && ((m = y), (v = p)), d++; } - return v + return v; } function V() { - var e = null !== this && "object" === Ne.typeof(this) && l(this); - if (!e || !e["[[initializedDateTimeFormat]]"]) throw new TypeError("`this` value for format() is not an initialized Intl.DateTimeFormat object."); - if (void 0 === e["[[boundFormat]]"]) { + var e = null !== this && 'object' === Ne.typeof(this) && l(this); + if (!e || !e['[[initializedDateTimeFormat]]']) + throw new TypeError( + '`this` value for format() is not an initialized Intl.DateTimeFormat object.', + ); + if (void 0 === e['[[boundFormat]]']) { var r = function () { var e = arguments.length <= 0 || void 0 === arguments[0] ? void 0 : arguments[0], r = void 0 === e ? Date.now() : i(e); - return ee(this, r) + return ee(this, r); }, t = Ue.call(r, this); - e["[[boundFormat]]"] = t + e['[[boundFormat]]'] = t; } - return e["[[boundFormat]]"] + return e['[[boundFormat]]']; } function J() { var e = arguments.length <= 0 || void 0 === arguments[0] ? void 0 : arguments[0], - r = null !== this && "object" === Ne.typeof(this) && l(this); - if (!r || !r["[[initializedDateTimeFormat]]"]) throw new TypeError("`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object."); + r = null !== this && 'object' === Ne.typeof(this) && l(this); + if (!r || !r['[[initializedDateTimeFormat]]']) + throw new TypeError( + '`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.', + ); var t = void 0 === e ? Date.now() : i(e); - return re(this, t) + return re(this, t); } function Q(e, r) { - if (!isFinite(r)) throw new RangeError("Invalid valid date passed to format"); + if (!isFinite(r)) throw new RangeError('Invalid valid date passed to format'); var a = e.__getInternalProperties(Ke); n(); - for (var i = a["[[locale]]"], o = new mr.NumberFormat([i], { - useGrouping: !1 - }), s = new mr.NumberFormat([i], { - minimumIntegerDigits: 2, - useGrouping: !1 - }), l = te(r, a["[[calendar]]"], a["[[timeZone]]"]), c = a["[[pattern]]"], u = new t, g = 0, f = c.indexOf("{"), m = 0, v = a["[[dataLocale]]"], d = $e.DateTimeFormat["[[localeData]]"][v].calendars, h = a["[[calendar]]"]; f !== -1;) { + for ( + var i = a['[[locale]]'], + o = new mr.NumberFormat([i], { + useGrouping: !1, + }), + s = new mr.NumberFormat([i], { + minimumIntegerDigits: 2, + useGrouping: !1, + }), + l = te(r, a['[[calendar]]'], a['[[timeZone]]']), + c = a['[[pattern]]'], + u = new t(), + g = 0, + f = c.indexOf('{'), + m = 0, + v = a['[[dataLocale]]'], + d = $e.DateTimeFormat['[[localeData]]'][v].calendars, + h = a['[[calendar]]']; + f !== -1; + + ) { var p = void 0; - if (m = c.indexOf("}", f), m === -1) throw new Error("Unclosed pattern"); - f > g && Ge.call(u, { - type: "literal", - value: c.substring(g, f) - }); + if (((m = c.indexOf('}', f)), m === -1)) throw new Error('Unclosed pattern'); + f > g && + Ge.call(u, { + type: 'literal', + value: c.substring(g, f), + }); var y = c.substring(f + 1, m); if (Dr.hasOwnProperty(y)) { - var b = a["[[" + y + "]]"], - w = l["[[" + y + "]]"]; - if ("year" === y && w <= 0 ? w = 1 - w : "month" === y ? w++ : "hour" === y && a["[[hour12]]"] === !0 && (w %= 12, 0 === w && a["[[hourNo0]]"] === !0 && (w = 12)), "numeric" === b) p = T(o, w); - else if ("2-digit" === b) p = T(s, w), p.length > 2 && (p = p.slice(-2)); - else if (b in jr) switch (y) { - case "month": - p = U(d, h, "months", b, l["[[" + y + "]]"]); - break; - case "weekday": - try { - p = U(d, h, "days", b, l["[[" + y + "]]"]) - } catch (e) { - throw new Error("Could not find weekday data for locale " + i) - } - break; - case "timeZoneName": - p = ""; - break; - case "era": - try { - p = U(d, h, "eras", b, l["[[" + y + "]]"]) - } catch (e) { - throw new Error("Could not find era data for locale " + i) - } - break; - default: - p = l["[[" + y + "]]"] - } + var b = a['[[' + y + ']]'], + w = l['[[' + y + ']]']; + if ( + ('year' === y && w <= 0 + ? (w = 1 - w) + : 'month' === y + ? w++ + : 'hour' === y && + a['[[hour12]]'] === !0 && + ((w %= 12), 0 === w && a['[[hourNo0]]'] === !0 && (w = 12)), + 'numeric' === b) + ) + p = T(o, w); + else if ('2-digit' === b) (p = T(s, w)), p.length > 2 && (p = p.slice(-2)); + else if (b in jr) + switch (y) { + case 'month': + p = U(d, h, 'months', b, l['[[' + y + ']]']); + break; + case 'weekday': + try { + p = U(d, h, 'days', b, l['[[' + y + ']]']); + } catch (e) { + throw new Error('Could not find weekday data for locale ' + i); + } + break; + case 'timeZoneName': + p = ''; + break; + case 'era': + try { + p = U(d, h, 'eras', b, l['[[' + y + ']]']); + } catch (e) { + throw new Error('Could not find era data for locale ' + i); + } + break; + default: + p = l['[[' + y + ']]']; + } Ge.call(u, { type: y, - value: p - }) - } else if ("ampm" === y) { - var x = l["[[hour]]"]; - p = U(d, h, "dayPeriods", x > 11 ? "pm" : "am", null), Ge.call(u, { - type: "dayPeriod", - value: p - }) - } else Ge.call(u, { - type: "literal", - value: c.substring(f, m + 1) - }); - g = m + 1, f = c.indexOf("{", g) + value: p, + }); + } else if ('ampm' === y) { + var x = l['[[hour]]']; + (p = U(d, h, 'dayPeriods', x > 11 ? 'pm' : 'am', null)), + Ge.call(u, { + type: 'dayPeriod', + value: p, + }); + } else + Ge.call(u, { + type: 'literal', + value: c.substring(f, m + 1), + }); + (g = m + 1), (f = c.indexOf('{', g)); } - return m < c.length - 1 && Ge.call(u, { - type: "literal", - value: c.substr(m + 1) - }), u + return ( + m < c.length - 1 && + Ge.call(u, { + type: 'literal', + value: c.substr(m + 1), + }), + u + ); } function ee(e, r) { - for (var t = Q(e, r), n = "", a = 0; t.length > a; a++) { + for (var t = Q(e, r), n = '', a = 0; t.length > a; a++) { var i = t[a]; - n += i.value + n += i.value; } - return n + return n; } function re(e, r) { @@ -902,64 +1172,75 @@ var i = t[a]; n.push({ type: i.type, - value: i.value - }) + value: i.value, + }); } - return n + return n; } function te(e, t, n) { var a = new Date(e), - i = "get" + (n || ""); + i = 'get' + (n || ''); return new r({ - "[[weekday]]": a[i + "Day"](), - "[[era]]": +(a[i + "FullYear"]() >= 0), - "[[year]]": a[i + "FullYear"](), - "[[month]]": a[i + "Month"](), - "[[day]]": a[i + "Date"](), - "[[hour]]": a[i + "Hours"](), - "[[minute]]": a[i + "Minutes"](), - "[[second]]": a[i + "Seconds"](), - "[[inDST]]": !1 - }) + '[[weekday]]': a[i + 'Day'](), + '[[era]]': +(a[i + 'FullYear']() >= 0), + '[[year]]': a[i + 'FullYear'](), + '[[month]]': a[i + 'Month'](), + '[[day]]': a[i + 'Date'](), + '[[hour]]': a[i + 'Hours'](), + '[[minute]]': a[i + 'Minutes'](), + '[[second]]': a[i + 'Seconds'](), + '[[inDST]]': !1, + }); } function ne(e, r) { - if (!e.number) throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat"); + if (!e.number) + throw new Error("Object passed doesn't contain locale data for Intl.NumberFormat"); var t = void 0, n = [r], - a = r.split("-"); - for (a.length > 2 && 4 === a[1].length && Ge.call(n, a[0] + "-" + a[2]); t = Be.call(n);) Ge.call($e.NumberFormat["[[availableLocales]]"], t), $e.NumberFormat["[[localeData]]"][t] = e.number, e.date && (e.date.nu = e.number.nu, Ge.call($e.DateTimeFormat["[[availableLocales]]"], t), $e.DateTimeFormat["[[localeData]]"][t] = e.date); - void 0 === cr && c(r) + a = r.split('-'); + for (a.length > 2 && 4 === a[1].length && Ge.call(n, a[0] + '-' + a[2]); (t = Be.call(n)); ) + Ge.call($e.NumberFormat['[[availableLocales]]'], t), + ($e.NumberFormat['[[localeData]]'][t] = e.number), + e.date && + ((e.date.nu = e.number.nu), + Ge.call($e.DateTimeFormat['[[availableLocales]]'], t), + ($e.DateTimeFormat['[[localeData]]'][t] = e.date)); + void 0 === cr && c(r); } - var ae = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { - return typeof e - } : function (e) { - return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e - }, - ie = function () { - var e = "function" == typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; + var ae = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (e) { + return typeof e; + } + : function (e) { + return e && 'function' == typeof Symbol && e.constructor === Symbol + ? 'symbol' + : typeof e; + }, + ie = (function () { + var e = ('function' == typeof Symbol && Symbol.for && Symbol.for('react.element')) || 60103; return function (r, t, n, a) { var i = r && r.defaultProps, o = arguments.length - 3; - if (t || 0 === o || (t = {}), t && i) - for (var s in i) void 0 === t[s] && (t[s] = i[s]); + if ((t || 0 === o || (t = {}), t && i)) for (var s in i) void 0 === t[s] && (t[s] = i[s]); else t || (t = i || {}); if (1 === o) t.children = a; else if (o > 1) { for (var l = Array(o), c = 0; c < o; c++) l[c] = arguments[c + 3]; - t.children = l + t.children = l; } return { $$typeof: e, type: r, - key: void 0 === n ? null : "" + n, + key: void 0 === n ? null : '' + n, ref: null, props: t, - _owner: null - } - } - }(), + _owner: null, + }; + }; + })(), oe = function (e) { return function () { var r = e.apply(this, arguments); @@ -967,186 +1248,222 @@ function n(a, i) { try { var o = r[a](i), - s = o.value + s = o.value; } catch (e) { - return void t(e) + return void t(e); } - return o.done ? void e(s) : Promise.resolve(s).then(function (e) { - return n("next", e) - }, function (e) { - return n("throw", e) - }) + return o.done + ? void e(s) + : Promise.resolve(s).then( + function (e) { + return n('next', e); + }, + function (e) { + return n('throw', e); + }, + ); } - return n("next") - }) - } + return n('next'); + }); + }; }, se = function (e, r) { - if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function") + if (!(e instanceof r)) throw new TypeError('Cannot call a class as a function'); }, - le = function () { + le = (function () { function e(e, r) { for (var t = 0; t < r.length; t++) { var n = r[t]; - n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) + (n.enumerable = n.enumerable || !1), + (n.configurable = !0), + 'value' in n && (n.writable = !0), + Object.defineProperty(e, n.key, n); } } return function (r, t, n) { - return t && e(r.prototype, t), n && e(r, n), r - } - }(), + return t && e(r.prototype, t), n && e(r, n), r; + }; + })(), ce = function (e, r) { for (var t in r) { var n = r[t]; - n.configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, t, n) + (n.configurable = n.enumerable = !0), + 'value' in n && (n.writable = !0), + Object.defineProperty(e, t, n); } - return e + return e; }, ue = function (e, r) { for (var t = Object.getOwnPropertyNames(r), n = 0; n < t.length; n++) { var a = t[n], i = Object.getOwnPropertyDescriptor(r, a); - i && i.configurable && void 0 === e[a] && Object.defineProperty(e, a, i) + i && i.configurable && void 0 === e[a] && Object.defineProperty(e, a, i); } - return e + return e; }, ge = function (e, r, t) { - return r in e ? Object.defineProperty(e, r, { - value: t, - enumerable: !0, - configurable: !0, - writable: !0 - }) : e[r] = t, e - }, - fe = Object.assign || function (e) { - for (var r = 1; r < arguments.length; r++) { - var t = arguments[r]; - for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]) - } - return e + return ( + r in e + ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (e[r] = t), + e + ); }, + fe = + Object.assign || + function (e) { + for (var r = 1; r < arguments.length; r++) { + var t = arguments[r]; + for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); + } + return e; + }, me = function e(r, t, n) { null === r && (r = Function.prototype); var a = Object.getOwnPropertyDescriptor(r, t); if (void 0 === a) { var i = Object.getPrototypeOf(r); - return null === i ? void 0 : e(i, t, n) + return null === i ? void 0 : e(i, t, n); } - if ("value" in a) return a.value; + if ('value' in a) return a.value; var o = a.get; - if (void 0 !== o) return o.call(n) + if (void 0 !== o) return o.call(n); }, ve = function (e, r) { - if ("function" != typeof r && null !== r) throw new TypeError("Super expression must either be null or a function, not " + typeof r); - e.prototype = Object.create(r && r.prototype, { + if ('function' != typeof r && null !== r) + throw new TypeError( + 'Super expression must either be null or a function, not ' + typeof r, + ); + (e.prototype = Object.create(r && r.prototype, { constructor: { value: e, enumerable: !1, writable: !0, - configurable: !0 - } - }), r && (Object.setPrototypeOf ? Object.setPrototypeOf(e, r) : e.__proto__ = r) + configurable: !0, + }, + })), + r && (Object.setPrototypeOf ? Object.setPrototypeOf(e, r) : (e.__proto__ = r)); }, de = function (e, r) { - return null != r && "undefined" != typeof Symbol && r[Symbol.hasInstance] ? r[Symbol.hasInstance](e) : e instanceof r + return null != r && 'undefined' != typeof Symbol && r[Symbol.hasInstance] + ? r[Symbol.hasInstance](e) + : e instanceof r; }, he = function (e) { - return e && e.__esModule ? e : { - default: e - } + return e && e.__esModule + ? e + : { + default: e, + }; }, pe = function (e) { if (e && e.__esModule) return e; var r = {}; - if (null != e) - for (var t in e) Object.prototype.hasOwnProperty.call(e, t) && (r[t] = e[t]); - return r.default = e, r + if (null != e) for (var t in e) Object.prototype.hasOwnProperty.call(e, t) && (r[t] = e[t]); + return (r.default = e), r; }, ye = function (e, r) { - if (e !== r) throw new TypeError("Cannot instantiate an arrow function") + if (e !== r) throw new TypeError('Cannot instantiate an arrow function'); }, be = function (e) { - if (null == e) throw new TypeError("Cannot destructure undefined") + if (null == e) throw new TypeError('Cannot destructure undefined'); }, we = function (e, r) { var t = {}; - for (var n in e) r.indexOf(n) >= 0 || Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]); - return t + for (var n in e) + r.indexOf(n) >= 0 || (Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n])); + return t; }, xe = function (e, r) { - if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return !r || "object" != typeof r && "function" != typeof r ? e : r + if (!e) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !r || ('object' != typeof r && 'function' != typeof r) ? e : r; }, - je = "undefined" == typeof global ? self : global, + je = 'undefined' == typeof global ? self : global, De = function e(r, t, n, a) { var i = Object.getOwnPropertyDescriptor(r, t); if (void 0 === i) { var o = Object.getPrototypeOf(r); - null !== o && e(o, t, n, a) - } else if ("value" in i && i.writable) i.value = n; + null !== o && e(o, t, n, a); + } else if ('value' in i && i.writable) i.value = n; else { var s = i.set; - void 0 !== s && s.call(a, n) + void 0 !== s && s.call(a, n); } - return n + return n; }, - ze = function () { + ze = (function () { function e(e, r) { var t = [], n = !0, a = !1, i = void 0; try { - for (var o, s = e[Symbol.iterator](); !(n = (o = s.next()).done) && (t.push(o.value), !r || t.length !== r); n = !0); + for ( + var o, s = e[Symbol.iterator](); + !(n = (o = s.next()).done) && (t.push(o.value), !r || t.length !== r); + n = !0 + ); } catch (e) { - a = !0, i = e + (a = !0), (i = e); } finally { try { - !n && s.return && s.return() + !n && s.return && s.return(); } finally { - if (a) throw i + if (a) throw i; } } - return t + return t; } return function (r, t) { if (Array.isArray(r)) return r; if (Symbol.iterator in Object(r)) return e(r, t); - throw new TypeError("Invalid attempt to destructure non-iterable instance") - } - }(), + throw new TypeError('Invalid attempt to destructure non-iterable instance'); + }; + })(), ke = function (e, r) { if (Array.isArray(e)) return e; if (Symbol.iterator in Object(e)) { - for (var t, n = [], a = e[Symbol.iterator](); !(t = a.next()).done && (n.push(t.value), !r || n.length !== r);); - return n + for ( + var t, n = [], a = e[Symbol.iterator](); + !(t = a.next()).done && (n.push(t.value), !r || n.length !== r); + + ); + return n; } - throw new TypeError("Invalid attempt to destructure non-iterable instance") + throw new TypeError('Invalid attempt to destructure non-iterable instance'); }, Oe = function (e, r) { - return Object.freeze(Object.defineProperties(e, { - raw: { - value: Object.freeze(r) - } - })) + return Object.freeze( + Object.defineProperties(e, { + raw: { + value: Object.freeze(r), + }, + }), + ); }, Fe = function (e, r) { - return e.raw = r, e + return (e.raw = r), e; }, Se = function (e, r, t) { - if (e === t) throw new ReferenceError(r + " is not defined - temporal dead zone"); - return e + if (e === t) throw new ReferenceError(r + ' is not defined - temporal dead zone'); + return e; }, Ee = {}, Le = function (e) { - return Array.isArray(e) ? e : Array.from(e) + return Array.isArray(e) ? e : Array.from(e); }, Pe = function (e) { if (Array.isArray(e)) { for (var r = 0, t = Array(e.length); r < e.length; r++) t[r] = e[r]; - return t + return t; } - return Array.from(e) + return Array.from(e); }, Ne = Object.freeze({ jsx: ie, @@ -1176,397 +1493,413 @@ toConsumableArray: Pe, typeof: ae, extends: fe, - instanceof: de + instanceof: de, }), - Te = function () { + Te = (function () { var e = function () {}; try { - return Object.defineProperty(e, "a", { - get: function () { - return 1 - } - }), Object.defineProperty(e, "prototype", { - writable: !1 - }), 1 === e.a && e.prototype instanceof Object + return ( + Object.defineProperty(e, 'a', { + get: function () { + return 1; + }, + }), + Object.defineProperty(e, 'prototype', { + writable: !1, + }), + 1 === e.a && e.prototype instanceof Object + ); } catch (e) { - return !1 + return !1; } - }(), + })(), _e = !Te && !Object.prototype.__defineGetter__, Me = Object.prototype.hasOwnProperty, - Ie = Te ? Object.defineProperty : function (e, r, t) { - "get" in t && e.__defineGetter__ ? e.__defineGetter__(r, t.get) : (!Me.call(e, r) || "value" in t) && (e[r] = t.value) - }, - Ae = Array.prototype.indexOf || function (e) { - var r = this; - if (!r.length) return -1; - for (var t = arguments[1] || 0, n = r.length; t < n; t++) - if (r[t] === e) return t; - return -1 - }, - Re = Object.create || function (e, r) { - function t() {} - var n = void 0; - t.prototype = e, n = new t; - for (var a in r) Me.call(r, a) && Ie(n, a, r[a]); - return n - }, + Ie = Te + ? Object.defineProperty + : function (e, r, t) { + 'get' in t && e.__defineGetter__ + ? e.__defineGetter__(r, t.get) + : (!Me.call(e, r) || 'value' in t) && (e[r] = t.value); + }, + Ae = + Array.prototype.indexOf || + function (e) { + var r = this; + if (!r.length) return -1; + for (var t = arguments[1] || 0, n = r.length; t < n; t++) if (r[t] === e) return t; + return -1; + }, + Re = + Object.create || + function (e, r) { + function t() {} + var n = void 0; + (t.prototype = e), (n = new t()); + for (var a in r) Me.call(r, a) && Ie(n, a, r[a]); + return n; + }, qe = Array.prototype.slice, Ce = Array.prototype.concat, Ge = Array.prototype.push, Ze = Array.prototype.join, Be = Array.prototype.shift, - Ue = Function.prototype.bind || function (e) { - var r = this, - t = qe.call(arguments, 1); - return 1 === r.length ? function () { - return r.apply(e, Ce.call(t, qe.call(arguments))) - } : function () { - return r.apply(e, Ce.call(t, qe.call(arguments))) - } - }, + Ue = + Function.prototype.bind || + function (e) { + var r = this, + t = qe.call(arguments, 1); + return 1 === r.length + ? function () { + return r.apply(e, Ce.call(t, qe.call(arguments))); + } + : function () { + return r.apply(e, Ce.call(t, qe.call(arguments))); + }; + }, $e = Re(null), Ke = Math.random(); - r.prototype = Re(null), t.prototype = Re(null); - var Ye = "[a-z]{3}(?:-[a-z]{3}){0,2}", - He = "(?:[a-z]{2,3}(?:-" + Ye + ")?|[a-z]{4}|[a-z]{5,8})", - We = "[a-z]{4}", - Xe = "(?:[a-z]{2}|\\d{3})", - Ve = "(?:[a-z0-9]{5,8}|\\d[a-z0-9]{3})", - Je = "[0-9a-wy-z]", - Qe = Je + "(?:-[a-z0-9]{2,8})+", - er = "x(?:-[a-z0-9]{1,8})+", - rr = "(?:en-GB-oed|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)|sgn-(?:BE-FR|BE-NL|CH-DE))", - tr = "(?:art-lojban|cel-gaulish|no-bok|no-nyn|zh-(?:guoyu|hakka|min|min-nan|xiang))", - nr = "(?:" + rr + "|" + tr + ")", - ar = He + "(?:-" + We + ")?(?:-" + Xe + ")?(?:-" + Ve + ")*(?:-" + Qe + ")*(?:-" + er + ")?", - ir = RegExp("^(?:" + ar + "|" + er + "|" + nr + ")$", "i"), - or = RegExp("^(?!x).*?-(" + Ve + ")-(?:\\w{4,8}-(?!x-))*\\1\\b", "i"), - sr = RegExp("^(?!x).*?-(" + Je + ")-(?:\\w+-(?!x-))*\\1\\b", "i"), - lr = RegExp("-" + Qe, "ig"), + (r.prototype = Re(null)), (t.prototype = Re(null)); + var Ye = '[a-z]{3}(?:-[a-z]{3}){0,2}', + He = '(?:[a-z]{2,3}(?:-' + Ye + ')?|[a-z]{4}|[a-z]{5,8})', + We = '[a-z]{4}', + Xe = '(?:[a-z]{2}|\\d{3})', + Ve = '(?:[a-z0-9]{5,8}|\\d[a-z0-9]{3})', + Je = '[0-9a-wy-z]', + Qe = Je + '(?:-[a-z0-9]{2,8})+', + er = 'x(?:-[a-z0-9]{1,8})+', + rr = + '(?:en-GB-oed|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)|sgn-(?:BE-FR|BE-NL|CH-DE))', + tr = '(?:art-lojban|cel-gaulish|no-bok|no-nyn|zh-(?:guoyu|hakka|min|min-nan|xiang))', + nr = '(?:' + rr + '|' + tr + ')', + ar = He + '(?:-' + We + ')?(?:-' + Xe + ')?(?:-' + Ve + ')*(?:-' + Qe + ')*(?:-' + er + ')?', + ir = RegExp('^(?:' + ar + '|' + er + '|' + nr + ')$', 'i'), + or = RegExp('^(?!x).*?-(' + Ve + ')-(?:\\w{4,8}-(?!x-))*\\1\\b', 'i'), + sr = RegExp('^(?!x).*?-(' + Je + ')-(?:\\w+-(?!x-))*\\1\\b', 'i'), + lr = RegExp('-' + Qe, 'ig'), cr = void 0, ur = { tags: { - "art-lojban": "jbo", - "i-ami": "ami", - "i-bnn": "bnn", - "i-hak": "hak", - "i-klingon": "tlh", - "i-lux": "lb", - "i-navajo": "nv", - "i-pwn": "pwn", - "i-tao": "tao", - "i-tay": "tay", - "i-tsu": "tsu", - "no-bok": "nb", - "no-nyn": "nn", - "sgn-BE-FR": "sfb", - "sgn-BE-NL": "vgt", - "sgn-CH-DE": "sgg", - "zh-guoyu": "cmn", - "zh-hakka": "hak", - "zh-min-nan": "nan", - "zh-xiang": "hsn", - "sgn-BR": "bzs", - "sgn-CO": "csn", - "sgn-DE": "gsg", - "sgn-DK": "dsl", - "sgn-ES": "ssp", - "sgn-FR": "fsl", - "sgn-GB": "bfi", - "sgn-GR": "gss", - "sgn-IE": "isg", - "sgn-IT": "ise", - "sgn-JP": "jsl", - "sgn-MX": "mfs", - "sgn-NI": "ncs", - "sgn-NL": "dse", - "sgn-NO": "nsl", - "sgn-PT": "psr", - "sgn-SE": "swl", - "sgn-US": "ase", - "sgn-ZA": "sfs", - "zh-cmn": "cmn", - "zh-cmn-Hans": "cmn-Hans", - "zh-cmn-Hant": "cmn-Hant", - "zh-gan": "gan", - "zh-wuu": "wuu", - "zh-yue": "yue" + 'art-lojban': 'jbo', + 'i-ami': 'ami', + 'i-bnn': 'bnn', + 'i-hak': 'hak', + 'i-klingon': 'tlh', + 'i-lux': 'lb', + 'i-navajo': 'nv', + 'i-pwn': 'pwn', + 'i-tao': 'tao', + 'i-tay': 'tay', + 'i-tsu': 'tsu', + 'no-bok': 'nb', + 'no-nyn': 'nn', + 'sgn-BE-FR': 'sfb', + 'sgn-BE-NL': 'vgt', + 'sgn-CH-DE': 'sgg', + 'zh-guoyu': 'cmn', + 'zh-hakka': 'hak', + 'zh-min-nan': 'nan', + 'zh-xiang': 'hsn', + 'sgn-BR': 'bzs', + 'sgn-CO': 'csn', + 'sgn-DE': 'gsg', + 'sgn-DK': 'dsl', + 'sgn-ES': 'ssp', + 'sgn-FR': 'fsl', + 'sgn-GB': 'bfi', + 'sgn-GR': 'gss', + 'sgn-IE': 'isg', + 'sgn-IT': 'ise', + 'sgn-JP': 'jsl', + 'sgn-MX': 'mfs', + 'sgn-NI': 'ncs', + 'sgn-NL': 'dse', + 'sgn-NO': 'nsl', + 'sgn-PT': 'psr', + 'sgn-SE': 'swl', + 'sgn-US': 'ase', + 'sgn-ZA': 'sfs', + 'zh-cmn': 'cmn', + 'zh-cmn-Hans': 'cmn-Hans', + 'zh-cmn-Hant': 'cmn-Hant', + 'zh-gan': 'gan', + 'zh-wuu': 'wuu', + 'zh-yue': 'yue', }, subtags: { - BU: "MM", - DD: "DE", - FX: "FR", - TP: "TL", - YD: "YE", - ZR: "CD", - heploc: "alalc97", - in: "id", - iw: "he", - ji: "yi", - jw: "jv", - mo: "ro", - ayx: "nun", - bjd: "drl", - ccq: "rki", - cjr: "mom", - cka: "cmr", - cmk: "xch", - drh: "khk", - drw: "prs", - gav: "dev", - hrr: "jal", - ibi: "opa", - kgh: "kml", - lcq: "ppr", - mst: "mry", - myt: "mry", - sca: "hle", - tie: "ras", - tkk: "twm", - tlw: "weo", - tnf: "prs", - ybd: "rki", - yma: "lrr" + BU: 'MM', + DD: 'DE', + FX: 'FR', + TP: 'TL', + YD: 'YE', + ZR: 'CD', + heploc: 'alalc97', + in: 'id', + iw: 'he', + ji: 'yi', + jw: 'jv', + mo: 'ro', + ayx: 'nun', + bjd: 'drl', + ccq: 'rki', + cjr: 'mom', + cka: 'cmr', + cmk: 'xch', + drh: 'khk', + drw: 'prs', + gav: 'dev', + hrr: 'jal', + ibi: 'opa', + kgh: 'kml', + lcq: 'ppr', + mst: 'mry', + myt: 'mry', + sca: 'hle', + tie: 'ras', + tkk: 'twm', + tlw: 'weo', + tnf: 'prs', + ybd: 'rki', + yma: 'lrr', }, extLang: { - aao: ["aao", "ar"], - abh: ["abh", "ar"], - abv: ["abv", "ar"], - acm: ["acm", "ar"], - acq: ["acq", "ar"], - acw: ["acw", "ar"], - acx: ["acx", "ar"], - acy: ["acy", "ar"], - adf: ["adf", "ar"], - ads: ["ads", "sgn"], - aeb: ["aeb", "ar"], - aec: ["aec", "ar"], - aed: ["aed", "sgn"], - aen: ["aen", "sgn"], - afb: ["afb", "ar"], - afg: ["afg", "sgn"], - ajp: ["ajp", "ar"], - apc: ["apc", "ar"], - apd: ["apd", "ar"], - arb: ["arb", "ar"], - arq: ["arq", "ar"], - ars: ["ars", "ar"], - ary: ["ary", "ar"], - arz: ["arz", "ar"], - ase: ["ase", "sgn"], - asf: ["asf", "sgn"], - asp: ["asp", "sgn"], - asq: ["asq", "sgn"], - asw: ["asw", "sgn"], - auz: ["auz", "ar"], - avl: ["avl", "ar"], - ayh: ["ayh", "ar"], - ayl: ["ayl", "ar"], - ayn: ["ayn", "ar"], - ayp: ["ayp", "ar"], - bbz: ["bbz", "ar"], - bfi: ["bfi", "sgn"], - bfk: ["bfk", "sgn"], - bjn: ["bjn", "ms"], - bog: ["bog", "sgn"], - bqn: ["bqn", "sgn"], - bqy: ["bqy", "sgn"], - btj: ["btj", "ms"], - bve: ["bve", "ms"], - bvl: ["bvl", "sgn"], - bvu: ["bvu", "ms"], - bzs: ["bzs", "sgn"], - cdo: ["cdo", "zh"], - cds: ["cds", "sgn"], - cjy: ["cjy", "zh"], - cmn: ["cmn", "zh"], - coa: ["coa", "ms"], - cpx: ["cpx", "zh"], - csc: ["csc", "sgn"], - csd: ["csd", "sgn"], - cse: ["cse", "sgn"], - csf: ["csf", "sgn"], - csg: ["csg", "sgn"], - csl: ["csl", "sgn"], - csn: ["csn", "sgn"], - csq: ["csq", "sgn"], - csr: ["csr", "sgn"], - czh: ["czh", "zh"], - czo: ["czo", "zh"], - doq: ["doq", "sgn"], - dse: ["dse", "sgn"], - dsl: ["dsl", "sgn"], - dup: ["dup", "ms"], - ecs: ["ecs", "sgn"], - esl: ["esl", "sgn"], - esn: ["esn", "sgn"], - eso: ["eso", "sgn"], - eth: ["eth", "sgn"], - fcs: ["fcs", "sgn"], - fse: ["fse", "sgn"], - fsl: ["fsl", "sgn"], - fss: ["fss", "sgn"], - gan: ["gan", "zh"], - gds: ["gds", "sgn"], - gom: ["gom", "kok"], - gse: ["gse", "sgn"], - gsg: ["gsg", "sgn"], - gsm: ["gsm", "sgn"], - gss: ["gss", "sgn"], - gus: ["gus", "sgn"], - hab: ["hab", "sgn"], - haf: ["haf", "sgn"], - hak: ["hak", "zh"], - hds: ["hds", "sgn"], - hji: ["hji", "ms"], - hks: ["hks", "sgn"], - hos: ["hos", "sgn"], - hps: ["hps", "sgn"], - hsh: ["hsh", "sgn"], - hsl: ["hsl", "sgn"], - hsn: ["hsn", "zh"], - icl: ["icl", "sgn"], - ils: ["ils", "sgn"], - inl: ["inl", "sgn"], - ins: ["ins", "sgn"], - ise: ["ise", "sgn"], - isg: ["isg", "sgn"], - isr: ["isr", "sgn"], - jak: ["jak", "ms"], - jax: ["jax", "ms"], - jcs: ["jcs", "sgn"], - jhs: ["jhs", "sgn"], - jls: ["jls", "sgn"], - jos: ["jos", "sgn"], - jsl: ["jsl", "sgn"], - jus: ["jus", "sgn"], - kgi: ["kgi", "sgn"], - knn: ["knn", "kok"], - kvb: ["kvb", "ms"], - kvk: ["kvk", "sgn"], - kvr: ["kvr", "ms"], - kxd: ["kxd", "ms"], - lbs: ["lbs", "sgn"], - lce: ["lce", "ms"], - lcf: ["lcf", "ms"], - liw: ["liw", "ms"], - lls: ["lls", "sgn"], - lsg: ["lsg", "sgn"], - lsl: ["lsl", "sgn"], - lso: ["lso", "sgn"], - lsp: ["lsp", "sgn"], - lst: ["lst", "sgn"], - lsy: ["lsy", "sgn"], - ltg: ["ltg", "lv"], - lvs: ["lvs", "lv"], - lzh: ["lzh", "zh"], - max: ["max", "ms"], - mdl: ["mdl", "sgn"], - meo: ["meo", "ms"], - mfa: ["mfa", "ms"], - mfb: ["mfb", "ms"], - mfs: ["mfs", "sgn"], - min: ["min", "ms"], - mnp: ["mnp", "zh"], - mqg: ["mqg", "ms"], - mre: ["mre", "sgn"], - msd: ["msd", "sgn"], - msi: ["msi", "ms"], - msr: ["msr", "sgn"], - mui: ["mui", "ms"], - mzc: ["mzc", "sgn"], - mzg: ["mzg", "sgn"], - mzy: ["mzy", "sgn"], - nan: ["nan", "zh"], - nbs: ["nbs", "sgn"], - ncs: ["ncs", "sgn"], - nsi: ["nsi", "sgn"], - nsl: ["nsl", "sgn"], - nsp: ["nsp", "sgn"], - nsr: ["nsr", "sgn"], - nzs: ["nzs", "sgn"], - okl: ["okl", "sgn"], - orn: ["orn", "ms"], - ors: ["ors", "ms"], - pel: ["pel", "ms"], - pga: ["pga", "ar"], - pks: ["pks", "sgn"], - prl: ["prl", "sgn"], - prz: ["prz", "sgn"], - psc: ["psc", "sgn"], - psd: ["psd", "sgn"], - pse: ["pse", "ms"], - psg: ["psg", "sgn"], - psl: ["psl", "sgn"], - pso: ["pso", "sgn"], - psp: ["psp", "sgn"], - psr: ["psr", "sgn"], - pys: ["pys", "sgn"], - rms: ["rms", "sgn"], - rsi: ["rsi", "sgn"], - rsl: ["rsl", "sgn"], - sdl: ["sdl", "sgn"], - sfb: ["sfb", "sgn"], - sfs: ["sfs", "sgn"], - sgg: ["sgg", "sgn"], - sgx: ["sgx", "sgn"], - shu: ["shu", "ar"], - slf: ["slf", "sgn"], - sls: ["sls", "sgn"], - sqk: ["sqk", "sgn"], - sqs: ["sqs", "sgn"], - ssh: ["ssh", "ar"], - ssp: ["ssp", "sgn"], - ssr: ["ssr", "sgn"], - svk: ["svk", "sgn"], - swc: ["swc", "sw"], - swh: ["swh", "sw"], - swl: ["swl", "sgn"], - syy: ["syy", "sgn"], - tmw: ["tmw", "ms"], - tse: ["tse", "sgn"], - tsm: ["tsm", "sgn"], - tsq: ["tsq", "sgn"], - tss: ["tss", "sgn"], - tsy: ["tsy", "sgn"], - tza: ["tza", "sgn"], - ugn: ["ugn", "sgn"], - ugy: ["ugy", "sgn"], - ukl: ["ukl", "sgn"], - uks: ["uks", "sgn"], - urk: ["urk", "ms"], - uzn: ["uzn", "uz"], - uzs: ["uzs", "uz"], - vgt: ["vgt", "sgn"], - vkk: ["vkk", "ms"], - vkt: ["vkt", "ms"], - vsi: ["vsi", "sgn"], - vsl: ["vsl", "sgn"], - vsv: ["vsv", "sgn"], - wuu: ["wuu", "zh"], - xki: ["xki", "sgn"], - xml: ["xml", "sgn"], - xmm: ["xmm", "ms"], - xms: ["xms", "sgn"], - yds: ["yds", "sgn"], - ysl: ["ysl", "sgn"], - yue: ["yue", "zh"], - zib: ["zib", "sgn"], - zlm: ["zlm", "ms"], - zmi: ["zmi", "ms"], - zsl: ["zsl", "sgn"], - zsm: ["zsm", "ms"] - } + aao: ['aao', 'ar'], + abh: ['abh', 'ar'], + abv: ['abv', 'ar'], + acm: ['acm', 'ar'], + acq: ['acq', 'ar'], + acw: ['acw', 'ar'], + acx: ['acx', 'ar'], + acy: ['acy', 'ar'], + adf: ['adf', 'ar'], + ads: ['ads', 'sgn'], + aeb: ['aeb', 'ar'], + aec: ['aec', 'ar'], + aed: ['aed', 'sgn'], + aen: ['aen', 'sgn'], + afb: ['afb', 'ar'], + afg: ['afg', 'sgn'], + ajp: ['ajp', 'ar'], + apc: ['apc', 'ar'], + apd: ['apd', 'ar'], + arb: ['arb', 'ar'], + arq: ['arq', 'ar'], + ars: ['ars', 'ar'], + ary: ['ary', 'ar'], + arz: ['arz', 'ar'], + ase: ['ase', 'sgn'], + asf: ['asf', 'sgn'], + asp: ['asp', 'sgn'], + asq: ['asq', 'sgn'], + asw: ['asw', 'sgn'], + auz: ['auz', 'ar'], + avl: ['avl', 'ar'], + ayh: ['ayh', 'ar'], + ayl: ['ayl', 'ar'], + ayn: ['ayn', 'ar'], + ayp: ['ayp', 'ar'], + bbz: ['bbz', 'ar'], + bfi: ['bfi', 'sgn'], + bfk: ['bfk', 'sgn'], + bjn: ['bjn', 'ms'], + bog: ['bog', 'sgn'], + bqn: ['bqn', 'sgn'], + bqy: ['bqy', 'sgn'], + btj: ['btj', 'ms'], + bve: ['bve', 'ms'], + bvl: ['bvl', 'sgn'], + bvu: ['bvu', 'ms'], + bzs: ['bzs', 'sgn'], + cdo: ['cdo', 'zh'], + cds: ['cds', 'sgn'], + cjy: ['cjy', 'zh'], + cmn: ['cmn', 'zh'], + coa: ['coa', 'ms'], + cpx: ['cpx', 'zh'], + csc: ['csc', 'sgn'], + csd: ['csd', 'sgn'], + cse: ['cse', 'sgn'], + csf: ['csf', 'sgn'], + csg: ['csg', 'sgn'], + csl: ['csl', 'sgn'], + csn: ['csn', 'sgn'], + csq: ['csq', 'sgn'], + csr: ['csr', 'sgn'], + czh: ['czh', 'zh'], + czo: ['czo', 'zh'], + doq: ['doq', 'sgn'], + dse: ['dse', 'sgn'], + dsl: ['dsl', 'sgn'], + dup: ['dup', 'ms'], + ecs: ['ecs', 'sgn'], + esl: ['esl', 'sgn'], + esn: ['esn', 'sgn'], + eso: ['eso', 'sgn'], + eth: ['eth', 'sgn'], + fcs: ['fcs', 'sgn'], + fse: ['fse', 'sgn'], + fsl: ['fsl', 'sgn'], + fss: ['fss', 'sgn'], + gan: ['gan', 'zh'], + gds: ['gds', 'sgn'], + gom: ['gom', 'kok'], + gse: ['gse', 'sgn'], + gsg: ['gsg', 'sgn'], + gsm: ['gsm', 'sgn'], + gss: ['gss', 'sgn'], + gus: ['gus', 'sgn'], + hab: ['hab', 'sgn'], + haf: ['haf', 'sgn'], + hak: ['hak', 'zh'], + hds: ['hds', 'sgn'], + hji: ['hji', 'ms'], + hks: ['hks', 'sgn'], + hos: ['hos', 'sgn'], + hps: ['hps', 'sgn'], + hsh: ['hsh', 'sgn'], + hsl: ['hsl', 'sgn'], + hsn: ['hsn', 'zh'], + icl: ['icl', 'sgn'], + ils: ['ils', 'sgn'], + inl: ['inl', 'sgn'], + ins: ['ins', 'sgn'], + ise: ['ise', 'sgn'], + isg: ['isg', 'sgn'], + isr: ['isr', 'sgn'], + jak: ['jak', 'ms'], + jax: ['jax', 'ms'], + jcs: ['jcs', 'sgn'], + jhs: ['jhs', 'sgn'], + jls: ['jls', 'sgn'], + jos: ['jos', 'sgn'], + jsl: ['jsl', 'sgn'], + jus: ['jus', 'sgn'], + kgi: ['kgi', 'sgn'], + knn: ['knn', 'kok'], + kvb: ['kvb', 'ms'], + kvk: ['kvk', 'sgn'], + kvr: ['kvr', 'ms'], + kxd: ['kxd', 'ms'], + lbs: ['lbs', 'sgn'], + lce: ['lce', 'ms'], + lcf: ['lcf', 'ms'], + liw: ['liw', 'ms'], + lls: ['lls', 'sgn'], + lsg: ['lsg', 'sgn'], + lsl: ['lsl', 'sgn'], + lso: ['lso', 'sgn'], + lsp: ['lsp', 'sgn'], + lst: ['lst', 'sgn'], + lsy: ['lsy', 'sgn'], + ltg: ['ltg', 'lv'], + lvs: ['lvs', 'lv'], + lzh: ['lzh', 'zh'], + max: ['max', 'ms'], + mdl: ['mdl', 'sgn'], + meo: ['meo', 'ms'], + mfa: ['mfa', 'ms'], + mfb: ['mfb', 'ms'], + mfs: ['mfs', 'sgn'], + min: ['min', 'ms'], + mnp: ['mnp', 'zh'], + mqg: ['mqg', 'ms'], + mre: ['mre', 'sgn'], + msd: ['msd', 'sgn'], + msi: ['msi', 'ms'], + msr: ['msr', 'sgn'], + mui: ['mui', 'ms'], + mzc: ['mzc', 'sgn'], + mzg: ['mzg', 'sgn'], + mzy: ['mzy', 'sgn'], + nan: ['nan', 'zh'], + nbs: ['nbs', 'sgn'], + ncs: ['ncs', 'sgn'], + nsi: ['nsi', 'sgn'], + nsl: ['nsl', 'sgn'], + nsp: ['nsp', 'sgn'], + nsr: ['nsr', 'sgn'], + nzs: ['nzs', 'sgn'], + okl: ['okl', 'sgn'], + orn: ['orn', 'ms'], + ors: ['ors', 'ms'], + pel: ['pel', 'ms'], + pga: ['pga', 'ar'], + pks: ['pks', 'sgn'], + prl: ['prl', 'sgn'], + prz: ['prz', 'sgn'], + psc: ['psc', 'sgn'], + psd: ['psd', 'sgn'], + pse: ['pse', 'ms'], + psg: ['psg', 'sgn'], + psl: ['psl', 'sgn'], + pso: ['pso', 'sgn'], + psp: ['psp', 'sgn'], + psr: ['psr', 'sgn'], + pys: ['pys', 'sgn'], + rms: ['rms', 'sgn'], + rsi: ['rsi', 'sgn'], + rsl: ['rsl', 'sgn'], + sdl: ['sdl', 'sgn'], + sfb: ['sfb', 'sgn'], + sfs: ['sfs', 'sgn'], + sgg: ['sgg', 'sgn'], + sgx: ['sgx', 'sgn'], + shu: ['shu', 'ar'], + slf: ['slf', 'sgn'], + sls: ['sls', 'sgn'], + sqk: ['sqk', 'sgn'], + sqs: ['sqs', 'sgn'], + ssh: ['ssh', 'ar'], + ssp: ['ssp', 'sgn'], + ssr: ['ssr', 'sgn'], + svk: ['svk', 'sgn'], + swc: ['swc', 'sw'], + swh: ['swh', 'sw'], + swl: ['swl', 'sgn'], + syy: ['syy', 'sgn'], + tmw: ['tmw', 'ms'], + tse: ['tse', 'sgn'], + tsm: ['tsm', 'sgn'], + tsq: ['tsq', 'sgn'], + tss: ['tss', 'sgn'], + tsy: ['tsy', 'sgn'], + tza: ['tza', 'sgn'], + ugn: ['ugn', 'sgn'], + ugy: ['ugy', 'sgn'], + ukl: ['ukl', 'sgn'], + uks: ['uks', 'sgn'], + urk: ['urk', 'ms'], + uzn: ['uzn', 'uz'], + uzs: ['uzs', 'uz'], + vgt: ['vgt', 'sgn'], + vkk: ['vkk', 'ms'], + vkt: ['vkt', 'ms'], + vsi: ['vsi', 'sgn'], + vsl: ['vsl', 'sgn'], + vsv: ['vsv', 'sgn'], + wuu: ['wuu', 'zh'], + xki: ['xki', 'sgn'], + xml: ['xml', 'sgn'], + xmm: ['xmm', 'ms'], + xms: ['xms', 'sgn'], + yds: ['yds', 'sgn'], + ysl: ['ysl', 'sgn'], + yue: ['yue', 'zh'], + zib: ['zib', 'sgn'], + zlm: ['zlm', 'ms'], + zmi: ['zmi', 'ms'], + zsl: ['zsl', 'sgn'], + zsm: ['zsm', 'ms'], + }, }, gr = /^[A-Z]{3}$/, fr = /-u(?:-[0-9a-z]{2,8})+/gi, mr = {}; - Object.defineProperty(mr, "getCanonicalLocales", { + Object.defineProperty(mr, 'getCanonicalLocales', { enumerable: !1, configurable: !0, writable: !0, - value: k + value: k, }); var vr = { BHD: 3, @@ -1594,1988 +1927,6577 @@ UGX: 0, UYI: 0, VUV: 0, - VND: 0 + VND: 0, }; - Ie(mr, "NumberFormat", { - configurable: !0, - writable: !0, - value: O - }), Ie(mr.NumberFormat, "prototype", { - writable: !1 - }), $e.NumberFormat = { - "[[availableLocales]]": [], - "[[relevantExtensionKeys]]": ["nu"], - "[[localeData]]": {} - }, Ie(mr.NumberFormat, "supportedLocalesOf", { - configurable: !0, - writable: !0, - value: Ue.call(function (e) { - if (!Me.call(this, "[[availableLocales]]")) throw new TypeError("supportedLocalesOf() is not a constructor"); - var r = n(), - t = arguments[1], - a = this["[[availableLocales]]"], - i = d(e); - return r(), j(a, i, t) - }, $e.NumberFormat) - }), Ie(mr.NumberFormat.prototype, "format", { - configurable: !0, - get: E - }), Object.defineProperty(mr.NumberFormat.prototype, "formatToParts", { + Ie(mr, 'NumberFormat', { configurable: !0, - enumerable: !1, writable: !0, - value: L - }); + value: O, + }), + Ie(mr.NumberFormat, 'prototype', { + writable: !1, + }), + ($e.NumberFormat = { + '[[availableLocales]]': [], + '[[relevantExtensionKeys]]': ['nu'], + '[[localeData]]': {}, + }), + Ie(mr.NumberFormat, 'supportedLocalesOf', { + configurable: !0, + writable: !0, + value: Ue.call(function (e) { + if (!Me.call(this, '[[availableLocales]]')) + throw new TypeError('supportedLocalesOf() is not a constructor'); + var r = n(), + t = arguments[1], + a = this['[[availableLocales]]'], + i = d(e); + return r(), j(a, i, t); + }, $e.NumberFormat), + }), + Ie(mr.NumberFormat.prototype, 'format', { + configurable: !0, + get: E, + }), + Object.defineProperty(mr.NumberFormat.prototype, 'formatToParts', { + configurable: !0, + enumerable: !1, + writable: !0, + value: L, + }); var dr = { - arab: ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"], - arabext: ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"], - bali: ["᭐", "᭑", "᭒", "᭓", "᭔", "᭕", "᭖", "᭗", "᭘", "᭙"], - beng: ["০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯"], - deva: ["०", "१", "२", "३", "४", "५", "६", "७", "८", "९"], - fullwide: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], - gujr: ["૦", "૧", "૨", "૩", "૪", "૫", "૬", "૭", "૮", "૯"], - guru: ["੦", "੧", "੨", "੩", "੪", "੫", "੬", "੭", "੮", "੯"], - hanidec: ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九"], - khmr: ["០", "១", "២", "៣", "៤", "៥", "៦", "៧", "៨", "៩"], - knda: ["೦", "೧", "೨", "೩", "೪", "೫", "೬", "೭", "೮", "೯"], - laoo: ["໐", "໑", "໒", "໓", "໔", "໕", "໖", "໗", "໘", "໙"], - latn: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"], - limb: ["᥆", "᥇", "᥈", "᥉", "᥊", "᥋", "᥌", "᥍", "᥎", "᥏"], - mlym: ["൦", "൧", "൨", "൩", "൪", "൫", "൬", "൭", "൮", "൯"], - mong: ["᠐", "᠑", "᠒", "᠓", "᠔", "᠕", "᠖", "᠗", "᠘", "᠙"], - mymr: ["၀", "၁", "၂", "၃", "၄", "၅", "၆", "၇", "၈", "၉"], - orya: ["୦", "୧", "୨", "୩", "୪", "୫", "୬", "୭", "୮", "୯"], - tamldec: ["௦", "௧", "௨", "௩", "௪", "௫", "௬", "௭", "௮", "௯"], - telu: ["౦", "౧", "౨", "౩", "౪", "౫", "౬", "౭", "౮", "౯"], - thai: ["๐", "๑", "๒", "๓", "๔", "๕", "๖", "๗", "๘", "๙"], - tibt: ["༠", "༡", "༢", "༣", "༤", "༥", "༦", "༧", "༨", "༩"] + arab: ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'], + arabext: ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'], + bali: ['᭐', '᭑', '᭒', '᭓', '᭔', '᭕', '᭖', '᭗', '᭘', '᭙'], + beng: ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'], + deva: ['०', '१', '२', '३', '४', '५', '६', '७', '८', '९'], + fullwide: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + gujr: ['૦', '૧', '૨', '૩', '૪', '૫', '૬', '૭', '૮', '૯'], + guru: ['੦', '੧', '੨', '੩', '੪', '੫', '੬', '੭', '੮', '੯'], + hanidec: ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九'], + khmr: ['០', '១', '២', '៣', '៤', '៥', '៦', '៧', '៨', '៩'], + knda: ['೦', '೧', '೨', '೩', '೪', '೫', '೬', '೭', '೮', '೯'], + laoo: ['໐', '໑', '໒', '໓', '໔', '໕', '໖', '໗', '໘', '໙'], + latn: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + limb: ['᥆', '᥇', '᥈', '᥉', '᥊', '᥋', '᥌', '᥍', '᥎', '᥏'], + mlym: ['൦', '൧', '൨', '൩', '൪', '൫', '൬', '൭', '൮', '൯'], + mong: ['᠐', '᠑', '᠒', '᠓', '᠔', '᠕', '᠖', '᠗', '᠘', '᠙'], + mymr: ['၀', '၁', '၂', '၃', '၄', '၅', '၆', '၇', '၈', '၉'], + orya: ['୦', '୧', '୨', '୩', '୪', '୫', '୬', '୭', '୮', '୯'], + tamldec: ['௦', '௧', '௨', '௩', '௪', '௫', '௬', '௭', '௮', '௯'], + telu: ['౦', '౧', '౨', '౩', '౪', '౫', '౬', '౭', '౮', '౯'], + thai: ['๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙'], + tibt: ['༠', '༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩'], }; - Ie(mr.NumberFormat.prototype, "resolvedOptions", { + Ie(mr.NumberFormat.prototype, 'resolvedOptions', { configurable: !0, writable: !0, value: function () { var e = void 0, - t = new r, - n = ["locale", "numberingSystem", "style", "currency", "currencyDisplay", "minimumIntegerDigits", "minimumFractionDigits", "maximumFractionDigits", "minimumSignificantDigits", "maximumSignificantDigits", "useGrouping"], - a = null !== this && "object" === Ne.typeof(this) && l(this); - if (!a || !a["[[initializedNumberFormat]]"]) throw new TypeError("`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object."); - for (var i = 0, o = n.length; i < o; i++) Me.call(a, e = "[[" + n[i] + "]]") && (t[n[i]] = { - value: a[e], - writable: !0, - configurable: !0, - enumerable: !0 - }); - return Re({}, t) - } + t = new r(), + n = [ + 'locale', + 'numberingSystem', + 'style', + 'currency', + 'currencyDisplay', + 'minimumIntegerDigits', + 'minimumFractionDigits', + 'maximumFractionDigits', + 'minimumSignificantDigits', + 'maximumSignificantDigits', + 'useGrouping', + ], + a = null !== this && 'object' === Ne.typeof(this) && l(this); + if (!a || !a['[[initializedNumberFormat]]']) + throw new TypeError( + '`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.', + ); + for (var i = 0, o = n.length; i < o; i++) + Me.call(a, (e = '[[' + n[i] + ']]')) && + (t[n[i]] = { + value: a[e], + writable: !0, + configurable: !0, + enumerable: !0, + }); + return Re({}, t); + }, }); - var hr = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g, + var hr = + /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g, pr = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, yr = /[rqQASjJgwWIQq]/, - br = ["era", "year", "month", "day", "weekday", "quarter"], - wr = ["hour", "minute", "second", "hour12", "timeZoneName"], + br = ['era', 'year', 'month', 'day', 'weekday', 'quarter'], + wr = ['hour', 'minute', 'second', 'hour12', 'timeZoneName'], xr = { second: { - numeric: "s", - "2-digit": "ss" + numeric: 's', + '2-digit': 'ss', }, minute: { - numeric: "m", - "2-digit": "mm" + numeric: 'm', + '2-digit': 'mm', }, year: { - numeric: "y", - "2-digit": "yy" + numeric: 'y', + '2-digit': 'yy', }, day: { - numeric: "d", - "2-digit": "dd" + numeric: 'd', + '2-digit': 'dd', }, month: { - numeric: "L", - "2-digit": "LL", - narrow: "LLLLL", - short: "LLL", - long: "LLLL" + numeric: 'L', + '2-digit': 'LL', + narrow: 'LLLLL', + short: 'LLL', + long: 'LLLL', }, weekday: { - narrow: "ccccc", - short: "ccc", - long: "cccc" - } + narrow: 'ccccc', + short: 'ccc', + long: 'cccc', + }, }, jr = Re(null, { narrow: {}, short: {}, - long: {} + long: {}, }); - Ie(mr, "DateTimeFormat", { + Ie(mr, 'DateTimeFormat', { configurable: !0, writable: !0, - value: $ - }), Ie($, "prototype", { - writable: !1 - }); + value: $, + }), + Ie($, 'prototype', { + writable: !1, + }); var Dr = { - weekday: ["narrow", "short", "long"], - era: ["narrow", "short", "long"], - year: ["2-digit", "numeric"], - month: ["2-digit", "numeric", "narrow", "short", "long"], - day: ["2-digit", "numeric"], - hour: ["2-digit", "numeric"], - minute: ["2-digit", "numeric"], - second: ["2-digit", "numeric"], - timeZoneName: ["short", "long"] + weekday: ['narrow', 'short', 'long'], + era: ['narrow', 'short', 'long'], + year: ['2-digit', 'numeric'], + month: ['2-digit', 'numeric', 'narrow', 'short', 'long'], + day: ['2-digit', 'numeric'], + hour: ['2-digit', 'numeric'], + minute: ['2-digit', 'numeric'], + second: ['2-digit', 'numeric'], + timeZoneName: ['short', 'long'], }; - $e.DateTimeFormat = { - "[[availableLocales]]": [], - "[[relevantExtensionKeys]]": ["ca", "nu"], - "[[localeData]]": {} - }, Ie(mr.DateTimeFormat, "supportedLocalesOf", { - configurable: !0, - writable: !0, - value: Ue.call(function (e) { - if (!Me.call(this, "[[availableLocales]]")) throw new TypeError("supportedLocalesOf() is not a constructor"); - var r = n(), - t = arguments[1], - a = this["[[availableLocales]]"], - i = d(e); - return r(), j(a, i, t) - }, $e.NumberFormat) - }), Ie(mr.DateTimeFormat.prototype, "format", { - configurable: !0, - get: V - }), Object.defineProperty(mr.DateTimeFormat.prototype, "formatToParts", { - enumerable: !1, - writable: !0, - configurable: !0, - value: J - }), Ie(mr.DateTimeFormat.prototype, "resolvedOptions", { - writable: !0, - configurable: !0, - value: function () { - var e = void 0, - t = new r, - n = ["locale", "calendar", "numberingSystem", "timeZone", "hour12", "weekday", "era", "year", "month", "day", "hour", "minute", "second", "timeZoneName"], - a = null !== this && "object" === Ne.typeof(this) && l(this); - if (!a || !a["[[initializedDateTimeFormat]]"]) throw new TypeError("`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object."); - for (var i = 0, o = n.length; i < o; i++) Me.call(a, e = "[[" + n[i] + "]]") && (t[n[i]] = { - value: a[e], - writable: !0, - configurable: !0, - enumerable: !0 - }); - return Re({}, t) - } - }); - var zr = mr.__localeSensitiveProtos = { + ($e.DateTimeFormat = { + '[[availableLocales]]': [], + '[[relevantExtensionKeys]]': ['ca', 'nu'], + '[[localeData]]': {}, + }), + Ie(mr.DateTimeFormat, 'supportedLocalesOf', { + configurable: !0, + writable: !0, + value: Ue.call(function (e) { + if (!Me.call(this, '[[availableLocales]]')) + throw new TypeError('supportedLocalesOf() is not a constructor'); + var r = n(), + t = arguments[1], + a = this['[[availableLocales]]'], + i = d(e); + return r(), j(a, i, t); + }, $e.NumberFormat), + }), + Ie(mr.DateTimeFormat.prototype, 'format', { + configurable: !0, + get: V, + }), + Object.defineProperty(mr.DateTimeFormat.prototype, 'formatToParts', { + enumerable: !1, + writable: !0, + configurable: !0, + value: J, + }), + Ie(mr.DateTimeFormat.prototype, 'resolvedOptions', { + writable: !0, + configurable: !0, + value: function () { + var e = void 0, + t = new r(), + n = [ + 'locale', + 'calendar', + 'numberingSystem', + 'timeZone', + 'hour12', + 'weekday', + 'era', + 'year', + 'month', + 'day', + 'hour', + 'minute', + 'second', + 'timeZoneName', + ], + a = null !== this && 'object' === Ne.typeof(this) && l(this); + if (!a || !a['[[initializedDateTimeFormat]]']) + throw new TypeError( + '`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.', + ); + for (var i = 0, o = n.length; i < o; i++) + Me.call(a, (e = '[[' + n[i] + ']]')) && + (t[n[i]] = { + value: a[e], + writable: !0, + configurable: !0, + enumerable: !0, + }); + return Re({}, t); + }, + }); + var zr = (mr.__localeSensitiveProtos = { Number: {}, - Date: {} - }; - if (zr.Number.toLocaleString = function () { - if ("[object Number]" !== Object.prototype.toString.call(this)) throw new TypeError("`this` value must be a number for Number.prototype.toLocaleString()"); - return T(new O(arguments[0], arguments[1]), this) - }, zr.Date.toLocaleString = function () { - if ("[object Date]" !== Object.prototype.toString.call(this)) throw new TypeError("`this` value must be a Date instance for Date.prototype.toLocaleString()"); + Date: {}, + }); + if ( + ((zr.Number.toLocaleString = function () { + if ('[object Number]' !== Object.prototype.toString.call(this)) + throw new TypeError( + '`this` value must be a number for Number.prototype.toLocaleString()', + ); + return T(new O(arguments[0], arguments[1]), this); + }), + (zr.Date.toLocaleString = function () { + if ('[object Date]' !== Object.prototype.toString.call(this)) + throw new TypeError( + '`this` value must be a Date instance for Date.prototype.toLocaleString()', + ); var e = +this; - if (isNaN(e)) return "Invalid Date"; + if (isNaN(e)) return 'Invalid Date'; var r = arguments[0], t = arguments[1]; - t = H(t, "any", "all"); + t = H(t, 'any', 'all'); var n = new $(r, t); - return ee(n, e) - }, zr.Date.toLocaleDateString = function () { - if ("[object Date]" !== Object.prototype.toString.call(this)) throw new TypeError("`this` value must be a Date instance for Date.prototype.toLocaleDateString()"); + return ee(n, e); + }), + (zr.Date.toLocaleDateString = function () { + if ('[object Date]' !== Object.prototype.toString.call(this)) + throw new TypeError( + '`this` value must be a Date instance for Date.prototype.toLocaleDateString()', + ); var e = +this; - if (isNaN(e)) return "Invalid Date"; + if (isNaN(e)) return 'Invalid Date'; var r = arguments[0], t = arguments[1]; - t = H(t, "date", "date"); + t = H(t, 'date', 'date'); var n = new $(r, t); - return ee(n, e) - }, zr.Date.toLocaleTimeString = function () { - if ("[object Date]" !== Object.prototype.toString.call(this)) throw new TypeError("`this` value must be a Date instance for Date.prototype.toLocaleTimeString()"); + return ee(n, e); + }), + (zr.Date.toLocaleTimeString = function () { + if ('[object Date]' !== Object.prototype.toString.call(this)) + throw new TypeError( + '`this` value must be a Date instance for Date.prototype.toLocaleTimeString()', + ); var e = +this; - if (isNaN(e)) return "Invalid Date"; + if (isNaN(e)) return 'Invalid Date'; var r = arguments[0], t = arguments[1]; - t = H(t, "time", "time"); + t = H(t, 'time', 'time'); var n = new $(r, t); - return ee(n, e) - }, Ie(mr, "__applyLocaleSensitivePrototypes", { + return ee(n, e); + }), + Ie(mr, '__applyLocaleSensitivePrototypes', { writable: !0, configurable: !0, value: function () { - Ie(Number.prototype, "toLocaleString", { + Ie(Number.prototype, 'toLocaleString', { writable: !0, configurable: !0, - value: zr.Number.toLocaleString - }), Ie(Date.prototype, "toLocaleString", { - writable: !0, - configurable: !0, - value: zr.Date.toLocaleString - }); - for (var e in zr.Date) Me.call(zr.Date, e) && Ie(Date.prototype, e, { - writable: !0, - configurable: !0, - value: zr.Date[e] - }) - } - }), Ie(mr, "__addLocaleData", { + value: zr.Number.toLocaleString, + }), + Ie(Date.prototype, 'toLocaleString', { + writable: !0, + configurable: !0, + value: zr.Date.toLocaleString, + }); + for (var e in zr.Date) + Me.call(zr.Date, e) && + Ie(Date.prototype, e, { + writable: !0, + configurable: !0, + value: zr.Date[e], + }); + }, + }), + Ie(mr, '__addLocaleData', { value: function (e) { - if (!g(e.locale)) throw new Error("Object passed doesn't identify itself with a valid language tag"); - ne(e, e.locale) - } - }), Ie(mr, "__disableRegExpRestore", { + if (!g(e.locale)) + throw new Error("Object passed doesn't identify itself with a valid language tag"); + ne(e, e.locale); + }, + }), + Ie(mr, '__disableRegExpRestore', { value: function () { - $e.disableRegExpRestore = !0 - } - }), "undefined" == typeof Intl) try { - window.Intl = mr, mr.__applyLocaleSensitivePrototypes() - } catch (e) {} - return mr + $e.disableRegExpRestore = !0; + }, + }), + 'undefined' == typeof Intl) + ) + try { + (window.Intl = mr), mr.__applyLocaleSensitivePrototypes(); + } catch (e) {} + return mr; }); // Intl.~locale.en-US IntlPolyfill.__addLocaleData({ - locale: "en-US", + locale: 'en-US', date: { - ca: ["gregory", "buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic", "generic", "hebrew", "indian", "islamic", "islamicc", "japanese", "persian", "roc"], + ca: [ + 'gregory', + 'buddhist', + 'chinese', + 'coptic', + 'dangi', + 'ethioaa', + 'ethiopic', + 'generic', + 'hebrew', + 'indian', + 'islamic', + 'islamicc', + 'japanese', + 'persian', + 'roc', + ], hourNo0: true, hour12: true, formats: { - short: "{1}, {0}", - medium: "{1}, {0}", + short: '{1}, {0}', + medium: '{1}, {0}', full: "{1} 'at' {0}", long: "{1} 'at' {0}", availableFormats: { - "d": "d", - "E": "ccc", - Ed: "d E", - Ehm: "E h:mm a", - EHm: "E HH:mm", - Ehms: "E h:mm:ss a", - EHms: "E HH:mm:ss", - Gy: "y G", - GyMMM: "MMM y G", - GyMMMd: "MMM d, y G", - GyMMMEd: "E, MMM d, y G", - "h": "h a", - "H": "HH", - hm: "h:mm a", - Hm: "HH:mm", - hms: "h:mm:ss a", - Hms: "HH:mm:ss", - hmsv: "h:mm:ss a v", - Hmsv: "HH:mm:ss v", - hmv: "h:mm a v", - Hmv: "HH:mm v", - "M": "L", - Md: "M/d", - MEd: "E, M/d", - MMM: "LLL", - MMMd: "MMM d", - MMMEd: "E, MMM d", - MMMMd: "MMMM d", - ms: "mm:ss", - "y": "y", - yM: "M/y", - yMd: "M/d/y", - yMEd: "E, M/d/y", - yMMM: "MMM y", - yMMMd: "MMM d, y", - yMMMEd: "E, MMM d, y", - yMMMM: "MMMM y", - yQQQ: "QQQ y", - yQQQQ: "QQQQ y" + d: 'd', + E: 'ccc', + Ed: 'd E', + Ehm: 'E h:mm a', + EHm: 'E HH:mm', + Ehms: 'E h:mm:ss a', + EHms: 'E HH:mm:ss', + Gy: 'y G', + GyMMM: 'MMM y G', + GyMMMd: 'MMM d, y G', + GyMMMEd: 'E, MMM d, y G', + h: 'h a', + H: 'HH', + hm: 'h:mm a', + Hm: 'HH:mm', + hms: 'h:mm:ss a', + Hms: 'HH:mm:ss', + hmsv: 'h:mm:ss a v', + Hmsv: 'HH:mm:ss v', + hmv: 'h:mm a v', + Hmv: 'HH:mm v', + M: 'L', + Md: 'M/d', + MEd: 'E, M/d', + MMM: 'LLL', + MMMd: 'MMM d', + MMMEd: 'E, MMM d', + MMMMd: 'MMMM d', + ms: 'mm:ss', + y: 'y', + yM: 'M/y', + yMd: 'M/d/y', + yMEd: 'E, M/d/y', + yMMM: 'MMM y', + yMMMd: 'MMM d, y', + yMMMEd: 'E, MMM d, y', + yMMMM: 'MMMM y', + yQQQ: 'QQQ y', + yQQQQ: 'QQQQ y', }, dateFormats: { - yMMMMEEEEd: "EEEE, MMMM d, y", - yMMMMd: "MMMM d, y", - yMMMd: "MMM d, y", - yMd: "M/d/yy" + yMMMMEEEEd: 'EEEE, MMMM d, y', + yMMMMd: 'MMMM d, y', + yMMMd: 'MMM d, y', + yMd: 'M/d/yy', }, timeFormats: { - hmmsszzzz: "h:mm:ss a zzzz", - hmsz: "h:mm:ss a z", - hms: "h:mm:ss a", - hm: "h:mm a" - } + hmmsszzzz: 'h:mm:ss a zzzz', + hmsz: 'h:mm:ss a z', + hms: 'h:mm:ss a', + hm: 'h:mm a', + }, }, calendars: { buddhist: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["BE"], - short: ["BE"], - long: ["BE"] + narrow: ['BE'], + short: ['BE'], + long: ['BE'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, chinese: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Mo1", "Mo2", "Mo3", "Mo4", "Mo5", "Mo6", "Mo7", "Mo8", "Mo9", "Mo10", "Mo11", "Mo12"], - long: ["Month1", "Month2", "Month3", "Month4", "Month5", "Month6", "Month7", "Month8", "Month9", "Month10", "Month11", "Month12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Mo1', + 'Mo2', + 'Mo3', + 'Mo4', + 'Mo5', + 'Mo6', + 'Mo7', + 'Mo8', + 'Mo9', + 'Mo10', + 'Mo11', + 'Mo12', + ], + long: [ + 'Month1', + 'Month2', + 'Month3', + 'Month4', + 'Month5', + 'Month6', + 'Month7', + 'Month8', + 'Month9', + 'Month10', + 'Month11', + 'Month12', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, coptic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"], - long: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], + long: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, dangi: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Mo1", "Mo2", "Mo3", "Mo4", "Mo5", "Mo6", "Mo7", "Mo8", "Mo9", "Mo10", "Mo11", "Mo12"], - long: ["Month1", "Month2", "Month3", "Month4", "Month5", "Month6", "Month7", "Month8", "Month9", "Month10", "Month11", "Month12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Mo1', + 'Mo2', + 'Mo3', + 'Mo4', + 'Mo5', + 'Mo6', + 'Mo7', + 'Mo8', + 'Mo9', + 'Mo10', + 'Mo11', + 'Mo12', + ], + long: [ + 'Month1', + 'Month2', + 'Month3', + 'Month4', + 'Month5', + 'Month6', + 'Month7', + 'Month8', + 'Month9', + 'Month10', + 'Month11', + 'Month12', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, ethiopic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, ethioaa: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0"], - short: ["ERA0"], - long: ["ERA0"] + narrow: ['ERA0'], + short: ['ERA0'], + long: ['ERA0'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, generic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"], - long: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], + long: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, gregory: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["B", "A", "BCE", "CE"], - short: ["BC", "AD", "BCE", "CE"], - long: ["Before Christ", "Anno Domini", "Before Common Era", "Common Era"] + narrow: ['B', 'A', 'BCE', 'CE'], + short: ['BC', 'AD', 'BCE', 'CE'], + long: ['Before Christ', 'Anno Domini', 'Before Common Era', 'Common Era'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, hebrew: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "7"], - short: ["Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar I", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "Adar II"], - long: ["Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar I", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "Adar II"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '7'], + short: [ + 'Tishri', + 'Heshvan', + 'Kislev', + 'Tevet', + 'Shevat', + 'Adar I', + 'Adar', + 'Nisan', + 'Iyar', + 'Sivan', + 'Tamuz', + 'Av', + 'Elul', + 'Adar II', + ], + long: [ + 'Tishri', + 'Heshvan', + 'Kislev', + 'Tevet', + 'Shevat', + 'Adar I', + 'Adar', + 'Nisan', + 'Iyar', + 'Sivan', + 'Tamuz', + 'Av', + 'Elul', + 'Adar II', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AM"], - short: ["AM"], - long: ["AM"] + narrow: ['AM'], + short: ['AM'], + long: ['AM'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, indian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"], - long: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], + long: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["Saka"], - short: ["Saka"], - long: ["Saka"] + narrow: ['Saka'], + short: ['Saka'], + long: ['Saka'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, islamic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Muh.", "Saf.", "Rab. I", "Rab. II", "Jum. I", "Jum. II", "Raj.", "Sha.", "Ram.", "Shaw.", "Dhuʻl-Q.", "Dhuʻl-H."], - long: ["Muharram", "Safar", "Rabiʻ I", "Rabiʻ II", "Jumada I", "Jumada II", "Rajab", "Shaʻban", "Ramadan", "Shawwal", "Dhuʻl-Qiʻdah", "Dhuʻl-Hijjah"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Muh.', + 'Saf.', + 'Rab. I', + 'Rab. II', + 'Jum. I', + 'Jum. II', + 'Raj.', + 'Sha.', + 'Ram.', + 'Shaw.', + 'Dhuʻl-Q.', + 'Dhuʻl-H.', + ], + long: [ + 'Muharram', + 'Safar', + 'Rabiʻ I', + 'Rabiʻ II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Shaʻban', + 'Ramadan', + 'Shawwal', + 'Dhuʻl-Qiʻdah', + 'Dhuʻl-Hijjah', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, islamicc: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Muh.", "Saf.", "Rab. I", "Rab. II", "Jum. I", "Jum. II", "Raj.", "Sha.", "Ram.", "Shaw.", "Dhuʻl-Q.", "Dhuʻl-H."], - long: ["Muharram", "Safar", "Rabiʻ I", "Rabiʻ II", "Jumada I", "Jumada II", "Rajab", "Shaʻban", "Ramadan", "Shawwal", "Dhuʻl-Qiʻdah", "Dhuʻl-Hijjah"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Muh.', + 'Saf.', + 'Rab. I', + 'Rab. II', + 'Jum. I', + 'Jum. II', + 'Raj.', + 'Sha.', + 'Ram.', + 'Shaw.', + 'Dhuʻl-Q.', + 'Dhuʻl-H.', + ], + long: [ + 'Muharram', + 'Safar', + 'Rabiʻ I', + 'Rabiʻ II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Shaʻban', + 'Ramadan', + 'Shawwal', + 'Dhuʻl-Qiʻdah', + 'Dhuʻl-Hijjah', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, japanese: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "M", "T", "S", "H"], - short: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"], - long: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"] + narrow: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'M', + 'T', + 'S', + 'H', + ], + short: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], + long: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, persian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"], - long: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], + long: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AP"], - short: ["AP"], - long: ["AP"] + narrow: ['AP'], + short: ['AP'], + long: ['AP'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, roc: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["Before R.O.C.", "Minguo"], - short: ["Before R.O.C.", "Minguo"], - long: ["Before R.O.C.", "Minguo"] + narrow: ['Before R.O.C.', 'Minguo'], + short: ['Before R.O.C.', 'Minguo'], + long: ['Before R.O.C.', 'Minguo'], }, dayPeriods: { - am: "AM", - pm: "PM" - } - } - } + am: 'AM', + pm: 'PM', + }, + }, + }, }, number: { - nu: ["latn"], + nu: ['latn'], patterns: { decimal: { - positivePattern: "{number}", - negativePattern: "{minusSign}{number}" + positivePattern: '{number}', + negativePattern: '{minusSign}{number}', }, currency: { - positivePattern: "{currency}{number}", - negativePattern: "{minusSign}{currency}{number}" + positivePattern: '{currency}{number}', + negativePattern: '{minusSign}{currency}{number}', }, percent: { - positivePattern: "{number}{percentSign}", - negativePattern: "{minusSign}{number}{percentSign}" - } + positivePattern: '{number}{percentSign}', + negativePattern: '{minusSign}{number}{percentSign}', + }, }, symbols: { latn: { - decimal: ".", - group: ",", - nan: "NaN", - plusSign: "+", - minusSign: "-", - percentSign: "%", - infinity: "∞" - } + decimal: '.', + group: ',', + nan: 'NaN', + plusSign: '+', + minusSign: '-', + percentSign: '%', + infinity: '∞', + }, }, currencies: { - AUD: "A$", - BRL: "R$", - CAD: "CA$", - CNY: "CN¥", - EUR: "€", - GBP: "£", - HKD: "HK$", - ILS: "₪", - INR: "₹", - JPY: "¥", - KRW: "₩", - MXN: "MX$", - NZD: "NZ$", - TWD: "NT$", - USD: "$", - VND: "₫", - XAF: "FCFA", - XCD: "EC$", - XOF: "CFA", - XPF: "CFPF" - } - } + AUD: 'A$', + BRL: 'R$', + CAD: 'CA$', + CNY: 'CN¥', + EUR: '€', + GBP: '£', + HKD: 'HK$', + ILS: '₪', + INR: '₹', + JPY: '¥', + KRW: '₩', + MXN: 'MX$', + NZD: 'NZ$', + TWD: 'NT$', + USD: '$', + VND: '₫', + XAF: 'FCFA', + XCD: 'EC$', + XOF: 'CFA', + XPF: 'CFPF', + }, + }, }); // Intl.~locale.de IntlPolyfill.__addLocaleData({ - locale: "de", + locale: 'de', date: { - ca: ["gregory", "buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic", "generic", "hebrew", "indian", "islamic", "islamicc", "japanese", "persian", "roc"], + ca: [ + 'gregory', + 'buddhist', + 'chinese', + 'coptic', + 'dangi', + 'ethioaa', + 'ethiopic', + 'generic', + 'hebrew', + 'indian', + 'islamic', + 'islamicc', + 'japanese', + 'persian', + 'roc', + ], hourNo0: true, hour12: false, formats: { - short: "{1}, {0}", - medium: "{1}, {0}", + short: '{1}, {0}', + medium: '{1}, {0}', full: "{1} 'um' {0}", long: "{1} 'um' {0}", availableFormats: { - "d": "d", - "E": "ccc", - Ed: "E, d.", - Ehm: "E h:mm a", - EHm: "E, HH:mm", - Ehms: "E, h:mm:ss a", - EHms: "E, HH:mm:ss", - Gy: "y G", - GyMMM: "MMM y G", - GyMMMd: "d. MMM y G", - GyMMMEd: "E, d. MMM y G", - "h": "h a", - "H": "HH 'Uhr'", - hm: "h:mm a", - Hm: "HH:mm", - hms: "h:mm:ss a", - Hms: "HH:mm:ss", - hmsv: "h:mm:ss a v", - Hmsv: "HH:mm:ss v", - hmv: "h:mm a v", - Hmv: "HH:mm v", - "M": "L", - Md: "d.M.", - MEd: "E, d.M.", - MMd: "d.MM.", - MMdd: "dd.MM.", - MMM: "LLL", - MMMd: "d. MMM", - MMMEd: "E, d. MMM", - MMMMd: "d. MMMM", - MMMMEd: "E, d. MMMM", - ms: "mm:ss", - "y": "y", - yM: "M.y", - yMd: "d.M.y", - yMEd: "E, d.M.y", - yMM: "MM.y", - yMMdd: "dd.MM.y", - yMMM: "MMM y", - yMMMd: "d. MMM y", - yMMMEd: "E, d. MMM y", - yMMMM: "MMMM y", - yQQQ: "QQQ y", - yQQQQ: "QQQQ y" + d: 'd', + E: 'ccc', + Ed: 'E, d.', + Ehm: 'E h:mm a', + EHm: 'E, HH:mm', + Ehms: 'E, h:mm:ss a', + EHms: 'E, HH:mm:ss', + Gy: 'y G', + GyMMM: 'MMM y G', + GyMMMd: 'd. MMM y G', + GyMMMEd: 'E, d. MMM y G', + h: 'h a', + H: "HH 'Uhr'", + hm: 'h:mm a', + Hm: 'HH:mm', + hms: 'h:mm:ss a', + Hms: 'HH:mm:ss', + hmsv: 'h:mm:ss a v', + Hmsv: 'HH:mm:ss v', + hmv: 'h:mm a v', + Hmv: 'HH:mm v', + M: 'L', + Md: 'd.M.', + MEd: 'E, d.M.', + MMd: 'd.MM.', + MMdd: 'dd.MM.', + MMM: 'LLL', + MMMd: 'd. MMM', + MMMEd: 'E, d. MMM', + MMMMd: 'd. MMMM', + MMMMEd: 'E, d. MMMM', + ms: 'mm:ss', + y: 'y', + yM: 'M.y', + yMd: 'd.M.y', + yMEd: 'E, d.M.y', + yMM: 'MM.y', + yMMdd: 'dd.MM.y', + yMMM: 'MMM y', + yMMMd: 'd. MMM y', + yMMMEd: 'E, d. MMM y', + yMMMM: 'MMMM y', + yQQQ: 'QQQ y', + yQQQQ: 'QQQQ y', }, dateFormats: { - yMMMMEEEEd: "EEEE, d. MMMM y", - yMMMMd: "d. MMMM y", - yMMMd: "dd.MM.y", - yMd: "dd.MM.yy" + yMMMMEEEEd: 'EEEE, d. MMMM y', + yMMMMd: 'd. MMMM y', + yMMMd: 'dd.MM.y', + yMd: 'dd.MM.yy', }, timeFormats: { - hmmsszzzz: "HH:mm:ss zzzz", - hmsz: "HH:mm:ss z", - hms: "HH:mm:ss", - hm: "HH:mm" - } + hmmsszzzz: 'HH:mm:ss zzzz', + hmsz: 'HH:mm:ss z', + hms: 'HH:mm:ss', + hm: 'HH:mm', + }, }, calendars: { buddhist: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."], - long: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan.', + 'Feb.', + 'März', + 'Apr.', + 'Mai', + 'Juni', + 'Juli', + 'Aug.', + 'Sep.', + 'Okt.', + 'Nov.', + 'Dez.', + ], + long: [ + 'Januar', + 'Februar', + 'März', + 'April', + 'Mai', + 'Juni', + 'Juli', + 'August', + 'September', + 'Oktober', + 'November', + 'Dezember', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["BE"], - short: ["BE"], - long: ["BE"] + narrow: ['BE'], + short: ['BE'], + long: ['BE'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, chinese: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"], - long: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], + long: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, coptic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"], - long: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], + long: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, dangi: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"], - long: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], + long: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, ethiopic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, ethioaa: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["ERA0"], - short: ["ERA0"], - long: ["ERA0"] + narrow: ['ERA0'], + short: ['ERA0'], + long: ['ERA0'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, generic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"], - long: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], + long: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, gregory: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."], - long: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan.', + 'Feb.', + 'März', + 'Apr.', + 'Mai', + 'Juni', + 'Juli', + 'Aug.', + 'Sep.', + 'Okt.', + 'Nov.', + 'Dez.', + ], + long: [ + 'Januar', + 'Februar', + 'März', + 'April', + 'Mai', + 'Juni', + 'Juli', + 'August', + 'September', + 'Oktober', + 'November', + 'Dezember', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["v. Chr.", "n. Chr.", "v. u. Z.", "u. Z."], - short: ["v. Chr.", "n. Chr.", "v. u. Z.", "u. Z."], - long: ["v. Chr.", "n. Chr.", "vor unserer Zeitrechnung", "unserer Zeitrechnung"] + narrow: ['v. Chr.', 'n. Chr.', 'v. u. Z.', 'u. Z.'], + short: ['v. Chr.', 'n. Chr.', 'v. u. Z.', 'u. Z.'], + long: ['v. Chr.', 'n. Chr.', 'vor unserer Zeitrechnung', 'unserer Zeitrechnung'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, hebrew: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "7"], - short: ["Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar I", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "Adar II"], - long: ["Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar I", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "Adar II"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '7'], + short: [ + 'Tishri', + 'Heshvan', + 'Kislev', + 'Tevet', + 'Shevat', + 'Adar I', + 'Adar', + 'Nisan', + 'Iyar', + 'Sivan', + 'Tamuz', + 'Av', + 'Elul', + 'Adar II', + ], + long: [ + 'Tishri', + 'Heshvan', + 'Kislev', + 'Tevet', + 'Shevat', + 'Adar I', + 'Adar', + 'Nisan', + 'Iyar', + 'Sivan', + 'Tamuz', + 'Av', + 'Elul', + 'Adar II', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["AM"], - short: ["AM"], - long: ["AM"] + narrow: ['AM'], + short: ['AM'], + long: ['AM'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, indian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"], - long: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], + long: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["Saka"], - short: ["Saka"], - long: ["Saka"] + narrow: ['Saka'], + short: ['Saka'], + long: ['Saka'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, islamic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Muh.", "Saf.", "Rab. I", "Rab. II", "Jum. I", "Jum. II", "Raj.", "Sha.", "Ram.", "Shaw.", "Dhuʻl-Q.", "Dhuʻl-H."], - long: ["Muharram", "Safar", "Rabiʻ I", "Rabiʻ II", "Jumada I", "Jumada II", "Rajab", "Shaʻban", "Ramadan", "Shawwal", "Dhuʻl-Qiʻdah", "Dhuʻl-Hijjah"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Muh.', + 'Saf.', + 'Rab. I', + 'Rab. II', + 'Jum. I', + 'Jum. II', + 'Raj.', + 'Sha.', + 'Ram.', + 'Shaw.', + 'Dhuʻl-Q.', + 'Dhuʻl-H.', + ], + long: [ + 'Muharram', + 'Safar', + 'Rabiʻ I', + 'Rabiʻ II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Shaʻban', + 'Ramadan', + 'Shawwal', + 'Dhuʻl-Qiʻdah', + 'Dhuʻl-Hijjah', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, islamicc: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Muh.", "Saf.", "Rab. I", "Rab. II", "Jum. I", "Jum. II", "Raj.", "Sha.", "Ram.", "Shaw.", "Dhuʻl-Q.", "Dhuʻl-H."], - long: ["Muharram", "Safar", "Rabiʻ I", "Rabiʻ II", "Jumada I", "Jumada II", "Rajab", "Shaʻban", "Ramadan", "Shawwal", "Dhuʻl-Qiʻdah", "Dhuʻl-Hijjah"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Muh.', + 'Saf.', + 'Rab. I', + 'Rab. II', + 'Jum. I', + 'Jum. II', + 'Raj.', + 'Sha.', + 'Ram.', + 'Shaw.', + 'Dhuʻl-Q.', + 'Dhuʻl-H.', + ], + long: [ + 'Muharram', + 'Safar', + 'Rabiʻ I', + 'Rabiʻ II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Shaʻban', + 'Ramadan', + 'Shawwal', + 'Dhuʻl-Qiʻdah', + 'Dhuʻl-Hijjah', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, japanese: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."], - long: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan.', + 'Feb.', + 'März', + 'Apr.', + 'Mai', + 'Juni', + 'Juli', + 'Aug.', + 'Sep.', + 'Okt.', + 'Nov.', + 'Dez.', + ], + long: [ + 'Januar', + 'Februar', + 'März', + 'April', + 'Mai', + 'Juni', + 'Juli', + 'August', + 'September', + 'Oktober', + 'November', + 'Dezember', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "M", "T", "S", "H"], - short: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"], - long: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"] + narrow: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'M', + 'T', + 'S', + 'H', + ], + short: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], + long: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, persian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"], - long: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], + long: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["AP"], - short: ["AP"], - long: ["AP"] + narrow: ['AP'], + short: ['AP'], + long: ['AP'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } + am: 'vorm.', + pm: 'nachm.', + }, }, roc: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan.", "Feb.", "März", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."], - long: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan.', + 'Feb.', + 'März', + 'Apr.', + 'Mai', + 'Juni', + 'Juli', + 'Aug.', + 'Sep.', + 'Okt.', + 'Nov.', + 'Dez.', + ], + long: [ + 'Januar', + 'Februar', + 'März', + 'April', + 'Mai', + 'Juni', + 'Juli', + 'August', + 'September', + 'Oktober', + 'November', + 'Dezember', + ], }, days: { - narrow: ["S", "M", "D", "M", "D", "F", "S"], - short: ["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], - long: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] + narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'], + short: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], + long: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], }, eras: { - narrow: ["Before R.O.C.", "Minguo"], - short: ["Before R.O.C.", "Minguo"], - long: ["Before R.O.C.", "Minguo"] + narrow: ['Before R.O.C.', 'Minguo'], + short: ['Before R.O.C.', 'Minguo'], + long: ['Before R.O.C.', 'Minguo'], }, dayPeriods: { - am: "vorm.", - pm: "nachm." - } - } - } + am: 'vorm.', + pm: 'nachm.', + }, + }, + }, }, number: { - nu: ["latn"], + nu: ['latn'], patterns: { decimal: { - positivePattern: "{number}", - negativePattern: "{minusSign}{number}" + positivePattern: '{number}', + negativePattern: '{minusSign}{number}', }, currency: { - positivePattern: "{number} {currency}", - negativePattern: "{minusSign}{number} {currency}" + positivePattern: '{number} {currency}', + negativePattern: '{minusSign}{number} {currency}', }, percent: { - positivePattern: "{number} {percentSign}", - negativePattern: "{minusSign}{number} {percentSign}" - } + positivePattern: '{number} {percentSign}', + negativePattern: '{minusSign}{number} {percentSign}', + }, }, symbols: { latn: { - decimal: ",", - group: ".", - nan: "NaN", - plusSign: "+", - minusSign: "-", - percentSign: "%", - infinity: "∞" - } + decimal: ',', + group: '.', + nan: 'NaN', + plusSign: '+', + minusSign: '-', + percentSign: '%', + infinity: '∞', + }, }, currencies: { - ATS: "öS", - AUD: "AU$", - BGM: "BGK", - BGO: "BGJ", - BRL: "R$", - CAD: "CA$", - CNY: "CN¥", - DEM: "DM", - EUR: "€", - GBP: "£", - HKD: "HK$", - ILS: "₪", - INR: "₹", - JPY: "¥", - KRW: "₩", - MXN: "MX$", - NZD: "NZ$", - THB: "฿", - TWD: "NT$", - USD: "$", - VND: "₫", - XAF: "FCFA", - XCD: "EC$", - XOF: "CFA", - XPF: "CFPF" - } - } + ATS: 'öS', + AUD: 'AU$', + BGM: 'BGK', + BGO: 'BGJ', + BRL: 'R$', + CAD: 'CA$', + CNY: 'CN¥', + DEM: 'DM', + EUR: '€', + GBP: '£', + HKD: 'HK$', + ILS: '₪', + INR: '₹', + JPY: '¥', + KRW: '₩', + MXN: 'MX$', + NZD: 'NZ$', + THB: '฿', + TWD: 'NT$', + USD: '$', + VND: '₫', + XAF: 'FCFA', + XCD: 'EC$', + XOF: 'CFA', + XPF: 'CFPF', + }, + }, }); // Intl.~locale.en-GB IntlPolyfill.__addLocaleData({ - locale: "en-GB", + locale: 'en-GB', date: { - ca: ["gregory", "buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic", "generic", "hebrew", "indian", "islamic", "islamicc", "japanese", "persian", "roc"], + ca: [ + 'gregory', + 'buddhist', + 'chinese', + 'coptic', + 'dangi', + 'ethioaa', + 'ethiopic', + 'generic', + 'hebrew', + 'indian', + 'islamic', + 'islamicc', + 'japanese', + 'persian', + 'roc', + ], hourNo0: true, hour12: false, formats: { - short: "{1}, {0}", - medium: "{1}, {0}", + short: '{1}, {0}', + medium: '{1}, {0}', full: "{1} 'at' {0}", long: "{1} 'at' {0}", availableFormats: { - "d": "d", - "E": "ccc", - Ed: "E d", - Ehm: "E h:mm a", - EHm: "E HH:mm", - Ehms: "E h:mm:ss a", - EHms: "E HH:mm:ss", - Gy: "y G", - GyMMM: "MMM y G", - GyMMMd: "d MMM y G", - GyMMMEd: "E, d MMM y G", - "h": "h a", - "H": "HH", - hm: "h:mm a", - Hm: "HH:mm", - hms: "h:mm:ss a", - Hms: "HH:mm:ss", - hmsv: "h:mm:ss a v", - Hmsv: "HH:mm:ss v", - hmv: "h:mm a v", - Hmv: "HH:mm v", - "M": "L", - Md: "dd/MM", - MEd: "E, dd/MM", - MMdd: "dd/MM", - MMM: "LLL", - MMMd: "d MMM", - MMMEd: "E, d MMM", - MMMMd: "d MMMM", - ms: "mm:ss", - "y": "y", - yM: "MM/y", - yMd: "dd/MM/y", - yMEd: "E, dd/MM/y", - yMMM: "MMM y", - yMMMd: "d MMM y", - yMMMEd: "E, d MMM y", - yMMMM: "MMMM y", - yQQQ: "QQQ y", - yQQQQ: "QQQQ y" + d: 'd', + E: 'ccc', + Ed: 'E d', + Ehm: 'E h:mm a', + EHm: 'E HH:mm', + Ehms: 'E h:mm:ss a', + EHms: 'E HH:mm:ss', + Gy: 'y G', + GyMMM: 'MMM y G', + GyMMMd: 'd MMM y G', + GyMMMEd: 'E, d MMM y G', + h: 'h a', + H: 'HH', + hm: 'h:mm a', + Hm: 'HH:mm', + hms: 'h:mm:ss a', + Hms: 'HH:mm:ss', + hmsv: 'h:mm:ss a v', + Hmsv: 'HH:mm:ss v', + hmv: 'h:mm a v', + Hmv: 'HH:mm v', + M: 'L', + Md: 'dd/MM', + MEd: 'E, dd/MM', + MMdd: 'dd/MM', + MMM: 'LLL', + MMMd: 'd MMM', + MMMEd: 'E, d MMM', + MMMMd: 'd MMMM', + ms: 'mm:ss', + y: 'y', + yM: 'MM/y', + yMd: 'dd/MM/y', + yMEd: 'E, dd/MM/y', + yMMM: 'MMM y', + yMMMd: 'd MMM y', + yMMMEd: 'E, d MMM y', + yMMMM: 'MMMM y', + yQQQ: 'QQQ y', + yQQQQ: 'QQQQ y', }, dateFormats: { - yMMMMEEEEd: "EEEE, d MMMM y", - yMMMMd: "d MMMM y", - yMMMd: "d MMM y", - yMd: "dd/MM/y" + yMMMMEEEEd: 'EEEE, d MMMM y', + yMMMMd: 'd MMMM y', + yMMMd: 'd MMM y', + yMd: 'dd/MM/y', }, timeFormats: { - hmmsszzzz: "HH:mm:ss zzzz", - hmsz: "HH:mm:ss z", - hms: "HH:mm:ss", - hm: "HH:mm" - } + hmmsszzzz: 'HH:mm:ss zzzz', + hmsz: 'HH:mm:ss z', + hms: 'HH:mm:ss', + hm: 'HH:mm', + }, }, calendars: { buddhist: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["BE"], - short: ["BE"], - long: ["BE"] + narrow: ['BE'], + short: ['BE'], + long: ['BE'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, chinese: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Mo1", "Mo2", "Mo3", "Mo4", "Mo5", "Mo6", "Mo7", "Mo8", "Mo9", "Mo10", "Mo11", "Mo12"], - long: ["Month1", "Month2", "Month3", "Month4", "Month5", "Month6", "Month7", "Month8", "Month9", "Month10", "Month11", "Month12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Mo1', + 'Mo2', + 'Mo3', + 'Mo4', + 'Mo5', + 'Mo6', + 'Mo7', + 'Mo8', + 'Mo9', + 'Mo10', + 'Mo11', + 'Mo12', + ], + long: [ + 'Month1', + 'Month2', + 'Month3', + 'Month4', + 'Month5', + 'Month6', + 'Month7', + 'Month8', + 'Month9', + 'Month10', + 'Month11', + 'Month12', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, coptic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"], - long: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], + long: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, dangi: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Mo1", "Mo2", "Mo3", "Mo4", "Mo5", "Mo6", "Mo7", "Mo8", "Mo9", "Mo10", "Mo11", "Mo12"], - long: ["Month1", "Month2", "Month3", "Month4", "Month5", "Month6", "Month7", "Month8", "Month9", "Month10", "Month11", "Month12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Mo1', + 'Mo2', + 'Mo3', + 'Mo4', + 'Mo5', + 'Mo6', + 'Mo7', + 'Mo8', + 'Mo9', + 'Mo10', + 'Mo11', + 'Mo12', + ], + long: [ + 'Month1', + 'Month2', + 'Month3', + 'Month4', + 'Month5', + 'Month6', + 'Month7', + 'Month8', + 'Month9', + 'Month10', + 'Month11', + 'Month12', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, ethiopic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, ethioaa: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0"], - short: ["ERA0"], - long: ["ERA0"] + narrow: ['ERA0'], + short: ['ERA0'], + long: ['ERA0'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, generic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"], - long: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], + long: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, gregory: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["B", "A", "BCE", "CE"], - short: ["BC", "AD", "BCE", "CE"], - long: ["Before Christ", "Anno Domini", "Before Common Era", "Common Era"] + narrow: ['B', 'A', 'BCE', 'CE'], + short: ['BC', 'AD', 'BCE', 'CE'], + long: ['Before Christ', 'Anno Domini', 'Before Common Era', 'Common Era'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, hebrew: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "7"], - short: ["Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar I", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "Adar II"], - long: ["Tishri", "Heshvan", "Kislev", "Tevet", "Shevat", "Adar I", "Adar", "Nisan", "Iyar", "Sivan", "Tamuz", "Av", "Elul", "Adar II"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '7'], + short: [ + 'Tishri', + 'Heshvan', + 'Kislev', + 'Tevet', + 'Shevat', + 'Adar I', + 'Adar', + 'Nisan', + 'Iyar', + 'Sivan', + 'Tamuz', + 'Av', + 'Elul', + 'Adar II', + ], + long: [ + 'Tishri', + 'Heshvan', + 'Kislev', + 'Tevet', + 'Shevat', + 'Adar I', + 'Adar', + 'Nisan', + 'Iyar', + 'Sivan', + 'Tamuz', + 'Av', + 'Elul', + 'Adar II', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AM"], - short: ["AM"], - long: ["AM"] + narrow: ['AM'], + short: ['AM'], + long: ['AM'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, indian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"], - long: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], + long: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["Saka"], - short: ["Saka"], - long: ["Saka"] + narrow: ['Saka'], + short: ['Saka'], + long: ['Saka'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, islamic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Muh.", "Saf.", "Rab. I", "Rab. II", "Jum. I", "Jum. II", "Raj.", "Sha.", "Ram.", "Shaw.", "Dhuʻl-Q.", "Dhuʻl-H."], - long: ["Muharram", "Safar", "Rabiʻ I", "Rabiʻ II", "Jumada I", "Jumada II", "Rajab", "Shaʻban", "Ramadan", "Shawwal", "Dhuʻl-Qiʻdah", "Dhuʻl-Hijjah"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Muh.', + 'Saf.', + 'Rab. I', + 'Rab. II', + 'Jum. I', + 'Jum. II', + 'Raj.', + 'Sha.', + 'Ram.', + 'Shaw.', + 'Dhuʻl-Q.', + 'Dhuʻl-H.', + ], + long: [ + 'Muharram', + 'Safar', + 'Rabiʻ I', + 'Rabiʻ II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Shaʻban', + 'Ramadan', + 'Shawwal', + 'Dhuʻl-Qiʻdah', + 'Dhuʻl-Hijjah', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, islamicc: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Muh.", "Saf.", "Rab. I", "Rab. II", "Jum. I", "Jum. II", "Raj.", "Sha.", "Ram.", "Shaw.", "Dhuʻl-Q.", "Dhuʻl-H."], - long: ["Muharram", "Safar", "Rabiʻ I", "Rabiʻ II", "Jumada I", "Jumada II", "Rajab", "Shaʻban", "Ramadan", "Shawwal", "Dhuʻl-Qiʻdah", "Dhuʻl-Hijjah"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Muh.', + 'Saf.', + 'Rab. I', + 'Rab. II', + 'Jum. I', + 'Jum. II', + 'Raj.', + 'Sha.', + 'Ram.', + 'Shaw.', + 'Dhuʻl-Q.', + 'Dhuʻl-H.', + ], + long: [ + 'Muharram', + 'Safar', + 'Rabiʻ I', + 'Rabiʻ II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Shaʻban', + 'Ramadan', + 'Shawwal', + 'Dhuʻl-Qiʻdah', + 'Dhuʻl-Hijjah', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, japanese: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "M", "T", "S", "H"], - short: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"], - long: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"] + narrow: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'M', + 'T', + 'S', + 'H', + ], + short: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], + long: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, persian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"], - long: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], + long: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["AP"], - short: ["AP"], - long: ["AP"] + narrow: ['AP'], + short: ['AP'], + long: ['AP'], }, dayPeriods: { - am: "am", - pm: "pm" - } + am: 'am', + pm: 'pm', + }, }, roc: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + long: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], }, days: { - narrow: ["S", "M", "T", "W", "T", "F", "S"], - short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], }, eras: { - narrow: ["Before R.O.C.", "Minguo"], - short: ["Before R.O.C.", "Minguo"], - long: ["Before R.O.C.", "Minguo"] + narrow: ['Before R.O.C.', 'Minguo'], + short: ['Before R.O.C.', 'Minguo'], + long: ['Before R.O.C.', 'Minguo'], }, dayPeriods: { - am: "am", - pm: "pm" - } - } - } + am: 'am', + pm: 'pm', + }, + }, + }, }, number: { - nu: ["latn"], + nu: ['latn'], patterns: { decimal: { - positivePattern: "{number}", - negativePattern: "{minusSign}{number}" + positivePattern: '{number}', + negativePattern: '{minusSign}{number}', }, currency: { - positivePattern: "{currency}{number}", - negativePattern: "{minusSign}{currency}{number}" + positivePattern: '{currency}{number}', + negativePattern: '{minusSign}{currency}{number}', }, percent: { - positivePattern: "{number}{percentSign}", - negativePattern: "{minusSign}{number}{percentSign}" - } + positivePattern: '{number}{percentSign}', + negativePattern: '{minusSign}{number}{percentSign}', + }, }, symbols: { latn: { - decimal: ".", - group: ",", - nan: "NaN", - plusSign: "+", - minusSign: "-", - percentSign: "%", - infinity: "∞" - } + decimal: '.', + group: ',', + nan: 'NaN', + plusSign: '+', + minusSign: '-', + percentSign: '%', + infinity: '∞', + }, }, currencies: { - AUD: "A$", - BRL: "R$", - CAD: "CA$", - CNY: "CN¥", - EUR: "€", - GBP: "£", - HKD: "HK$", - ILS: "₪", - INR: "₹", - JPY: "JP¥", - KRW: "₩", - MXN: "MX$", - NZD: "NZ$", - TWD: "NT$", - USD: "US$", - VND: "₫", - XAF: "FCFA", - XCD: "EC$", - XOF: "CFA", - XPF: "CFPF" - } - } + AUD: 'A$', + BRL: 'R$', + CAD: 'CA$', + CNY: 'CN¥', + EUR: '€', + GBP: '£', + HKD: 'HK$', + ILS: '₪', + INR: '₹', + JPY: 'JP¥', + KRW: '₩', + MXN: 'MX$', + NZD: 'NZ$', + TWD: 'NT$', + USD: 'US$', + VND: '₫', + XAF: 'FCFA', + XCD: 'EC$', + XOF: 'CFA', + XPF: 'CFPF', + }, + }, }); // Intl.~locale.fr IntlPolyfill.__addLocaleData({ - locale: "fr", + locale: 'fr', date: { - ca: ["gregory", "buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic", "generic", "hebrew", "indian", "islamic", "islamicc", "japanese", "persian", "roc"], + ca: [ + 'gregory', + 'buddhist', + 'chinese', + 'coptic', + 'dangi', + 'ethioaa', + 'ethiopic', + 'generic', + 'hebrew', + 'indian', + 'islamic', + 'islamicc', + 'japanese', + 'persian', + 'roc', + ], hourNo0: true, hour12: false, formats: { - short: "{1} {0}", + short: '{1} {0}', medium: "{1} 'à' {0}", full: "{1} 'à' {0}", long: "{1} 'à' {0}", availableFormats: { - "d": "d", - "E": "E", - Ed: "E d", - Ehm: "E h:mm a", - EHm: "E HH:mm", - Ehms: "E h:mm:ss a", - EHms: "E HH:mm:ss", - Gy: "y G", - GyMMM: "MMM y G", - GyMMMd: "d MMM y G", - GyMMMEd: "E d MMM y G", - "h": "h a", - "H": "HH 'h'", - hm: "h:mm a", - Hm: "HH:mm", - hms: "h:mm:ss a", - Hms: "HH:mm:ss", - hmsv: "h:mm:ss a v", - Hmsv: "HH:mm:ss v", - hmv: "h:mm a v", - Hmv: "HH:mm v", - "M": "L", - Md: "dd/MM", - MEd: "E dd/MM", - MMM: "LLL", - MMMd: "d MMM", - MMMEd: "E d MMM", - MMMMd: "d MMMM", - ms: "mm:ss", - "y": "y", - yM: "MM/y", - yMd: "dd/MM/y", - yMEd: "E dd/MM/y", - yMMM: "MMM y", - yMMMd: "d MMM y", - yMMMEd: "E d MMM y", - yMMMM: "MMMM y", - yQQQ: "QQQ y", - yQQQQ: "QQQQ y" + d: 'd', + E: 'E', + Ed: 'E d', + Ehm: 'E h:mm a', + EHm: 'E HH:mm', + Ehms: 'E h:mm:ss a', + EHms: 'E HH:mm:ss', + Gy: 'y G', + GyMMM: 'MMM y G', + GyMMMd: 'd MMM y G', + GyMMMEd: 'E d MMM y G', + h: 'h a', + H: "HH 'h'", + hm: 'h:mm a', + Hm: 'HH:mm', + hms: 'h:mm:ss a', + Hms: 'HH:mm:ss', + hmsv: 'h:mm:ss a v', + Hmsv: 'HH:mm:ss v', + hmv: 'h:mm a v', + Hmv: 'HH:mm v', + M: 'L', + Md: 'dd/MM', + MEd: 'E dd/MM', + MMM: 'LLL', + MMMd: 'd MMM', + MMMEd: 'E d MMM', + MMMMd: 'd MMMM', + ms: 'mm:ss', + y: 'y', + yM: 'MM/y', + yMd: 'dd/MM/y', + yMEd: 'E dd/MM/y', + yMMM: 'MMM y', + yMMMd: 'd MMM y', + yMMMEd: 'E d MMM y', + yMMMM: 'MMMM y', + yQQQ: 'QQQ y', + yQQQQ: 'QQQQ y', }, dateFormats: { - yMMMMEEEEd: "EEEE d MMMM y", - yMMMMd: "d MMMM y", - yMMMd: "d MMM y", - yMd: "dd/MM/y" + yMMMMEEEEd: 'EEEE d MMMM y', + yMMMMd: 'd MMMM y', + yMMMd: 'd MMM y', + yMd: 'dd/MM/y', }, timeFormats: { - hmmsszzzz: "HH:mm:ss zzzz", - hmsz: "HH:mm:ss z", - hms: "HH:mm:ss", - hm: "HH:mm" - } + hmmsszzzz: 'HH:mm:ss zzzz', + hmsz: 'HH:mm:ss z', + hms: 'HH:mm:ss', + hm: 'HH:mm', + }, }, calendars: { buddhist: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."], - long: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + long: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["E.B."], - short: ["ère b."], - long: ["ère bouddhiste"] + narrow: ['E.B.'], + short: ['ère b.'], + long: ['ère bouddhiste'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, chinese: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["1yuè", "2yuè", "3yuè", "4yuè", "5yuè", "6yuè", "7yuè", "8yuè", "9yuè", "10yuè", "11yuè", "12yuè"], - long: ["zhēngyuè", "èryuè", "sānyuè", "sìyuè", "wǔyuè", "liùyuè", "qīyuè", "bāyuè", "jiǔyuè", "shíyuè", "shíyīyuè", "shí’èryuè"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + '1yuè', + '2yuè', + '3yuè', + '4yuè', + '5yuè', + '6yuè', + '7yuè', + '8yuè', + '9yuè', + '10yuè', + '11yuè', + '12yuè', + ], + long: [ + 'zhēngyuè', + 'èryuè', + 'sānyuè', + 'sìyuè', + 'wǔyuè', + 'liùyuè', + 'qīyuè', + 'bāyuè', + 'jiǔyuè', + 'shíyuè', + 'shíyīyuè', + 'shí’èryuè', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, coptic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"], - long: ["Tout", "Baba", "Hator", "Kiahk", "Toba", "Amshir", "Baramhat", "Baramouda", "Bashans", "Paona", "Epep", "Mesra", "Nasie"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], + long: [ + 'Tout', + 'Baba', + 'Hator', + 'Kiahk', + 'Toba', + 'Amshir', + 'Baramhat', + 'Baramouda', + 'Bashans', + 'Paona', + 'Epep', + 'Mesra', + 'Nasie', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, dangi: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["1yuè", "2yuè", "3yuè", "4yuè", "5yuè", "6yuè", "7yuè", "8yuè", "9yuè", "10yuè", "11yuè", "12yuè"], - long: ["zhēngyuè", "èryuè", "sānyuè", "sìyuè", "wǔyuè", "liùyuè", "qīyuè", "bāyuè", "jiǔyuè", "shíyuè", "shíyīyuè", "shí’èryuè"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + '1yuè', + '2yuè', + '3yuè', + '4yuè', + '5yuè', + '6yuè', + '7yuè', + '8yuè', + '9yuè', + '10yuè', + '11yuè', + '12yuè', + ], + long: [ + 'zhēngyuè', + 'èryuè', + 'sānyuè', + 'sìyuè', + 'wǔyuè', + 'liùyuè', + 'qīyuè', + 'bāyuè', + 'jiǔyuè', + 'shíyuè', + 'shíyīyuè', + 'shí’èryuè', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, ethiopic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, ethioaa: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"], - short: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"], - long: ["Meskerem", "Tekemt", "Hedar", "Tahsas", "Ter", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehasse", "Pagumen"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13'], + short: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], + long: [ + 'Meskerem', + 'Tekemt', + 'Hedar', + 'Tahsas', + 'Ter', + 'Yekatit', + 'Megabit', + 'Miazia', + 'Genbot', + 'Sene', + 'Hamle', + 'Nehasse', + 'Pagumen', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["ERA0"], - short: ["ERA0"], - long: ["ERA0"] + narrow: ['ERA0'], + short: ['ERA0'], + long: ['ERA0'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, generic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"], - long: ["M01", "M02", "M03", "M04", "M05", "M06", "M07", "M08", "M09", "M10", "M11", "M12"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], + long: [ + 'M01', + 'M02', + 'M03', + 'M04', + 'M05', + 'M06', + 'M07', + 'M08', + 'M09', + 'M10', + 'M11', + 'M12', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["ERA0", "ERA1"], - short: ["ERA0", "ERA1"], - long: ["ERA0", "ERA1"] + narrow: ['ERA0', 'ERA1'], + short: ['ERA0', 'ERA1'], + long: ['ERA0', 'ERA1'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, gregory: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."], - long: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + long: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["av. J.-C.", "ap. J.-C.", "AEC", "EC"], - short: ["av. J.-C.", "ap. J.-C.", "AEC", "EC"], - long: ["avant Jésus-Christ", "après Jésus-Christ", "avant l’ère commune", "de l’ère commune"] + narrow: ['av. J.-C.', 'ap. J.-C.', 'AEC', 'EC'], + short: ['av. J.-C.', 'ap. J.-C.', 'AEC', 'EC'], + long: [ + 'avant Jésus-Christ', + 'après Jésus-Christ', + 'avant l’ère commune', + 'de l’ère commune', + ], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, hebrew: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "7"], - short: ["Tisseri", "Hesvan", "Kislev", "Tébeth", "Schébat", "Adar I", "Adar", "Nissan", "Iyar", "Sivan", "Tamouz", "Ab", "Elloul", "Adar II"], - long: ["Tisseri", "Hesvan", "Kislev", "Tébeth", "Schébat", "Adar I", "Adar", "Nissan", "Iyar", "Sivan", "Tamouz", "Ab", "Elloul", "Adar II"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '7'], + short: [ + 'Tisseri', + 'Hesvan', + 'Kislev', + 'Tébeth', + 'Schébat', + 'Adar I', + 'Adar', + 'Nissan', + 'Iyar', + 'Sivan', + 'Tamouz', + 'Ab', + 'Elloul', + 'Adar II', + ], + long: [ + 'Tisseri', + 'Hesvan', + 'Kislev', + 'Tébeth', + 'Schébat', + 'Adar I', + 'Adar', + 'Nissan', + 'Iyar', + 'Sivan', + 'Tamouz', + 'Ab', + 'Elloul', + 'Adar II', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["AM"], - short: ["AM"], - long: ["AM"] + narrow: ['AM'], + short: ['AM'], + long: ['AM'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, indian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"], - long: ["Chaitra", "Vaisakha", "Jyaistha", "Asadha", "Sravana", "Bhadra", "Asvina", "Kartika", "Agrahayana", "Pausa", "Magha", "Phalguna"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], + long: [ + 'Chaitra', + 'Vaisakha', + 'Jyaistha', + 'Asadha', + 'Sravana', + 'Bhadra', + 'Asvina', + 'Kartika', + 'Agrahayana', + 'Pausa', + 'Magha', + 'Phalguna', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["Saka"], - short: ["Saka"], - long: ["Saka"] + narrow: ['Saka'], + short: ['Saka'], + long: ['Saka'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, islamic: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["mouh.", "saf.", "rab. aw.", "rab. th.", "joum. oul.", "joum. tha.", "raj.", "chaa.", "ram.", "chaw.", "dhou. q.", "dhou. h."], - long: ["mouharram", "safar", "rabia al awal", "rabia ath-thani", "joumada al oula", "joumada ath-thania", "rajab", "chaabane", "ramadan", "chawwal", "dhou al qi`da", "dhou al-hijja"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'mouh.', + 'saf.', + 'rab. aw.', + 'rab. th.', + 'joum. oul.', + 'joum. tha.', + 'raj.', + 'chaa.', + 'ram.', + 'chaw.', + 'dhou. q.', + 'dhou. h.', + ], + long: [ + 'mouharram', + 'safar', + 'rabia al awal', + 'rabia ath-thani', + 'joumada al oula', + 'joumada ath-thania', + 'rajab', + 'chaabane', + 'ramadan', + 'chawwal', + 'dhou al qi`da', + 'dhou al-hijja', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, islamicc: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["mouh.", "saf.", "rab. aw.", "rab. th.", "joum. oul.", "joum. tha.", "raj.", "chaa.", "ram.", "chaw.", "dhou. q.", "dhou. h."], - long: ["mouharram", "safar", "rabia al awal", "rabia ath-thani", "joumada al oula", "joumada ath-thania", "rajab", "chaabane", "ramadan", "chawwal", "dhou al qi`da", "dhou al-hijja"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'mouh.', + 'saf.', + 'rab. aw.', + 'rab. th.', + 'joum. oul.', + 'joum. tha.', + 'raj.', + 'chaa.', + 'ram.', + 'chaw.', + 'dhou. q.', + 'dhou. h.', + ], + long: [ + 'mouharram', + 'safar', + 'rabia al awal', + 'rabia ath-thani', + 'joumada al oula', + 'joumada ath-thania', + 'rajab', + 'chaabane', + 'ramadan', + 'chawwal', + 'dhou al qi`da', + 'dhou al-hijja', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["AH"], - short: ["AH"], - long: ["AH"] + narrow: ['AH'], + short: ['AH'], + long: ['AH'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, japanese: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."], - long: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + long: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "M", "T", "S", "H"], - short: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"], - long: ["Taika (645–650)", "Hakuchi (650–671)", "Hakuhō (672–686)", "Shuchō (686–701)", "Taihō (701–704)", "Keiun (704–708)", "Wadō (708–715)", "Reiki (715–717)", "Yōrō (717–724)", "Jinki (724–729)", "Tenpyō (729–749)", "Tenpyō-kampō (749-749)", "Tenpyō-shōhō (749-757)", "Tenpyō-hōji (757-765)", "Tenpyō-jingo (765-767)", "Jingo-keiun (767-770)", "Hōki (770–780)", "Ten-ō (781-782)", "Enryaku (782–806)", "Daidō (806–810)", "Kōnin (810–824)", "Tenchō (824–834)", "Jōwa (834–848)", "Kajō (848–851)", "Ninju (851–854)", "Saikō (854–857)", "Ten-an (857-859)", "Jōgan (859–877)", "Gangyō (877–885)", "Ninna (885–889)", "Kanpyō (889–898)", "Shōtai (898–901)", "Engi (901–923)", "Enchō (923–931)", "Jōhei (931–938)", "Tengyō (938–947)", "Tenryaku (947–957)", "Tentoku (957–961)", "Ōwa (961–964)", "Kōhō (964–968)", "Anna (968–970)", "Tenroku (970–973)", "Ten’en (973–976)", "Jōgen (976–978)", "Tengen (978–983)", "Eikan (983–985)", "Kanna (985–987)", "Eien (987–989)", "Eiso (989–990)", "Shōryaku (990–995)", "Chōtoku (995–999)", "Chōhō (999–1004)", "Kankō (1004–1012)", "Chōwa (1012–1017)", "Kannin (1017–1021)", "Jian (1021–1024)", "Manju (1024–1028)", "Chōgen (1028–1037)", "Chōryaku (1037–1040)", "Chōkyū (1040–1044)", "Kantoku (1044–1046)", "Eishō (1046–1053)", "Tengi (1053–1058)", "Kōhei (1058–1065)", "Jiryaku (1065–1069)", "Enkyū (1069–1074)", "Shōho (1074–1077)", "Shōryaku (1077–1081)", "Eihō (1081–1084)", "Ōtoku (1084–1087)", "Kanji (1087–1094)", "Kahō (1094–1096)", "Eichō (1096–1097)", "Jōtoku (1097–1099)", "Kōwa (1099–1104)", "Chōji (1104–1106)", "Kashō (1106–1108)", "Tennin (1108–1110)", "Ten-ei (1110-1113)", "Eikyū (1113–1118)", "Gen’ei (1118–1120)", "Hōan (1120–1124)", "Tenji (1124–1126)", "Daiji (1126–1131)", "Tenshō (1131–1132)", "Chōshō (1132–1135)", "Hōen (1135–1141)", "Eiji (1141–1142)", "Kōji (1142–1144)", "Ten’yō (1144–1145)", "Kyūan (1145–1151)", "Ninpei (1151–1154)", "Kyūju (1154–1156)", "Hōgen (1156–1159)", "Heiji (1159–1160)", "Eiryaku (1160–1161)", "Ōho (1161–1163)", "Chōkan (1163–1165)", "Eiman (1165–1166)", "Nin’an (1166–1169)", "Kaō (1169–1171)", "Shōan (1171–1175)", "Angen (1175–1177)", "Jishō (1177–1181)", "Yōwa (1181–1182)", "Juei (1182–1184)", "Genryaku (1184–1185)", "Bunji (1185–1190)", "Kenkyū (1190–1199)", "Shōji (1199–1201)", "Kennin (1201–1204)", "Genkyū (1204–1206)", "Ken’ei (1206–1207)", "Jōgen (1207–1211)", "Kenryaku (1211–1213)", "Kenpō (1213–1219)", "Jōkyū (1219–1222)", "Jōō (1222–1224)", "Gennin (1224–1225)", "Karoku (1225–1227)", "Antei (1227–1229)", "Kanki (1229–1232)", "Jōei (1232–1233)", "Tenpuku (1233–1234)", "Bunryaku (1234–1235)", "Katei (1235–1238)", "Ryakunin (1238–1239)", "En’ō (1239–1240)", "Ninji (1240–1243)", "Kangen (1243–1247)", "Hōji (1247–1249)", "Kenchō (1249–1256)", "Kōgen (1256–1257)", "Shōka (1257–1259)", "Shōgen (1259–1260)", "Bun’ō (1260–1261)", "Kōchō (1261–1264)", "Bun’ei (1264–1275)", "Kenji (1275–1278)", "Kōan (1278–1288)", "Shōō (1288–1293)", "Einin (1293–1299)", "Shōan (1299–1302)", "Kengen (1302–1303)", "Kagen (1303–1306)", "Tokuji (1306–1308)", "Enkyō (1308–1311)", "Ōchō (1311–1312)", "Shōwa (1312–1317)", "Bunpō (1317–1319)", "Genō (1319–1321)", "Genkō (1321–1324)", "Shōchū (1324–1326)", "Karyaku (1326–1329)", "Gentoku (1329–1331)", "Genkō (1331–1334)", "Kenmu (1334–1336)", "Engen (1336–1340)", "Kōkoku (1340–1346)", "Shōhei (1346–1370)", "Kentoku (1370–1372)", "Bunchū (1372–1375)", "Tenju (1375–1379)", "Kōryaku (1379–1381)", "Kōwa (1381–1384)", "Genchū (1384–1392)", "Meitoku (1384–1387)", "Kakei (1387–1389)", "Kōō (1389–1390)", "Meitoku (1390–1394)", "Ōei (1394–1428)", "Shōchō (1428–1429)", "Eikyō (1429–1441)", "Kakitsu (1441–1444)", "Bun’an (1444–1449)", "Hōtoku (1449–1452)", "Kyōtoku (1452–1455)", "Kōshō (1455–1457)", "Chōroku (1457–1460)", "Kanshō (1460–1466)", "Bunshō (1466–1467)", "Ōnin (1467–1469)", "Bunmei (1469–1487)", "Chōkyō (1487–1489)", "Entoku (1489–1492)", "Meiō (1492–1501)", "Bunki (1501–1504)", "Eishō (1504–1521)", "Taiei (1521–1528)", "Kyōroku (1528–1532)", "Tenbun (1532–1555)", "Kōji (1555–1558)", "Eiroku (1558–1570)", "Genki (1570–1573)", "Tenshō (1573–1592)", "Bunroku (1592–1596)", "Keichō (1596–1615)", "Genna (1615–1624)", "Kan’ei (1624–1644)", "Shōho (1644–1648)", "Keian (1648–1652)", "Jōō (1652–1655)", "Meireki (1655–1658)", "Manji (1658–1661)", "Kanbun (1661–1673)", "Enpō (1673–1681)", "Tenna (1681–1684)", "Jōkyō (1684–1688)", "Genroku (1688–1704)", "Hōei (1704–1711)", "Shōtoku (1711–1716)", "Kyōhō (1716–1736)", "Genbun (1736–1741)", "Kanpō (1741–1744)", "Enkyō (1744–1748)", "Kan’en (1748–1751)", "Hōreki (1751–1764)", "Meiwa (1764–1772)", "An’ei (1772–1781)", "Tenmei (1781–1789)", "Kansei (1789–1801)", "Kyōwa (1801–1804)", "Bunka (1804–1818)", "Bunsei (1818–1830)", "Tenpō (1830–1844)", "Kōka (1844–1848)", "Kaei (1848–1854)", "Ansei (1854–1860)", "Man’en (1860–1861)", "Bunkyū (1861–1864)", "Genji (1864–1865)", "Keiō (1865–1868)", "Meiji", "Taishō", "Shōwa", "Heisei"] + narrow: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'M', + 'T', + 'S', + 'H', + ], + short: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], + long: [ + 'Taika (645–650)', + 'Hakuchi (650–671)', + 'Hakuhō (672–686)', + 'Shuchō (686–701)', + 'Taihō (701–704)', + 'Keiun (704–708)', + 'Wadō (708–715)', + 'Reiki (715–717)', + 'Yōrō (717–724)', + 'Jinki (724–729)', + 'Tenpyō (729–749)', + 'Tenpyō-kampō (749-749)', + 'Tenpyō-shōhō (749-757)', + 'Tenpyō-hōji (757-765)', + 'Tenpyō-jingo (765-767)', + 'Jingo-keiun (767-770)', + 'Hōki (770–780)', + 'Ten-ō (781-782)', + 'Enryaku (782–806)', + 'Daidō (806–810)', + 'Kōnin (810–824)', + 'Tenchō (824–834)', + 'Jōwa (834–848)', + 'Kajō (848–851)', + 'Ninju (851–854)', + 'Saikō (854–857)', + 'Ten-an (857-859)', + 'Jōgan (859–877)', + 'Gangyō (877–885)', + 'Ninna (885–889)', + 'Kanpyō (889–898)', + 'Shōtai (898–901)', + 'Engi (901–923)', + 'Enchō (923–931)', + 'Jōhei (931–938)', + 'Tengyō (938–947)', + 'Tenryaku (947–957)', + 'Tentoku (957–961)', + 'Ōwa (961–964)', + 'Kōhō (964–968)', + 'Anna (968–970)', + 'Tenroku (970–973)', + 'Ten’en (973–976)', + 'Jōgen (976–978)', + 'Tengen (978–983)', + 'Eikan (983–985)', + 'Kanna (985–987)', + 'Eien (987–989)', + 'Eiso (989–990)', + 'Shōryaku (990–995)', + 'Chōtoku (995–999)', + 'Chōhō (999–1004)', + 'Kankō (1004–1012)', + 'Chōwa (1012–1017)', + 'Kannin (1017–1021)', + 'Jian (1021–1024)', + 'Manju (1024–1028)', + 'Chōgen (1028–1037)', + 'Chōryaku (1037–1040)', + 'Chōkyū (1040–1044)', + 'Kantoku (1044–1046)', + 'Eishō (1046–1053)', + 'Tengi (1053–1058)', + 'Kōhei (1058–1065)', + 'Jiryaku (1065–1069)', + 'Enkyū (1069–1074)', + 'Shōho (1074–1077)', + 'Shōryaku (1077–1081)', + 'Eihō (1081–1084)', + 'Ōtoku (1084–1087)', + 'Kanji (1087–1094)', + 'Kahō (1094–1096)', + 'Eichō (1096–1097)', + 'Jōtoku (1097–1099)', + 'Kōwa (1099–1104)', + 'Chōji (1104–1106)', + 'Kashō (1106–1108)', + 'Tennin (1108–1110)', + 'Ten-ei (1110-1113)', + 'Eikyū (1113–1118)', + 'Gen’ei (1118–1120)', + 'Hōan (1120–1124)', + 'Tenji (1124–1126)', + 'Daiji (1126–1131)', + 'Tenshō (1131–1132)', + 'Chōshō (1132–1135)', + 'Hōen (1135–1141)', + 'Eiji (1141–1142)', + 'Kōji (1142–1144)', + 'Ten’yō (1144–1145)', + 'Kyūan (1145–1151)', + 'Ninpei (1151–1154)', + 'Kyūju (1154–1156)', + 'Hōgen (1156–1159)', + 'Heiji (1159–1160)', + 'Eiryaku (1160–1161)', + 'Ōho (1161–1163)', + 'Chōkan (1163–1165)', + 'Eiman (1165–1166)', + 'Nin’an (1166–1169)', + 'Kaō (1169–1171)', + 'Shōan (1171–1175)', + 'Angen (1175–1177)', + 'Jishō (1177–1181)', + 'Yōwa (1181–1182)', + 'Juei (1182–1184)', + 'Genryaku (1184–1185)', + 'Bunji (1185–1190)', + 'Kenkyū (1190–1199)', + 'Shōji (1199–1201)', + 'Kennin (1201–1204)', + 'Genkyū (1204–1206)', + 'Ken’ei (1206–1207)', + 'Jōgen (1207–1211)', + 'Kenryaku (1211–1213)', + 'Kenpō (1213–1219)', + 'Jōkyū (1219–1222)', + 'Jōō (1222–1224)', + 'Gennin (1224–1225)', + 'Karoku (1225–1227)', + 'Antei (1227–1229)', + 'Kanki (1229–1232)', + 'Jōei (1232–1233)', + 'Tenpuku (1233–1234)', + 'Bunryaku (1234–1235)', + 'Katei (1235–1238)', + 'Ryakunin (1238–1239)', + 'En’ō (1239–1240)', + 'Ninji (1240–1243)', + 'Kangen (1243–1247)', + 'Hōji (1247–1249)', + 'Kenchō (1249–1256)', + 'Kōgen (1256–1257)', + 'Shōka (1257–1259)', + 'Shōgen (1259–1260)', + 'Bun’ō (1260–1261)', + 'Kōchō (1261–1264)', + 'Bun’ei (1264–1275)', + 'Kenji (1275–1278)', + 'Kōan (1278–1288)', + 'Shōō (1288–1293)', + 'Einin (1293–1299)', + 'Shōan (1299–1302)', + 'Kengen (1302–1303)', + 'Kagen (1303–1306)', + 'Tokuji (1306–1308)', + 'Enkyō (1308–1311)', + 'Ōchō (1311–1312)', + 'Shōwa (1312–1317)', + 'Bunpō (1317–1319)', + 'Genō (1319–1321)', + 'Genkō (1321–1324)', + 'Shōchū (1324–1326)', + 'Karyaku (1326–1329)', + 'Gentoku (1329–1331)', + 'Genkō (1331–1334)', + 'Kenmu (1334–1336)', + 'Engen (1336–1340)', + 'Kōkoku (1340–1346)', + 'Shōhei (1346–1370)', + 'Kentoku (1370–1372)', + 'Bunchū (1372–1375)', + 'Tenju (1375–1379)', + 'Kōryaku (1379–1381)', + 'Kōwa (1381–1384)', + 'Genchū (1384–1392)', + 'Meitoku (1384–1387)', + 'Kakei (1387–1389)', + 'Kōō (1389–1390)', + 'Meitoku (1390–1394)', + 'Ōei (1394–1428)', + 'Shōchō (1428–1429)', + 'Eikyō (1429–1441)', + 'Kakitsu (1441–1444)', + 'Bun’an (1444–1449)', + 'Hōtoku (1449–1452)', + 'Kyōtoku (1452–1455)', + 'Kōshō (1455–1457)', + 'Chōroku (1457–1460)', + 'Kanshō (1460–1466)', + 'Bunshō (1466–1467)', + 'Ōnin (1467–1469)', + 'Bunmei (1469–1487)', + 'Chōkyō (1487–1489)', + 'Entoku (1489–1492)', + 'Meiō (1492–1501)', + 'Bunki (1501–1504)', + 'Eishō (1504–1521)', + 'Taiei (1521–1528)', + 'Kyōroku (1528–1532)', + 'Tenbun (1532–1555)', + 'Kōji (1555–1558)', + 'Eiroku (1558–1570)', + 'Genki (1570–1573)', + 'Tenshō (1573–1592)', + 'Bunroku (1592–1596)', + 'Keichō (1596–1615)', + 'Genna (1615–1624)', + 'Kan’ei (1624–1644)', + 'Shōho (1644–1648)', + 'Keian (1648–1652)', + 'Jōō (1652–1655)', + 'Meireki (1655–1658)', + 'Manji (1658–1661)', + 'Kanbun (1661–1673)', + 'Enpō (1673–1681)', + 'Tenna (1681–1684)', + 'Jōkyō (1684–1688)', + 'Genroku (1688–1704)', + 'Hōei (1704–1711)', + 'Shōtoku (1711–1716)', + 'Kyōhō (1716–1736)', + 'Genbun (1736–1741)', + 'Kanpō (1741–1744)', + 'Enkyō (1744–1748)', + 'Kan’en (1748–1751)', + 'Hōreki (1751–1764)', + 'Meiwa (1764–1772)', + 'An’ei (1772–1781)', + 'Tenmei (1781–1789)', + 'Kansei (1789–1801)', + 'Kyōwa (1801–1804)', + 'Bunka (1804–1818)', + 'Bunsei (1818–1830)', + 'Tenpō (1830–1844)', + 'Kōka (1844–1848)', + 'Kaei (1848–1854)', + 'Ansei (1854–1860)', + 'Man’en (1860–1861)', + 'Bunkyū (1861–1864)', + 'Genji (1864–1865)', + 'Keiō (1865–1868)', + 'Meiji', + 'Taishō', + 'Shōwa', + 'Heisei', + ], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, persian: { months: { - narrow: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], - short: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"], - long: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"] + narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + short: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], + long: [ + 'Farvardin', + 'Ordibehesht', + 'Khordad', + 'Tir', + 'Mordad', + 'Shahrivar', + 'Mehr', + 'Aban', + 'Azar', + 'Dey', + 'Bahman', + 'Esfand', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["AP"], - short: ["AP"], - long: ["AP"] + narrow: ['AP'], + short: ['AP'], + long: ['AP'], }, dayPeriods: { - am: "AM", - pm: "PM" - } + am: 'AM', + pm: 'PM', + }, }, roc: { months: { - narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], - short: ["janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."], - long: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"] + narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'], + short: [ + 'janv.', + 'févr.', + 'mars', + 'avr.', + 'mai', + 'juin', + 'juil.', + 'août', + 'sept.', + 'oct.', + 'nov.', + 'déc.', + ], + long: [ + 'janvier', + 'février', + 'mars', + 'avril', + 'mai', + 'juin', + 'juillet', + 'août', + 'septembre', + 'octobre', + 'novembre', + 'décembre', + ], }, days: { - narrow: ["D", "L", "M", "M", "J", "V", "S"], - short: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], - long: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"] + narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'], + short: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], + long: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], }, eras: { - narrow: ["avant RdC", "RdC"], - short: ["avant RdC", "RdC"], - long: ["avant RdC", "RdC"] + narrow: ['avant RdC', 'RdC'], + short: ['avant RdC', 'RdC'], + long: ['avant RdC', 'RdC'], }, dayPeriods: { - am: "AM", - pm: "PM" - } - } - } + am: 'AM', + pm: 'PM', + }, + }, + }, }, number: { - nu: ["latn"], + nu: ['latn'], patterns: { decimal: { - positivePattern: "{number}", - negativePattern: "{minusSign}{number}" + positivePattern: '{number}', + negativePattern: '{minusSign}{number}', }, currency: { - positivePattern: "{number} {currency}", - negativePattern: "{minusSign}{number} {currency}" + positivePattern: '{number} {currency}', + negativePattern: '{minusSign}{number} {currency}', }, percent: { - positivePattern: "{number} {percentSign}", - negativePattern: "{minusSign}{number} {percentSign}" - } + positivePattern: '{number} {percentSign}', + negativePattern: '{minusSign}{number} {percentSign}', + }, }, symbols: { latn: { - decimal: ",", - group: " ", - nan: "NaN", - plusSign: "+", - minusSign: "-", - percentSign: "%", - infinity: "∞" - } + decimal: ',', + group: ' ', + nan: 'NaN', + plusSign: '+', + minusSign: '-', + percentSign: '%', + infinity: '∞', + }, }, currencies: { - ARS: "$AR", - AUD: "$AU", - BEF: "FB", - BMD: "$BM", - BND: "$BN", - BRL: "R$", - BSD: "$BS", - BZD: "$BZ", - CAD: "$CA", - CLP: "$CL", - COP: "$CO", - CYP: "£CY", - EUR: "€", - FJD: "$FJ", - FKP: "£FK", - FRF: "F", - GBP: "£GB", - GIP: "£GI", - IEP: "£IE", - ILP: "£IL", - ILS: "₪", - INR: "₹", - ITL: "₤IT", - KRW: "₩", - LBP: "£LB", - MTP: "£MT", - MXN: "$MX", - NAD: "$NA", - NZD: "$NZ", - RHD: "$RH", - SBD: "$SB", - SGD: "$SG", - SRD: "$SR", - TTD: "$TT", - USD: "$US", - UYU: "$UY", - VND: "₫", - WST: "WS$", - XAF: "FCFA", - XOF: "CFA", - XPF: "FCFP" - } - } + ARS: '$AR', + AUD: '$AU', + BEF: 'FB', + BMD: '$BM', + BND: '$BN', + BRL: 'R$', + BSD: '$BS', + BZD: '$BZ', + CAD: '$CA', + CLP: '$CL', + COP: '$CO', + CYP: '£CY', + EUR: '€', + FJD: '$FJ', + FKP: '£FK', + FRF: 'F', + GBP: '£GB', + GIP: '£GI', + IEP: '£IE', + ILP: '£IL', + ILS: '₪', + INR: '₹', + ITL: '₤IT', + KRW: '₩', + LBP: '£LB', + MTP: '£MT', + MXN: '$MX', + NAD: '$NA', + NZD: '$NZ', + RHD: '$RH', + SBD: '$SB', + SGD: '$SG', + SRD: '$SR', + TTD: '$TT', + USD: '$US', + UYU: '$UY', + VND: '₫', + WST: 'WS$', + XAF: 'FCFA', + XOF: 'CFA', + XPF: 'FCFP', + }, + }, }); }).call(global); global._Intl = global.Intl; global.Intl = global.IntlPolyfill; -Number.prototype.toLocaleString = function(locale, options) { +Number.prototype.toLocaleString = function (locale, options) { let formatter = Intl.NumberFormat(locale, options); return formatter.format(this); -} +}; diff --git a/test/unit/Address.unit.js b/test/unit/Address.unit.js index f6ff0b0c13..0aad3fa462 100644 --- a/test/unit/Address.unit.js +++ b/test/unit/Address.unit.js @@ -3,196 +3,202 @@ import AddressComponent from '../../src/components/address/Address'; import assert from 'power-assert'; import { Formio } from '../../src/Formio'; import _ from 'lodash'; -import { - comp1, - comp2, - comp3, - comp4, -} from './fixtures/address'; - -describe('Address Component', function() { - it('Should build an address component', function() { +import { comp1, comp2, comp3, comp4 } from './fixtures/address'; + +describe('Address Component', function () { + it('Should build an address component', function () { return Harness.testCreate(AddressComponent, comp1); }); - it('Should set default value and clear it on "clear icon" click (openStreetMap provider)', function(done) { + it('Should set default value and clear it on "clear icon" click (openStreetMap provider)', function (done) { const form = _.cloneDeep(comp2); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const address = form.getComponent('address'); - assert.equal(!!address.provider, true); - assert.equal(address.refs.searchInput[0].value, 'Dallas County, Texas, United States'); - const clearIcon = address.refs.removeValueIcon[0]; + Formio.createForm(element, form) + .then((form) => { + const address = form.getComponent('address'); + assert.equal(!!address.provider, true); + assert.equal(address.refs.searchInput[0].value, 'Dallas County, Texas, United States'); + const clearIcon = address.refs.removeValueIcon[0]; - const clickEvent = new Event('click'); - clearIcon.dispatchEvent(clickEvent); + const clickEvent = new Event('click'); + clearIcon.dispatchEvent(clickEvent); - setTimeout(() => { - assert.equal(address.refs.searchInput[0].value, ''); - assert.deepEqual(address.dataValue, address.emptyValue); + setTimeout(() => { + assert.equal(address.refs.searchInput[0].value, ''); + assert.deepEqual(address.dataValue, address.emptyValue); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should disable "clear icon"', function(done) { + it('Should disable "clear icon"', function (done) { const form = _.cloneDeep(comp2); const element = document.createElement('div'); form.components[0].disableClearIcon = true; - Formio.createForm(element, form).then(form => { - const address = form.getComponent('address'); - assert.equal(!!address.provider, true); - assert.equal(address.refs.removeValueIcon.length, 0); + Formio.createForm(element, form) + .then((form) => { + const address = form.getComponent('address'); + assert.equal(!!address.provider, true); + assert.equal(address.refs.removeValueIcon.length, 0); - done(); - }).catch(done); + done(); + }) + .catch(done); }); - it('Test manual mode', function(done) { + it('Test manual mode', function (done) { const form = _.cloneDeep(comp2); const element = document.createElement('div'); form.components[0].disableClearIcon = true; form.components[0].enableManualMode = true; form.components[0].switchToManualModeLabel = 'Check it to switch to manual mode'; - Formio.createForm(element, form).then(form => { - const address = form.getComponent('address'); - assert.equal(!!address.provider, true); - assert.equal(address.mode, 'autocomplete'); - assert.equal(address.refs.modeSwitcher.checked, false, 'Manual mode should be turned off'); - assert.equal(address.refs.modeSwitcher.nextElementSibling.textContent, 'Check it to switch to manual mode', 'Should set custom label for manual mode checkbox'); - - address.components.forEach(comp => { - assert.equal(comp.visible, false, 'Manual mode components should be hidden'); - }); - address.refs.modeSwitcher.checked = true; - - const changeEvent = new Event('change'); - address.refs.modeSwitcher.dispatchEvent(changeEvent); - - setTimeout(() => { - assert.equal(address.refs.modeSwitcher.checked, true, 'Manual mode should be turned on'); - assert.equal(address.mode, 'manual'); - const manualModeValue = { - address1: 'test address1', - address2: 'test address2', - city: 'test city', - country: 'test country', - state: 'test state', - zip: '1111111', - }; - - address.components.forEach(comp => { - assert.equal(comp.visible, true, 'Manual mode components should be visible'); - - const inputEvent = new Event('input'); - const input = comp.refs.input[0]; - input.value = manualModeValue[`${comp.component.key}`]; - input.dispatchEvent(inputEvent); + Formio.createForm(element, form) + .then((form) => { + const address = form.getComponent('address'); + assert.equal(!!address.provider, true); + assert.equal(address.mode, 'autocomplete'); + assert.equal(address.refs.modeSwitcher.checked, false, 'Manual mode should be turned off'); + assert.equal( + address.refs.modeSwitcher.nextElementSibling.textContent, + 'Check it to switch to manual mode', + 'Should set custom label for manual mode checkbox', + ); + + address.components.forEach((comp) => { + assert.equal(comp.visible, false, 'Manual mode components should be hidden'); }); + address.refs.modeSwitcher.checked = true; + + const changeEvent = new Event('change'); + address.refs.modeSwitcher.dispatchEvent(changeEvent); setTimeout(() => { - assert.deepEqual(address.dataValue, { address: manualModeValue, mode: 'manual' }, 'Should set manual mode value'); + assert.equal(address.refs.modeSwitcher.checked, true, 'Manual mode should be turned on'); + assert.equal(address.mode, 'manual'); + const manualModeValue = { + address1: 'test address1', + address2: 'test address2', + city: 'test city', + country: 'test country', + state: 'test state', + zip: '1111111', + }; + + address.components.forEach((comp) => { + assert.equal(comp.visible, true, 'Manual mode components should be visible'); + + const inputEvent = new Event('input'); + const input = comp.refs.input[0]; + input.value = manualModeValue[`${comp.component.key}`]; + input.dispatchEvent(inputEvent); + }); - document.innerHTML = ''; - done(); + setTimeout(() => { + assert.deepEqual( + address.dataValue, + { address: manualModeValue, mode: 'manual' }, + 'Should set manual mode value', + ); + + document.innerHTML = ''; + done(); + }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); - it('Should close modal window without showing dialog if value not changed', function(done) { + it('Should close modal window without showing dialog if value not changed', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const value = { - 'address_components': [ - { - 'long_name': 'Los Angeles', - 'short_name': 'Los Angeles', - types: ['locality', 'political'], + Formio.createForm(element, form) + .then((form) => { + const value = { + address_components: [ + { + long_name: 'Los Angeles', + short_name: 'Los Angeles', + types: ['locality', 'political'], + }, + { + long_name: 'Los Angeles County', + short_name: 'Los Angeles County', + types: ['administrative_area_level_2', 'political'], + }, + { + long_name: 'California', + short_name: 'CA', + types: ['administrative_area_level_1', 'political'], + }, + { + long_name: 'United States', + short_name: 'US', + types: ['country', 'political'], + }, + ], + formatted_address: 'Los Angeles, CA, USA', + geometry: { + location: { lat: 34.0522342, lng: -118.2436849 }, + viewport: { + south: 33.70365193147634, + west: -118.6681759484859, + north: 34.33730608759191, + east: -118.155289077463, + }, }, - { - 'long_name': 'Los Angeles County', - 'short_name': 'Los Angeles County', - types: ['administrative_area_level_2', 'political'], - }, - { - 'long_name': 'California', - 'short_name': 'CA', - types: ['administrative_area_level_1', 'political'], - }, - { - 'long_name': 'United States', - 'short_name': 'US', - types: ['country', 'political'], - }, - ], - 'formatted_address': 'Los Angeles, CA, USA', - geometry: { - location: { lat: 34.0522342, lng: -118.2436849 }, - viewport: { - south: 33.70365193147634, - west: -118.6681759484859, - north: 34.33730608759191, - east: -118.155289077463, - }, - }, - 'place_id': 'ChIJE9on3F3HwoAR9AhGJW_fL-I', - types: ['locality', 'political'], - formattedPlace: 'Los Angeles, CA, USA', - }; - const address = form.getComponent('address'); - const openModalButton = address.componentModal.refs.openModal; - const clickEvent = new Event('click'); - openModalButton.dispatchEvent(clickEvent); - - setTimeout(() => { - assert.equal(address.componentModal.isOpened, true); - address.dataValue = value; - address.componentModal.closeModal(); - address.redraw(); + place_id: 'ChIJE9on3F3HwoAR9AhGJW_fL-I', + types: ['locality', 'political'], + formattedPlace: 'Los Angeles, CA, USA', + }; + const address = form.getComponent('address'); + const openModalButton = address.componentModal.refs.openModal; + const clickEvent = new Event('click'); + openModalButton.dispatchEvent(clickEvent); setTimeout(() => { - address.componentModal.isOpened = true; - openModalButton.dispatchEvent(clickEvent); + assert.equal(address.componentModal.isOpened, true); + address.dataValue = value; + address.componentModal.closeModal(); + address.redraw(); setTimeout(() => { - assert.equal(address.componentModal.isOpened, true); - assert.equal(!!address.dataValue, true); - const modalOverlayButton = address.componentModal.refs.modalOverlay; - modalOverlayButton.dispatchEvent(clickEvent); + address.componentModal.isOpened = true; + openModalButton.dispatchEvent(clickEvent); setTimeout(() => { - assert.equal(!!address.componentModal.isValueChanged(), false); - assert.equal(!!address.componentModal.dialogElement, false); - done(); + assert.equal(address.componentModal.isOpened, true); + assert.equal(!!address.dataValue, true); + const modalOverlayButton = address.componentModal.refs.modalOverlay; + modalOverlayButton.dispatchEvent(clickEvent); + + setTimeout(() => { + assert.equal(!!address.componentModal.isValueChanged(), false); + assert.equal(!!address.componentModal.dialogElement, false); + done(); + }, 200); }, 200); }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should correctly display component that has a conditional based on the Address component', function(done) { + it('Should correctly display component that has a conditional based on the Address component', function (done) { const value = { - 'place_id': 298032694, + place_id: 298032694, licence: 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', - 'osm_type': 'relation', - 'osm_id': 1180520, - boundingbox: [ - 37.4148293, - 37.907822, - -93.191483, - -92.845795 - ], + osm_type: 'relation', + osm_id: 1180520, + boundingbox: [37.4148293, 37.907822, -93.191483, -92.845795], lat: 37.6832712, lon: -93.0219376, - 'display_name': 'Dallas County, Missouri, United States', + display_name: 'Dallas County, Missouri, United States', class: 'boundary', type: 'administrative', importance: 0.6131235182618818, @@ -202,14 +208,14 @@ describe('Address Component', function() { state: 'Missouri', 'ISO3166-2-lvl4': 'US-MO', country: 'United States', - 'country_code': 'us' - } + country_code: 'us', + }, }; const form = _.cloneDeep(comp4); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { + Formio.createForm(element, form).then((form) => { const address = form.getComponent('address'); const textfield = form.getComponent('textField'); diff --git a/test/unit/Button.unit.js b/test/unit/Button.unit.js index fad59def25..bdc5af6395 100644 --- a/test/unit/Button.unit.js +++ b/test/unit/Button.unit.js @@ -4,16 +4,12 @@ import Harness from '../harness'; import ButtonComponent from '../../src/components/button/Button'; import { Formio } from '../../src/Formio'; import sinon from 'sinon'; -import { - comp1, - comp2, - comp3 -} from './fixtures/button'; +import { comp1, comp2, comp3 } from './fixtures/button'; import Webform from '../../src/Webform'; import formWithResetValue from '../formtest/formWithResetValue'; -describe('Button Component', function() { - it('Should build a button component', function() { +describe('Button Component', function () { + it('Should build a button component', function () { return Harness.testCreate(ButtonComponent, comp1).then((component) => { const buttons = Harness.testElements(component, 'button[type="submit"]', 1); for (const button of buttons) { @@ -23,39 +19,42 @@ describe('Button Component', function() { }); }); - it('POST to URL button should pass URL and headers', function(done) { + it('POST to URL button should pass URL and headers', function (done) { const formJson = { - 'type': 'form', - 'components': [{ - 'label': 'Some Field', - 'type': 'textfield', - 'input': true, - 'key': 'someField' + type: 'form', + components: [ + { + label: 'Some Field', + type: 'textfield', + input: true, + key: 'someField', }, { - 'label': 'POST to URL', - 'action': 'url', - 'url': 'someUrl', - 'headers': [{ - 'header': 'testHeader', - 'value': 'testValue' - }], - 'type': 'button', - 'input': true, - 'key': 'postToUrl' - } - ] + label: 'POST to URL', + action: 'url', + url: 'someUrl', + headers: [ + { + header: 'testHeader', + value: 'testValue', + }, + ], + type: 'button', + input: true, + key: 'postToUrl', + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson) - .then(form => { + .then((form) => { const spy = sinon.spy(Formio, 'makeStaticRequest'); form.getComponent('postToUrl').refs.button.click(); const passedUrl = spy.firstCall.args[0]; const passedHeaders = spy.firstCall.lastArg.headers; spy.restore(); assert.deepEqual(passedHeaders, { - 'testHeader': 'testValue' + testHeader: 'testValue', }); assert.equal(passedUrl, 'someUrl'); done(); @@ -63,177 +62,189 @@ describe('Button Component', function() { .catch(done); }); - it('Test on error', function(done) { + it('Test on error', function (done) { const element = document.createElement('div'); Formio.createForm(element, { - components: [{ + components: [ + { type: 'textfield', key: 'a', label: 'A', validate: { - required: true - } + required: true, + }, }, { type: 'button', action: 'submit', key: 'submit', disableOnInvalid: true, - input: true - } - ] - }).then(form => { - form.on('change', () => { - const button = form.getComponent('submit'); - assert(button.disabled, 'Button should be disabled'); - button.emit('submitError'); - setTimeout(() => { - console.log('Text Content: ', button.refs.buttonMessage.innerHTML); - assert.equal(button.refs.buttonMessage.textContent, 'Please check the form and correct all errors before submitting.'); - done(); - }, 100); - }); - form.submission = { - data: {} - }; - }).catch(done); + input: true, + }, + ], + }) + .then((form) => { + form.on('change', () => { + const button = form.getComponent('submit'); + assert(button.disabled, 'Button should be disabled'); + button.emit('submitError'); + setTimeout(() => { + console.log('Text Content: ', button.refs.buttonMessage.innerHTML); + assert.equal( + button.refs.buttonMessage.textContent, + 'Please check the form and correct all errors before submitting.', + ); + done(); + }, 100); + }); + form.submission = { + data: {}, + }; + }) + .catch(done); }); - it('POST to URL button should perform URL interpolation', function(done) { + it('POST to URL button should perform URL interpolation', function (done) { const formJson = { - 'type': 'form', - 'components': [{ - 'label': 'Some Field', - 'type': 'textfield', - 'input': true, - 'key': 'someField' + type: 'form', + components: [ + { + label: 'Some Field', + type: 'textfield', + input: true, + key: 'someField', }, { - 'label': 'URL', - 'type': 'textfield', - 'input': true, - 'key': 'url' + label: 'URL', + type: 'textfield', + input: true, + key: 'url', }, { - 'label': 'POST to URL', - 'action': 'url', - 'url': '{{data.url}}/submission', - 'type': 'button', - 'input': true, - 'key': 'postToUrl' - } - ] + label: 'POST to URL', + action: 'url', + url: '{{data.url}}/submission', + type: 'button', + input: true, + key: 'postToUrl', + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson) - .then(form => { + .then((form) => { form.submission = { data: { - url: 'someUrl' - } + url: 'someUrl', + }, }; - return form.submissionReady - .then(() => { - const spy = sinon.spy(Formio, 'makeStaticRequest'); - form.getComponent('postToUrl').refs.button.click(); - const passedUrl = spy.firstCall.args[0]; - spy.restore(); - assert.equal(passedUrl, 'someUrl/submission'); - done(); - }); + return form.submissionReady.then(() => { + const spy = sinon.spy(Formio, 'makeStaticRequest'); + form.getComponent('postToUrl').refs.button.click(); + const passedUrl = spy.firstCall.args[0]; + spy.restore(); + assert.equal(passedUrl, 'someUrl/submission'); + done(); + }); }) .catch(done); }); - it('POST to URL button should perform headers interpolation', function(done) { + it('POST to URL button should perform headers interpolation', function (done) { const formJson = { - 'type': 'form', - 'components': [{ - 'label': 'Some Field', - 'type': 'textfield', - 'input': true, - 'key': 'someField' + type: 'form', + components: [ + { + label: 'Some Field', + type: 'textfield', + input: true, + key: 'someField', }, { - 'label': 'Header', - 'type': 'textfield', - 'input': true, - 'key': 'header' + label: 'Header', + type: 'textfield', + input: true, + key: 'header', }, { - 'label': 'POST to URL', - 'action': 'url', - 'url': 'someUrl', - 'headers': [{ - 'header': 'testHeader', - 'value': 'Value {{data.header}}' - }], - 'type': 'button', - 'input': true, - 'key': 'postToUrl' - } - ] + label: 'POST to URL', + action: 'url', + url: 'someUrl', + headers: [ + { + header: 'testHeader', + value: 'Value {{data.header}}', + }, + ], + type: 'button', + input: true, + key: 'postToUrl', + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson) - .then(form => { + .then((form) => { form.submission = { data: { someField: 'some value', - header: 'some header' - } + header: 'some header', + }, }; - return form.submissionReady - .then(() => { - const spy = sinon.spy(Formio, 'makeStaticRequest'); - form.getComponent('postToUrl').refs.button.click(); - const passedHeaders = spy.firstCall.lastArg.headers; - spy.restore(); - assert.deepEqual(passedHeaders, { - 'testHeader': 'Value some header' - }); - done(); + return form.submissionReady.then(() => { + const spy = sinon.spy(Formio, 'makeStaticRequest'); + form.getComponent('postToUrl').refs.button.click(); + const passedHeaders = spy.firstCall.lastArg.headers; + spy.restore(); + assert.deepEqual(passedHeaders, { + testHeader: 'Value some header', }); + done(); + }); }) .catch(done); }); - it('Should not change color and show message if the error is silent', function(done) { + it('Should not change color and show message if the error is silent', function (done) { const formJson = { - 'type': 'form', - 'components': [{ - 'label': 'Some Field', - 'type': 'textfield', - 'input': true, - 'key': 'someField' + type: 'form', + components: [ + { + label: 'Some Field', + type: 'textfield', + input: true, + key: 'someField', }, { - 'label': 'Submit', - 'action': 'submit', - 'type': 'button', - 'input': true, - 'key': 'submit' - } - ] + label: 'Submit', + action: 'submit', + type: 'button', + input: true, + key: 'submit', + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson, { - hooks: { - beforeSubmit: function(submission, callback) { - callback({ + hooks: { + beforeSubmit: function (submission, callback) { + callback( + { message: 'Err', component: submission.component, silent: true, - }, submission); - } - } - }) - .then(form => { + }, + submission, + ); + }, + }, + }) + .then((form) => { const button = form.getComponent('submit'); button.emit('submitButton', { state: button.component.state || 'submitted', component: button.component, - instance: button + instance: button, }); setTimeout(() => { assert(!button.refs.button.className.includes('btn-danger submit-fail')); @@ -247,73 +258,79 @@ describe('Button Component', function() { .catch(done); }); - it('Should reset values of all the form\'s components and update properties dependent on values', function(done) { + it("Should reset values of all the form's components and update properties dependent on values", function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); - form.setForm(formWithResetValue).then(() => { - const select = form.getComponent(['showPanel']); - - select.setValue('yes'); - - setTimeout(() => { - const panel = form.getComponent(['panel']); - const textField = form.getComponent(['textField']); - const textArea = form.getComponent(['textArea']); - - assert.equal(panel.visible, true, 'Panel should be visible'); - assert.equal(textField.visible, true, 'TextFiled should be visible'); - assert.equal(textArea.visible, true, 'TextArea should be visible'); + form + .setForm(formWithResetValue) + .then(() => { + const select = form.getComponent(['showPanel']); - const resetButton = form.getComponent(['reset']); - resetButton.emit('resetForm'); + select.setValue('yes'); setTimeout(() => { const panel = form.getComponent(['panel']); const textField = form.getComponent(['textField']); const textArea = form.getComponent(['textArea']); - assert.equal(panel.visible, false, 'Panel should NOT be visible'); - assert.equal(textField.visible, false, 'TextFiled should NOT be visible'); - assert.equal(textArea.visible, false, 'TextArea should NOT be visible'); - done(); + assert.equal(panel.visible, true, 'Panel should be visible'); + assert.equal(textField.visible, true, 'TextFiled should be visible'); + assert.equal(textArea.visible, true, 'TextArea should be visible'); + + const resetButton = form.getComponent(['reset']); + resetButton.emit('resetForm'); + + setTimeout(() => { + const panel = form.getComponent(['panel']); + const textField = form.getComponent(['textField']); + const textArea = form.getComponent(['textArea']); + + assert.equal(panel.visible, false, 'Panel should NOT be visible'); + assert.equal(textField.visible, false, 'TextFiled should NOT be visible'); + assert.equal(textArea.visible, false, 'TextArea should NOT be visible'); + done(); + }, 300); }, 300); - }, 300); - }).catch((err) => done(err)); + }) + .catch((err) => done(err)); }); - it('Should perform custom logic', function(done) { + it('Should perform custom logic', function (done) { const element = document.createElement('div'); const form = new Webform(element); const testForm = { - components: [{ + components: [ + { type: 'number', key: 'number', - label: 'Number' + label: 'Number', }, { type: 'button', key: 'custom', label: 'Custom', action: 'custom', - custom: 'data[\'number\'] = 5555' - } - ] + custom: "data['number'] = 5555", + }, + ], }; - form.setForm(testForm) + form + .setForm(testForm) .then(() => { const button = form.getComponent('custom'); const changeEventTriggered = sinon.spy(button, 'triggerChange'); button.refs.button.click(); - assert(changeEventTriggered.calledOnce, 'Click on custom button should trigger change event'); + assert( + changeEventTriggered.calledOnce, + 'Click on custom button should trigger change event', + ); form.on('change', () => { - const { - data - } = form.submission; + const { data } = form.submission; assert.deepEqual(data, { number: 5555, - custom: true + custom: true, }); done(); }); @@ -321,121 +338,131 @@ describe('Button Component', function() { .catch((err) => done(err)); }); - it('Should correctly set theme', function(done) { + it('Should correctly set theme', function (done) { const form = _.cloneDeep(comp2); const element = document.createElement('div'); - Formio.createForm(element, form).then(formObj => { - const btns = formObj.components; - const theme = ['warning', 'danger', 'success', 'info', 'secondary', 'primary']; + Formio.createForm(element, form) + .then((formObj) => { + const btns = formObj.components; + const theme = ['warning', 'danger', 'success', 'info', 'secondary', 'primary']; - _.each(btns, (btn, index) => { - const btnClass = `btn-${theme[index]}`; - const includeClass = btn.refs.button.classList.contains(btnClass); - assert.equal(includeClass, true, `Should set ${theme[index]} theme for button`); - }); + _.each(btns, (btn, index) => { + const btnClass = `btn-${theme[index]}`; + const includeClass = btn.refs.button.classList.contains(btnClass); + assert.equal(includeClass, true, `Should set ${theme[index]} theme for button`); + }); - done(); - }).catch(done); + done(); + }) + .catch(done); }); - it('Should render block btn', function(done) { + it('Should render block btn', function (done) { const form = _.cloneDeep(comp2); - form.components = [{ - label: 'Submit', - showValidations: false, - block: true, - tableView: false, - key: 'submit', - type: 'button', - input: true - }]; + form.components = [ + { + label: 'Submit', + showValidations: false, + block: true, + tableView: false, + key: 'submit', + type: 'button', + input: true, + }, + ]; const element = document.createElement('div'); - Formio.createForm(element, form).then(formObj => { - const btn = formObj.components[0]; - const btnClass = 'btn-block'; - const includeClass = btn.refs.button.classList.contains(btnClass); + Formio.createForm(element, form) + .then((formObj) => { + const btn = formObj.components[0]; + const btnClass = 'btn-block'; + const includeClass = btn.refs.button.classList.contains(btnClass); - assert.equal(includeClass, true, 'Should set btn-block class for button'); + assert.equal(includeClass, true, 'Should set btn-block class for button'); - done(); - }).catch(done); + done(); + }) + .catch(done); }); - it('Test event, reset, post, save in state actions', function(done) { + it('Test event, reset, post, save in state actions', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); const originalMakeRequest = Formio.makeStaticRequest; - Formio.makeStaticRequest = function(url, method, data) { + Formio.makeStaticRequest = function (url, method, data) { assert.equal(url, 'https://test.com'); assert.equal(method, 'POST'); assert.deepEqual(data.data, { event: false, post: true, reset: false, - saveInState: false + saveInState: false, }); - return new Promise(resolve => { + return new Promise((resolve) => { resolve({ - ...data + ...data, }); }); }; - Formio.createForm(element, form).then(form => { - const formio = new Formio('http://test.localhost/test', {}); - - formio.makeRequest = (type, url, method, data) => { - assert.equal(data.state, 'testState'); - assert.equal(method.toUpperCase(), 'POST'); + Formio.createForm(element, form) + .then((form) => { + const formio = new Formio('http://test.localhost/test', {}); - return new Promise(resolve => resolve({ - ...data - })); - }; + formio.makeRequest = (type, url, method, data) => { + assert.equal(data.state, 'testState'); + assert.equal(method.toUpperCase(), 'POST'); - form.formio = formio; + return new Promise((resolve) => + resolve({ + ...data, + }), + ); + }; - const click = (btnComp) => { - const elem = btnComp.refs.button; - const clickEvent = new Event('click'); - elem.dispatchEvent(clickEvent); - }; + form.formio = formio; - const saveInStateBtn = form.getComponent('saveInState'); - click(saveInStateBtn); + const click = (btnComp) => { + const elem = btnComp.refs.button; + const clickEvent = new Event('click'); + elem.dispatchEvent(clickEvent); + }; - setTimeout(() => { - const eventBtn = form.getComponent('event'); - click(eventBtn); + const saveInStateBtn = form.getComponent('saveInState'); + click(saveInStateBtn); setTimeout(() => { - const numberComp = form.getComponent('number'); - assert.equal(numberComp.dataValue, 2); - assert.equal(numberComp.getValue(), 2); - - const resetBtn = form.getComponent('reset'); - click(resetBtn); + const eventBtn = form.getComponent('event'); + click(eventBtn); setTimeout(() => { const numberComp = form.getComponent('number'); - assert.equal(numberComp.dataValue, null); - assert.equal(numberComp.getValue(), null); + assert.equal(numberComp.dataValue, 2); + assert.equal(numberComp.getValue(), 2); - const postBtn = form.getComponent('post'); - click(postBtn); + const resetBtn = form.getComponent('reset'); + click(resetBtn); setTimeout(() => { - Formio.makeStaticRequest = originalMakeRequest; - done(); + const numberComp = form.getComponent('number'); + assert.equal(numberComp.dataValue, null); + assert.equal(numberComp.getValue(), null); + + const postBtn = form.getComponent('post'); + click(postBtn); + + setTimeout(() => { + Formio.makeStaticRequest = originalMakeRequest; + done(); + }, 300); }, 300); }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); }); diff --git a/test/unit/CDN.unit.js b/test/unit/CDN.unit.js index 3bc0f843f9..bab62bfb35 100644 --- a/test/unit/CDN.unit.js +++ b/test/unit/CDN.unit.js @@ -1,14 +1,14 @@ import CDN from '../../src/CDN'; import assert from 'power-assert'; -describe('Formio.js CDN class Tests', function() { +describe('Formio.js CDN class Tests', function () { let cdn; - before(function() { + before(function () { cdn = new CDN('https://cdn.form.io'); }); - it('Should give correct CDN URLs', function() { + it('Should give correct CDN URLs', function () { for (const lib in cdn.libs) { let expectedUrl = `${cdn.baseUrl}/${lib}/${cdn.libs[lib]}`; if (cdn.libs[lib] === '' || cdn.libs[lib] === 'latest') { @@ -18,12 +18,12 @@ describe('Formio.js CDN class Tests', function() { } }); - it('Should update lib versions', function() { + it('Should update lib versions', function () { cdn.setVersion('grid', '1.1.1'); assert.equal(cdn.grid, 'https://cdn.form.io/grid/1.1.1'); }); - it('Shoudl override CDN urls', function() { + it('Shoudl override CDN urls', function () { cdn.setOverrideUrl('grid', 'http://cdn.test-form.io'); cdn.setVersion('grid', 'latest'); assert.equal(cdn.grid, 'http://cdn.test-form.io/grid'); @@ -31,7 +31,7 @@ describe('Formio.js CDN class Tests', function() { cdn.setOverrideUrl('ace', 'http://cdn.test-form.io'); }); - it('Should remove overrides', function() { + it('Should remove overrides', function () { cdn.removeOverrides(); for (const lib in cdn.libs) { let expectedUrl = `${cdn.baseUrl}/${lib}/${cdn.libs[lib]}`; diff --git a/test/unit/Checkbox.unit.js b/test/unit/Checkbox.unit.js index fe253d1648..10d8adba55 100644 --- a/test/unit/Checkbox.unit.js +++ b/test/unit/Checkbox.unit.js @@ -10,22 +10,25 @@ import { comp3, comp4, comp5, - comp6 + comp6, } from './fixtures/checkbox'; -describe('Checkbox Component', function() { - it('Should build a checkbox component', function() { +describe('Checkbox Component', function () { + it('Should build a checkbox component', function () { return Harness.testCreate(CheckBoxComponent, comp1).then((component) => { const inputs = Harness.testElements(component, 'input[type="checkbox"]', 1); - for (let i=0; i < inputs.length; i++) { - assert(inputs[i].getAttribute('class').indexOf('form-check-input') !== -1, 'No form-check-input class'); + for (let i = 0; i < inputs.length; i++) { + assert( + inputs[i].getAttribute('class').indexOf('form-check-input') !== -1, + 'No form-check-input class', + ); assert.equal(inputs[i].name, `data[${comp1.key}]`); } Harness.testElements(component, 'span', 1); }); }); - it('Span should have correct text label', function() { + it('Span should have correct text label', function () { return Harness.testCreate(CheckBoxComponent, comp1).then((component) => { const checkboxes = component.element.querySelectorAll('input[ref="input"]'); assert.equal(checkboxes.length, 1); @@ -33,27 +36,30 @@ describe('Checkbox Component', function() { assert(componentClass.indexOf('form-check-input') !== -1, 'No form-check-input class.'); const labels = component.element.querySelectorAll('label'); assert.equal(labels.length, 1); - assert(labels[0].getAttribute('class').indexOf('form-check-label') !== -1, 'No form-check-label class'); + assert( + labels[0].getAttribute('class').indexOf('form-check-label') !== -1, + 'No form-check-label class', + ); const spans = labels[0].querySelectorAll('span'); assert.equal(spans.length, 1); assert.equal(spans[0].innerHTML, 'Check me'); }); }); - it('Should be able to set and get data', function() { + it('Should be able to set and get data', function () { return Harness.testCreate(CheckBoxComponent, comp1).then((component) => { Harness.testSetGet(component, 1); Harness.testSetGet(component, 0); }); }); - it('Should be able to set custom default value', function() { + it('Should be able to set custom default value', function () { return Harness.testCreate(CheckBoxComponent, customDefaultComponent).then((component) => { assert.equal(component.dataValue, true); - }); + }); }); - it('Should be able to unselect a checkbox component with the radio input type', function() { + it('Should be able to unselect a checkbox component with the radio input type', function () { return Harness.testCreate(CheckBoxComponent, comp2).then((component) => { const input = Harness.testElements(component, 'input[type="radio"]', 1)[0]; Harness.clickElement(component, input); @@ -63,83 +69,91 @@ describe('Checkbox Component', function() { }); }); - it('Should be able to submit default checkbox data with the radio input type', function(done) { + it('Should be able to submit default checkbox data with the radio input type', function (done) { const form = _.cloneDeep(comp6); const element = document.createElement('div'); const inputName = form.components[0].name; - Formio.createForm(element, form).then(form => { - const submit = form.getComponent('submit'); - const clickEvent = new Event('click'); - const submitBtn = submit.refs.button; - submitBtn.dispatchEvent(clickEvent); + Formio.createForm(element, form) + .then((form) => { + const submit = form.getComponent('submit'); + const clickEvent = new Event('click'); + const submitBtn = submit.refs.button; + submitBtn.dispatchEvent(clickEvent); - setTimeout(() => { - assert.equal(form.submission.data[inputName], ''); - const radioCheckBox = form.getComponent('checkbox'); - const radio = Harness.testElements(radioCheckBox, 'input[type="radio"]', 1)[0]; - Harness.clickElement(radioCheckBox, radio); setTimeout(() => { - assert.equal(form.submission.data[inputName], 'ok'); + assert.equal(form.submission.data[inputName], ''); + const radioCheckBox = form.getComponent('checkbox'); + const radio = Harness.testElements(radioCheckBox, 'input[type="radio"]', 1)[0]; Harness.clickElement(radioCheckBox, radio); setTimeout(() => { - assert.equal(form.submission.data[inputName], ''); - done(); + assert.equal(form.submission.data[inputName], 'ok'); + Harness.clickElement(radioCheckBox, radio); + setTimeout(() => { + assert.equal(form.submission.data[inputName], ''); + done(); + }, 200); }, 200); - }, 200); - }, 200); - }).catch((err) => done(err)); + }, 200); + }) + .catch((err) => done(err)); }); - it('Should render red asterisk for preview template of the modal required checkbox ', function(done) { - Harness.testCreate(CheckBoxComponent, comp3).then((component) => { - const label = component.element.querySelector('.control-label'); - assert(label.className.includes('field-required')); - done(); - }).catch(done); + it('Should render red asterisk for preview template of the modal required checkbox ', function (done) { + Harness.testCreate(CheckBoxComponent, comp3) + .then((component) => { + const label = component.element.querySelector('.control-label'); + assert(label.className.includes('field-required')); + done(); + }) + .catch(done); }); - it('Should hide component with conditional logic when checkbox component with the radio input type is unchecked', function(done) { + it('Should hide component with conditional logic when checkbox component with the radio input type is unchecked', function (done) { const form = _.cloneDeep(comp4); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const radioCheckbox = form.getComponent('p1'); - const contentComp = form.getComponent('p1Content'); - assert.equal(contentComp.visible, false); - const radio = Harness.testElements(radioCheckbox, 'input[type="radio"]', 1)[0]; - Harness.clickElement(radioCheckbox, radio); - setTimeout(() => { - assert.equal(contentComp.visible, true); + Formio.createForm(element, form) + .then((form) => { + const radioCheckbox = form.getComponent('p1'); + const contentComp = form.getComponent('p1Content'); + assert.equal(contentComp.visible, false); + const radio = Harness.testElements(radioCheckbox, 'input[type="radio"]', 1)[0]; Harness.clickElement(radioCheckbox, radio); setTimeout(() => { - assert.equal(contentComp.visible, false); - done(); + assert.equal(contentComp.visible, true); + Harness.clickElement(radioCheckbox, radio); + setTimeout(() => { + assert.equal(contentComp.visible, false); + done(); + }, 300); }, 300); - }, 300); - }).catch((err) => done(err)); + }) + .catch((err) => done(err)); }); - it('Should set the value for the checkbox if it set before the component from checbox`s condition', function(done) { + it('Should set the value for the checkbox if it set before the component from checbox`s condition', function (done) { const form = _.cloneDeep(comp5); const element = document.createElement('div'); const data = { textField: 'test', checkboxBefore: true, - checkboxAfter: true + checkboxAfter: true, }; - Formio.createForm(element, form).then(form => { - form.setValue({ data }, { sanitize: true }); - const checkboxBefore = form.getComponent('checkboxBefore'); - const checkboxAfter = form.getComponent('checkboxAfter'); - setTimeout(() => { - const inputBefore = Harness.testElements(checkboxBefore, 'input[type="checkbox"]', 1)[0]; - assert.equal(inputBefore.checked, true); - const inputAfter = Harness.testElements(checkboxAfter, 'input[type="checkbox"]', 1)[0]; - assert.equal(inputAfter.checked, true); - assert.deepEqual(form.data, data); - done(); - }, 300); - }).catch((err) => done(err)); + Formio.createForm(element, form) + .then((form) => { + form.setValue({ data }, { sanitize: true }); + const checkboxBefore = form.getComponent('checkboxBefore'); + const checkboxAfter = form.getComponent('checkboxAfter'); + setTimeout(() => { + const inputBefore = Harness.testElements(checkboxBefore, 'input[type="checkbox"]', 1)[0]; + assert.equal(inputBefore.checked, true); + const inputAfter = Harness.testElements(checkboxAfter, 'input[type="checkbox"]', 1)[0]; + assert.equal(inputAfter.checked, true); + assert.deepEqual(form.data, data); + done(); + }, 300); + }) + .catch((err) => done(err)); }); }); diff --git a/test/unit/Columns.unit.js b/test/unit/Columns.unit.js index 11fc2a5df8..77afc37fa1 100644 --- a/test/unit/Columns.unit.js +++ b/test/unit/Columns.unit.js @@ -1,95 +1,105 @@ import Harness from '../harness'; import ColumnsComponent from '../../src/components/columns/Columns'; import assert from 'power-assert'; -import { - comp1, - comp2, - comp3 -} from './fixtures/columns'; +import { comp1, comp2, comp3 } from './fixtures/columns'; -describe('Columns Component', function() { - it('Should build a columns component', function() { +describe('Columns Component', function () { + it('Should build a columns component', function () { return Harness.testCreate(ColumnsComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 2); }); }); - it('Should be auto-adjusting when auto adjust is set to true', function(done) { + it('Should be auto-adjusting when auto adjust is set to true', function (done) { Harness.testCreate(ColumnsComponent, comp2) - .then((component) => { - const columns = component.component.columns; - assert.equal(columns.every(col => col.currentWidth === 2), true); - const oddIndexes = [0, 2, 4]; // 0 column has 2 textfields - oddIndexes.forEach(i => columns[i].components[0].hidden = true); // we're setting hidden for odd columns - // initially all components aren't hidden and have default width = 2 - component.rebuild(); // rebuild component to check conditions + .then((component) => { + const columns = component.component.columns; + assert.equal( + columns.every((col) => col.currentWidth === 2), + true, + ); + const oddIndexes = [0, 2, 4]; // 0 column has 2 textfields + oddIndexes.forEach((i) => (columns[i].components[0].hidden = true)); // we're setting hidden for odd columns + // initially all components aren't hidden and have default width = 2 + component.rebuild(); // rebuild component to check conditions - oddIndexes.forEach(i => { - if (i === 0) { - assert.equal(columns[i].currentWidth, 2, `column[${i}] should have width = 2`); // it has at least a component as visible - } - else { - assert.equal(columns[i].currentWidth, 0, `column[${i}] should have width = 0`); // columns which has no visible components should have currentWidth as 0 - } - }); + oddIndexes.forEach((i) => { + if (i === 0) { + assert.equal(columns[i].currentWidth, 2, `column[${i}] should have width = 2`); // it has at least a component as visible + } else { + assert.equal(columns[i].currentWidth, 0, `column[${i}] should have width = 0`); // columns which has no visible components should have currentWidth as 0 + } + }); - oddIndexes.forEach(i => columns[i].components[0].hidden = false); // we're setting visible for odd columns again - component.rebuild(); // rebuild component to check conditions - assert.equal(columns.every(col => col.currentWidth === 2), true, 'all columns should have width = 2'); // ensure we have initial width - }) - .then(done) - .catch(done); + oddIndexes.forEach((i) => (columns[i].components[0].hidden = false)); // we're setting visible for odd columns again + component.rebuild(); // rebuild component to check conditions + assert.equal( + columns.every((col) => col.currentWidth === 2), + true, + 'all columns should have width = 2', + ); // ensure we have initial width + }) + .then(done) + .catch(done); }); - it('Should clear fields in modal window after confirming to clear data in dialog window', function(done) { - Harness.testCreate(ColumnsComponent, comp3).then((component) => { - const hiddenModalWindow = component.element.querySelector('.component-rendering-hidden'); - assert.equal(!!hiddenModalWindow, true); + it('Should clear fields in modal window after confirming to clear data in dialog window', function (done) { + Harness.testCreate(ColumnsComponent, comp3) + .then((component) => { + const hiddenModalWindow = component.element.querySelector('.component-rendering-hidden'); + assert.equal(!!hiddenModalWindow, true); - const clickEvent = new Event('click'); - const openModalElement = component.refs.openModal; - //open modal edit window - openModalElement.dispatchEvent(clickEvent); - - setTimeout(() => { - assert.equal(!!component.element.querySelector('.component-rendering-hidden'), false); - - const inputEvent = new Event('input'); - const columnsInputField = component.element.querySelector('[name="data[textField]"]'); - - columnsInputField.value = 'alexy@form.io'; - columnsInputField.dispatchEvent(inputEvent); + const clickEvent = new Event('click'); + const openModalElement = component.refs.openModal; + //open modal edit window + openModalElement.dispatchEvent(clickEvent); setTimeout(() => { - assert.equal(component.element.querySelector('[name="data[textField]"]').value, 'alexy@form.io'); + assert.equal(!!component.element.querySelector('.component-rendering-hidden'), false); - const clickEvent = new Event('click'); - const modalOverlay = component.refs.modalOverlay; - //click outside modal edit window - modalOverlay.dispatchEvent(clickEvent); + const inputEvent = new Event('input'); + const columnsInputField = component.element.querySelector('[name="data[textField]"]'); + + columnsInputField.value = 'alexy@form.io'; + columnsInputField.dispatchEvent(inputEvent); setTimeout(() => { - assert.equal(!!component.componentModal.dialog, true); + assert.equal( + component.element.querySelector('[name="data[textField]"]').value, + 'alexy@form.io', + ); const clickEvent = new Event('click'); - const btnForCleaningValues = document.querySelector('[ref="dialogYesButton"]'); - //click on 'yes, delete it' button inside alert window - btnForCleaningValues.dispatchEvent(clickEvent); + const modalOverlay = component.refs.modalOverlay; + //click outside modal edit window + modalOverlay.dispatchEvent(clickEvent); setTimeout(() => { + assert.equal(!!component.componentModal.dialog, true); + const clickEvent = new Event('click'); - const openModalElement = component.refs.openModal; - //open edit modal window again - openModalElement.dispatchEvent(clickEvent); + const btnForCleaningValues = document.querySelector('[ref="dialogYesButton"]'); + //click on 'yes, delete it' button inside alert window + btnForCleaningValues.dispatchEvent(clickEvent); setTimeout(() => { - assert.equal(component.element.querySelector('[name="data[textField]"]').value, ''); - done(); + const clickEvent = new Event('click'); + const openModalElement = component.refs.openModal; + //open edit modal window again + openModalElement.dispatchEvent(clickEvent); + + setTimeout(() => { + assert.equal( + component.element.querySelector('[name="data[textField]"]').value, + '', + ); + done(); + }, 100); }, 100); }, 100); }, 100); }, 100); - }, 100); - }).catch(done); + }) + .catch(done); }); }); diff --git a/test/unit/Component.unit.js b/test/unit/Component.unit.js index 604cc1d149..6f55c8d13f 100644 --- a/test/unit/Component.unit.js +++ b/test/unit/Component.unit.js @@ -9,8 +9,8 @@ import { comp1, comp4, comp3, comp5, comp6, comp7 } from './fixtures/component'; import _merge from 'lodash/merge'; import { Formio } from '../../src/index'; -describe('Component', function() { - it('Should create a Component', function(done) { +describe('Component', function () { + it('Should create a Component', function (done) { const component = new Component(); // Test that we have a proper constructed component. @@ -21,134 +21,196 @@ describe('Component', function() { done(); }); - it('Should build a base component', function() { + it('Should build a base component', function () { return Harness.testCreate(Component, { type: 'base' }).then((component) => { const element = component.element.querySelector('[ref="component"]'); assert.equal(element.textContent.trim(), 'Unknown component: base'); }); }); - it('Should provide required validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { required: true } - })).then((component) => Harness.testComponent(component, { - bad: { - value: '', - field: 'firstName', - error: 'First Name is required' - }, - good: { - value: 'te' - } - }, done)).catch(done); + it('Should provide required validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { required: true }, + }), + ) + .then((component) => + Harness.testComponent( + component, + { + bad: { + value: '', + field: 'firstName', + error: 'First Name is required', + }, + good: { + value: 'te', + }, + }, + done, + ), + ) + .catch(done); }); - it('Should provide minLength validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { minLength: 2 } - })).then((component) => Harness.testComponent(component, { - bad: { - value: 't', - field: 'firstName', - error: 'First Name must have at least 2 characters.' - }, - good: { - value: 'te' - } - }, done)); + it('Should provide minLength validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { minLength: 2 }, + }), + ).then((component) => + Harness.testComponent( + component, + { + bad: { + value: 't', + field: 'firstName', + error: 'First Name must have at least 2 characters.', + }, + good: { + value: 'te', + }, + }, + done, + ), + ); }); - it('Should provide maxLength validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { maxLength: 5 } - })).then((component) => Harness.testComponent(component, { - bad: { - value: 'testte', - field: 'firstName', - error: 'First Name must have no more than 5 characters.' - }, - good: { - value: 'te' - } - }, done)); + it('Should provide maxLength validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { maxLength: 5 }, + }), + ).then((component) => + Harness.testComponent( + component, + { + bad: { + value: 'testte', + field: 'firstName', + error: 'First Name must have no more than 5 characters.', + }, + good: { + value: 'te', + }, + }, + done, + ), + ); }); - it('Should provide maxWords validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { maxWords: 2 } - })).then((component) => Harness.testComponent(component, { - bad: { - value: 'test test test', - field: 'firstName', - error: 'First Name must have no more than 2 words.' - }, - good: { - value: 'te st' - } - }, done)); + it('Should provide maxWords validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { maxWords: 2 }, + }), + ).then((component) => + Harness.testComponent( + component, + { + bad: { + value: 'test test test', + field: 'firstName', + error: 'First Name must have no more than 2 words.', + }, + good: { + value: 'te st', + }, + }, + done, + ), + ); }); - it('Should provide minWords validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { minWords: 2 } - })).then((component) => Harness.testComponent(component, { - bad: { - value: 'test', - field: 'firstName', - error: 'First Name must have at least 2 words.' - }, - good: { - value: 'te st' - } - }, done)); + it('Should provide minWords validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { minWords: 2 }, + }), + ).then((component) => + Harness.testComponent( + component, + { + bad: { + value: 'test', + field: 'firstName', + error: 'First Name must have at least 2 words.', + }, + good: { + value: 'te st', + }, + }, + done, + ), + ); }); - it('Should provide custom validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { - custom: 'valid = (input !== "Joe") ? true : "You cannot be Joe"' - } - })).then((component) => Harness.testComponent(component, { - bad: { - value: 'Joe', - field: 'firstName', - error: 'You cannot be Joe' - }, - good: { - value: 'Tom' - } - }, done)); + it('Should provide custom validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { + custom: 'valid = (input !== "Joe") ? true : "You cannot be Joe"', + }, + }), + ).then((component) => + Harness.testComponent( + component, + { + bad: { + value: 'Joe', + field: 'firstName', + error: 'You cannot be Joe', + }, + good: { + value: 'Tom', + }, + }, + done, + ), + ); }); - it('Should provide json validation', function(done) { - Harness.testCreate(Component, _merge({}, comp1, { - validate: { - json: { - 'if': [ - { - '===': [ - { var: 'data.firstName' }, - 'Joe' - ] - }, - true, - 'You must be Joe' - ] - } - } - })).then((component) => Harness.testComponent(component, { - bad: { - value: 'Tom', - field: 'firstName', - error: 'You must be Joe' - }, - good: { - value: 'Joe' - } - }, done)); + it('Should provide json validation', function (done) { + Harness.testCreate( + Component, + _merge({}, comp1, { + validate: { + json: { + if: [ + { + '===': [{ var: 'data.firstName' }, 'Joe'], + }, + true, + 'You must be Joe', + ], + }, + }, + }), + ).then((component) => + Harness.testComponent( + component, + { + bad: { + value: 'Tom', + field: 'firstName', + error: 'You must be Joe', + }, + good: { + value: 'Joe', + }, + }, + done, + ), + ); }); - it('Should mark as invalid calculated fields that are invalid', function(done) { + it('Should mark as invalid calculated fields that are invalid', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); const formJson = { @@ -162,7 +224,7 @@ describe('Component', function() { inputFormat: 'plain', key: 'a', type: 'number', - input: true + input: true, }, { label: 'B', @@ -174,41 +236,45 @@ describe('Component', function() { inputFormat: 'plain', calculateValue: 'value = data.a + 1;', validate: { - custom: 'valid = input <= 10 ? true : \'B should be less or equal to 10\';' + custom: "valid = input <= 10 ? true : 'B should be less or equal to 10';", }, key: 'b', type: 'number', - input: true - } + input: true, + }, ], }; - form.setForm(formJson).then(() => { - return form.setSubmission({ - data: { - a: 1 - } - }); - }) - .then(() => { - setTimeout(() => { - const a = form.getComponent('a'); - a.updateComponentValue(10); - setTimeout(()=> { - const b = form.getComponent('b'); - expect(b.refs.messageContainer?.innerHTML.indexOf('B should be less or equal to 10') > -1).to.be.true; - expect(b.refs.input[0].classList.contains('is-invalid')).to.be.true; - done(); + form + .setForm(formJson) + .then(() => { + return form.setSubmission({ + data: { + a: 1, + }, + }); + }) + .then(() => { + setTimeout(() => { + const a = form.getComponent('a'); + a.updateComponentValue(10); + setTimeout(() => { + const b = form.getComponent('b'); + expect( + b.refs.messageContainer?.innerHTML.indexOf('B should be less or equal to 10') > -1, + ).to.be.true; + expect(b.refs.input[0].classList.contains('is-invalid')).to.be.true; + done(); + }, 300); }, 300); - }, 300); - }) - .catch(done); + }) + .catch(done); }); - describe('shouldSkipValidation', function() { - it('should return true if component is hidden', function(done) { + describe('shouldSkipValidation', function () { + it('should return true if component is hidden', function (done) { Harness.testCreate(Component, comp1) - .then(cmp => { + .then((cmp) => { cmp.visible = false; cmp.checkCondition = () => true; expect(cmp.visible).to.be.false; @@ -219,9 +285,9 @@ describe('Component', function() { .catch(done); }); - it('should return true if component is conditionally hidden', function(done) { + it('should return true if component is conditionally hidden', function (done) { Harness.testCreate(Component, comp1) - .then(cmp => { + .then((cmp) => { cmp.visible = true; cmp.checkCondition = () => false; expect(cmp.visible).to.be.true; @@ -232,9 +298,9 @@ describe('Component', function() { .catch(done); }); - it('should return false if not hidden', function(done) { + it('should return false if not hidden', function (done) { Harness.testCreate(Component, comp1) - .then(cmp => { + .then((cmp) => { cmp.visible = true; cmp.checkCondition = () => true; expect(cmp.visible).to.be.true; @@ -246,29 +312,45 @@ describe('Component', function() { }); }); - describe('Component Modal', function() { - it('Modal window should stay opened after redrawing component if it was opened ont hte moment of calling', function(done) { - Harness.testCreate(Component, comp3).then((component) => { - component.componentModal.openModal(); - component.redraw().then(() => { - const isVisible = !component.componentModal.refs.modalWrapper.classList.contains('component-rendering-hidden'); - assert(isVisible); - done(); - }).catch(done); - }).catch(done); + describe('Component Modal', function () { + it('Modal window should stay opened after redrawing component if it was opened ont hte moment of calling', function (done) { + Harness.testCreate(Component, comp3) + .then((component) => { + component.componentModal.openModal(); + component + .redraw() + .then(() => { + const isVisible = !component.componentModal.refs.modalWrapper.classList.contains( + 'component-rendering-hidden', + ); + assert(isVisible); + done(); + }) + .catch(done); + }) + .catch(done); }); }); - it('Should return value for HTML mode', function() { + it('Should return value for HTML mode', function () { return Harness.testCreate(Component, comp1).then((component) => { - assert.equal(component.itemValueForHTMLMode(['option 1', 'option 2', 'option 3']), 'option 1, option 2, option 3'); - assert.equal(component.itemValueForHTMLMode(['option 1', ['option 2', 'option 3']]), 'option 1, option 2, option 3'); - assert.equal(component.itemValueForHTMLMode(['2020-03-18T15:00:00.000Z', '2020-03-31T09:05:00.000Z']), '2020-03-18T15:00:00.000Z, 2020-03-31T09:05:00.000Z'); + assert.equal( + component.itemValueForHTMLMode(['option 1', 'option 2', 'option 3']), + 'option 1, option 2, option 3', + ); + assert.equal( + component.itemValueForHTMLMode(['option 1', ['option 2', 'option 3']]), + 'option 1, option 2, option 3', + ); + assert.equal( + component.itemValueForHTMLMode(['2020-03-18T15:00:00.000Z', '2020-03-31T09:05:00.000Z']), + '2020-03-18T15:00:00.000Z, 2020-03-31T09:05:00.000Z', + ); assert.equal(component.itemValueForHTMLMode('test'), 'test'); }); }); - it('Should protect against change loops', function(done) { + it('Should protect against change loops', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); const formJson = { @@ -282,21 +364,23 @@ describe('Component', function() { ], }; - form.setForm(formJson).then(() => { - const textField = form.getComponent('textField'); - const spy = sinon.spy(textField, 'calculateComponentValue'); - form.onChange({ textField: 'test' }); + form + .setForm(formJson) + .then(() => { + const textField = form.getComponent('textField'); + const spy = sinon.spy(textField, 'calculateComponentValue'); + form.onChange({ textField: 'test' }); - setTimeout(() => { - expect(spy.calledOnce).to.be.true; + setTimeout(() => { + expect(spy.calledOnce).to.be.true; - done(); - }, 500); - }) - .catch((err) => done(err)); + done(); + }, 500); + }) + .catch((err) => done(err)); }); - it('Should mark as invalid only invalid fields in multiple components', function(done) { + it('Should mark as invalid only invalid fields in multiple components', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); const formJson = { @@ -306,114 +390,127 @@ describe('Component', function() { tableView: true, multiple: true, validate: { - required: true + required: true, }, key: 'email', type: 'email', - input: true + input: true, }, { type: 'button', - key: 'submit' - } + key: 'submit', + }, ], }; - form.setForm(formJson).then(() => { - return form.setSubmission({ - data: { - email: [ - 'oleg@form.io', - 'oleg@form', - '', - ] - } - }); - }) - .then(() => { - const submitButton = form.getComponent('submit'); - submitButton.refs.button.click(); - setTimeout(() => { - const email = form.getComponent('email'); - expect(email.refs.input[0].classList.contains('is-invalid')).to.be.false; - expect(email.refs.input[1].classList.contains('is-invalid')).to.be.true; - expect(email.refs.input[2].classList.contains('is-invalid')).to.be.true; - done(); - }, 300); - }) - .catch(done); + form + .setForm(formJson) + .then(() => { + return form.setSubmission({ + data: { + email: ['oleg@form.io', 'oleg@form', ''], + }, + }); + }) + .then(() => { + const submitButton = form.getComponent('submit'); + submitButton.refs.button.click(); + setTimeout(() => { + const email = form.getComponent('email'); + expect(email.refs.input[0].classList.contains('is-invalid')).to.be.false; + expect(email.refs.input[1].classList.contains('is-invalid')).to.be.true; + expect(email.refs.input[2].classList.contains('is-invalid')).to.be.true; + done(); + }, 300); + }) + .catch(done); }); - it('Should sanitize HTML even if options.pdf is set', function(done) { + it('Should sanitize HTML even if options.pdf is set', function (done) { const component = new Component({}, { pdf: true }); - assert.equal(component.sanitize(''), ''); + assert.equal( + component.sanitize(''), + '', + ); done(); }); - describe('shouldDisplayRedAsterisk', function() { - it('modalPreview template should have className "field-required" if component is required', function(done) { - Harness.testCreate(Component, _merge({}, comp4, { - validate: { required: true } - })).then(cmp => { - assert.equal(!!cmp.element.querySelector('.field-required'), true); - done(); - }, done) - .catch(done); + describe('shouldDisplayRedAsterisk', function () { + it('modalPreview template should have className "field-required" if component is required', function (done) { + Harness.testCreate( + Component, + _merge({}, comp4, { + validate: { required: true }, + }), + ) + .then((cmp) => { + assert.equal(!!cmp.element.querySelector('.field-required'), true); + done(); + }, done) + .catch(done); }); }); - it('Should not execute code inside Tooltips/Description', function(done) { + it('Should not execute code inside Tooltips/Description', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); - form.setForm(comp5).then(() => { - setTimeout(() => { - assert.equal(window._ee, undefined, 'Should not execute code inside Tooltips/Description'); - done(); - }, 200); - }) + form + .setForm(comp5) + .then(() => { + setTimeout(() => { + assert.equal( + window._ee, + undefined, + 'Should not execute code inside Tooltips/Description', + ); + done(); + }, 200); + }) .catch(done); }); - it('Should reset value to default value if default value is given', function(done) { - Formio.createForm(document.createElement('div'), comp6, {}).then((form) => { - const inputValue = (value, component) => { - const input = component.refs.input?.[0] || component.refs.selectContainer; - const inputEvent = new Event('input'); - input.value = value; - input.dispatchEvent(inputEvent); - }; - const textfield = form.getComponent('textField'); - const number = form.getComponent('number'); - const select = form.getComponent('select'); - inputValue('hello', textfield); - inputValue('321', number); - inputValue('b', select); - setTimeout(()=>{ - form.resetValue(); - assert.equal(textfield.refs.input[0].value, 'test'); - assert.equal(number.refs.input[0].value, '123'); - assert.equal(select.refs.selectContainer.value, 'a'); - done(); - },200); - }).catch(done); + it('Should reset value to default value if default value is given', function (done) { + Formio.createForm(document.createElement('div'), comp6, {}) + .then((form) => { + const inputValue = (value, component) => { + const input = component.refs.input?.[0] || component.refs.selectContainer; + const inputEvent = new Event('input'); + input.value = value; + input.dispatchEvent(inputEvent); + }; + const textfield = form.getComponent('textField'); + const number = form.getComponent('number'); + const select = form.getComponent('select'); + inputValue('hello', textfield); + inputValue('321', number); + inputValue('b', select); + setTimeout(() => { + form.resetValue(); + assert.equal(textfield.refs.input[0].value, 'test'); + assert.equal(number.refs.input[0].value, '123'); + assert.equal(select.refs.selectContainer.value, 'a'); + done(); + }, 200); + }) + .catch(done); }); - it('Should set the state of hidden permanently if a logic event action sets the hidden state', function(done) { + it('Should set the state of hidden permanently if a logic event action sets the hidden state', function (done) { Formio.createForm(document.createElement('div'), comp7, {}).then((form) => { const showButtonComponent = form.getComponent('show'); const textFieldComponent = form.getComponent('textField1'); const panelComponent = form.getComponent('panel'); showButtonComponent.refs.button.click(); - setTimeout(()=>{ - textFieldComponent.refs.input[0].value = "test" + setTimeout(() => { + textFieldComponent.refs.input[0].value = 'test'; textFieldComponent.refs.input[0].dispatchEvent(new Event('input')); - setTimeout(()=>{ + setTimeout(() => { assert.equal(panelComponent.component.hidden, false); assert.equal(panelComponent.visible, true); done(); - },400); - },200); + }, 400); + }, 200); }); }); }); diff --git a/test/unit/Container.unit.js b/test/unit/Container.unit.js index 01975cc1b1..9ef0052b25 100644 --- a/test/unit/Container.unit.js +++ b/test/unit/Container.unit.js @@ -3,40 +3,35 @@ import _ from 'lodash'; import Harness from '../harness'; import { Formio } from '../../src/Formio'; import ContainerComponent from '../../src/components/container/Container'; -import { - comp1, - comp2, - comp3, - comp4, -} from './fixtures/container'; +import { comp1, comp2, comp3, comp4 } from './fixtures/container'; -describe('Container Component', function() { - it('Should build a container component', function() { +describe('Container Component', function () { + it('Should build a container component', function () { return Harness.testCreate(ContainerComponent, comp1).then((component) => { const inputs = Harness.testElements(component, 'input[type="text"]', 2); - for (let i=0; i < inputs.length; i++) { + for (let i = 0; i < inputs.length; i++) { assert.equal(inputs[i].name, `data[${comp1.key}][${comp1.components[i].key}]`); } }); }); - it('Should be able to set and get data', function() { + it('Should be able to set and get data', function () { return Harness.testCreate(ContainerComponent, comp1).then((component) => { const inputs = Harness.testElements(component, 'input[type="text"]', 2); Harness.testSetGet(component, { firstName: 'Joe', - lastName: 'Smith' + lastName: 'Smith', }); assert.equal(inputs[0].value, 'Joe'); assert.equal(inputs[1].value, 'Smith'); }); }); - it('Should set the dataValue, but after it sets the value of its nested components', function() { + it('Should set the dataValue, but after it sets the value of its nested components', function () { return Harness.testCreate(ContainerComponent, comp2).then((component) => { const editGrid = component.getComponent('children'); const setValue = editGrid.setValue; - editGrid.setValue = function(...args) { + editGrid.setValue = function (...args) { const changed = setValue.call(editGrid, ...args); assert(changed, 'The edit grid must have changed'); return changed; @@ -44,54 +39,68 @@ describe('Container Component', function() { component.setValue({ children: [ { - name: 'Joe' + name: 'Joe', }, { - name: 'Sally' - } - ] + name: 'Sally', + }, + ], }); }); }); - it('Should submit form with a submission in a draft-state without validation errors', function(done) { + it('Should submit form with a submission in a draft-state without validation errors', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.nosubmit = true; - form.setSubmission({ - state: 'draft', - data: { - 'container': { - 'textField': 'a', - } - } - }).then(() => { - form.submitForm().then((event) => { - // It should allow the submission in the renderer. - assert.equal(event.submission.state, 'draft'); - done(); - }).catch((err) => done(err)); - }).catch(done); - }).catch(done); + Formio.createForm(element, form) + .then((form) => { + form.nosubmit = true; + form + .setSubmission({ + state: 'draft', + data: { + container: { + textField: 'a', + }, + }, + }) + .then(() => { + form + .submitForm() + .then((event) => { + // It should allow the submission in the renderer. + assert.equal(event.submission.state, 'draft'); + done(); + }) + .catch((err) => done(err)); + }) + .catch(done); + }) + .catch(done); }); - it('Should not set the default value when clearOnHide during the server-side validation', function(done) { + it('Should not set the default value when clearOnHide during the server-side validation', function (done) { const form = _.cloneDeep(comp4); const element = document.createElement('div'); - Formio.createForm(element, form, { server: true, noDefaults: true }).then(form => { - form.setValue({ data: { checkbox: false } }, { - sanitize: true, - }, true); + Formio.createForm(element, form, { server: true, noDefaults: true }) + .then((form) => { + form.setValue( + { data: { checkbox: false } }, + { + sanitize: true, + }, + true, + ); - form.checkConditions(); - form.clearOnHide(); + form.checkConditions(); + form.clearOnHide(); - setTimeout(() => { - assert.deepEqual(form._data, { checkbox: false }, 'Should not add Container\'s key'); - done(); - }, 200); - }).catch(done); + setTimeout(() => { + assert.deepEqual(form._data, { checkbox: false }, "Should not add Container's key"); + done(); + }, 200); + }) + .catch(done); }); }); diff --git a/test/unit/Content.unit.js b/test/unit/Content.unit.js index f32e16cc22..913a524a4d 100644 --- a/test/unit/Content.unit.js +++ b/test/unit/Content.unit.js @@ -2,41 +2,42 @@ import assert from 'power-assert'; import Harness from '../harness'; import ContentComponent from '../../src/components/content/Content'; import { Formio } from '../../src/Formio'; -import { - comp1 -} from './fixtures/content'; +import { comp1 } from './fixtures/content'; -describe('Content Component', function() { - it('Should build a content component', function() { +describe('Content Component', function () { + it('Should build a content component', function () { return Harness.testCreate(ContentComponent, comp1).then((component) => { const html = component.element.querySelector('[ref="html"]'); assert.equal(html.innerHTML.trim(), comp1.html.trim()); }); }); - it('Should update after submission set', function(done) { - const formJson = { - components: [{ - html: '

    {{submission.data.textField}}

    ', - label: 'Content', - refreshOnChange: false, - key: 'content', - type: 'content', - }, { - label: 'Text Field', - tableView: true, - key: 'textField', - type: 'textfield', - input: true - },] + it('Should update after submission set', function (done) { + const formJson = { + components: [ + { + html: '

    {{submission.data.textField}}

    ', + label: 'Content', + refreshOnChange: false, + key: 'content', + type: 'content', + }, + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson) - .then(form => { + .then((form) => { form.submission = { data: { - textField: 'textField' - } + textField: 'textField', + }, }; const content = form.getComponent('content'); form.dataReady.then(() => { diff --git a/test/unit/Currency.unit.js b/test/unit/Currency.unit.js index 409cc481f6..442f622f64 100644 --- a/test/unit/Currency.unit.js +++ b/test/unit/Currency.unit.js @@ -2,51 +2,45 @@ import Harness from '../harness'; import CurrencyComponent from '../../src/components/currency/Currency'; import assert from 'power-assert'; -import { - comp1, - comp2, - comp3, - comp4, -} from './fixtures/currency'; - -describe('Currency Component', function() { - before(function(done) { +import { comp1, comp2, comp3, comp4 } from './fixtures/currency'; + +describe('Currency Component', function () { + before(function (done) { // Need to polyfill some Intl.locale support, since node doesn't include it in standard builds require('../numberFormatPolyfill'); done(); }); - it('Should build a currency component', function() { + it('Should build a currency component', function () { return Harness.testCreate(CurrencyComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 1); }); }); - it('Should place a caret between the period and the underline.', function(done) { - Harness.testCreate(CurrencyComponent, comp3, { language: 'en-US' }) - .then((component) => { - const inputEvent = new Event('input'); - const currencyElement = component.element.querySelector('[name="data[currency]"]'); - - currencyElement.value = 42; - currencyElement.dispatchEvent(inputEvent); - assert.equal(currencyElement.value, '$42'); - - currencyElement.value = '.'; - currencyElement.dispatchEvent(inputEvent); - setTimeout(() => { - assert.equal(currencyElement.selectionStart, 3); - done(); - }, 200); - }); + it('Should place a caret between the period and the underline.', function (done) { + Harness.testCreate(CurrencyComponent, comp3, { language: 'en-US' }).then((component) => { + const inputEvent = new Event('input'); + const currencyElement = component.element.querySelector('[name="data[currency]"]'); + + currencyElement.value = 42; + currencyElement.dispatchEvent(inputEvent); + assert.equal(currencyElement.value, '$42'); + + currencyElement.value = '.'; + currencyElement.dispatchEvent(inputEvent); + setTimeout(() => { + assert.equal(currencyElement.selectionStart, 3); + done(); + }, 200); + }); }); - it('Should format value on blur for USA locale', function(done) { + it('Should format value on blur for USA locale', function (done) { Harness.testCreate(CurrencyComponent, comp1, { language: 'en-US' }).then((component) => { component.root = { - onChange: ()=>{}, - triggerChange: ()=>{}, + onChange: () => {}, + triggerChange: () => {}, }; const blurEvent = new Event('blur'); @@ -82,11 +76,11 @@ describe('Currency Component', function() { }); }); - it('Should format value on blur for French locale', function(done) { + it('Should format value on blur for French locale', function (done) { Harness.testCreate(CurrencyComponent, comp1, { language: 'fr' }).then((component) => { component.root = { - onChange: ()=>{}, - triggerChange: ()=>{}, + onChange: () => {}, + triggerChange: () => {}, }; const blurEvent = new Event('blur'); @@ -122,11 +116,11 @@ describe('Currency Component', function() { }); }); - it('Should not change entered value on blur if multiple value is set', function(done) { + it('Should not change entered value on blur if multiple value is set', function (done) { Harness.testCreate(CurrencyComponent, comp2).then((component) => { component.root = { - onChange: ()=>{}, - triggerChange: ()=>{}, + onChange: () => {}, + triggerChange: () => {}, }; const blurEvent = new Event('blur'); const clickEvent = new Event('click'); @@ -137,7 +131,7 @@ describe('Currency Component', function() { const firstValueElement = component.element.querySelectorAll('[name="data[currency]"]')[0]; const secondValueElement = component.element.querySelectorAll('[name="data[currency]"]')[1]; - component.setValue([111,222]); + component.setValue([111, 222]); firstValueElement.dispatchEvent(blurEvent); secondValueElement.dispatchEvent(blurEvent); @@ -148,7 +142,7 @@ describe('Currency Component', function() { }); }); - it('Should format currency submissions for table view for French locale', function() { + it('Should format currency submissions for table view for French locale', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'fr' }).then((component) => { const value1 = component.getValueAsString(1); const value2 = component.getValueAsString(1.1); @@ -166,7 +160,7 @@ describe('Currency Component', function() { }); }); - it('Should format currency sumbissions for table view for USA locale', function() { + it('Should format currency sumbissions for table view for USA locale', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'en-US' }).then((component) => { const value1 = component.getValueAsString(1); const value2 = component.getValueAsString(1.1); @@ -184,9 +178,9 @@ describe('Currency Component', function() { }); }); - it('Should add trailing zeros', function() { + it('Should add trailing zeros', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'en-US' }).then((component) => { - assert.equal(component.addZerosAndFormatValue(null),); + assert.equal(component.addZerosAndFormatValue(null)); assert.equal(component.addZerosAndFormatValue('3'), '3.00'); assert.equal(component.addZerosAndFormatValue('3.1'), '3.10'); assert.equal(component.addZerosAndFormatValue('-3'), '-3.00'); @@ -197,7 +191,7 @@ describe('Currency Component', function() { }); }); - it('Should set values with trailing zeros', function() { + it('Should set values with trailing zeros', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'en-US' }).then((component) => { assert.equal(component.formatValue(null), null); assert.equal(component.formatValue('0'), '0.00'); @@ -207,8 +201,7 @@ describe('Currency Component', function() { }); }); - it('Should format currency for USA locale', function() { - + it('Should format currency for USA locale', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'en-US' }).then((component) => { Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, undefined, null, ''); @@ -218,8 +211,8 @@ describe('Currency Component', function() { Harness.testSetInput(component, ['1'], 1, '$1.00'); Harness.testSetInput(component, ['$1.00'], 1, '$1.00'); Harness.testSetInput(component, 0, 0, '$0.00'); - Harness.testSetInput(component, 1.00, 1, '$1.00'); - Harness.testSetInput(component, -1.00, -1, '-$1.00'); + Harness.testSetInput(component, 1.0, 1, '$1.00'); + Harness.testSetInput(component, -1.0, -1, '-$1.00'); Harness.testSetInput(component, 1, 1, '$1.00'); Harness.testSetInput(component, -1, -1, '-$1.00'); Harness.testSetInput(component, 1000, 1000, '$1,000.00'); @@ -259,16 +252,15 @@ describe('Currency Component', function() { Harness.testSetInput(component, '$123456789.123456789', 123456789.12, '$123,456,789.12'); Harness.testSetInput(component, '-$123456789.123456789', -123456789.12, '-$123,456,789.12'); }); - }); - it('Should format currency for British locale', function() { + it('Should format currency for British locale', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'en-GB' }).then((component) => { Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, 0, 0, 'US$0.00'); - Harness.testSetInput(component, 1.00, 1, 'US$1.00'); - Harness.testSetInput(component, -1.00, -1, '-US$1.00'); - Harness.testSetInput(component, 1, 1, 'US$1.00'); + Harness.testSetInput(component, 1.0, 1, 'US$1.00'); + Harness.testSetInput(component, -1.0, -1, '-US$1.00'); + Harness.testSetInput(component, 1, 1, 'US$1.00'); Harness.testSetInput(component, -1, -1, '-US$1.00'); Harness.testSetInput(component, 1000, 1000, 'US$1,000.00'); Harness.testSetInput(component, -1000, -1000, '-US$1,000.00'); @@ -281,13 +273,13 @@ describe('Currency Component', function() { }); }); - it('Should format currency for French locale', function() { + it('Should format currency for French locale', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'fr' }).then((component) => { // The spaces in these tests are a weird unicode space so be careful duplicating the tests. Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, 0, 0, '0,00 $US'); - Harness.testSetInput(component, 1.00, 1, '1,00 $US'); - Harness.testSetInput(component, -1.00, -1, '-1,00 $US'); + Harness.testSetInput(component, 1.0, 1, '1,00 $US'); + Harness.testSetInput(component, -1.0, -1, '-1,00 $US'); Harness.testSetInput(component, 1, 1, '1,00 $US'); Harness.testSetInput(component, -1, -1, '-1,00 $US'); Harness.testSetInput(component, 1000, 1000, '1 000,00 $US'); @@ -297,16 +289,21 @@ describe('Currency Component', function() { Harness.testSetInput(component, 1234567890.12, 1234567890.12, '1 234 567 890,12 $US'); Harness.testSetInput(component, -1234567890.12, -1234567890.12, '-1 234 567 890,12 $US'); Harness.testSetInput(component, 1234567890.123456789, 1234567890.12, '1 234 567 890,12 $US'); - Harness.testSetInput(component, -1234567890.123456789, -1234567890.12, '-1 234 567 890,12 $US'); + Harness.testSetInput( + component, + -1234567890.123456789, + -1234567890.12, + '-1 234 567 890,12 $US', + ); }); }); - it('Should format currency for German locale', function() { + it('Should format currency for German locale', function () { return Harness.testCreate(CurrencyComponent, comp1, { language: 'de' }).then((component) => { Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, 0, 0, '0,00 $'); - Harness.testSetInput(component, 1.00, 1.00, '1,00 $'); - Harness.testSetInput(component, -1.00, -1.00, '-1,00 $'); + Harness.testSetInput(component, 1.0, 1.0, '1,00 $'); + Harness.testSetInput(component, -1.0, -1.0, '-1,00 $'); Harness.testSetInput(component, 1, 1, '1,00 $'); Harness.testSetInput(component, -1, -1, '-1,00 $'); Harness.testSetInput(component, 1000, 1000, '1.000,00 $'); @@ -320,11 +317,16 @@ describe('Currency Component', function() { }); }); - it('Should return value as string properly for multiple values', function(done) { - Harness.testCreate(CurrencyComponent, comp4).then((component) => { - component.refs.input = null; - assert.equal(component.getValueAsString([100, 200, 300, 500]), '$100.00, $200.00, $300.00, $500.00'); - done(); - }).catch(done); + it('Should return value as string properly for multiple values', function (done) { + Harness.testCreate(CurrencyComponent, comp4) + .then((component) => { + component.refs.input = null; + assert.equal( + component.getValueAsString([100, 200, 300, 500]), + '$100.00, $200.00, $300.00, $500.00', + ); + done(); + }) + .catch(done); }); }); diff --git a/test/unit/DataMap.unit.js b/test/unit/DataMap.unit.js index b73e4a2bdb..8ea45739c0 100644 --- a/test/unit/DataMap.unit.js +++ b/test/unit/DataMap.unit.js @@ -4,59 +4,64 @@ import DataMapComponent from '../../src/components/datamap/DataMap'; import { comp1, formWithConditionalPanel } from './fixtures/datamap'; import assert from 'power-assert'; -describe('DataMap Component', function() { - it('Should build a data map component', function() { +describe('DataMap Component', function () { + it('Should build a data map component', function () { return Harness.testCreate(DataMapComponent, comp1); }); - it('Should get and set values within the datamap.', function() { + it('Should get and set values within the datamap.', function () { return Harness.testCreate(DataMapComponent, comp1).then((component) => { Harness.testSetGet(component, { one: 'One', two: 'Two', - three: 'Three' + three: 'Three', }); }); }); - it( - 'Should render data from submission properly when the Data Map is inside conditionally shown layout component', - function(done) { - Formio.createForm(document.createElement('div'), formWithConditionalPanel, { readOnly: true }) - .then((form) => { - form.submission = { - data: { - checkbox: true, - dataMap1: { - key: 'a' - }, - dataMap: { - key: 'b', - key1: 'c', - }, + it('Should render data from submission properly when the Data Map is inside conditionally shown layout component', function (done) { + Formio.createForm(document.createElement('div'), formWithConditionalPanel, { readOnly: true }) + .then((form) => { + form.submission = { + data: { + checkbox: true, + dataMap1: { + key: 'a', }, - state: 'submitted', - }; + dataMap: { + key: 'b', + key1: 'c', + }, + }, + state: 'submitted', + }; - setTimeout(() => { - const dataMap1 = form.getComponent(['dataMap1']); - const dataMap = form.getComponent(['dataMap']); - assert.equal(dataMap1.visible, true, 'Data Map should become visible'); - assert.equal(dataMap.visible, true, 'Data Map inside a panel should become visible'); - assert.deepEqual(dataMap1.dataValue, { - key: 'a' - }, 'Should set value of the Data Map properly'); - assert.deepEqual(dataMap.dataValue, { + setTimeout(() => { + const dataMap1 = form.getComponent(['dataMap1']); + const dataMap = form.getComponent(['dataMap']); + assert.equal(dataMap1.visible, true, 'Data Map should become visible'); + assert.equal(dataMap.visible, true, 'Data Map inside a panel should become visible'); + assert.deepEqual( + dataMap1.dataValue, + { + key: 'a', + }, + 'Should set value of the Data Map properly', + ); + assert.deepEqual( + dataMap.dataValue, + { key: 'b', key1: 'c', - }, 'Should set value of the Data Map inside a panel properly'); - assert.equal(dataMap1.rows.length, 1, 'Should create rows for Data Grid'); - assert.equal(dataMap.rows.length, 2, 'Should create rows for Data Grid inside a panel'); + }, + 'Should set value of the Data Map inside a panel properly', + ); + assert.equal(dataMap1.rows.length, 1, 'Should create rows for Data Grid'); + assert.equal(dataMap.rows.length, 2, 'Should create rows for Data Grid inside a panel'); - done(); - }, 300); - }) - .catch(done); - } - ); + done(); + }, 300); + }) + .catch(done); + }); }); diff --git a/test/unit/DateTime.unit.js b/test/unit/DateTime.unit.js index 626ff0231f..23d8133652 100644 --- a/test/unit/DateTime.unit.js +++ b/test/unit/DateTime.unit.js @@ -13,231 +13,244 @@ import { comp6, comp7, comp8, - // comp9, + // comp9, comp10, comp11, comp12, comp13, - comp14 + comp14, } from './fixtures/datetime'; -describe('DateTime Component', function() { - it('Should build a date time component', function() { +describe('DateTime Component', function () { + it('Should build a date time component', function () { return Harness.testCreate(DateTimeComponent, comp1).then((dateTime) => dateTime.destroy()); }); - it('Test formatting', function(done) { - Harness.testCreate(DateTimeComponent, comp2).then((dateTime) => { - const value = '2020-09-22T00:00:00'; - const formattedValue = '2020-09-22'; - dateTime.setValue(value); - setTimeout(() => { - assert.equal(dateTime.getValueAsString(value), formattedValue, 'getValueAsString should return formatted value'); - dateTime.destroy(); - done(); - }, 250); - }).catch(done); + it('Test formatting', function (done) { + Harness.testCreate(DateTimeComponent, comp2) + .then((dateTime) => { + const value = '2020-09-22T00:00:00'; + const formattedValue = '2020-09-22'; + dateTime.setValue(value); + setTimeout(() => { + assert.equal( + dateTime.getValueAsString(value), + formattedValue, + 'getValueAsString should return formatted value', + ); + dateTime.destroy(); + done(); + }, 250); + }) + .catch(done); }); - it('Should format value', function() { + it('Should format value', function () { comp2.format = 'yyyy-MM-dd hh:mm a'; - return Harness.testCreate(DateTimeComponent, comp2) - .then((dateTime) => { - assert.equal(dateTime.getValueAsString('2020-09-18T12:12:00'), '2020-09-18 12:12 PM'); - dateTime.destroy(); - }); + return Harness.testCreate(DateTimeComponent, comp2).then((dateTime) => { + assert.equal(dateTime.getValueAsString('2020-09-18T12:12:00'), '2020-09-18 12:12 PM'); + dateTime.destroy(); + }); }); - it('Should not change manually entered value on blur when time is disabled', function(done) { + it('Should not change manually entered value on blur when time is disabled', function (done) { const form = _.cloneDeep(comp11); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const blurEvent = new Event('blur'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const blurEvent = new Event('blur'); - const value = '01-02-2021'; - const input = dateTime.element.querySelector('.input'); - input.value = value; - input.dispatchEvent(blurEvent); + const value = '01-02-2021'; + const input = dateTime.element.querySelector('.input'); + input.value = value; + input.dispatchEvent(blurEvent); - setTimeout(() => { - assert.equal(input.value, value); - document.innerHTML = ''; - done(); - }, 600); - }).catch(done); + setTimeout(() => { + assert.equal(input.value, value); + document.innerHTML = ''; + done(); + }, 600); + }) + .catch(done); }); - it('Should allow manual input', function(done) { + it('Should allow manual input', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const blurEvent = new Event('blur'); - const inputEvent = new Event('input'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const blurEvent = new Event('blur'); + const inputEvent = new Event('input'); - const value = '2021-04-13 07:00 PM'; - const expectedValueStart = '2021-04-13T19:00:00'; - const input = dateTime.element.querySelector('.input'); - input.value = value; - input.dispatchEvent(inputEvent); - setTimeout(() => { - input.dispatchEvent(blurEvent); + const value = '2021-04-13 07:00 PM'; + const expectedValueStart = '2021-04-13T19:00:00'; + const input = dateTime.element.querySelector('.input'); + input.value = value; + input.dispatchEvent(inputEvent); setTimeout(() => { - assert.equal(dateTime.getValue().startsWith(expectedValueStart), true); - assert.equal(dateTime.dataValue.startsWith(expectedValueStart), true); + input.dispatchEvent(blurEvent); + setTimeout(() => { + assert.equal(dateTime.getValue().startsWith(expectedValueStart), true); + assert.equal(dateTime.dataValue.startsWith(expectedValueStart), true); - document.innerHTML = ''; - done(); + document.innerHTML = ''; + done(); + }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); - it('Should allow manual input for date with full month format (like MMMM)', function(done) { + it('Should allow manual input for date with full month format (like MMMM)', function (done) { const form = _.cloneDeep(comp12); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const blurEvent = new Event('blur'); - const inputEvent = new Event('input'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const blurEvent = new Event('blur'); + const inputEvent = new Event('input'); - const value = 'April 22'; - const expectedValue = 'April 22'; - const input = dateTime.element.querySelector('.input'); - input.value = value; - input.dispatchEvent(inputEvent); - setTimeout(() => { - input.dispatchEvent(blurEvent); + const value = 'April 22'; + const expectedValue = 'April 22'; + const input = dateTime.element.querySelector('.input'); + input.value = value; + input.dispatchEvent(inputEvent); setTimeout(() => { - assert.equal(input.value, expectedValue); - document.innerHTML = ''; - done(); + input.dispatchEvent(blurEvent); + setTimeout(() => { + assert.equal(input.value, expectedValue); + document.innerHTML = ''; + done(); + }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); - it('Should not allow manual input', function(done) { + it('Should not allow manual input', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].allowInput = false; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const blurEvent = new Event('blur'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const blurEvent = new Event('blur'); - const value = '2021-04-13 7:00 PM'; - const input = dateTime.element.querySelector('.input'); - input.value = value; - input.dispatchEvent(blurEvent); + const value = '2021-04-13 7:00 PM'; + const input = dateTime.element.querySelector('.input'); + input.value = value; + input.dispatchEvent(blurEvent); - setTimeout(() => { - assert.equal(dateTime.getValue(), ''); - assert.equal(dateTime.dataValue, ''); + setTimeout(() => { + assert.equal(dateTime.getValue(), ''); + assert.equal(dateTime.dataValue, ''); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should format date correctly', function(done) { + it('Should format date correctly', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); const formatsInitial = [ { format: 'yyyy-dd-MM', - inputValue:'2021-15-03 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'2021-15-03' + inputValue: '2021-15-03 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '2021-15-03', }, { format: 'yyyy-dd', - inputValue:'2021-15-03 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'2021-15' + inputValue: '2021-15-03 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '2021-15', }, { format: 'yyyy', - inputValue:'2021-15-03 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'2021' + inputValue: '2021-15-03 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '2021', }, { format: 'dd-MM-yyyy', - inputValue:'15-03-2021 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'15-03-2021' + inputValue: '15-03-2021 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '15-03-2021', }, { format: 'MM-dd', - inputValue:'03-15-2021 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'03-15' + inputValue: '03-15-2021 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '03-15', }, { format: 'dd-MM', - inputValue:'15-03-2021 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'15-03' + inputValue: '15-03-2021 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '15-03', }, { format: 'MM-dd-yyyy', - inputValue:'03-15-2021 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'03-15-2021' + inputValue: '03-15-2021 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '03-15-2021', }, { format: 'yyyy-MM-dd', - inputValue:'2021-03-15 11:10 AM', - setValue:'2021-03-15T00:00:00', - expectedFormattedValue:'2021-03-15' + inputValue: '2021-03-15 11:10 AM', + setValue: '2021-03-15T00:00:00', + expectedFormattedValue: '2021-03-15', }, { format: 'dd-MM-yyyy hh:mm', - inputValue:'15-03-2021 11:10 AM', - setValue:'2021-03-15T11:10:00', - expectedFormattedValue:'15-03-2021 11:10' + inputValue: '15-03-2021 11:10 AM', + setValue: '2021-03-15T11:10:00', + expectedFormattedValue: '15-03-2021 11:10', }, { format: 'yyyy-MM-dd a', - inputValue:'2021-03-15 PM', - setValue:'2021-03-15T12:00:00', - expectedFormattedValue:'2021-03-15 PM' + inputValue: '2021-03-15 PM', + setValue: '2021-03-15T12:00:00', + expectedFormattedValue: '2021-03-15 PM', }, { format: 'hh', - inputValue:'11:10 AM', - setValue:'2021-01-01T11:00:00', - expectedFormattedValue:'11' + inputValue: '11:10 AM', + setValue: '2021-01-01T11:00:00', + expectedFormattedValue: '11', }, { format: 'hh:mm a', - inputValue:'11:10 AM 34', - setValue:'2021-01-01T11:10:00', - expectedFormattedValue:'11:10 AM' + inputValue: '11:10 AM 34', + setValue: '2021-01-01T11:10:00', + expectedFormattedValue: '11:10 AM', }, { format: 'mm', - inputValue:'11:10 AM', - setValue:'2021-01-01T00:11:00', - expectedFormattedValue:'11' + inputValue: '11:10 AM', + setValue: '2021-01-01T00:11:00', + expectedFormattedValue: '11', }, ]; - const getAllFormats = function(formats) { + const getAllFormats = function (formats) { const separators = ['.', '/']; const formatsWithDiffSeparators = separators.reduce((result, separator) => { const formatWithNewSeparator = formats - .filter(format => { + .filter((format) => { return format.format.split('-').length > 1; }) - .map(format => { + .map((format) => { return { ...format, format: format.format.split('-').join(separator), @@ -265,223 +278,243 @@ describe('DateTime Component', function() { form.components = formComponents; - Formio.createForm(element, form).then(form => { - form.components.forEach((comp, index) => { - comp.setValue(formats[index].setValue); - }); - - setTimeout(() => { + Formio.createForm(element, form) + .then((form) => { form.components.forEach((comp, index) => { - const input = comp.element.querySelector('.input'); - assert.equal(input.value, formats[index].expectedFormattedValue, 'Should format date/time value after setting value'); - const inputEvent = new Event('input'); - input.value = formats[index].inputValue; - input.dispatchEvent(inputEvent); - setTimeout(() => { - const blurEvent = new Event('blur'); - input.dispatchEvent(blurEvent); - }, 300); + comp.setValue(formats[index].setValue); }); setTimeout(() => { form.components.forEach((comp, index) => { const input = comp.element.querySelector('.input'); - assert.equal(input.value, formats[index].expectedFormattedValue, 'Should format date/time value after inputting value'); + assert.equal( + input.value, + formats[index].expectedFormattedValue, + 'Should format date/time value after setting value', + ); + const inputEvent = new Event('input'); + input.value = formats[index].inputValue; + input.dispatchEvent(inputEvent); + setTimeout(() => { + const blurEvent = new Event('blur'); + input.dispatchEvent(blurEvent); + }, 300); }); - document.innerHTML = ''; - done(); + setTimeout(() => { + form.components.forEach((comp, index) => { + const input = comp.element.querySelector('.input'); + assert.equal( + input.value, + formats[index].expectedFormattedValue, + 'Should format date/time value after inputting value', + ); + }); + + document.innerHTML = ''; + done(); + }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }).timeout(4000); - it('Should disable weekends', function(done) { + it('Should disable weekends', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].datePicker.disableWeekends = true; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.config.disableWeekends, true); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(calendar.config.disableWeekends, true); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should disable weekdays', function(done) { + it('Should disable weekdays', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].datePicker.disableWeekdays = true; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.config.disableWeekdays, true); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(calendar.config.disableWeekdays, true); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should disable time', function(done) { + it('Should disable time', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].enableTime = false; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.config.enableTime, false); - assert.equal(!!calendar.timeContainer, false); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(calendar.config.enableTime, false); + assert.equal(!!calendar.timeContainer, false); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should disable date', function(done) { + it('Should disable date', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].enableDate = false; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(!!calendar.daysContainer, false); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(!!calendar.daysContainer, false); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should enable time', function(done) { + it('Should enable time', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].enableTime = true; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.config.enableTime, true); - assert.equal(!!calendar.timeContainer, true); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(calendar.config.enableTime, true); + assert.equal(!!calendar.timeContainer, true); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should enable date', function(done) { + it('Should enable date', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].enableDate = true; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.config.enableDate, true); - assert.equal(!!calendar.daysContainer, true); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(calendar.config.enableDate, true); + assert.equal(!!calendar.daysContainer, true); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should not input the date that is disabled', function(done) { + it('Should not input the date that is disabled', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].datePicker.disable = '2021-04-15'; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const input = dateTime.element.querySelector('.input'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const input = dateTime.element.querySelector('.input'); - const blurEvent = new Event('blur'); - input.value = '2021-04-15'; - input.dispatchEvent(blurEvent); + const blurEvent = new Event('blur'); + input.value = '2021-04-15'; + input.dispatchEvent(blurEvent); - setTimeout(() => { - const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, ''); - assert.equal(dateTime.dataValue, ''); + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, ''); + assert.equal(dateTime.dataValue, ''); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should not input the date that is in disabled range', function(done) { + it('Should not input the date that is in disabled range', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].datePicker.disable = '2021-04-15-2021-04-20'; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const input = dateTime.element.querySelector('.input'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const input = dateTime.element.querySelector('.input'); - const blurEvent = new Event('blur'); - input.value = '2021-04-17'; - input.dispatchEvent(blurEvent); + const blurEvent = new Event('blur'); + input.value = '2021-04-17'; + input.dispatchEvent(blurEvent); - setTimeout(() => { - const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, ''); - assert.equal(dateTime.dataValue, ''); + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, ''); + assert.equal(dateTime.dataValue, ''); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should not allow inputting the date that meets condition of "custom disabled date"', function(done) { + it('Should not allow inputting the date that meets condition of "custom disabled date"', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].datePicker.disableFunction = 'date.getDay() === 2'; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const input = dateTime.element.querySelector('.input'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const input = dateTime.element.querySelector('.input'); - const blurEvent = new Event('blur'); - input.value = '2021-04-06'; - input.dispatchEvent(blurEvent); + const blurEvent = new Event('blur'); + input.value = '2021-04-06'; + input.dispatchEvent(blurEvent); - setTimeout(() => { - const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, ''); - assert.equal(dateTime.dataValue, ''); + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, ''); + assert.equal(dateTime.dataValue, ''); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should not allow inputting the date if it is out of min/max date range', function(done) { + it('Should not allow inputting the date if it is out of min/max date range', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].datePicker.minDate = '2021-04-04T12:00:00'; form.components[0].datePicker.maxDate = '2021-04-18T12:00:00'; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const input = dateTime.element.querySelector('.input'); - - const blurEvent = new Event('blur'); - input.value = '2020-04-03'; - input.dispatchEvent(blurEvent); - - setTimeout(() => { + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, ''); - assert.equal(dateTime.dataValue, ''); const blurEvent = new Event('blur'); - input.value = '2022-04-13'; + input.value = '2020-04-03'; input.dispatchEvent(blurEvent); setTimeout(() => { @@ -489,286 +522,326 @@ describe('DateTime Component', function() { assert.equal(input.value, ''); assert.equal(dateTime.dataValue, ''); - document.innerHTML = ''; - done(); + const blurEvent = new Event('blur'); + input.value = '2022-04-13'; + input.dispatchEvent(blurEvent); + + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, ''); + assert.equal(dateTime.dataValue, ''); + + document.innerHTML = ''; + done(); + }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); - it('Should set hour and minutes step', function(done) { + it('Should set hour and minutes step', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); - form.components[0].timePicker = { hourStep:3, minuteStep:10 }; + form.components[0].timePicker = { hourStep: 3, minuteStep: 10 }; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.config.minuteIncrement, 10); - assert.equal(calendar.config.hourIncrement, 3); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal(calendar.config.minuteIncrement, 10); + assert.equal(calendar.config.hourIncrement, 3); - document.innerHTML = ''; - done(); - }).catch(done); + document.innerHTML = ''; + done(); + }) + .catch(done); }); - it('Should allow inputting 24h time', function(done) { + it('Should allow inputting 24h time', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].timePicker = { showMeridian: false }; form.components[0].widget['time_24hr'] = true; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const input = dateTime.element.querySelector('.input'); - - const blurEvent = new Event('blur'); - input.value = '2020-04-03 22:11'; - input.dispatchEvent(blurEvent); - setTimeout(() => { + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, '2020-04-03 22:11'); - assert.equal(dateTime.dataValue.startsWith('2020-04-03T22:11:00'), true); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + const blurEvent = new Event('blur'); + input.value = '2020-04-03 22:11'; + input.dispatchEvent(blurEvent); + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, '2020-04-03 22:11'); + assert.equal(dateTime.dataValue.startsWith('2020-04-03T22:11:00'), true); + + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should not set value if it does not meet minDate validation', function(done) { + it('Should not set value if it does not meet minDate validation', function (done) { const form = _.cloneDeep(comp5); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - dateTime.setValue('2021-05-01T09:00:00'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + dateTime.setValue('2021-05-01T09:00:00'); - setTimeout(() => { - const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, ''); + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, ''); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should set value in readOnly mode even if it does not meet current minDate validation conditions', function(done) { + it('Should set value in readOnly mode even if it does not meet current minDate validation conditions', function (done) { const form = _.cloneDeep(comp5); const element = document.createElement('div'); - Formio.createForm(element, form, { readOnly: true }).then(form => { - const dateTime = form.getComponent('dateTime'); - dateTime.setValue('2021-05-01T09:00:00'); + Formio.createForm(element, form, { readOnly: true }) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + dateTime.setValue('2021-05-01T09:00:00'); - setTimeout(() => { - const input = dateTime.element.querySelector('.input'); - assert.equal(input.value, '05/01/21'); + setTimeout(() => { + const input = dateTime.element.querySelector('.input'); + assert.equal(input.value, '05/01/21'); - document.innerHTML = ''; - done(); - }, 300); - }).catch(done); + document.innerHTML = ''; + done(); + }, 300); + }) + .catch(done); }); - it('Should save hours and minutes values on first change', function(done) { + it('Should save hours and minutes values on first change', function (done) { const form = _.cloneDeep(comp6); const element = document.createElement('div'); form.components[0].enableDate = false; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const blurEvent = new Event('blur'); - const inputEvent = new Event('input'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const blurEvent = new Event('blur'); + const inputEvent = new Event('input'); - const input = dateTime.element.querySelector('.input'); - input.dispatchEvent(blurEvent); + const input = dateTime.element.querySelector('.input'); + input.dispatchEvent(blurEvent); - setTimeout(() => { - const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; - calendar._input.value = '07:00 PM'; - calendar._input.dispatchEvent(inputEvent); - const expectedValue = 'T19:00:00'; setTimeout(() => { - calendar._input.dispatchEvent(blurEvent); - + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + calendar._input.value = '07:00 PM'; + calendar._input.dispatchEvent(inputEvent); + const expectedValue = 'T19:00:00'; setTimeout(() => { - assert.equal(dateTime.dataValue.includes(expectedValue), true); + calendar._input.dispatchEvent(blurEvent); - document.innerHTML = ''; - done(); + setTimeout(() => { + assert.equal(dateTime.dataValue.includes(expectedValue), true); + + document.innerHTML = ''; + done(); + }, 200); }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should provide correct value after submission', function(done) { + it('Should provide correct value after submission', function (done) { const form = _.cloneDeep(comp7); const element = document.createElement('div'); form.components[0].enableTime = false; - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - dateTime.setValue('2022-12-21'); - - setTimeout(() => { - const submit = form.getComponent('submit'); - const clickEvent = new Event('click'); - const submitBtn = submit.refs.button; - submitBtn.dispatchEvent(clickEvent); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + dateTime.setValue('2022-12-21'); setTimeout(() => { - assert.equal(dateTime.dataValue, '2022-12-21'); - done(); + const submit = form.getComponent('submit'); + const clickEvent = new Event('click'); + const submitBtn = submit.refs.button; + submitBtn.dispatchEvent(clickEvent); + + setTimeout(() => { + assert.equal(dateTime.dataValue, '2022-12-21'); + done(); + }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should not highlight the field when it is valid when multiple values and required validation are enabled', function(done) { + it('Should not highlight the field when it is valid when multiple values and required validation are enabled', function (done) { const form = _.cloneDeep(comp8); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const input1 = dateTime.element.querySelectorAll('.input')[0]; + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const input1 = dateTime.element.querySelectorAll('.input')[0]; - const blurEvent = new Event('blur'); - input1.value = '2020-04-03'; - input1.dispatchEvent(blurEvent); + const blurEvent = new Event('blur'); + input1.value = '2020-04-03'; + input1.dispatchEvent(blurEvent); - const addAnotherBtn = dateTime.refs.addButton[0]; - const clickEvent = new Event('click'); - addAnotherBtn.dispatchEvent(clickEvent); + const addAnotherBtn = dateTime.refs.addButton[0]; + const clickEvent = new Event('click'); + addAnotherBtn.dispatchEvent(clickEvent); - setTimeout(() => { - assert.equal(dateTime.refs.input.length, 2); + setTimeout(() => { + assert.equal(dateTime.refs.input.length, 2); - const inputs = dateTime.element.querySelectorAll('.input'); - assert.equal(inputs[0].classList.contains('is-invalid'), false); - assert.equal(inputs[1].classList.contains('is-invalid'), true); + const inputs = dateTime.element.querySelectorAll('.input'); + assert.equal(inputs[0].classList.contains('is-invalid'), false); + assert.equal(inputs[1].classList.contains('is-invalid'), true); - inputs[1].value = '2020-05-05'; - inputs[1].dispatchEvent(blurEvent); + inputs[1].value = '2020-05-05'; + inputs[1].dispatchEvent(blurEvent); - setTimeout(() => { - const input2 = dateTime.element.querySelectorAll('.input')[1]; - assert.equal(input2.classList.contains('is-invalid'), false); + setTimeout(() => { + const input2 = dateTime.element.querySelectorAll('.input')[1]; + assert.equal(input2.classList.contains('is-invalid'), false); - document.innerHTML = ''; - done(); + document.innerHTML = ''; + done(); + }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); - it('Should provide correct values with time after submission', function(done) { + it('Should provide correct values with time after submission', function (done) { const form = _.cloneDeep(comp10); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const dateTime = form.getComponent('dateTime'); - const textField = form.getComponent('textField'); + Formio.createForm(element, form) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + const textField = form.getComponent('textField'); - dateTime.setValue('2022-04-01T14:00:00.000'); - textField.setValue('2022-04-01T14:00:00.000'); - - setTimeout(() => { - const submit = form.getComponent('submit'); - const clickEvent = new Event('click'); - const submitBtn = submit.refs.button; - submitBtn.dispatchEvent(clickEvent); + dateTime.setValue('2022-04-01T14:00:00.000'); + textField.setValue('2022-04-01T14:00:00.000'); setTimeout(() => { - const input1 = dateTime.element.querySelector('.input'); - const input2 = textField.element.querySelector('.input'); + const submit = form.getComponent('submit'); + const clickEvent = new Event('click'); + const submitBtn = submit.refs.button; + submitBtn.dispatchEvent(clickEvent); - assert.equal(input1.value, '2022-04-01 02:00 PM'); - assert.equal(input2.value, '2022-04-01 02:00 PM'); - done(); + setTimeout(() => { + const input1 = dateTime.element.querySelector('.input'); + const input2 = textField.element.querySelector('.input'); + + assert.equal(input1.value, '2022-04-01 02:00 PM'); + assert.equal(input2.value, '2022-04-01 02:00 PM'); + done(); + }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should add date to format if enableDate is true', function(done) { + it('Should add date to format if enableDate is true', function (done) { const form = _.cloneDeep(comp3); form.components[0].format = 'hh:mm a'; form.components[0].enableDate = true; const element = document.createElement('div'); - Formio.createForm(element, form, { attachMode: 'builder' }).then(form => { - const dateTime = form.getComponent('dateTime'); - assert.equal(dateTime.component.format, 'yyyy-MM-dd hh:mm a'); - done(); - }).catch(done); + Formio.createForm(element, form, { attachMode: 'builder' }) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + assert.equal(dateTime.component.format, 'yyyy-MM-dd hh:mm a'); + done(); + }) + .catch(done); }); - it('Should add time to format if enableTime is true', function(done) { + it('Should add time to format if enableTime is true', function (done) { const form = _.cloneDeep(comp3); form.components[0].format = 'yyyy-MM-dd'; form.components[0].enableTime = true; const element = document.createElement('div'); - Formio.createForm(element, form, { attachMode: 'builder' }).then(form => { - const dateTime = form.getComponent('dateTime'); - assert.equal(dateTime.component.format, 'yyyy-MM-dd hh:mm a'); - done(); - }).catch(done); + Formio.createForm(element, form, { attachMode: 'builder' }) + .then((form) => { + const dateTime = form.getComponent('dateTime'); + assert.equal(dateTime.component.format, 'yyyy-MM-dd hh:mm a'); + done(); + }) + .catch(done); }); - it('Should refresh disabled dates when other fields values change', function(done) { + it('Should refresh disabled dates when other fields values change', function (done) { const form = _.cloneDeep(comp13); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const minDate = form.getComponent('minDate'); - const maxDate = form.getComponent('maxDate'); - minDate.setValue(moment().startOf('month').toISOString()); - maxDate.setValue(moment().startOf('month').add(7, 'days').toISOString()); + Formio.createForm(element, form) + .then((form) => { + const minDate = form.getComponent('minDate'); + const maxDate = form.getComponent('maxDate'); + minDate.setValue(moment().startOf('month').toISOString()); + maxDate.setValue(moment().startOf('month').add(7, 'days').toISOString()); - setTimeout(() => { - const inBetweenDate = form.getComponent('inBetweenDate'); - const calendar = inBetweenDate.element.querySelector('.flatpickr-input').widget.calendar; - assert.equal(calendar.days.querySelectorAll('.flatpickr-disabled').length, 36, 'Only dates between selected' + - ' min and max dates should be enabled'); - - maxDate.setValue(moment().startOf('month').add(10, 'days').toISOString(), { modified: true }); setTimeout(() => { - assert.equal(calendar.days.querySelectorAll('.flatpickr-disabled').length, 33, 'Should recalculate' + - ' disabled dates after value change'); + const inBetweenDate = form.getComponent('inBetweenDate'); + const calendar = inBetweenDate.element.querySelector('.flatpickr-input').widget.calendar; + assert.equal( + calendar.days.querySelectorAll('.flatpickr-disabled').length, + 36, + 'Only dates between selected' + ' min and max dates should be enabled', + ); + + maxDate.setValue(moment().startOf('month').add(10, 'days').toISOString(), { + modified: true, + }); + setTimeout(() => { + assert.equal( + calendar.days.querySelectorAll('.flatpickr-disabled').length, + 33, + 'Should recalculate' + ' disabled dates after value change', + ); - done(); + done(); + }, 400); }, 400); - }, 400); - }).catch(done); + }) + .catch(done); }); - it('Should not change incomplete input if a manual value is given ', function(done) { + it('Should not change incomplete input if a manual value is given ', function (done) { Formio.createForm(document.createElement('div'), comp14, {}).then((form) => { const dateTimeComponent = form.getComponent('dateTime'); const calendar = dateTimeComponent.element.querySelector('.flatpickr-input').widget.calendar; calendar.altInput.click(); - setTimeout(()=>{ + setTimeout(() => { calendar.altInput.value = '2036-02-00 71:4_ __'; calendar._input.value = '2036-02-00 71:4_ __'; const inputEvent = new Event('input'); calendar.altInput.dispatchEvent(inputEvent); - setTimeout(()=>{ + setTimeout(() => { calendar.setDate(calendar._input.value, false, calendar.config.altFormat); calendar.close(); //now we need to trigger an on blur event and verify that the input value has not changed const blurEvent = new Event('blur'); calendar.altInput.dispatchEvent(blurEvent); - setTimeout(()=>{ + setTimeout(() => { assert.equal(calendar.altInput.value, '2036-02-00 71:4_ __'); done(); - },200); - },200); - },200); - }) + }, 200); + }, 200); + }, 200); + }); }); // it('Should provide correct date in selected timezone after submission', (done) => { diff --git a/test/unit/Day.unit.js b/test/unit/Day.unit.js index 1018ab5cd8..65752c09a8 100644 --- a/test/unit/Day.unit.js +++ b/test/unit/Day.unit.js @@ -3,26 +3,17 @@ import assert from 'power-assert'; import Harness from '../harness'; import DayComponent from '../../src/components/day/Day'; import PanelComponent from '../../src/components/panel/Panel'; -import { - comp1, - comp2, - comp3, - comp4, - comp5, - comp6, - comp7, - comp8 -} from './fixtures/day'; - -describe('Day Component', function() { - it('Should build a day component', function() { +import { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8 } from './fixtures/day'; + +describe('Day Component', function () { + it('Should build a day component', function () { return Harness.testCreate(DayComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="number"]', 2); Harness.testElements(component, 'select', 1); }); }); - it('Should handle blank data correctly', function(done) { + it('Should handle blank data correctly', function (done) { Harness.testCreate(DayComponent, comp1).then((component) => { component.setValue(); assert.equal(component.getValue(), ''); @@ -33,22 +24,22 @@ describe('Day Component', function() { }); }); - it('Should not show error when form loaded with defaultValue = "00/00/0000"', function(done) { - Formio.createForm(document.createElement('div'), comp5, {}).then((form) => { - const dayComponent = form.getComponent('day'); - assert.equal(dayComponent.visibleErrors.length, 0); - assert.equal(form.data.day, ''); - const buttonComponent = form.getComponent('submit'); - buttonComponent.refs.button.click(); - setTimeout(()=>{ - assert.equal(dayComponent.visibleErrors.length, 1); - assert.equal(dayComponent.visibleErrors[0].message, 'Day is required'); - done(); - },200); - }); + it('Should not show error when form loaded with defaultValue = "00/00/0000"', function (done) { + Formio.createForm(document.createElement('div'), comp5, {}).then((form) => { + const dayComponent = form.getComponent('day'); + assert.equal(dayComponent.visibleErrors.length, 0); + assert.equal(form.data.day, ''); + const buttonComponent = form.getComponent('submit'); + buttonComponent.refs.button.click(); + setTimeout(() => { + assert.equal(dayComponent.visibleErrors.length, 1); + assert.equal(dayComponent.visibleErrors[0].message, 'Day is required'); + done(); + }, 200); + }); }); - it('Should change the max day when the month changes', function(done) { + it('Should change the max day when the month changes', function (done) { Harness.testCreate(DayComponent, comp1).then((component) => { Harness.testElements(component, 'option', 13); assert(!!component.refs.year, 'There should be a year'); @@ -92,7 +83,7 @@ describe('Day Component', function() { }); }); - it('Should put the month select first', function(done) { + it('Should put the month select first', function (done) { Harness.testCreate(DayComponent, comp1).then((component) => { const inputs = Harness.testElements(component, '.form-control', 4); assert.equal(inputs[0].id, `${component.component.key}-month`); @@ -104,7 +95,7 @@ describe('Day Component', function() { }); }); - it('Should put the day select first on configuration', function(done) { + it('Should put the day select first on configuration', function (done) { comp1.dayFirst = true; Harness.testCreate(DayComponent, comp1).then((component) => { const inputs = Harness.testElements(component, '.form-control', 4); @@ -117,7 +108,7 @@ describe('Day Component', function() { }); }); - it('Should not allow invalid days', function(done) { + it('Should not allow invalid days', function (done) { comp1.dayFirst = false; Harness.testCreate(DayComponent, comp1).then((component) => { component.setValue('3/40/2017'); @@ -129,7 +120,7 @@ describe('Day Component', function() { }); }); - it('Should ignore invalid months and use zeros as default', function(done) { + it('Should ignore invalid months and use zeros as default', function (done) { comp1.dayFirst = false; Harness.testCreate(DayComponent, comp1).then((component) => { @@ -139,7 +130,7 @@ describe('Day Component', function() { }); }); - it('Should keep day value when switching months', function(done) { + it('Should keep day value when switching months', function (done) { Harness.testCreate(DayComponent, comp1).then((component) => { component.setValue('01/05/2018'); assert.equal(component.getValue(), '01/05/2018'); @@ -152,7 +143,7 @@ describe('Day Component', function() { }); }); - it('Should adjust day value when day is great then maxDay of month', function(done) { + it('Should adjust day value when day is great then maxDay of month', function (done) { Harness.testCreate(DayComponent, comp1).then((component) => { component.setValue('01/31/2018'); assert.equal(component.getValue(), '01/31/2018'); @@ -165,7 +156,7 @@ describe('Day Component', function() { }); }); - it('Should validate required fields', function(done) { + it('Should validate required fields', function (done) { Harness.testCreate(DayComponent, comp2).then((component) => { component.pristine = false; const valid = () => component.checkValidity(component.data, true); @@ -186,7 +177,7 @@ describe('Day Component', function() { }); }); - it('Should properly validate min-max dates when dayFirst is checked', function(done) { + it('Should properly validate min-max dates when dayFirst is checked', function (done) { Harness.testCreate(DayComponent, comp3).then((component) => { component.setValue('01/02/2020'); assert(!component.checkValidity(component.data, true), 'Component should not be valid'); @@ -203,14 +194,14 @@ describe('Day Component', function() { }); }); - it('Should disable day component if parent component is disabled', function(done) { + it('Should disable day component if parent component is disabled', function (done) { Harness.testCreate(PanelComponent, comp4).then((component) => { Harness.testElements(component, '[disabled]', 4); done(); }); }); - it('Should set value if the day field is hidden', function(done) { + it('Should set value if the day field is hidden', function (done) { comp1.dayFirst = false; comp1.fields.day.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { @@ -221,7 +212,7 @@ describe('Day Component', function() { comp1.fields.day.hide = false; }); - it('Should set value if the month field is hidden', function(done) { + it('Should set value if the month field is hidden', function (done) { comp1.fields.month.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { component.setValue('12/2023'); @@ -231,7 +222,7 @@ describe('Day Component', function() { comp1.fields.month.hide = false; }); - it('Should set value if the year field is hidden', function(done) { + it('Should set value if the year field is hidden', function (done) { comp1.fields.year.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { component.setValue('12/21'); @@ -241,8 +232,7 @@ describe('Day Component', function() { comp1.fields.year.hide = false; }); - - it('Should use the default day value if the day field is hidden', function(done) { + it('Should use the default day value if the day field is hidden', function (done) { comp1.dayFirst = false; comp1.defaultValue = '00/01/0000'; comp1.fields.day.hide = true; @@ -254,7 +244,7 @@ describe('Day Component', function() { comp1.fields.day.hide = false; }); - it('Should use the default month value if the month field is hidden', function(done) { + it('Should use the default month value if the month field is hidden', function (done) { comp1.defaultValue = '03/00/0000'; comp1.fields.month.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { @@ -265,7 +255,7 @@ describe('Day Component', function() { comp1.fields.month.hide = false; }); - it('Should use the default year value if the year field is hidden', function(done) { + it('Should use the default year value if the year field is hidden', function (done) { comp1.defaultValue = '00/00/2023'; comp1.fields.year.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { @@ -276,7 +266,7 @@ describe('Day Component', function() { comp1.fields.year.hide = false; }); - it('Should set correct default value if the day field is hidden', function(done) { + it('Should set correct default value if the day field is hidden', function (done) { comp1.dayFirst = false; comp1.defaultValue = '08/2019'; comp1.fields.day.hide = true; @@ -289,7 +279,7 @@ describe('Day Component', function() { comp1.fields.day.hide = false; }); - it('Should set correct default value if the month field is hidden', function(done) { + it('Should set correct default value if the month field is hidden', function (done) { comp1.defaultValue = '24/2024'; comp1.fields.month.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { @@ -301,7 +291,7 @@ describe('Day Component', function() { comp1.fields.month.hide = false; }); - it('Should set correct default value if the year field is hidden', function(done) { + it('Should set correct default value if the year field is hidden', function (done) { comp1.defaultValue = '07/24'; comp1.fields.year.hide = true; Harness.testCreate(DayComponent, comp1).then((component) => { @@ -313,181 +303,211 @@ describe('Day Component', function() { comp1.fields.year.hide = false; }); - it('Should set correct default value if the day and month fields are hidden', function(done) { + it('Should set correct default value if the day and month fields are hidden', function (done) { comp1.defaultValue = '2024'; comp1.fields.day.hide = true; comp1.fields.month.hide = true; - Harness.testCreate(DayComponent, comp1).then((component) => { - assert.equal(component.data.date, '2024'); - done(); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + assert.equal(component.data.date, '2024'); + done(); + }) + .catch(done); comp1.fields.day.hide = false; comp1.fields.month.hide = false; delete comp1.defaultValue; }); - it('Should return correct data value as a string if the day field is hidden', function(done) { + it('Should return correct data value as a string if the day field is hidden', function (done) { comp1.dayFirst = false; comp1.fields.day.hide = true; - Harness.testCreate(DayComponent, comp1).then((component) => { - assert.equal(component.getValueAsString('03/2022'), '03/2022'); - done(); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + assert.equal(component.getValueAsString('03/2022'), '03/2022'); + done(); + }) + .catch(done); comp1.fields.day.hide = false; }); - it('Should return correct data value as a string if the month field is hidden', function(done) { + it('Should return correct data value as a string if the month field is hidden', function (done) { comp1.fields.month.hide = true; - Harness.testCreate(DayComponent, comp1).then((component) => { - assert.equal(component.getValueAsString('24/2023'), '24/2023'); - done(); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + assert.equal(component.getValueAsString('24/2023'), '24/2023'); + done(); + }) + .catch(done); comp1.fields.month.hide = false; }); - it('Should return correct data value as a string if the month and year fields are hidden', function(done) { + it('Should return correct data value as a string if the month and year fields are hidden', function (done) { comp1.fields.year.hide = true; comp1.fields.month.hide = true; - Harness.testCreate(DayComponent, comp1).then((component) => { - assert.equal(component.getValueAsString('24'), '24'); - done(); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + assert.equal(component.getValueAsString('24'), '24'); + done(); + }) + .catch(done); comp1.fields.year.hide = false; comp1.fields.month.hide = false; }); - it('OnBlur validation should work properly with Day component', function(done) { + it('OnBlur validation should work properly with Day component', function (done) { const element = document.createElement('div'); - Formio.createForm(element, comp5).then(form => { - const dayComponent = form.components[0]; - dayComponent.setValue('03/12/2023'); - - setTimeout(() => { - dayComponent.refs.day.focus(); - dayComponent.refs.day.value = ''; - dayComponent.refs.day.dispatchEvent(new Event('input')); + Formio.createForm(element, comp5) + .then((form) => { + const dayComponent = form.components[0]; + dayComponent.setValue('03/12/2023'); setTimeout(() => { - assert(dayComponent._errors.length && dayComponent._errors[0].message === 'Day is required', 'Day should be valid while changing'); - dayComponent.refs.day.dispatchEvent(new Event('blur')); + dayComponent.refs.day.focus(); + dayComponent.refs.day.value = ''; + dayComponent.refs.day.dispatchEvent(new Event('input')); setTimeout(() => { - assert(dayComponent._errors.length && dayComponent._errors[0].message === 'Day is required', 'Should set error after Day component was blurred'); - done(); + assert( + dayComponent._errors.length && dayComponent._errors[0].message === 'Day is required', + 'Day should be valid while changing', + ); + dayComponent.refs.day.dispatchEvent(new Event('blur')); + + setTimeout(() => { + assert( + dayComponent._errors.length && + dayComponent._errors[0].message === 'Day is required', + 'Should set error after Day component was blurred', + ); + done(); + }, 200); }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should restore focus after redraw', function(done) { + it('Should restore focus after redraw', function (done) { const element = document.createElement('div'); document.body.appendChild(element); - Formio.createForm(element, comp6).then(form => { - const textField = form.getComponent(['textField']); - textField.setValue('test'); + Formio.createForm(element, comp6) + .then((form) => { + const textField = form.getComponent(['textField']); + textField.setValue('test'); - setTimeout(() => { - const day = form.getComponent(['day']); - document.querySelector('select.form-control').focus(); + setTimeout(() => { + const day = form.getComponent(['day']); + document.querySelector('select.form-control').focus(); day.refs.month.value = 2; day.refs.month.dispatchEvent(new Event('input')); setTimeout(() => { console.log(global.document.activeElement, day.refs.month); - assert(global.document.activeElement === day.refs.month, 'Should keep focus on the year select'); + assert( + global.document.activeElement === day.refs.month, + 'Should keep focus on the year select', + ); done(); }, 200); - }, 500); - }).catch(done); + }, 500); + }) + .catch(done); }); - it('Should translate placeholder text', function() { + it('Should translate placeholder text', function () { const element = document.createElement('div'); return Formio.createForm(element, comp7, { language: 'sp', i18n: { sp: { - Day: "Day1", - Month: "Month2", - Year: "Year3" - } - } + Day: 'Day1', + Month: 'Month2', + Year: 'Year3', + }, + }, }).then((form) => { const dayComponent = form.getComponent('day'); assert.equal(dayComponent.refs.day.placeholder, 'Day1'); assert.equal(dayComponent.refs.month.placeholder, 'Month2'); assert.equal(dayComponent.refs.year.placeholder, 'Year3'); - }) + }); }); - it('Should translate requiredDayEmpty to {{ field }} is required', function(done) { - Formio.createForm(document.createElement('div'), comp8, {}).then((form) => { - const dayComponent = form.getComponent('dayTable'); - const buttonComponent = form.getComponent('submit'); - buttonComponent.refs.button.click(); - setTimeout(()=>{ - assert.equal(dayComponent.errors[0].message, 'Day - Table is required'); - done(); - },200); - }).catch(done); + it('Should translate requiredDayEmpty to {{ field }} is required', function (done) { + Formio.createForm(document.createElement('div'), comp8, {}) + .then((form) => { + const dayComponent = form.getComponent('dayTable'); + const buttonComponent = form.getComponent('submit'); + buttonComponent.refs.button.click(); + setTimeout(() => { + assert.equal(dayComponent.errors[0].message, 'Day - Table is required'); + done(); + }, 200); + }) + .catch(done); }); - it('Should save empty value after deleting the values', function(done) { + it('Should save empty value after deleting the values', function (done) { delete comp1.defaultValue; - Harness.testCreate(DayComponent, comp1).then((component) => { - component.setValue('10/12/2024'); - assert.equal(component.getValue(), '10/12/2024'); - component.refs.month.value = ''; - component.refs.month.dispatchEvent(new Event('input')); - component.refs.day.value = ''; - component.refs.day.dispatchEvent(new Event('input')); - component.refs.year.value = ''; - component.refs.year.dispatchEvent(new Event('input')); - setTimeout(() => { - assert.equal(component.getValue(), ''); - done(); - }, 100); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + component.setValue('10/12/2024'); + assert.equal(component.getValue(), '10/12/2024'); + component.refs.month.value = ''; + component.refs.month.dispatchEvent(new Event('input')); + component.refs.day.value = ''; + component.refs.day.dispatchEvent(new Event('input')); + component.refs.year.value = ''; + component.refs.year.dispatchEvent(new Event('input')); + setTimeout(() => { + assert.equal(component.getValue(), ''); + done(); + }, 100); + }) + .catch(done); }); - it('Should save empty value after deleting the values if the day field is hidden', function(done) { + it('Should save empty value after deleting the values if the day field is hidden', function (done) { comp1.fields.day.hide = true; - Harness.testCreate(DayComponent, comp1).then((component) => { - component.setValue('10/2024'); - assert.equal(component.getValue(), '10/2024'); - component.refs.month.value = ''; - component.refs.month.dispatchEvent(new Event('input')); - component.refs.year.value = ''; - component.refs.year.dispatchEvent(new Event('input')); - setTimeout(() => { - assert.equal(component.getValue(), ''); - done(); - }, 100); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + component.setValue('10/2024'); + assert.equal(component.getValue(), '10/2024'); + component.refs.month.value = ''; + component.refs.month.dispatchEvent(new Event('input')); + component.refs.year.value = ''; + component.refs.year.dispatchEvent(new Event('input')); + setTimeout(() => { + assert.equal(component.getValue(), ''); + done(); + }, 100); + }) + .catch(done); comp1.fields.day.hide = false; }); - it('Should save empty value after deleting values from fields if default value is set', function(done) { + it('Should save empty value after deleting values from fields if default value is set', function (done) { comp1.defaultValue = '10/12/2024'; - Harness.testCreate(DayComponent, comp1).then((component) => { - assert.equal(component.getValue(), '10/12/2024'); - component.refs.month.value = ''; - component.refs.month.dispatchEvent(new Event('input')); - component.refs.day.value = ''; - component.refs.day.dispatchEvent(new Event('input')); - component.refs.year.value = ''; - component.refs.year.dispatchEvent(new Event('input')); - setTimeout(() => { - assert.equal(component.getValue(), ''); - done(); - }, 100); - }).catch(done); + Harness.testCreate(DayComponent, comp1) + .then((component) => { + assert.equal(component.getValue(), '10/12/2024'); + component.refs.month.value = ''; + component.refs.month.dispatchEvent(new Event('input')); + component.refs.day.value = ''; + component.refs.day.dispatchEvent(new Event('input')); + component.refs.year.value = ''; + component.refs.year.dispatchEvent(new Event('input')); + setTimeout(() => { + assert.equal(component.getValue(), ''); + done(); + }, 100); + }) + .catch(done); delete comp1.defaultValue; }); - it('Should return correct values from getValueAsString without using default value', function(done) { + it('Should return correct values from getValueAsString without using default value', function (done) { comp1.defaultValue = '10/12/2024'; Harness.testCreate(DayComponent, comp1) .then((component) => { diff --git a/test/unit/Email.unit.js b/test/unit/Email.unit.js index 527cdb58aa..008c019de7 100644 --- a/test/unit/Email.unit.js +++ b/test/unit/Email.unit.js @@ -4,136 +4,146 @@ import { Formio } from '../../src/Formio'; import assert from 'power-assert'; import _ from 'lodash'; -import { - comp1, - comp2 -} from './fixtures/email'; +import { comp1, comp2 } from './fixtures/email'; -describe('Email Component', function() { - it('Should build a email component', function() { +describe('Email Component', function () { + it('Should build a email component', function () { return Harness.testCreate(EmailComponent, comp1); }); - it('Should provide min/max length validation', function(done) { + it('Should provide min/max length validation', function (done) { const form = _.cloneDeep(comp2); form.components[0].validate = { minLength: 7, maxLength: 10 }; - const validValues = [ - '', - 'test@te.st', - 't__t@t.st', - '_t@test.st' - ]; + const validValues = ['', 'test@te.st', 't__t@t.st', '_t@test.st']; - const invalidMin = [ - 't@t.st', - ]; + const invalidMin = ['t@t.st']; - const invalidMax = [ - 't@test.test', - 'test@test.test', - ]; + const invalidMax = ['t@test.test', 'test@test.test']; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - const component = form.getComponent('email'); - const changed = component.setValue(value); - const error = message; + const component = form.getComponent('email'); + const changed = component.setValue(value); + const error = message; - if (value) { - assert.equal(changed, true, 'Should set value'); - } - - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert(component.errors.length > 0, 'Should contain error'); - assert.equal(component.errors[0].message, error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert(component.errors.length > 0, 'Should contain error'); + assert.equal(component.errors[0].message, error, 'Should contain error message'); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); testValidity(invalidMin, false, 'Email must have at least 7 characters.'); - testValidity(invalidMax, false, 'Email must have no more than 10 characters.', invalidMax[invalidMax.length-1]); + testValidity( + invalidMax, + false, + 'Email must have no more than 10 characters.', + invalidMax[invalidMax.length - 1], + ); }); - it('Should provide pattern validation', function(done) { + it('Should provide pattern validation', function (done) { const form = _.cloneDeep(comp2); form.components[0].validate = { pattern: '^[0-9]+@[0-9]+\\.[a-z]{2,4}$' }; - const validValues = [ - '000@12.ts', - '123456@1234.com', - '123456@1234.come', - '' - ]; + const validValues = ['000@12.ts', '123456@1234.com', '123456@1234.come', '']; const invalidValues = [ '123_456@1234.com', '123456@12.34.com', 'test@123.com', - '00000@123t.com' + '00000@123t.com', ]; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - const component = form.getComponent('email'); - const changed = component.setValue(value); - const error = message; + const component = form.getComponent('email'); + const changed = component.setValue(value); + const error = message; - if (value) { - assert.equal(changed, true, 'Should set value'); - } - - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert(component.errors.length > 0, 'Should contain error'); - assert.equal(component.errors[0].message.trim(), error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert(component.errors.length > 0, 'Should contain error'); + assert.equal( + component.errors[0].message.trim(), + error, + 'Should contain error message', + ); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); - testValidity(invalidValues, + testValidity( + invalidValues, false, 'Email does not match the pattern ^[0-9]+@[0-9]+\\.[a-z]{2,4}$', - invalidValues[invalidValues.length-1] + invalidValues[invalidValues.length - 1], ); }); - it('Should provide email validation', function(done) { + it('Should provide email validation', function (done) { const form = _.cloneDeep(comp2); const validValues = [ @@ -146,7 +156,7 @@ describe('Email Component', function() { '"John..Doe"@example.com', 'test-test@test.com', 'test-test@te-st.com', - '0-0-0-0-0@12-3-t.com' + '0-0-0-0-0@12-3-t.com', ]; const invalidValues = [ @@ -169,48 +179,62 @@ describe('Email Component', function() { 'test(test)@mail.com', 'John..Doe@example.com', 'john.smith(comment)@example.com', - 'test-test.@test.com' + 'test-test.@test.com', ]; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); - - const component = form.getComponent('email'); - const changed = component.setValue(value); - const error = message; + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - if (value) { - assert.equal(changed, true, 'Should set value'); - } + const component = form.getComponent('email'); + const changed = component.setValue(value); + const error = message; - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert(component.errors.length > 0, 'Should contain error'); - assert.equal(component.errors[0].message.trim(), error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert(component.errors.length > 0, 'Should contain error'); + assert.equal( + component.errors[0].message.trim(), + error, + 'Should contain error message', + ); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); - testValidity(invalidValues, + testValidity( + invalidValues, false, 'Email must be a valid email.', - invalidValues[invalidValues.length-1] + invalidValues[invalidValues.length - 1], ); }); }); diff --git a/test/unit/Fieldset.unit.js b/test/unit/Fieldset.unit.js index f8a12eb72d..b5ab7111c1 100644 --- a/test/unit/Fieldset.unit.js +++ b/test/unit/Fieldset.unit.js @@ -1,12 +1,10 @@ import Harness from '../harness'; import FieldsetComponent from '../../src/components/fieldset/Fieldset'; -import { - comp1 -} from './fixtures/fieldset'; +import { comp1 } from './fixtures/fieldset'; -describe('Fieldset Component', function() { - it('Should build a fieldset component', function() { +describe('Fieldset Component', function () { + it('Should build a fieldset component', function () { return Harness.testCreate(FieldsetComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 2); }); diff --git a/test/unit/File.unit.js b/test/unit/File.unit.js index a68fa45fcf..17c707953a 100644 --- a/test/unit/File.unit.js +++ b/test/unit/File.unit.js @@ -5,8 +5,8 @@ import { comp1, comp2 } from './fixtures/file'; import { Formio } from '../../src/Formio'; import _ from 'lodash'; -describe('File Component', function() { - it('Should create a File Component', function() { +describe('File Component', function () { + it('Should create a File Component', function () { return Harness.testCreate(FileComponent, comp1).then((component) => { const parentNode = document.createElement('div'); const element = document.createElement('div'); @@ -32,7 +32,7 @@ describe('File Component', function() { size: 34533, type: 'image/png', originalName: 'IMG_5235.png', - } + }, ]); Harness.testElements(component, 'ul.list-group-striped li.list-group-header', 1); Harness.testElements(component, 'ul.list-group-striped li.list-group-item', 3); @@ -41,7 +41,7 @@ describe('File Component', function() { }); }); - it('Should hide loader after loading process', function() { + it('Should hide loader after loading process', function () { return Harness.testCreate(FileComponent, comp1).then((component) => { const parentNode = document.createElement('div'); const element = document.createElement('div'); @@ -56,13 +56,13 @@ describe('File Component', function() { size: 1159732, type: 'image/jpeg', originalName: 'IMG_5235.jpg', - } + }, ]); Harness.testElements(component, 'div.loader-wrapper', 0); }); }); - it('Should create a multiple File Component', function() { + it('Should create a multiple File Component', function () { comp1.multiple = true; return Harness.testCreate(FileComponent, comp1).then((component) => { const parentNode = document.createElement('div'); @@ -89,7 +89,7 @@ describe('File Component', function() { size: 34533, type: 'image/png', originalName: 'IMG_5235.png', - } + }, ]); Harness.testElements(component, 'ul.list-group-striped li.list-group-header', 1); Harness.testElements(component, 'ul.list-group-striped li.list-group-item', 3); @@ -98,44 +98,48 @@ describe('File Component', function() { }); }); - it('Should validate uploaded file according to the pattern', function(done) { + it('Should validate uploaded file according to the pattern', function (done) { Harness.testCreate(FileComponent, comp1).then((component) => { - const validFiles =[ + const validFiles = [ { name: 'test.jpg', size: 27401, - type: 'image/jpeg' + type: 'image/jpeg', }, { name: 'TypeScript.pdf', size: 203123, - type: 'application/pdf' + type: 'application/pdf', }, { name: 'build with dist.png', size: 137321, - type: 'image/png' - } + type: 'image/png', + }, ]; const invalidFiles = [ { name: 'eventsList.xlsx', size: 16022, - type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', }, { name: 'lazy load.mp4', size: 9083622, - type: 'video/mp4' + type: 'video/mp4', }, ]; const pattern = ' .jpg, .png, .exe, .pdf '; const checkValidatePattern = (files, valid) => { - files.forEach(file => { - assert.equal(component.validatePattern(file, pattern), valid, `File ${file.name} should ${valid ? '' : 'not'} correspond to the pattern`); + files.forEach((file) => { + assert.equal( + component.validatePattern(file, pattern), + valid, + `File ${file.name} should ${valid ? '' : 'not'} correspond to the pattern`, + ); }); }; @@ -145,59 +149,64 @@ describe('File Component', function() { }); }); - it('Should display uploaded file in file component only after saving', function(done) { + it('Should display uploaded file in file component only after saving', function (done) { const form = _.cloneDeep(comp2); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const value = [ - { - storage: 'base64', - name: '33-0ae897b9-c808-4832-a5e1-4e5d0c725f1b.jpg', - url: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD…CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//2Q==', - size: 102691, - type: 'image/jpeg', - originalName: '33.jpg', - }, - ]; - const file = form.getComponent('file'); - const openModalButton = file.componentModal.refs.openModal; - const clickEvent = new Event('click'); - openModalButton.dispatchEvent(clickEvent); - - setTimeout(() => { - assert.equal(file.componentModal.isOpened, true); - file.dataValue = value; - file.redraw(); + Formio.createForm(element, form) + .then((form) => { + const value = [ + { + storage: 'base64', + name: '33-0ae897b9-c808-4832-a5e1-4e5d0c725f1b.jpg', + url: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD…CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//2Q==', + size: 102691, + type: 'image/jpeg', + originalName: '33.jpg', + }, + ]; + const file = form.getComponent('file'); + const openModalButton = file.componentModal.refs.openModal; + const clickEvent = new Event('click'); + openModalButton.dispatchEvent(clickEvent); setTimeout(() => { - assert.equal(file.refs.fileLink.length, 1); - const modalOverlayButton = file.componentModal.refs.modalOverlay; - modalOverlayButton.dispatchEvent(clickEvent); + assert.equal(file.componentModal.isOpened, true); + file.dataValue = value; + file.redraw(); setTimeout(() => { - assert.equal(!!file.componentModal.dialogElement, true); - const dialogYesButton = file.componentModal.dialogElement.refs.dialogYesButton; - dialogYesButton.dispatchEvent(clickEvent); + assert.equal(file.refs.fileLink.length, 1); + const modalOverlayButton = file.componentModal.refs.modalOverlay; + modalOverlayButton.dispatchEvent(clickEvent); setTimeout(() => { - assert.equal(!!file.componentModal.dialogElement, false); - file.componentModal.closeModal(); + assert.equal(!!file.componentModal.dialogElement, true); + const dialogYesButton = file.componentModal.dialogElement.refs.dialogYesButton; + dialogYesButton.dispatchEvent(clickEvent); setTimeout(() => { - assert.equal(file.componentModal.isOpened, false); - assert.equal(file.refs.fileLink.length, 0); - assert.equal(file.componentModal.refs.openModal.textContent.trim(), 'Click to set value'); - done(); + assert.equal(!!file.componentModal.dialogElement, false); + file.componentModal.closeModal(); + + setTimeout(() => { + assert.equal(file.componentModal.isOpened, false); + assert.equal(file.refs.fileLink.length, 0); + assert.equal( + file.componentModal.refs.openModal.textContent.trim(), + 'Click to set value', + ); + done(); + }, 200); }, 200); }, 200); }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should not incorrectly validate a non-multiple File component', function() { + it('Should not incorrectly validate a non-multiple File component', function () { comp1.multiple = false; return Harness.testCreate(FileComponent, comp1).then((component) => { assert(component.checkValidity(), 'Item should be valid'); @@ -209,13 +218,13 @@ describe('File Component', function() { size: 1159732, type: 'image/jpeg', originalName: 'IMG_5235.jpg', - } + }, ]); assert(component.checkValidity(), 'Item should be valid'); }); - }) + }); - it('Should not incorrectly validate a multiple File Component', function() { + it('Should not incorrectly validate a multiple File Component', function () { comp1.multiple = true; return Harness.testCreate(FileComponent, comp1).then((component) => { assert(component.checkValidity(), 'Item should be valid'); @@ -227,21 +236,34 @@ describe('File Component', function() { size: 1159732, type: 'image/jpeg', originalName: 'IMG_5235.jpg', - } + }, ]); assert(component.checkValidity(), 'Item should be valid'); }); }); - it('Should abort the correct file when user clicks the file remove button', function(done) { - const cmp = _.cloneDeep(comp1); + it('Should abort the correct file when user clicks the file remove button', function (done) { + const cmp = _.cloneDeep(comp1); const abortedFiles = []; cmp.multiple = true; cmp.storage = 'url'; const options = { fileService: { - uploadFile: function(storage, file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, uploadStartCallback, abortCallbackSetter) { + uploadFile: function ( + storage, + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + uploadStartCallback, + abortCallbackSetter, + ) { return new Promise((resolve, reject) => { // complete upload after 1s. setTimeout(() => { @@ -253,12 +275,12 @@ describe('File Component', function() { name: fileName, size: file.size, type: 'application/pdf', - url: `fake/url/${fileName}` + url: `fake/url/${fileName}`, }; resolve(uploadResponse); }, 1000); - abortCallbackSetter(function() { + abortCallbackSetter(function () { abortedFiles.push(file.name); clearTimeout(timeout); reject({ @@ -266,23 +288,31 @@ describe('File Component', function() { }); }); }); - } - } + }, + }, }; Harness.testCreate(FileComponent, cmp, options).then((component) => { - component.root = { everyComponent: () => {}, options: options, form: { submissionRevisions: false, components: [cmp] } }; + component.root = { + everyComponent: () => {}, + options: options, + form: { submissionRevisions: false, components: [cmp] }, + }; const parentNode = document.createElement('div'); const element = document.createElement('div'); parentNode.appendChild(element); component.build(element); const content = [1]; - const files = [new File(content, 'file.0'), new File([content], 'file.1'), new File([content], 'file.2')]; + const files = [ + new File(content, 'file.0'), + new File([content], 'file.1'), + new File([content], 'file.2'), + ]; component.handleFilesToUpload(files); - setTimeout(function() { + setTimeout(function () { // Table header and 3 rows for files Harness.testElements(component, '.list-group-item', 4); assert.equal(component.dataValue.length, 0); @@ -290,7 +320,9 @@ describe('File Component', function() { assert.equal(component.filesToSync.filesToUpload[1].status, 'progress'); assert.equal(component.filesToSync.filesToDelete.length, 0); - const abortIcon = component.element.querySelectorAll(`#abort-${component.filesToSync.filesToUpload[1].id}`)[0]; + const abortIcon = component.element.querySelectorAll( + `#abort-${component.filesToSync.filesToUpload[1].id}`, + )[0]; assert.notEqual(abortIcon, null); abortIcon.click(); @@ -308,20 +340,37 @@ describe('File Component', function() { }); }); - it('should not error on upload when noDefaults is set to true', function() { - return Formio.createForm(document.createElement('div'), comp2,{ noDefaults: true }).then((form)=>{ - const file = form.getComponent('file'); - return file.handleFilesToUpload([{ name: 'mypdf.pdf', size: 123123, type: 'application/pdf' }]); - }); + it('should not error on upload when noDefaults is set to true', function () { + return Formio.createForm(document.createElement('div'), comp2, { noDefaults: true }).then( + (form) => { + const file = form.getComponent('file'); + return file.handleFilesToUpload([ + { name: 'mypdf.pdf', size: 123123, type: 'application/pdf' }, + ]); + }, + ); }); - it('Should emit fileUploadError event on file upload failure', function(done) { + it('Should emit fileUploadError event on file upload failure', function (done) { const cmp = _.cloneDeep(comp1); const fileServiceError = new Error('Upload failed'); const options = { fileService: { - uploadFile: function(storage, file, fileName, dir, progressCallback, url, options, fileKey, groupPermissions, groupId, uploadStartCallback, abortCallbackSetter) { + uploadFile: function ( + storage, + file, + fileName, + dir, + progressCallback, + url, + options, + fileKey, + groupPermissions, + groupId, + uploadStartCallback, + abortCallbackSetter, + ) { return new Promise((resolve, reject) => { // Simulate upload failure setTimeout(() => { @@ -335,12 +384,16 @@ describe('File Component', function() { abortCallbackSetter(() => {}); }); - } - } + }, + }, }; Harness.testCreate(FileComponent, cmp, options).then((component) => { - component.root = { everyComponent: () => {}, options: options, form: { submissionRevisions: false, components: [cmp] } }; + component.root = { + everyComponent: () => {}, + options: options, + form: { submissionRevisions: false, components: [cmp] }, + }; const parentNode = document.createElement('div'); const element = document.createElement('div'); parentNode.appendChild(element); diff --git a/test/unit/Formio.unit.js b/test/unit/Formio.unit.js index 27ef568af3..442dcd0df1 100644 --- a/test/unit/Formio.unit.js +++ b/test/unit/Formio.unit.js @@ -19,29 +19,32 @@ const formId = '59bbe2ec8c246100079191ab'; const submissionId = '59bbe2ec8c246100079191ac'; const actionId = '59bbe2ec8c246100079191ad'; -const generateID = function() { +const generateID = function () { return chance.string({ length: 24, pool: '0123456789abcdef' }); }; -const runTests = function(fn, options) { +const runTests = function (fn, options) { const tests = {}; const noBefore = fn(tests); if (!noBefore) { // eslint-disable-next-line mocha/no-top-level-hooks - beforeEach(function() { + beforeEach(function () { Formio.setBaseUrl(baseUrl); Formio.setProjectUrl('https://api.form.io'); }); } _.each(tests, (testFn, path) => { - it(`Should initialize for ${path}`, function(done) { + it(`Should initialize for ${path}`, function (done) { if (typeof testFn === 'function') { testFn(); - } - else { + } else { const formio = new Formio(path, options); for (const param in testFn) { - assert.equal(formio[param], testFn[param], `${param} is not equal. ${formio[param]} == ${testFn[param]}\n`); + assert.equal( + formio[param], + testFn[param], + `${param} is not equal. ${formio[param]} == ${testFn[param]}\n`, + ); } } done(); @@ -49,129 +52,128 @@ const runTests = function(fn, options) { }); }; -describe('Formio.js Tests', function() { - describe('Formio Constructor Tests', function() { - +describe('Formio.js Tests', function () { + describe('Formio Constructor Tests', function () { runTests((tests) => { - tests[`http://form.io/project/${ projectId }/form/${ formId}`] = { - projectUrl: `http://form.io/project/${ projectId}`, + tests[`http://form.io/project/${projectId}/form/${formId}`] = { + projectUrl: `http://form.io/project/${projectId}`, projectsUrl: 'http://form.io/project', projectId: projectId, - formsUrl: `http://form.io/project/${ projectId }/form`, - formUrl: `http://form.io/project/${ projectId }/form/${ formId}`, + formsUrl: `http://form.io/project/${projectId}/form`, + formUrl: `http://form.io/project/${projectId}/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/action`, + actionsUrl: `http://form.io/project/${projectId}/form/${formId}/action`, actionUrl: '', actionId: '', - submissionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/submission`, + submissionsUrl: `http://form.io/project/${projectId}/form/${formId}/submission`, submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://form.io/form/${ formId}`] = { + tests[`http://form.io/form/${formId}`] = { projectUrl: 'http://form.io', projectsUrl: `${baseUrl}/project`, projectId: '', formsUrl: 'http://form.io/form', - formUrl: `http://form.io/form/${ formId}`, + formUrl: `http://form.io/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/form/${ formId }/action`, + actionsUrl: `http://form.io/form/${formId}/action`, actionUrl: '', actionId: '', - submissionsUrl: `http://form.io/form/${ formId }/submission`, + submissionsUrl: `http://form.io/form/${formId}/submission`, submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://form.io/form/${ formId }/submission/${ submissionId}`] = { + tests[`http://form.io/form/${formId}/submission/${submissionId}`] = { projectUrl: 'http://form.io', projectsUrl: `${baseUrl}/project`, projectId: '', formsUrl: 'http://form.io/form', - formUrl: `http://form.io/form/${ formId}`, + formUrl: `http://form.io/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/form/${ formId }/action`, + actionsUrl: `http://form.io/form/${formId}/action`, actionUrl: '', actionId: '', - submissionsUrl: `http://form.io/form/${ formId }/submission`, - submissionUrl: `http://form.io/form/${ formId }/submission/${ submissionId}`, + submissionsUrl: `http://form.io/form/${formId}/submission`, + submissionUrl: `http://form.io/form/${formId}/submission/${submissionId}`, submissionId: submissionId, - query: '' + query: '', }; - tests[`http://form.io/form/${ formId }/action/${ actionId}`] = { + tests[`http://form.io/form/${formId}/action/${actionId}`] = { projectUrl: 'http://form.io', projectsUrl: `${baseUrl}/project`, projectId: '', formsUrl: 'http://form.io/form', - formUrl: `http://form.io/form/${ formId}`, + formUrl: `http://form.io/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/form/${ formId }/action`, - actionUrl: `http://form.io/form/${ formId }/action/${ actionId}`, + actionsUrl: `http://form.io/form/${formId}/action`, + actionUrl: `http://form.io/form/${formId}/action/${actionId}`, actionId: actionId, - submissionsUrl: `http://form.io/form/${ formId }/submission`, + submissionsUrl: `http://form.io/form/${formId}/submission`, submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://form.io/project/${ projectId }/form/${ formId }/action/${ actionId}`] = { - projectUrl: `http://form.io/project/${ projectId}`, + tests[`http://form.io/project/${projectId}/form/${formId}/action/${actionId}`] = { + projectUrl: `http://form.io/project/${projectId}`, projectsUrl: 'http://form.io/project', projectId: projectId, - formsUrl: `http://form.io/project/${ projectId }/form`, - formUrl: `http://form.io/project/${ projectId }/form/${ formId}`, + formsUrl: `http://form.io/project/${projectId}/form`, + formUrl: `http://form.io/project/${projectId}/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/action`, - actionUrl: `http://form.io/project/${ projectId }/form/${ formId }/action/${ actionId}`, + actionsUrl: `http://form.io/project/${projectId}/form/${formId}/action`, + actionUrl: `http://form.io/project/${projectId}/form/${formId}/action/${actionId}`, actionId: actionId, - submissionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/submission`, + submissionsUrl: `http://form.io/project/${projectId}/form/${formId}/submission`, submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://api.form.io/project/${ projectId}`] = { - projectUrl: `http://api.form.io/project/${ projectId}`, + tests[`http://api.form.io/project/${projectId}`] = { + projectUrl: `http://api.form.io/project/${projectId}`, projectsUrl: 'http://api.form.io/project', projectId: projectId, - formsUrl: `http://api.form.io/project/${ projectId }/form`, + formsUrl: `http://api.form.io/project/${projectId}/form`, formUrl: '', formId: '', - actionsUrl: `http://api.form.io/project/${ projectId }/action`, + actionsUrl: `http://api.form.io/project/${projectId}/action`, actionUrl: '', actionId: '', - submissionsUrl: `http://api.form.io/project/${ projectId }/submission`, + submissionsUrl: `http://api.form.io/project/${projectId}/submission`, submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://form.io/project/${ projectId }/form/${ formId }/submission/${ submissionId}`] = { - projectUrl: `http://form.io/project/${ projectId}`, + tests[`http://form.io/project/${projectId}/form/${formId}/submission/${submissionId}`] = { + projectUrl: `http://form.io/project/${projectId}`, projectsUrl: 'http://form.io/project', projectId: projectId, - formsUrl: `http://form.io/project/${ projectId }/form`, - formUrl: `http://form.io/project/${ projectId }/form/${ formId}`, + formsUrl: `http://form.io/project/${projectId}/form`, + formUrl: `http://form.io/project/${projectId}/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/action`, + actionsUrl: `http://form.io/project/${projectId}/form/${formId}/action`, actionUrl: '', actionId: '', - submissionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/submission`, - submissionUrl: `http://form.io/project/${ projectId }/form/${ formId }/submission/${ submissionId}`, + submissionsUrl: `http://form.io/project/${projectId}/form/${formId}/submission`, + submissionUrl: `http://form.io/project/${projectId}/form/${formId}/submission/${submissionId}`, submissionId: submissionId, - query: '' + query: '', }; - tests[`http://form.io/project/${ projectId }/form/${ formId }?test=hello&test2=there`] = { - projectUrl: `http://form.io/project/${ projectId}`, + tests[`http://form.io/project/${projectId}/form/${formId}?test=hello&test2=there`] = { + projectUrl: `http://form.io/project/${projectId}`, projectsUrl: 'http://form.io/project', projectId: projectId, - formsUrl: `http://form.io/project/${ projectId }/form`, - formUrl: `http://form.io/project/${ projectId }/form/${ formId}`, + formsUrl: `http://form.io/project/${projectId}/form`, + formUrl: `http://form.io/project/${projectId}/form/${formId}`, formId: formId, - actionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/action`, + actionsUrl: `http://form.io/project/${projectId}/form/${formId}/action`, actionUrl: '', actionId: '', - submissionsUrl: `http://form.io/project/${ projectId }/form/${ formId }/submission`, + submissionsUrl: `http://form.io/project/${projectId}/form/${formId}/submission`, submissionUrl: '', submissionId: '', - query: '?test=hello&test2=there' + query: '?test=hello&test2=there', }; tests['http://project.form.io/user/login'] = { projectUrl: 'http://project.form.io', @@ -186,9 +188,9 @@ describe('Formio.js Tests', function() { submissionsUrl: 'http://project.form.io/user/login/submission', submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://project.form.io/user/login/submission/${ submissionId}`] = { + tests[`http://project.form.io/user/login/submission/${submissionId}`] = { projectUrl: 'http://project.form.io', projectsUrl: `${baseUrl}/project`, projectId: 'project', @@ -199,11 +201,11 @@ describe('Formio.js Tests', function() { actionUrl: '', actionId: '', submissionsUrl: 'http://project.form.io/user/login/submission', - submissionUrl: `http://project.form.io/user/login/submission/${ submissionId}`, + submissionUrl: `http://project.form.io/user/login/submission/${submissionId}`, submissionId: submissionId, - query: '' + query: '', }; - tests[`http://project.form.io/user/login/action/${ actionId}`] = { + tests[`http://project.form.io/user/login/action/${actionId}`] = { projectUrl: 'http://project.form.io', projectsUrl: `${baseUrl}/project`, projectId: 'project', @@ -211,14 +213,14 @@ describe('Formio.js Tests', function() { formUrl: 'http://project.form.io/user/login', formId: 'user/login', actionsUrl: 'http://project.form.io/user/login/action', - actionUrl: `http://project.form.io/user/login/action/${ actionId}`, + actionUrl: `http://project.form.io/user/login/action/${actionId}`, actionId: actionId, submissionsUrl: 'http://project.form.io/user/login/submission', submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://project.form.io/user/login/action/${ actionId }?test=test2`] = { + tests[`http://project.form.io/user/login/action/${actionId}?test=test2`] = { projectUrl: 'http://project.form.io', projectsUrl: `${baseUrl}/project`, projectId: 'project', @@ -226,14 +228,14 @@ describe('Formio.js Tests', function() { formUrl: 'http://project.form.io/user/login', formId: 'user/login', actionsUrl: 'http://project.form.io/user/login/action', - actionUrl: `http://project.form.io/user/login/action/${ actionId}`, + actionUrl: `http://project.form.io/user/login/action/${actionId}`, actionId: actionId, submissionsUrl: 'http://project.form.io/user/login/submission', submissionUrl: '', submissionId: '', - query: '?test=test2' + query: '?test=test2', }; - tests[`http://project.form.io/user/loginform/action/${ actionId }?test=test2`] = { + tests[`http://project.form.io/user/loginform/action/${actionId}?test=test2`] = { projectUrl: 'http://project.form.io', projectsUrl: `${baseUrl}/project`, projectId: 'project', @@ -241,12 +243,12 @@ describe('Formio.js Tests', function() { formUrl: 'http://project.form.io/user/loginform', formId: 'user/loginform', actionsUrl: 'http://project.form.io/user/loginform/action', - actionUrl: `http://project.form.io/user/loginform/action/${ actionId}`, + actionUrl: `http://project.form.io/user/loginform/action/${actionId}`, actionId: actionId, submissionsUrl: 'http://project.form.io/user/loginform/submission', submissionUrl: '', submissionId: '', - query: '?test=test2' + query: '?test=test2', }; tests['http://project.form.io/user/loginform/submission'] = { projectUrl: 'http://project.form.io', @@ -261,7 +263,7 @@ describe('Formio.js Tests', function() { submissionsUrl: 'http://project.form.io/user/loginform/submission', submissionUrl: '', submissionId: '', - query: '' + query: '', }; tests['http://project.form.io/user'] = { projectUrl: 'http://project.form.io', @@ -276,9 +278,9 @@ describe('Formio.js Tests', function() { submissionsUrl: 'http://project.form.io/user/submission', submissionUrl: '', submissionId: '', - query: '' + query: '', }; - tests[`http://project.form.io/user/actionform/submission/${ submissionId}`] = { + tests[`http://project.form.io/user/actionform/submission/${submissionId}`] = { projectUrl: 'http://project.form.io', projectsUrl: `${baseUrl}/project`, projectId: 'project', @@ -289,9 +291,9 @@ describe('Formio.js Tests', function() { actionUrl: '', actionId: '', submissionsUrl: 'http://project.form.io/user/actionform/submission', - submissionUrl: `http://project.form.io/user/actionform/submission/${ submissionId}`, + submissionUrl: `http://project.form.io/user/actionform/submission/${submissionId}`, submissionId: submissionId, - query: '' + query: '', }; tests['http://project.form.io/user/actionform/?test=foo'] = { projectUrl: 'http://project.form.io', @@ -306,142 +308,151 @@ describe('Formio.js Tests', function() { submissionsUrl: 'http://project.form.io/user/actionform/submission', submissionUrl: '', submissionId: '', - query: '?test=foo' + query: '?test=foo', }; }); }); - describe('Localhost Constructor Tests', function() { + describe('Localhost Constructor Tests', function () { const testBaseUrl = 'localhost:3000'; const projectName = 'myproject'; const projectUrl = `${protocol}://${projectName}.${testBaseUrl}`; - - runTests((tests) => { - tests[`${projectUrl}/user/actionform/?test=foo`] = { - projectUrl: projectUrl, - projectsUrl: `${baseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: `${projectUrl}/user/actionform`, - formId: 'user/actionform', - actionsUrl: `${projectUrl}/user/actionform/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/user/actionform/submission`, - submissionUrl: '', - submissionId: '', - query: '?test=foo' - }; - tests[`${projectUrl}/user`] = { - projectUrl: projectUrl, - projectsUrl: `${baseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: `${projectUrl}/user`, - formId: 'user', - actionsUrl: `${projectUrl}/user/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/user/submission`, - submissionUrl: '', - submissionId: '', - query: '' - }; - }, { base: baseUrl }); + + runTests( + (tests) => { + tests[`${projectUrl}/user/actionform/?test=foo`] = { + projectUrl: projectUrl, + projectsUrl: `${baseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: `${projectUrl}/user/actionform`, + formId: 'user/actionform', + actionsUrl: `${projectUrl}/user/actionform/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/user/actionform/submission`, + submissionUrl: '', + submissionId: '', + query: '?test=foo', + }; + tests[`${projectUrl}/user`] = { + projectUrl: projectUrl, + projectsUrl: `${baseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: `${projectUrl}/user`, + formId: 'user', + actionsUrl: `${projectUrl}/user/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/user/submission`, + submissionUrl: '', + submissionId: '', + query: '', + }; + }, + { base: baseUrl }, + ); }); - describe('Subdomain Constructor Tests', function() { + describe('Subdomain Constructor Tests', function () { const testBaseUrl = 'foo.blah.form.io'; const projectName = 'myproject'; const projectUrl = `${protocol}://${projectName}.${testBaseUrl}`; - runTests((tests) => { - tests[`${projectUrl}/user/actionform/?test=foo`] = { - projectUrl: projectUrl, - projectsUrl: `${baseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: `${projectUrl}/user/actionform`, - formId: 'user/actionform', - actionsUrl: `${projectUrl}/user/actionform/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/user/actionform/submission`, - submissionUrl: '', - submissionId: '', - query: '?test=foo' - }; - tests[`${projectUrl}/user`] = { - projectUrl: projectUrl, - projectsUrl: `${baseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: `${projectUrl}/user`, - formId: 'user', - actionsUrl: `${projectUrl}/user/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/user/submission`, - submissionUrl: '', - submissionId: '', - query: '' - }; - }, { base: baseUrl }); + runTests( + (tests) => { + tests[`${projectUrl}/user/actionform/?test=foo`] = { + projectUrl: projectUrl, + projectsUrl: `${baseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: `${projectUrl}/user/actionform`, + formId: 'user/actionform', + actionsUrl: `${projectUrl}/user/actionform/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/user/actionform/submission`, + submissionUrl: '', + submissionId: '', + query: '?test=foo', + }; + tests[`${projectUrl}/user`] = { + projectUrl: projectUrl, + projectsUrl: `${baseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: `${projectUrl}/user`, + formId: 'user', + actionsUrl: `${projectUrl}/user/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/user/submission`, + submissionUrl: '', + submissionId: '', + query: '', + }; + }, + { base: baseUrl }, + ); }); - describe('Subdirectory Constructor Tests', function() { + describe('Subdirectory Constructor Tests', function () { const testBaseUrl = 'foo.blah.form.io'; const projectName = 'myproject'; const projectUrl = `${protocol}://${testBaseUrl}/${projectName}`; - runTests((tests) => { - tests[`${projectUrl}/user/actionform/?test=foo`] = { - projectUrl: projectUrl, - projectsUrl: `${protocol}://${testBaseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: `${projectUrl}/user/actionform`, - formId: 'user/actionform', - actionsUrl: `${projectUrl}/user/actionform/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/user/actionform/submission`, - submissionUrl: '', - submissionId: '', - query: '?test=foo' - }; - tests[`${projectUrl}/user`] = { - projectUrl: projectUrl, - projectsUrl: `${protocol}://${testBaseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: `${projectUrl}/user`, - formId: 'user', - actionsUrl: `${projectUrl}/user/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/user/submission`, - submissionUrl: '', - submissionId: '', - query: '' - }; - tests[projectUrl] = { - projectUrl: projectUrl, - projectsUrl: `${protocol}://${testBaseUrl}/project`, - projectId: projectName, - formsUrl: `${projectUrl}/form`, - formUrl: '', - formId: '', - actionsUrl: `${projectUrl}/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${projectUrl}/submission`, - submissionUrl: '', - submissionId: '', - query: '' - }; - }, { base: `${protocol}://${testBaseUrl}` }); + runTests( + (tests) => { + tests[`${projectUrl}/user/actionform/?test=foo`] = { + projectUrl: projectUrl, + projectsUrl: `${protocol}://${testBaseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: `${projectUrl}/user/actionform`, + formId: 'user/actionform', + actionsUrl: `${projectUrl}/user/actionform/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/user/actionform/submission`, + submissionUrl: '', + submissionId: '', + query: '?test=foo', + }; + tests[`${projectUrl}/user`] = { + projectUrl: projectUrl, + projectsUrl: `${protocol}://${testBaseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: `${projectUrl}/user`, + formId: 'user', + actionsUrl: `${projectUrl}/user/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/user/submission`, + submissionUrl: '', + submissionId: '', + query: '', + }; + tests[projectUrl] = { + projectUrl: projectUrl, + projectsUrl: `${protocol}://${testBaseUrl}/project`, + projectId: projectName, + formsUrl: `${projectUrl}/form`, + formUrl: '', + formId: '', + actionsUrl: `${projectUrl}/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${projectUrl}/submission`, + submissionUrl: '', + submissionId: '', + query: '', + }; + }, + { base: `${protocol}://${testBaseUrl}` }, + ); }); - describe('Simple Form Constructor Tests', function() { + describe('Simple Form Constructor Tests', function () { runTests((tests) => { tests['init'] = () => { Formio.setBaseUrl('https://api.form.io'); @@ -460,82 +471,108 @@ describe('Formio.js Tests', function() { submissionsUrl: 'https://examples.form.io/example/submission', submissionUrl: '', submissionId: '', - query: '' + query: '', }; return true; }); }); - describe('Open Source Constructor Tests', function() { + describe('Open Source Constructor Tests', function () { const formBaseUrl = 'http://localhost:3000'; - runTests((tests) => { - tests[`${formBaseUrl}/user`] = { - projectUrl: formBaseUrl, - projectsUrl: '', - projectId: '', - formsUrl: `${formBaseUrl}/form`, - formUrl: `${formBaseUrl}/user`, - formId: 'user', - actionsUrl: `${formBaseUrl}/user/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${formBaseUrl}/user/submission`, - submissionUrl: '', - submissionId: '', - query: '' - }; - tests[`${formBaseUrl}/user/actionform/?test=foo`] = { - projectUrl: formBaseUrl, - projectsUrl: '', - projectId: '', - formsUrl: `${formBaseUrl}/form`, - formUrl: `${formBaseUrl}/user/actionform`, - formId: 'user/actionform', - actionsUrl: `${formBaseUrl}/user/actionform/action`, - actionUrl: '', - actionId: '', - submissionsUrl: `${formBaseUrl}/user/actionform/submission`, - submissionUrl: '', - submissionId: '', - query: '?test=foo' - }; - }, { base: formBaseUrl, project: formBaseUrl }); + runTests( + (tests) => { + tests[`${formBaseUrl}/user`] = { + projectUrl: formBaseUrl, + projectsUrl: '', + projectId: '', + formsUrl: `${formBaseUrl}/form`, + formUrl: `${formBaseUrl}/user`, + formId: 'user', + actionsUrl: `${formBaseUrl}/user/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${formBaseUrl}/user/submission`, + submissionUrl: '', + submissionId: '', + query: '', + }; + tests[`${formBaseUrl}/user/actionform/?test=foo`] = { + projectUrl: formBaseUrl, + projectsUrl: '', + projectId: '', + formsUrl: `${formBaseUrl}/form`, + formUrl: `${formBaseUrl}/user/actionform`, + formId: 'user/actionform', + actionsUrl: `${formBaseUrl}/user/actionform/action`, + actionUrl: '', + actionId: '', + submissionsUrl: `${formBaseUrl}/user/actionform/submission`, + submissionUrl: '', + submissionId: '', + query: '?test=foo', + }; + }, + { base: formBaseUrl, project: formBaseUrl }, + ); }); - describe('Plugins', function() { + describe('Plugins', function () { let plugin = null; - beforeEach(function() { - assert.equal(Formio.getPlugin('test-plugin'), undefined, 'No plugin may be returned under the name `test-plugin`'); + beforeEach(function () { + assert.equal( + Formio.getPlugin('test-plugin'), + undefined, + 'No plugin may be returned under the name `test-plugin`', + ); plugin = { init: sinon.spy() }; Formio.registerPlugin(plugin, 'test-plugin'); assert.ok(plugin.init.calledOnce, 'plugin.init must be called exactly once'); assert.ok(plugin.init.calledOn(plugin), 'plugin.init must be called on plugin as `this`'); - assert.ok(plugin.init.calledWithExactly(Formio), 'plugin.init must be given Formio as argument'); + assert.ok( + plugin.init.calledWithExactly(Formio), + 'plugin.init must be given Formio as argument', + ); assert.equal(Formio.getPlugin('test-plugin'), plugin, 'getPlugin must return plugin'); }); - afterEach(function() { + afterEach(function () { assert.equal(Formio.getPlugin('test-plugin'), plugin, 'getPlugin must return plugin'); plugin.deregister = sinon.spy(); Formio.deregisterPlugin(plugin, 'test-plugin'); assert.ok(plugin.deregister.calledOnce, 'plugin.deregister must be called exactly once'); - assert.ok(plugin.deregister.calledOn(plugin), 'plugin.deregister must be called on plugin as `this`'); - assert.ok(plugin.deregister.calledWithExactly(Formio), 'plugin.deregister must be given Formio as argument'); - assert.equal(Formio.getPlugin('test-plugin'), undefined, 'No plugin may be returned under the name `test-plugin`'); + assert.ok( + plugin.deregister.calledOn(plugin), + 'plugin.deregister must be called on plugin as `this`', + ); + assert.ok( + plugin.deregister.calledWithExactly(Formio), + 'plugin.deregister must be given Formio as argument', + ); + assert.equal( + Formio.getPlugin('test-plugin'), + undefined, + 'No plugin may be returned under the name `test-plugin`', + ); }); // Test a request to see if the plugin flow order is correct const testRequest = function testRequest(url, method, type) { let fnName; switch (method) { - case 'GET': fnName = `load${_.capitalize(type)}`; break; + case 'GET': + fnName = `load${_.capitalize(type)}`; + break; case 'POST': - case 'PUT': fnName = `save${_.capitalize(type)}`; break; - case 'DELETE': fnName = `delete${_.capitalize(type)}`; break; + case 'PUT': + fnName = `save${_.capitalize(type)}`; + break; + case 'DELETE': + fnName = `delete${_.capitalize(type)}`; + break; } - it(`Plugin ${method} ${fnName}`, function(done) { + it(`Plugin ${method} ${fnName}`, function (done) { let step = 0; const formio = new Formio(url); method = method.toUpperCase(); @@ -549,31 +586,41 @@ describe('Formio.js Tests', function() { method: method, url: formio[type + (method === 'POST' ? 'sUrl' : 'Url')], data: _.startsWith(fnName, 'save') ? testData : null, - opts: testOpts + opts: testOpts, }; // Set up plugin hooks - plugin.preRequest = function(requestArgs) { + plugin.preRequest = function (requestArgs) { assert.equal(++step, 1, 'preRequest hook should be called first'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); - return Promise.resolve() - .then(() => { - assert.equal(++step, 3, 'preRequest promise should resolve third'); - // TODO - }); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); + return Promise.resolve().then(() => { + assert.equal(++step, 3, 'preRequest promise should resolve third'); + // TODO + }); }; - plugin.request = function(requestArgs) { + plugin.request = function (requestArgs) { assert.equal(++step, 4, 'request hook should be called fourth'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); - return Promise.resolve() - .then(() => { - assert.equal(++step, 5, 'request promise should resolve fifth'); - return testResult; - }); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); + return Promise.resolve().then(() => { + assert.equal(++step, 5, 'request promise should resolve fifth'); + return testResult; + }); }; - plugin.wrapRequestPromise = function(promise, requestArgs) { + plugin.wrapRequestPromise = function (promise, requestArgs) { assert.equal(++step, 2, 'wrapRequestPromise hook should be called second'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); return promise.then((result) => { assert.equal(++step, 6, 'wrapRequestPromise post-result promise should resolve sixth'); assert.deepEqual(result, testResult, 'Result should match result from request hook'); @@ -584,11 +631,9 @@ describe('Formio.js Tests', function() { let promise; if (_.startsWith(fnName, 'save')) { promise = formio[fnName](testData, testOpts); - } - else if (_.startsWith(fnName, 'load')) { + } else if (_.startsWith(fnName, 'load')) { promise = formio[fnName](null, testOpts); - } - else { + } else { promise = formio[fnName](testOpts); } promise.then((result) => { @@ -603,106 +648,106 @@ describe('Formio.js Tests', function() { { url: 'https://api.localhost:3000/project/myproject', method: 'GET', - type: 'project' + type: 'project', }, { url: '', method: 'POST', - type: 'project' + type: 'project', }, { url: 'https://api.localhost:3000/project/myproject', method: 'PUT', - type: 'project' + type: 'project', }, { url: 'https://api.localhost:3000/project/myproject', method: 'DELETE', - type: 'project' + type: 'project', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'GET', - type: 'form' + type: 'form', }, { url: 'https://api.localhost:3000/project/myproject', method: 'POST', - type: 'form' + type: 'form', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'PUT', - type: 'form' + type: 'form', }, { url: '/project/myproject/form/0123456789ABCDEF01234567', method: 'PUT', - type: 'form' + type: 'form', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'DELETE', - type: 'form' + type: 'form', }, { url: 'https://api.localhost:3000/project/myproject/', method: 'GET', - type: 'forms' + type: 'forms', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567/submission/76543210FEDCBA9876543210', method: 'GET', - type: 'submission' + type: 'submission', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'POST', - type: 'submission' + type: 'submission', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567/submission/76543210FEDCBA9876543210', method: 'PUT', - type: 'submission' + type: 'submission', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567/submission/76543210FEDCBA9876543210', method: 'DELETE', - type: 'submission' + type: 'submission', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'GET', - type: 'submissions' + type: 'submissions', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567/action/76543210FEDCBA9876543210', method: 'GET', - type: 'action' + type: 'action', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'POST', - type: 'action' + type: 'action', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567/action/76543210FEDCBA9876543210', method: 'PUT', - type: 'action' + type: 'action', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567/action/76543210FEDCBA9876543210', method: 'DELETE', - type: 'action' + type: 'action', }, { url: 'https://api.localhost:3000/project/myproject/form/0123456789ABCDEF01234567', method: 'GET', - type: 'actions' - } + type: 'actions', + }, ]; tests.forEach((test) => { @@ -710,38 +755,48 @@ describe('Formio.js Tests', function() { }); const testStaticRequest = function testStaticRequest(fnName, url, method) { - it(`Plugin ${fnName}`, function(done) { + it(`Plugin ${fnName}`, function (done) { let step = 0; const testResult = { _id: 'TEST_ID', testResult: 'TEST_RESULT' }; const expectedArgs = { url: url, method: method, data: null, - opts: {} + opts: {}, }; // Set up plugin hooks - plugin.preRequest = function(requestArgs) { + plugin.preRequest = function (requestArgs) { assert.equal(++step, 1, 'preRequest hook should be called first'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); - return Promise.resolve() - .then(() => { - assert.equal(++step, 3, 'preRequest promise should resolve third'); - // TODO - }); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); + return Promise.resolve().then(() => { + assert.equal(++step, 3, 'preRequest promise should resolve third'); + // TODO + }); }; - plugin.staticRequest = function(requestArgs) { + plugin.staticRequest = function (requestArgs) { assert.equal(++step, 4, 'request hook should be called fourth'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); - return Promise.resolve() - .then(() => { - assert.equal(++step, 5, 'request promise should resolve fifth'); - return testResult; - }); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); + return Promise.resolve().then(() => { + assert.equal(++step, 5, 'request promise should resolve fifth'); + return testResult; + }); }; - plugin.wrapStaticRequestPromise = function(promise, requestArgs) { + plugin.wrapStaticRequestPromise = function (promise, requestArgs) { assert.equal(++step, 2, 'wrapRequestPromise hook should be called second'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); return promise.then((result) => { assert.equal(++step, 6, 'wrapRequestPromise post-result promise should resolve sixth'); assert.deepEqual(result, testResult, 'Result should match result from request hook'); @@ -749,12 +804,11 @@ describe('Formio.js Tests', function() { }); }; - Formio[fnName]() - .then((result) => { - assert.equal(++step, 7, 'post request promise should resolve last'); - assert.deepEqual(result, testResult, 'Result should match result from request hook'); - done(); - }); + Formio[fnName]().then((result) => { + assert.equal(++step, 7, 'post request promise should resolve last'); + assert.deepEqual(result, testResult, 'Result should match result from request hook'); + done(); + }); }); }; @@ -762,13 +816,13 @@ describe('Formio.js Tests', function() { { fnName: 'loadProjects', url: 'https://api.localhost:3000/project', - method: 'GET' + method: 'GET', }, { fnName: 'logout', url: 'https://api.localhost:3000/logout', - method: 'GET' - } + method: 'GET', + }, ]; staticTests.forEach((test) => { @@ -776,7 +830,7 @@ describe('Formio.js Tests', function() { }); const testFileRequest = function testFileRequest(fnName, formUrl, args) { - it(`Plugin ${fnName}`, function(done) { + it(`Plugin ${fnName}`, function (done) { let step = 0; const testResult = { _id: 'TEST_ID', testResult: 'TEST_RESULT' }; let expectedArgs; @@ -784,55 +838,67 @@ describe('Formio.js Tests', function() { if (fnName === 'downloadFile') { expectedArgs = { method: 'download', - file: args[0] + file: args[0], }; - } - else if (fnName === 'uploadFile') { + } else if (fnName === 'uploadFile') { expectedArgs = { provider: args[0], method: 'upload', file: args[1], fileName: args[2], - dir: args[3] + dir: args[3], }; } // Set up plugin hooks - plugin.preRequest = function(requestArgs) { + plugin.preRequest = function (requestArgs) { assert.equal(++step, 1, 'preRequest hook should be called first'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); - return Promise.resolve() - .then(() => { - assert.equal(++step, 3, 'preRequest promise should resolve third'); - // TODO - }); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); + return Promise.resolve().then(() => { + assert.equal(++step, 3, 'preRequest promise should resolve third'); + // TODO + }); }; - plugin.fileRequest = function(requestArgs) { + plugin.fileRequest = function (requestArgs) { assert.equal(++step, 4, 'request hook should be called fourth'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); - return Promise.resolve() - .then(() => { - assert.equal(++step, 5, 'request promise should resolve fifth'); - return testResult; - }); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); + return Promise.resolve().then(() => { + assert.equal(++step, 5, 'request promise should resolve fifth'); + return testResult; + }); }; - plugin.wrapFileRequestPromise = function(promise, requestArgs) { + plugin.wrapFileRequestPromise = function (promise, requestArgs) { assert.equal(++step, 2, 'wrapFileRequestPromise hook should be called second'); - assert.deepEqual(requestArgs, expectedArgs, 'Request hook arguments match expected arguments'); + assert.deepEqual( + requestArgs, + expectedArgs, + 'Request hook arguments match expected arguments', + ); return promise.then((result) => { - assert.equal(++step, 6, 'wrapFileRequestPromise post-result promise should resolve sixth'); + assert.equal( + ++step, + 6, + 'wrapFileRequestPromise post-result promise should resolve sixth', + ); assert.deepEqual(result, testResult, 'Result should match result from request hook'); return result; }); }; const formio = new Formio(formUrl); - formio[fnName].apply(null, args) - .then((result) => { - assert.equal(++step, 7, 'post request promise should resolve last'); - assert.deepEqual(result, testResult, 'Result should match result from request hook'); - done(); - }); + formio[fnName].apply(null, args).then((result) => { + assert.equal(++step, 7, 'post request promise should resolve last'); + assert.deepEqual(result, testResult, 'Result should match result from request hook'); + done(); + }); }); }; @@ -840,22 +906,12 @@ describe('Formio.js Tests', function() { { fnName: 'uploadFile', formUrl: 'https://api.localhost:3000/project/123/form/123', - args: [ - 's3', - 'FILE', - 'file.jpg', - 'dir/' - ] + args: ['s3', 'FILE', 'file.jpg', 'dir/'], }, { fnName: 'uploadFile', formUrl: 'https://api.localhost:3000/project/123/form/123', - args: [ - 'dropbox', - 'FILE', - 'file.jpg', - 'dir/' - ] + args: ['dropbox', 'FILE', 'file.jpg', 'dir/'], }, { fnName: 'downloadFile', @@ -863,9 +919,9 @@ describe('Formio.js Tests', function() { args: [ { storage: 's3', - name: 'test' - } - ] + name: 'test', + }, + ], }, { fnName: 'downloadFile', @@ -873,10 +929,10 @@ describe('Formio.js Tests', function() { args: [ { storage: 'dropbox', - name: 'test' - } - ] - } + name: 'test', + }, + ], + }, ]; fileTests.forEach((test) => { @@ -884,9 +940,9 @@ describe('Formio.js Tests', function() { }); }); - describe('Test Formio.js capabilities', function() { - const testCapability = function(test) { - it(test.name, function(done) { + describe('Test Formio.js capabilities', function () { + const testCapability = function (test) { + it(test.name, function (done) { // need to clear Formio cache before every test, otherwise mock results might be ignored for same URLs Formio.clearCache(); if (test.mock) { @@ -895,8 +951,7 @@ describe('Formio.js Tests', function() { _.each(mock, (_mock) => { fetchMock.mock(_mock.url, _mock.response, { method: _mock.method }); }); - } - else { + } else { fetchMock.mock(mock.url, mock.response, { method: mock.method }); } } @@ -935,19 +990,18 @@ describe('Formio.js Tests', function() { data: { 'user.name': chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', }), 'user.email': chance.email(), - 'user.password': chance.string({ length: 12 }) - } + 'user.password': chance.string({ length: 12 }), + }, }; Formio.setProjectUrl(Formio.getBaseUrl()); const formio = new Formio(`${Formio.getBaseUrl()}/user/register`); - return formio.saveSubmission(req) - .then((response) => { - assert.deepEqual(response, user, 'saveSubmission response should match test user'); - assert.equal(Formio.getToken(), userToken, 'Formio should save the user token'); - }); + return formio.saveSubmission(req).then((response) => { + assert.deepEqual(response, user, 'saveSubmission response should match test user'); + assert.equal(Formio.getToken(), userToken, 'Formio should save the user token'); + }); }, mock() { return [ @@ -958,11 +1012,11 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: user + body: user, }; - } + }, }, { url: `${Formio.getBaseUrl()}/user/register/submission`, @@ -976,25 +1030,25 @@ describe('Formio.js Tests', function() { modified: new Date().toISOString(), data: { email: body.data['user.email'], - name: body.data['user.name'] + name: body.data['user.name'], }, externalIds: [], externalTokens: [], form: userFormId, - owner: userId + owner: userId, }; userPassword = body.data['user.password']; return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: user + body: user, }; - } - } + }, + }, ]; - } + }, }, { name: 'Logging in.', @@ -1002,15 +1056,14 @@ describe('Formio.js Tests', function() { const req = { data: { 'user.email': user.data.email, - 'user.password': userPassword - } + 'user.password': userPassword, + }, }; const formio = new Formio(`${Formio.getBaseUrl()}/user/login`); - return formio.saveSubmission(req) - .then((response) => { - assert.deepEqual(response, user, 'saveSubmission response should match test user'); - assert.equal(Formio.getToken(), userToken, 'Formio should save the user token'); - }); + return formio.saveSubmission(req).then((response) => { + assert.deepEqual(response, user, 'saveSubmission response should match test user'); + assert.equal(Formio.getToken(), userToken, 'Formio should save the user token'); + }); }, mock() { return { @@ -1019,18 +1072,26 @@ describe('Formio.js Tests', function() { response(url, opts) { const body = JSON.parse(opts.body); userToken = chance.string({ length: 450 }); - assert.equal(body.data['user.email'], user.data.email, 'Login email must be correct.'); - assert.equal(body.data['user.password'], userPassword, 'Login password must be correct.'); + assert.equal( + body.data['user.email'], + user.data.email, + 'Login email must be correct.', + ); + assert.equal( + body.data['user.password'], + userPassword, + 'Login password must be correct.', + ); return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: user + body: user, }; - } + }, }; - } + }, }, { name: 'Current user.', @@ -1055,13 +1116,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: user + body: user, }; - } + }, }; - } + }, }, { name: 'Create Project', @@ -1070,22 +1131,21 @@ describe('Formio.js Tests', function() { const req = { title: chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', }), name: chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyz' + pool: 'abcdefghijklmnopqrstuvwxyz', }), description: chance.paragraph({ sentences: 1 }), settings: { - cors: '*' + cors: '*', }, - template: 'http://help.form.io/templates/empty.json' + template: 'http://help.form.io/templates/empty.json', }; - return formio.saveProject(req) - .then((response) => { - assert.deepEqual(response, project, 'saveProject response should match test user'); - }); + return formio.saveProject(req).then((response) => { + assert.deepEqual(response, project, 'saveProject response should match test user'); + }); }, mock() { return { @@ -1102,37 +1162,36 @@ describe('Formio.js Tests', function() { used: 0, limit: 1000, remaining: 1000, - reset: new Date(Date.now() + 2.628e9).toISOString() // ~1 month later + reset: new Date(Date.now() + 2.628e9).toISOString(), // ~1 month later }, access: [], title: body.title, name: body.name, description: body.description, plan: 'basic', - owner: user._id + owner: user._id, }; return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: project + body: project, }; - } + }, }; - } + }, }, { name: 'Getting Projects', test() { - return Formio.loadProjects() - .then((projects) => { - assert.equal(projects.length, 1, 'Should return only one project.'); - assert.equal(projects.skip, 0, 'skip should be 0.'); - assert.equal(projects.limit, 1, 'limit should be 1.'); - assert.equal(projects.serverCount, 1, 'serverCount should be 1.'); - assert.deepEqual(projects[0], project, 'Should match project'); - }); + return Formio.loadProjects().then((projects) => { + assert.equal(projects.length, 1, 'Should return only one project.'); + assert.equal(projects.skip, 0, 'skip should be 0.'); + assert.equal(projects.limit, 1, 'limit should be 1.'); + assert.equal(projects.serverCount, 1, 'serverCount should be 1.'); + assert.deepEqual(projects[0], project, 'Should match project'); + }); }, mock() { return { @@ -1144,22 +1203,21 @@ describe('Formio.js Tests', function() { 'Content-Type': 'application/json', 'Content-Range': '0-0/1', 'Range-Unit': 'items', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: [project] + body: [project], }; - } + }, }; - } + }, }, { name: 'Read Project', test() { const formio = new Formio(`${Formio.getBaseUrl()}/project/${project._id}`); - return formio.loadProject() - .then((response) => { - assert.deepEqual(response, project, 'Should match project'); - }); + return formio.loadProject().then((response) => { + assert.deepEqual(response, project, 'Should match project'); + }); }, mock() { return { @@ -1169,13 +1227,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: project + body: project, }; - } + }, }; - } + }, }, { name: 'Update Project', @@ -1184,17 +1242,16 @@ describe('Formio.js Tests', function() { const newProject = fastCloneDeep(project); newProject.name = chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyz' + pool: 'abcdefghijklmnopqrstuvwxyz', }); newProject.title = chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', }); newProject.description = chance.paragraph({ sentences: 1 }); - return formio.saveProject(newProject) - .then((response) => { - assert.deepEqual(response, project, 'Project should match'); - }); + return formio.saveProject(newProject).then((response) => { + assert.deepEqual(response, project, 'Project should match'); + }); }, mock() { return { @@ -1206,13 +1263,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: project + body: project, }; - } + }, }; - } + }, }, { name: 'Create Form', @@ -1221,15 +1278,15 @@ describe('Formio.js Tests', function() { const req = { title: chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', }), name: chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyz' + pool: 'abcdefghijklmnopqrstuvwxyz', }), path: chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyz' + pool: 'abcdefghijklmnopqrstuvwxyz', }), components: [ { @@ -1255,8 +1312,8 @@ describe('Formio.js Tests', function() { maxLength: '', pattern: '', custom: '', - customPrivate: false - } + customPrivate: false, + }, }, { action: 'submit', @@ -1270,17 +1327,16 @@ describe('Formio.js Tests', function() { size: 'md', tableView: false, theme: 'primary', - type: 'button' - } + type: 'button', + }, ], type: 'form', access: [], - submissionAccess: [] + submissionAccess: [], }; - return formio.saveForm(req) - .then((response) => { - assert.deepEqual(response, form, 'Form should match'); - }); + return formio.saveForm(req).then((response) => { + assert.deepEqual(response, form, 'Form should match'); + }); }, mock() { return { @@ -1295,31 +1351,30 @@ describe('Formio.js Tests', function() { created: new Date().toISOString(), modified: new Date().toISOString(), project: project._id, - owner: user._id + owner: user._id, }); return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: form + body: form, }; - } + }, }; - } + }, }, { name: 'Load Forms', test() { const formio = new Formio(`/project/${project._id}/form`); - return formio.loadForms() - .then((forms) => { - assert.equal(forms.length, 1, 'Should return only one form.'); - assert.equal(forms.skip, 0, 'skip should be 0.'); - assert.equal(forms.limit, 1, 'limit should be 1.'); - assert.equal(forms.serverCount, 1, 'serverCount should be 1.'); - assert.deepEqual(forms[0], form, 'Should match form'); - }); + return formio.loadForms().then((forms) => { + assert.equal(forms.length, 1, 'Should return only one form.'); + assert.equal(forms.skip, 0, 'skip should be 0.'); + assert.equal(forms.limit, 1, 'limit should be 1.'); + assert.equal(forms.serverCount, 1, 'serverCount should be 1.'); + assert.deepEqual(forms[0], form, 'Should match form'); + }); }, mock() { return { @@ -1331,22 +1386,21 @@ describe('Formio.js Tests', function() { 'Content-Type': 'application/json', 'Content-Range': '0-0/1', 'Range-Unit': 'items', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: [form] + body: [form], }; - } + }, }; - } + }, }, { name: 'Read Form', test() { const formio = new Formio(`/project/${project._id}/form/${form._id}`); - return formio.loadForm() - .then((response) => { - assert.deepEqual(response, form, 'Form should match'); - }); + return formio.loadForm().then((response) => { + assert.deepEqual(response, form, 'Form should match'); + }); }, mock() { return { @@ -1356,13 +1410,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: form + body: form, }; - } + }, }; - } + }, }, { name: 'Update Form', @@ -1371,20 +1425,19 @@ describe('Formio.js Tests', function() { const newForm = fastCloneDeep(form); newForm.title = chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', }); newForm.name = chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyz' + pool: 'abcdefghijklmnopqrstuvwxyz', }); newForm.path = chance.string({ length: 10, - pool: 'abcdefghijklmnopqrstuvwxyz' + pool: 'abcdefghijklmnopqrstuvwxyz', + }); + return formio.saveForm(newForm).then((response) => { + assert.deepEqual(response, form, 'Form should match'); }); - return formio.saveForm(newForm) - .then((response) => { - assert.deepEqual(response, form, 'Form should match'); - }); }, mock() { return { @@ -1396,13 +1449,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: form + body: form, }; - } + }, }; - } + }, }, { name: 'Create Submission', @@ -1410,13 +1463,12 @@ describe('Formio.js Tests', function() { const formio = new Formio(`/project/${project._id}/form/${form._id}/submission`); const req = { data: { - fieldLabel: chance.string() - } + fieldLabel: chance.string(), + }, }; - return formio.saveSubmission(req) - .then((response) => { - assert.deepEqual(response, submission, 'Submission should match'); - }); + return formio.saveSubmission(req).then((response) => { + assert.deepEqual(response, submission, 'Submission should match'); + }); }, mock() { return { @@ -1434,31 +1486,30 @@ describe('Formio.js Tests', function() { externalTokens: [], form: form._id, owner: user._id, - roles: [] + roles: [], }; return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: submission + body: submission, }; - } + }, }; - } + }, }, { name: 'Load Submissions', test() { const formio = new Formio(`/project/${project._id}/form/${form._id}/submission`); - return formio.loadSubmissions() - .then((submissions) => { - assert.equal(submissions.length, 1, 'Should return only one submission.'); - assert.equal(submissions.skip, 0, 'skip should be 0.'); - assert.equal(submissions.limit, 1, 'limit should be 1.'); - assert.equal(submissions.serverCount, 1, 'serverCount should be 1.'); - assert.deepEqual(submissions[0], submission, 'Should match submission'); - }); + return formio.loadSubmissions().then((submissions) => { + assert.equal(submissions.length, 1, 'Should return only one submission.'); + assert.equal(submissions.skip, 0, 'skip should be 0.'); + assert.equal(submissions.limit, 1, 'limit should be 1.'); + assert.equal(submissions.serverCount, 1, 'serverCount should be 1.'); + assert.deepEqual(submissions[0], submission, 'Should match submission'); + }); }, mock() { return { @@ -1470,22 +1521,23 @@ describe('Formio.js Tests', function() { 'Content-Type': 'application/json', 'Content-Range': '0-0/1', 'Range-Unit': 'items', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: [submission] + body: [submission], }; - } + }, }; - } + }, }, { name: 'Read Submission', test() { - const formio = new Formio(`/project/${project._id}/form/${form._id}/submission/${submission._id}`); - return formio.loadSubmission() - .then((response) => { - assert.deepEqual(response, submission, 'Submission should match'); - }); + const formio = new Formio( + `/project/${project._id}/form/${form._id}/submission/${submission._id}`, + ); + return formio.loadSubmission().then((response) => { + assert.deepEqual(response, submission, 'Submission should match'); + }); }, mock() { return { @@ -1495,24 +1547,25 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: submission + body: submission, }; - } + }, }; - } + }, }, { name: 'Update Submission', test() { - const formio = new Formio(`/project/${project._id}/form/${form._id}/submission/${submission._id}`); + const formio = new Formio( + `/project/${project._id}/form/${form._id}/submission/${submission._id}`, + ); const newSubmission = fastCloneDeep(submission); newSubmission.data.fieldLabel = chance.string(); - return formio.saveSubmission(newSubmission) - .then((response) => { - assert.deepEqual(response, submission, 'Submission should match'); - }); + return formio.saveSubmission(newSubmission).then((response) => { + assert.deepEqual(response, submission, 'Submission should match'); + }); }, mock() { return { @@ -1524,13 +1577,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: submission + body: submission, }; - } + }, }; - } + }, }, { name: 'Update Submission without ID', @@ -1538,10 +1591,9 @@ describe('Formio.js Tests', function() { const formio = new Formio(`/project/${project._id}/form/${form._id}`); const newSubmission = fastCloneDeep(submission); newSubmission.data.fieldLabel = chance.string(); - return formio.saveSubmission(newSubmission) - .then((response) => { - assert.deepEqual(response, submission, 'Submission should match'); - }); + return formio.saveSubmission(newSubmission).then((response) => { + assert.deepEqual(response, submission, 'Submission should match'); + }); }, mock() { return { @@ -1553,13 +1605,13 @@ describe('Formio.js Tests', function() { return { headers: { 'Content-Type': 'application/json', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: submission + body: submission, }; - } + }, }; - } + }, }, // Actions // Available Actions @@ -1567,11 +1619,12 @@ describe('Formio.js Tests', function() { { name: 'Delete Submission', test() { - const formio = new Formio(`/project/${project._id}/form/${form._id}/submission/${submission._id}`); - return formio.deleteSubmission() - .then((response) => { - assert.equal(response, 'OK', 'Submission should be deleted.'); - }); + const formio = new Formio( + `/project/${project._id}/form/${form._id}/submission/${submission._id}`, + ); + return formio.deleteSubmission().then((response) => { + assert.equal(response, 'OK', 'Submission should be deleted.'); + }); }, mock() { return { @@ -1582,20 +1635,19 @@ describe('Formio.js Tests', function() { body: 'OK', headers: { 'Content-Type': 'text/plain; charset=utf-8', - 'x-jwt-token': userToken - } - } + 'x-jwt-token': userToken, + }, + }, }; - } + }, }, { name: 'Delete Form', test() { const formio = new Formio(`/project/${project._id}/form/${form._id}`); - return formio.deleteForm() - .then((response) => { - assert.equal(response, 'OK', 'Submission should be deleted.'); - }); + return formio.deleteForm().then((response) => { + assert.equal(response, 'OK', 'Submission should be deleted.'); + }); }, mock() { return { @@ -1606,20 +1658,19 @@ describe('Formio.js Tests', function() { body: 'OK', headers: { 'Content-Type': 'text/plain; charset=utf-8', - 'x-jwt-token': userToken - } - } + 'x-jwt-token': userToken, + }, + }, }; - } + }, }, { name: 'Delete Project', test() { const formio = new Formio(`/project/${project._id}`); - return formio.deleteProject() - .then((response) => { - assert.equal(response, 'OK', 'Submission should be deleted.'); - }); + return formio.deleteProject().then((response) => { + assert.equal(response, 'OK', 'Submission should be deleted.'); + }); }, mock() { return { @@ -1630,22 +1681,21 @@ describe('Formio.js Tests', function() { body: 'OK', headers: { 'Content-Type': 'text/plain; charset=utf-8', - 'x-jwt-token': userToken - } - } + 'x-jwt-token': userToken, + }, + }, }; - } + }, }, { name: 'Getting Projects', test() { - return Formio.loadProjects() - .then((projects) => { - assert.equal(projects.length, 0, 'Should return no projects.'); - assert.equal(projects.skip, undefined, 'skip should be undefined.'); - assert.equal(projects.limit, undefined, 'limit should be undefined.'); - assert.equal(projects.serverCount, 0, 'serverCount should be 0.'); - }); + return Formio.loadProjects().then((projects) => { + assert.equal(projects.length, 0, 'Should return no projects.'); + assert.equal(projects.skip, undefined, 'skip should be undefined.'); + assert.equal(projects.limit, undefined, 'limit should be undefined.'); + assert.equal(projects.serverCount, 0, 'serverCount should be 0.'); + }); }, mock() { return { @@ -1657,13 +1707,13 @@ describe('Formio.js Tests', function() { 'Content-Type': 'application/json', 'Content-Range': '*/0', 'Range-Unit': 'items', - 'x-jwt-token': userToken + 'x-jwt-token': userToken, }, - body: [] + body: [], }; - } + }, }; - } + }, }, { name: 'Temporary Token', @@ -1683,20 +1733,19 @@ describe('Formio.js Tests', function() { body: userToken, headers: { 'Content-Type': 'text/plain; charset=utf-8', - 'x-jwt-token': userToken - } + 'x-jwt-token': userToken, + }, }; - } + }, }; - } + }, }, { name: 'Logging Out', test() { - return Formio.logout() - .then(() => { - assert.equal(Formio.getToken(), '', 'Logged out'); - }); + return Formio.logout().then(() => { + assert.equal(Formio.getToken(), '', 'Logged out'); + }); }, mock() { return { @@ -1709,29 +1758,28 @@ describe('Formio.js Tests', function() { body: 'OK', headers: { 'Content-Type': 'text/plain; charset=utf-8', - 'x-jwt-token': '' - } + 'x-jwt-token': '', + }, }; - } + }, }; - } + }, }, { name: 'userPermissions method should give create_all permission', test() { const user = { _id: 'test_user_id', - roles: ['test_role_id'] + roles: ['test_role_id'], }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.delete, false); - assert.equal(permissions.read, false); - }); + return formio.userPermissions(user).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.delete, false); + assert.equal(permissions.read, false); + }); }, mock() { return [ @@ -1745,12 +1793,12 @@ describe('Formio.js Tests', function() { submissionAccess: [ { type: 'create_all', - roles: ['test_role_id'] - } - ] + roles: ['test_role_id'], + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -1759,13 +1807,13 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give create_own permission', @@ -1773,19 +1821,18 @@ describe('Formio.js Tests', function() { const userId = 'test_user_id'; const user = { _id: userId, - roles: ['test_role_id'] + roles: ['test_role_id'], }; const submission = { - owner: userId + owner: userId, }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.read, false); - assert.equal(permissions.delete, false); - }); + return formio.userPermissions(user, undefined, submission).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.read, false); + assert.equal(permissions.delete, false); + }); }, mock() { return [ @@ -1799,12 +1846,12 @@ describe('Formio.js Tests', function() { submissionAccess: [ { type: 'create_own', - roles: ['test_role_id'] - } - ] + roles: ['test_role_id'], + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -1813,13 +1860,13 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give permissions for Anonymous role', @@ -1829,13 +1876,12 @@ describe('Formio.js Tests', function() { roles: [], }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.read, false); - assert.equal(permissions.delete, false); - }); + return formio.userPermissions(user).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.read, false); + assert.equal(permissions.delete, false); + }); }, mock() { return [ @@ -1849,12 +1895,12 @@ describe('Formio.js Tests', function() { submissionAccess: [ { type: 'create_all', - roles: ['test_anonymous_role_id'] - } - ] + roles: ['test_anonymous_role_id'], + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -1866,15 +1912,15 @@ describe('Formio.js Tests', function() { roles: [ { _id: 'test_anonymous_role_id', - default: true - } - ] - } + default: true, + }, + ], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give all permissions for admin role', @@ -1883,13 +1929,12 @@ describe('Formio.js Tests', function() { roles: ['test_admin_role'], }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, true); - assert.equal(permissions.delete, true); - }); + return formio.userPermissions(user).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, true); + assert.equal(permissions.delete, true); + }); }, mock() { return [ @@ -1900,10 +1945,10 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - submissionAccess: [] + submissionAccess: [], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -1915,15 +1960,15 @@ describe('Formio.js Tests', function() { roles: [ { _id: 'test_admin_role', - admin: true - } - ] - } + admin: true, + }, + ], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give only group read permission for `read` level', @@ -1934,18 +1979,17 @@ describe('Formio.js Tests', function() { const submission = { data: { groupField: { - _id: 'test_group_id' - } - } + _id: 'test_group_id', + }, + }, }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, false); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.delete, false); - }); + return formio.userPermissions(user, undefined, submission).then((permissions) => { + assert.equal(permissions.create, false); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.delete, false); + }); }, mock() { return [ @@ -1960,12 +2004,12 @@ describe('Formio.js Tests', function() { components: [ { defaultPermission: 'read', - key: 'groupField' - } - ] + key: 'groupField', + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -1974,13 +2018,13 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give group read and create permissions for `create` level', @@ -1991,18 +2035,17 @@ describe('Formio.js Tests', function() { const submission = { data: { groupField: { - _id: 'test_group_id' - } - } + _id: 'test_group_id', + }, + }, }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.delete, false); - }); + return formio.userPermissions(user, undefined, submission).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.delete, false); + }); }, mock() { return [ @@ -2017,12 +2060,12 @@ describe('Formio.js Tests', function() { components: [ { defaultPermission: 'create', - key: 'groupField' - } - ] + key: 'groupField', + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -2031,13 +2074,13 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give group read, create and edit permissions for `write` level', @@ -2048,18 +2091,17 @@ describe('Formio.js Tests', function() { const submission = { data: { groupField: { - _id: 'test_group_id' - } - } + _id: 'test_group_id', + }, + }, }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, true); - assert.equal(permissions.delete, false); - }); + return formio.userPermissions(user, undefined, submission).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, true); + assert.equal(permissions.delete, false); + }); }, mock() { return [ @@ -2074,12 +2116,12 @@ describe('Formio.js Tests', function() { components: [ { defaultPermission: 'write', - key: 'groupField' - } - ] + key: 'groupField', + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -2088,13 +2130,13 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should give all group permissions for `admin` level', @@ -2105,18 +2147,17 @@ describe('Formio.js Tests', function() { const submission = { data: { groupField: { - _id: 'test_group_id' - } - } + _id: 'test_group_id', + }, + }, }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); - return formio.userPermissions(user, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, true); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, true); - assert.equal(permissions.delete, true); - }); + return formio.userPermissions(user, undefined, submission).then((permissions) => { + assert.equal(permissions.create, true); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, true); + assert.equal(permissions.delete, true); + }); }, mock() { return [ @@ -2131,12 +2172,12 @@ describe('Formio.js Tests', function() { components: [ { defaultPermission: 'admin', - key: 'groupField' - } - ] + key: 'groupField', + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -2145,13 +2186,13 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'userPermissions method should handle submission with multiple groups', @@ -2166,30 +2207,28 @@ describe('Formio.js Tests', function() { data: { groupField: [ { - _id: 'test_group_id1' + _id: 'test_group_id1', }, { - _id: 'test_group_id2' - } - ] - } + _id: 'test_group_id2', + }, + ], + }, }; const formio = new Formio(`${Formio.getBaseUrl()}/testform`); return Promise.all([ - formio.userPermissions(user1, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, false); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.delete, false); - }), - formio.userPermissions(user2, undefined, submission) - .then(permissions => { - assert.equal(permissions.create, false); - assert.equal(permissions.read, true); - assert.equal(permissions.edit, false); - assert.equal(permissions.delete, false); - }), + formio.userPermissions(user1, undefined, submission).then((permissions) => { + assert.equal(permissions.create, false); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.delete, false); + }), + formio.userPermissions(user2, undefined, submission).then((permissions) => { + assert.equal(permissions.create, false); + assert.equal(permissions.read, true); + assert.equal(permissions.edit, false); + assert.equal(permissions.delete, false); + }), ]); }, mock() { @@ -2205,12 +2244,12 @@ describe('Formio.js Tests', function() { components: [ { defaultPermission: 'read', - key: 'groupField' - } - ] + key: 'groupField', + }, + ], }, }; - } + }, }, { url: `${Formio.getBaseUrl()}/access`, @@ -2219,38 +2258,43 @@ describe('Formio.js Tests', function() { return { status: 200, body: { - roles: [] - } + roles: [], + }, }; - } + }, }, ]; - } + }, }, { name: 'Should return correct options for form url with Subdirectories path', test() { let form = new Formio.Form(); - let options = form.getFormInitOptions('http://localhost:3000/fakeproject/fakeform', { path: 'fakeform' }); + let options = form.getFormInitOptions('http://localhost:3000/fakeproject/fakeform', { + path: 'fakeform', + }); assert.deepEqual(options, { base: 'http://localhost:3000', project: 'http://localhost:3000/fakeproject', }); form = new Formio.Form(); - options = form.getFormInitOptions(`${Formio.baseUrl}/fakeproject/fakeform`, { path: 'fakeform' }); + options = form.getFormInitOptions(`${Formio.baseUrl}/fakeproject/fakeform`, { + path: 'fakeform', + }); assert.deepEqual(options, {}); - } + }, }, { name: 'Should set correct formio base and project url for form with Subdirectories path', test() { const formElement = document.createElement('div'); - return Formio.createForm(formElement, 'http://localhost:3000/fakeproject/fakeform') - .then((form) => { + return Formio.createForm(formElement, 'http://localhost:3000/fakeproject/fakeform').then( + (form) => { assert.equal(form.formio.base, 'http://localhost:3000'); assert.equal(form.formio.projectUrl, 'http://localhost:3000/fakeproject'); - }); + }, + ); }, mock() { return { @@ -2263,9 +2307,9 @@ describe('Formio.js Tests', function() { }, body: { path: 'fakeform', - } + }, }; - } + }, }; }, }, @@ -2274,10 +2318,10 @@ describe('Formio.js Tests', function() { tests.forEach(testCapability); }); - describe('Formio.currentUser', function() { + describe('Formio.currentUser', function () { let plugin = null; - beforeEach(function() { + beforeEach(function () { plugin = { wrapStaticRequestPromise: sinon.spy((promise) => promise), staticRequest: sinon.spy(() => { @@ -2289,63 +2333,69 @@ describe('Formio.js Tests', function() { modified: new Date().toISOString(), data: { email: 'user@place.com', - name: 'user' + name: 'user', }, externalIds: [], externalTokens: [], form: generateID(), - owner: userId + owner: userId, }); - }) + }), }; Formio.registerPlugin(plugin, 'currentUserTestPlugin'); }); - afterEach(function() { + afterEach(function () { Formio.deregisterPlugin(plugin); }); - it('Initial currentUser() should make static request', function(done) { + it('Initial currentUser() should make static request', function (done) { // Force token Formio.token = chance.string({ length: 30 }); - Formio.currentUser() - .then(() => { - assert.ok(plugin.staticRequest.calledOnce, 'staticRequest should be called once'); - done(); - }); - assert.ok(plugin.wrapStaticRequestPromise.calledOnce, 'wrapStaticRequestPromise should be called once'); + Formio.currentUser().then(() => { + assert.ok(plugin.staticRequest.calledOnce, 'staticRequest should be called once'); + done(); + }); + assert.ok( + plugin.wrapStaticRequestPromise.calledOnce, + 'wrapStaticRequestPromise should be called once', + ); }); - it('Next currentUser() should return cached value', function(done) { + it('Next currentUser() should return cached value', function (done) { // Clear token - Formio.currentUser() - .then(() => { - assert.ok(!plugin.staticRequest.called, 'staticRequest should not be called'); - done(); - }); - assert.ok(plugin.wrapStaticRequestPromise.calledOnce, 'wrapStaticRequestPromise should be called once'); + Formio.currentUser().then(() => { + assert.ok(!plugin.staticRequest.called, 'staticRequest should not be called'); + done(); + }); + assert.ok( + plugin.wrapStaticRequestPromise.calledOnce, + 'wrapStaticRequestPromise should be called once', + ); }); - it('Should render after form submission if renderMode = \'html\'', function(done) { - const formJson = { - components: [{ - label: 'Text Field', - tableView: true, - key: 'textField', - type: 'textfield', - input: true - }, - { - label: 'Phone Number', - tableView: true, - key: 'phoneNumber', - type: 'phoneNumber', - input: true - }] + it("Should render after form submission if renderMode = 'html'", function (done) { + const formJson = { + components: [ + { + label: 'Text Field', + tableView: true, + key: 'textField', + type: 'textfield', + input: true, + }, + { + label: 'Phone Number', + tableView: true, + key: 'phoneNumber', + type: 'phoneNumber', + input: true, + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson, { renderMode: 'html' }) - .then(form => { + .then((form) => { const textField = form.getComponent('textField'); const phoneNumber = form.getComponent('phoneNumber'); assert.equal(textField.element.querySelector('[ref=value]').innerHTML, '-'); @@ -2353,8 +2403,8 @@ describe('Formio.js Tests', function() { form.submission = { data: { textField: 'textField', - phoneNumber: '88005553535' - } + phoneNumber: '88005553535', + }, }; setTimeout(() => { assert.equal(textField.element.querySelector('[ref=value]').innerHTML, 'textField'); @@ -2365,8 +2415,8 @@ describe('Formio.js Tests', function() { .catch(done); }); - it('Should render after form submission if renderMode = \'html\' with Nested Form', function(done) { - const formJson = { + it("Should render after form submission if renderMode = 'html' with Nested Form", function (done) { + const formJson = { components: [ { label: 'Form', @@ -2378,41 +2428,53 @@ describe('Formio.js Tests', function() { label: 'Text Field', key: 'textField', type: 'textfield', - input: true, + input: true, }, { label: 'Password', key: 'password', type: 'password', - input: true + input: true, }, ], }, { label: 'Checkbox', type: 'checkbox', - input: true + input: true, }, - ] + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson, { renderMode: 'html' }) - .then(form => { - assert.equal(form.getComponent('textField').element.querySelector('[ref=value]').innerHTML, '-'); - assert.equal(form.getComponent('password').element.querySelector('[ref=value]').innerHTML, '-'); + .then((form) => { + assert.equal( + form.getComponent('textField').element.querySelector('[ref=value]').innerHTML, + '-', + ); + assert.equal( + form.getComponent('password').element.querySelector('[ref=value]').innerHTML, + '-', + ); form.submission = { data: { form: { data: { textField: 'textField', - password: 'password' - } - } - } + password: 'password', + }, + }, + }, }; setTimeout(() => { - assert.equal(form.getComponent('textField').element.querySelector('[ref=value]').innerHTML, 'textField'); - assert.equal(form.getComponent('password').element.querySelector('[ref=value]').innerHTML, 'password'); + assert.equal( + form.getComponent('textField').element.querySelector('[ref=value]').innerHTML, + 'textField', + ); + assert.equal( + form.getComponent('password').element.querySelector('[ref=value]').innerHTML, + 'password', + ); done(); }, 300); }) diff --git a/test/unit/HTML.unit.js b/test/unit/HTML.unit.js index 757720ed6d..b7909dc674 100644 --- a/test/unit/HTML.unit.js +++ b/test/unit/HTML.unit.js @@ -4,28 +4,24 @@ import HTMLComponent from '../../src/components/html/HTML'; import sinon from 'sinon'; import assert from 'power-assert'; -import { - comp1, - comp2, - comp3, -} from './fixtures/html'; - -describe('HTML Component', function() { - it('Should build an html component', function() { +import { comp1, comp2, comp3 } from './fixtures/html'; + +describe('HTML Component', function () { + it('Should build an html component', function () { return Harness.testCreate(HTMLComponent, comp1); }); - it('Should build an html component and ignore empty attribute name', function() { + it('Should build an html component and ignore empty attribute name', function () { const comp = comp1; comp.attrs.push({ - 'attr': '', - 'value': '' + attr: '', + value: '', }); return Harness.testCreate(HTMLComponent, comp1); }); - it('setContent should not be called if it is not conditionally visible', function() { + it('setContent should not be called if it is not conditionally visible', function () { return Harness.testCreate(HTMLComponent, comp2).then((component) => { const emit = sinon.spy(component, 'setContent'); component.checkRefreshOn(null); @@ -33,29 +29,31 @@ describe('HTML Component', function() { }); }); - it('Should not execute scripts inside HTML component, but execute interpolation properly', function(done) { + it('Should not execute scripts inside HTML component, but execute interpolation properly', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); const alert = sinon.spy(window, 'alert'); - form.setForm(comp3).then(() => { - setTimeout(() => { - assert.equal(alert.callCount, 0); - const div = form.element.querySelector('.myClass'); - assert.equal(div.innerHTML.trim(), 'No Text'); - - const textField = form.getComponent(['textField']); - textField.setValue('apple', { modified: true }); - + form + .setForm(comp3) + .then(() => { setTimeout(() => { + assert.equal(alert.callCount, 0); const div = form.element.querySelector('.myClass'); + assert.equal(div.innerHTML.trim(), 'No Text'); + + const textField = form.getComponent(['textField']); + textField.setValue('apple', { modified: true }); + + setTimeout(() => { + const div = form.element.querySelector('.myClass'); - assert.equal(div.innerHTML.trim(), 'apple'); - assert.equal(div.className, 'myClass apple-class'); - done(); - }, 400); - }, 200); - }) + assert.equal(div.innerHTML.trim(), 'apple'); + assert.equal(div.className, 'myClass apple-class'); + done(); + }, 400); + }, 200); + }) .catch(done); }); }); diff --git a/test/unit/Hidden.unit.js b/test/unit/Hidden.unit.js index b0450e0649..645c6c5705 100644 --- a/test/unit/Hidden.unit.js +++ b/test/unit/Hidden.unit.js @@ -1,38 +1,36 @@ import Harness from '../harness'; import HiddenComponent from '../../src/components/hidden/Hidden'; import assert from 'power-assert'; -import { - comp1 -} from './fixtures/hidden'; +import { comp1 } from './fixtures/hidden'; -describe('Hidden Component', function() { - it('Should build a hidden component', function() { +describe('Hidden Component', function () { + it('Should build a hidden component', function () { return Harness.testCreate(HiddenComponent, comp1); }); - it('Should not incorrectly validate multiple when hidden component has an array value', function() { + it('Should not incorrectly validate multiple when hidden component has an array value', function () { return Harness.testCreate(HiddenComponent, comp1).then((component) => { assert(component.checkValidity(), 'Item should be valid'); component.setValue([ { key: 'foo', - value: 'bar' + value: 'bar', }, { key: 'hello', - value: 'world' - } + value: 'world', + }, ]); assert(component.checkValidity(), 'Item should be valid after setting value'); }); }); - it('Should set correct array data for Hidden component', function() { + it('Should set correct array data for Hidden component', function () { return Harness.testCreate(HiddenComponent, comp1).then((component) => { const value = [ - [ 1, 2, 3], - ['a','b','c'] - ] + [1, 2, 3], + ['a', 'b', 'c'], + ]; component.setValue(value); assert(Array.isArray(component.dataValue), 'Value should be an Array'); assert.deepEqual(component.dataValue, value, 'Value should be be equal to the set value'); diff --git a/test/unit/NestedArrayComponent.unit.js b/test/unit/NestedArrayComponent.unit.js index af4f7daec6..97ab73c643 100644 --- a/test/unit/NestedArrayComponent.unit.js +++ b/test/unit/NestedArrayComponent.unit.js @@ -3,22 +3,22 @@ import NestedArrayComponent from '../../src/components/_classes/nestedarray/Nest import Harness from '../harness'; let component = null; -describe('NestedArrayComponent class', function() { - it('Should create a new NestedArrayComponent class', function() { +describe('NestedArrayComponent class', function () { + it('Should create a new NestedArrayComponent class', function () { return Harness.testCreate(NestedArrayComponent, { // key: 'nested', components: [ { type: 'textfield', key: 'firstName', - input: true + input: true, }, { type: 'textfield', key: 'lastName', - input: true - } - ] + input: true, + }, + ], }).then((_component) => { component = _component; Harness.testElements(component, 'input[name="data[firstName]"]', 1); diff --git a/test/unit/NestedComponent.unit.js b/test/unit/NestedComponent.unit.js index df59944f54..bc6a5fd52c 100644 --- a/test/unit/NestedComponent.unit.js +++ b/test/unit/NestedComponent.unit.js @@ -10,22 +10,22 @@ import _map from 'lodash/map'; import Webform from '../../src/Webform'; let component = null; -describe('NestedComponent class', function() { - it('Should create a new NestedComponent class', function() { +describe('NestedComponent class', function () { + it('Should create a new NestedComponent class', function () { return Harness.testCreate(NestedComponent, { // key: 'nested', components: [ { type: 'textfield', key: 'firstName', - input: true + input: true, }, { type: 'textfield', key: 'lastName', - input: true - } - ] + input: true, + }, + ], }).then((_component) => { component = _component; Harness.testElements(component, 'input[name="data[firstName]"]', 1); @@ -33,22 +33,22 @@ describe('NestedComponent class', function() { }); }); - it('Should be able to add new components', function(done) { + it('Should be able to add new components', function (done) { component.addComponent({ type: 'email', key: 'email', - input: true + input: true, }); component.redraw(); Harness.testElements(component, 'input[name="data[email]"]', 1); done(); }); - it('Should be able to set data within the components.', function(done) { + it('Should be able to set data within the components.', function (done) { const value = { firstName: 'Joe', lastName: 'Smith', - email: 'joe@example.com' + email: 'joe@example.com', }; component.setValue(value); assert.deepEqual(component.getValue(), value); @@ -58,21 +58,21 @@ describe('NestedComponent class', function() { done(); }); - it('Should create nested visibility elements.', function() { + it('Should create nested visibility elements.', function () { return Harness.testCreate(NestedComponent, { components: [ { type: 'checkbox', key: 'showPanel', label: 'Show Panel', - input: true + input: true, }, { type: 'panel', key: 'parent', title: 'Parent Panel', conditional: { - json: { var: 'data.showPanel' } + json: { var: 'data.showPanel' }, }, components: [ { @@ -81,8 +81,8 @@ describe('NestedComponent class', function() { label: 'Child 1', input: true, conditional: { - json: { var: 'data.showChild' } - } + json: { var: 'data.showChild' }, + }, }, { type: 'checkbox', @@ -91,11 +91,11 @@ describe('NestedComponent class', function() { input: true, conditional: { json: { var: 'data.forceParent' }, - } - } - ] - } - ] + }, + }, + ], + }, + ], }).then((comp) => { // Make sure we built the components tree. assert.equal(comp.components.length, 2); @@ -103,7 +103,7 @@ describe('NestedComponent class', function() { const data = { showPanel: true, showChild: false, - forceParent: false + forceParent: false, }; comp.setValue(data); @@ -136,12 +136,12 @@ describe('NestedComponent class', function() { }); }); - describe('set/get visible', function() { - it('should set/get visible flag on instance and child components', function(done) { + describe('set/get visible', function () { + it('should set/get visible flag on instance and child components', function (done) { Harness.testCreate(NestedComponent, comp1) - .then(nested => { + .then((nested) => { expect(nested.visible).to.be.true; - nested.components.forEach(cmp => { + nested.components.forEach((cmp) => { expect(cmp.parentVisible).to.be.true; }); @@ -149,13 +149,13 @@ describe('NestedComponent class', function() { expect(nested.visible).to.be.false; - nested.components.forEach(cmp => { + nested.components.forEach((cmp) => { expect(cmp.parentVisible).to.be.false; }); nested.visible = true; - nested.components.forEach(cmp => { + nested.components.forEach((cmp) => { expect(cmp.parentVisible).to.be.true; }); @@ -165,13 +165,13 @@ describe('NestedComponent class', function() { }); }); - describe('set/get parentVisible', function() { - it('should set/get parentVisible flag on instance and child components', function(done) { + describe('set/get parentVisible', function () { + it('should set/get parentVisible flag on instance and child components', function (done) { Harness.testCreate(NestedComponent, comp1) - .then(nested => { + .then((nested) => { expect(nested.parentVisible).to.be.true; - nested.components.forEach(cmp => { + nested.components.forEach((cmp) => { expect(cmp.parentVisible).to.be.true; }); @@ -179,7 +179,7 @@ describe('NestedComponent class', function() { expect(nested.parentVisible).to.be.false; - nested.components.forEach(cmp => { + nested.components.forEach((cmp) => { expect(cmp.parentVisible).to.be.false; }); @@ -187,7 +187,7 @@ describe('NestedComponent class', function() { expect(nested.parentVisible).to.be.true; - nested.components.forEach(cmp => { + nested.components.forEach((cmp) => { expect(cmp.parentVisible).to.be.true; }); @@ -197,10 +197,10 @@ describe('NestedComponent class', function() { }); }); - describe('get schema', function() { - it('components array shouldn\'t have duplicates', function(done) { + describe('get schema', function () { + it("components array shouldn't have duplicates", function (done) { Harness.testCreate(NestedComponent, comp1) - .then(nested => { + .then((nested) => { const child = nested.components[0]; nested.components = [...nested.components, child, child, child]; expect(nested.components).to.have.lengthOf(5); @@ -212,8 +212,8 @@ describe('NestedComponent class', function() { }); }); - describe('Components.getComponentPath()', function() { - it('the first layer components', function(done) { + describe('Components.getComponentPath()', function () { + it('the first layer components', function (done) { Harness.testCreate(NestedComponent, comp1) .then((nested) => { assert(nested.components[0].path === 'firstName'); @@ -223,7 +223,7 @@ describe('NestedComponent class', function() { .catch(done); }); - it('inside data components', function(done) { + it('inside data components', function (done) { Harness.testCreate(NestedComponent, comp2) .then((nested) => { assert(nested.components[0].path === 'dataGrid'); @@ -233,15 +233,16 @@ describe('NestedComponent class', function() { assert(dataGrid.components[0].path === 'dataGrid[0].textField'); assert(dataGrid.components[1].path === 'dataGrid[1].textField'); done(); - },250); + }, 250); }) .catch(done); }); - it('inside nested forms', function(done) { + it('inside nested forms', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); - form.setForm(nestedForm) + form + .setForm(nestedForm) .then(() => { assert(form.components[0].path === 'form'); @@ -262,7 +263,7 @@ describe('NestedComponent class', function() { // see these functions in core to see how component path is derived for checkbox components of inputType radio // - https://github.com/formio/core/blob/master/src/utils/formUtil.ts#L228-L240 // - https://github.com/formio/core/blob/master/src/utils/formUtil.ts#L418-L427 - it('returns the right path (i.e. name) for checkbox components with an inputType of radio', function(done) { + it('returns the right path (i.e. name) for checkbox components with an inputType of radio', function (done) { Harness.testCreate(NestedComponent, comp4) .then((nested) => { assert(nested.components[0].path === 'radio'); @@ -273,8 +274,8 @@ describe('NestedComponent class', function() { }); }); - describe('getComponent', function() { - it('the first layer components', function(done) { + describe('getComponent', function () { + it('the first layer components', function (done) { Harness.testCreate(NestedComponent, comp1) .then((nested) => { const firstNameTextFieldByStringPath = nested.getComponent('firstName'); @@ -286,28 +287,29 @@ describe('NestedComponent class', function() { .catch(done); }); - it('inside data components', function(done) { + it('inside data components', function (done) { Harness.testCreate(NestedComponent, comp2) .then((nested) => { assert(nested.components[0].path === 'dataGrid'); const dataGrid = nested.components[0]; dataGrid.setValue([{ textField: '' }, { textField: '' }]); setTimeout(() => { - const dataGridFirstRowTextField= nested.getComponent('dataGrid[0].textField'); - const dataGridSecondRowTextField= nested.getComponent('dataGrid[1].textField'); + const dataGridFirstRowTextField = nested.getComponent('dataGrid[0].textField'); + const dataGridSecondRowTextField = nested.getComponent('dataGrid[1].textField'); assert(dataGrid.components[0] === dataGridFirstRowTextField); assert(dataGrid.components[1] === dataGridSecondRowTextField); done(); - },250); + }, 250); }) .catch(done); }); - it('inside nested forms', function(done) { + it('inside nested forms', function (done) { const formElement = document.createElement('div'); const form = new Webform(formElement); - form.setForm(nestedForm) + form + .setForm(nestedForm) .then(() => { const childForm = form.components[0].subForm; const textField = form.getComponent('form.data.textField'); @@ -323,25 +325,27 @@ describe('NestedComponent class', function() { }); }); - describe('render value as String', function() { - it('Should render a Select\'s value template', function(done) { + describe('render value as String', function () { + it("Should render a Select's value template", function (done) { Harness.testCreate(NestedComponent, comp3) - .then((nested) => { - const editGrid = nested.components[0]; - editGrid.addRow(); - editGrid.editRows[0].components[0].setValue(2); - setTimeout(() => { - editGrid.saveRow(0); + .then((nested) => { + const editGrid = nested.components[0]; + editGrid.addRow(); + editGrid.editRows[0].components[0].setValue(2); setTimeout(() => { - assert.equal(editGrid.dataValue[0].select, 2); - const rowContent = editGrid.element.querySelector('[ref="editgrid-editGrid-row"] .row .col-sm-2 span'); - assert(rowContent); - assert.equal(rowContent.textContent, 'Banana'); - done(); + editGrid.saveRow(0); + setTimeout(() => { + assert.equal(editGrid.dataValue[0].select, 2); + const rowContent = editGrid.element.querySelector( + '[ref="editgrid-editGrid-row"] .row .col-sm-2 span', + ); + assert(rowContent); + assert.equal(rowContent.textContent, 'Banana'); + done(); + }, 250); }, 250); - }, 250); - }) - .catch(done); + }) + .catch(done); }); }); }); diff --git a/test/unit/NestedDataComponent.unit.js b/test/unit/NestedDataComponent.unit.js index 2e2aef4e69..9d75ea18d1 100644 --- a/test/unit/NestedDataComponent.unit.js +++ b/test/unit/NestedDataComponent.unit.js @@ -6,22 +6,22 @@ import assert from 'power-assert'; import nestedDataCompWithModalPreview from '../forms/nestedDataWithModalViewAndLayoutComponents'; let component = null; -describe('NestedDataComponent class', function() { - it('Should create a new NestedDataComponent class', function() { +describe('NestedDataComponent class', function () { + it('Should create a new NestedDataComponent class', function () { return Harness.testCreate(NestedDataComponent, { // key: 'nested', components: [ { type: 'textfield', key: 'firstName', - input: true + input: true, }, { type: 'textfield', key: 'lastName', - input: true - } - ] + input: true, + }, + ], }).then((_component) => { component = _component; Harness.testElements(component, 'input[name="data[firstName]"]', 1); @@ -29,7 +29,7 @@ describe('NestedDataComponent class', function() { }); }); - it('Should show preview of the modal view component properly', function(done) { + it('Should show preview of the modal view component properly', function (done) { Formio.createForm(document.createElement('div'), nestedDataCompWithModalPreview) .then((form) => { const openModalBtn = form.element.querySelector('.open-modal-button'); @@ -39,19 +39,25 @@ describe('NestedDataComponent class', function() { const dataGrid = form.getComponent(['dataGrid']); dataGrid.setValue([ { - textField: 'test' + textField: 'test', }, { - textField: 'test2' - } + textField: 'test2', + }, ]); setTimeout(() => { - const modalPreviewValues = form.element.querySelectorAll('.open-modal-button tr td input'); + const modalPreviewValues = form.element.querySelectorAll( + '.open-modal-button tr td input', + ); assert.equal(modalPreviewValues.length, 2); - assert.deepEqual(Array.prototype.map.call(modalPreviewValues, (i) => i.value), ['test', 'test2']); + assert.deepEqual( + Array.prototype.map.call(modalPreviewValues, (i) => i.value), + ['test', 'test2'], + ); done(); }, 300); - }).catch(done); + }) + .catch(done); }); }); diff --git a/test/unit/Number.unit.js b/test/unit/Number.unit.js index 5eb2ce674e..24647e76b7 100644 --- a/test/unit/Number.unit.js +++ b/test/unit/Number.unit.js @@ -18,20 +18,22 @@ import { comp9, comp10, comp11, - scientificNotation + scientificNotation, } from './fixtures/number'; -describe('Number Component', function() { - it('Should build an number component', function() { +describe('Number Component', function () { + it('Should build an number component', function () { return Harness.testCreate(NumberComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 1); }); }); - xit('Should correctly handle scientific notation', function() { - return Harness.testCreate(NumberComponent, scientificNotation, { allowScientificNotation: true }).then((component) => { + xit('Should correctly handle scientific notation', function () { + return Harness.testCreate(NumberComponent, scientificNotation, { + allowScientificNotation: true, + }).then((component) => { const testCases = [ - [6.54635E+12, 6546350000000, '6546350000000'], + [6.54635e12, 6546350000000, '6546350000000'], [1.23e-5, 0.0000123, '0.0000123'], [3.14159e2, 314.159, '314.159'], [2e-3, 0.002, '0.002'], @@ -40,15 +42,22 @@ describe('Number Component', function() { ]; testCases.forEach(([input, expectedValue, expectedDisplayValue]) => { - component.setValue(input); - assert.equal(component.dataValue, expectedValue, `setValue: ${input} should result in ${expectedValue}`); - assert.equal(component.getValueAsString(input), expectedDisplayValue, `getValueAsString: ${input} should result in ${expectedDisplayValue}`); + assert.equal( + component.dataValue, + expectedValue, + `setValue: ${input} should result in ${expectedValue}`, + ); + assert.equal( + component.getValueAsString(input), + expectedDisplayValue, + `getValueAsString: ${input} should result in ${expectedDisplayValue}`, + ); }); }); }); - it('Should format sumbissions for table view for USA locale', function() { + it('Should format sumbissions for table view for USA locale', function () { return Harness.testCreate(NumberComponent, comp4, { language: 'en-US' }).then((component) => { const value1 = component.getValueAsString(1); const value2 = component.getValueAsString(1.1); @@ -66,11 +75,11 @@ describe('Number Component', function() { }); }); - it('Should format value on blur for USA locale', function() { - return Harness.testCreate(NumberComponent, comp4, { language: 'en-US' }).then((component) => { + it('Should format value on blur for USA locale', function () { + return Harness.testCreate(NumberComponent, comp4, { language: 'en-US' }).then((component) => { component.root = { - onChange: ()=>{}, - triggerChange: ()=>{}, + onChange: () => {}, + triggerChange: () => {}, }; const blurEvent = new Event('blur'); @@ -99,11 +108,11 @@ describe('Number Component', function() { }); }); - it('Should format value on blur for French locale', function(done) { + it('Should format value on blur for French locale', function (done) { Harness.testCreate(NumberComponent, comp4, { language: 'fr' }).then((component) => { component.root = { - onChange: ()=>{}, - triggerChange: ()=>{}, + onChange: () => {}, + triggerChange: () => {}, }; const blurEvent = new Event('blur'); @@ -139,11 +148,11 @@ describe('Number Component', function() { }); }); - it('Should not change entered value on blur if multiple value is set', function(done) { + it('Should not change entered value on blur if multiple value is set', function (done) { Harness.testCreate(NumberComponent, comp5).then((component) => { component.root = { - onChange: ()=>{}, - triggerChange: ()=>{}, + onChange: () => {}, + triggerChange: () => {}, }; const blurEvent = new Event('blur'); const clickEvent = new Event('click'); @@ -154,7 +163,7 @@ describe('Number Component', function() { const firstValueElement = component.element.querySelectorAll('[name="data[number]"]')[0]; const secondValueElement = component.element.querySelectorAll('[name="data[number]"]')[1]; - component.setValue([111,222]); + component.setValue([111, 222]); firstValueElement.dispatchEvent(blurEvent); secondValueElement.dispatchEvent(blurEvent); @@ -165,12 +174,15 @@ describe('Number Component', function() { }); }); - it('Should limit decimals using step', function() { - return Harness.testCreate(NumberComponent, _merge({}, comp2, { - validate: { - step: '0.001' - } - })).then((component) => { + it('Should limit decimals using step', function () { + return Harness.testCreate( + NumberComponent, + _merge({}, comp2, { + validate: { + step: '0.001', + }, + }), + ).then((component) => { Harness.testSetInput(component, 123456789.123456789, 123456789.123, '123,456,789.123'); Harness.testSetInput(component, -123456789.123456789, -123456789.123, '-123,456,789.123'); Harness.testSetInput(component, '123456789.123456789', 123456789.123, '123,456,789.123'); @@ -178,7 +190,7 @@ describe('Number Component', function() { }); }); - it('Should format submissions for table view for French locale', function() { + it('Should format submissions for table view for French locale', function () { return Harness.testCreate(NumberComponent, comp2, { language: 'fr' }).then((component) => { const value1 = component.getValueAsString(1); const value2 = component.getValueAsString(1.1); @@ -196,7 +208,7 @@ describe('Number Component', function() { }); }); - it('Should format sumissions for table view for USA locale', function() { + it('Should format sumissions for table view for USA locale', function () { return Harness.testCreate(NumberComponent, comp2, { language: 'en-US' }).then((component) => { const value1 = component.getValueAsString(1); const value2 = component.getValueAsString(1.1); @@ -214,8 +226,7 @@ describe('Number Component', function() { }); }); - it('Should format numbers for USA locale', function() { - + it('Should format numbers for USA locale', function () { return Harness.testCreate(NumberComponent, comp2, { language: 'en-US' }).then((component) => { Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, undefined, null, ''); @@ -229,8 +240,8 @@ describe('Number Component', function() { Harness.testSetInput(component, -1, -1, '-1'); Harness.testSetInput(component, 1000, 1000, '1,000'); Harness.testSetInput(component, -1000, -1000, '-1,000'); - Harness.testSetInput(component, 1000.00, 1000, '1,000'); - Harness.testSetInput(component, -1000.00, -1000, '-1,000'); + Harness.testSetInput(component, 1000.0, 1000, '1,000'); + Harness.testSetInput(component, -1000.0, -1000, '-1,000'); Harness.testSetInput(component, 1000.01, 1000.01, '1,000.01'); Harness.testSetInput(component, -1000.01, -1000.01, '-1,000.01'); Harness.testSetInput(component, 1000.001, 1000.001, '1,000.001'); @@ -240,8 +251,18 @@ describe('Number Component', function() { Harness.testSetInput(component, 12.123456789, 12.123456789, '12.123456789'); Harness.testSetInput(component, -12.123456789, -12.123456789, '-12.123456789'); // These tests run into the maximum number of significant digits for floats. - Harness.testSetInput(component, 123456789.123456789, 123456789.123456789, '123,456,789.12345679'); - Harness.testSetInput(component, -123456789.123456789, -123456789.123456789, '-123,456,789.12345679'); + Harness.testSetInput( + component, + 123456789.123456789, + 123456789.123456789, + '123,456,789.12345679', + ); + Harness.testSetInput( + component, + -123456789.123456789, + -123456789.123456789, + '-123,456,789.12345679', + ); Harness.testSetInput(component, '0', 0, '0'); Harness.testSetInput(component, '1', 1, '1'); Harness.testSetInput(component, '-1', -1, '-1'); @@ -257,13 +278,22 @@ describe('Number Component', function() { Harness.testSetInput(component, '-1234567890.12', -1234567890.12, '-1,234,567,890.12'); Harness.testSetInput(component, '12.123456789', 12.123456789, '12.123456789'); Harness.testSetInput(component, '-12.123456789', -12.123456789, '-12.123456789'); - Harness.testSetInput(component, '123456789.123456789', 123456789.123456789, '123,456,789.12345679'); - Harness.testSetInput(component, '-123456789.123456789', -123456789.123456789, '-123,456,789.12345679'); + Harness.testSetInput( + component, + '123456789.123456789', + 123456789.123456789, + '123,456,789.12345679', + ); + Harness.testSetInput( + component, + '-123456789.123456789', + -123456789.123456789, + '-123,456,789.12345679', + ); }); - }); - it('Should format numbers for British locale', function() { + it('Should format numbers for British locale', function () { return Harness.testCreate(NumberComponent, comp2, { language: 'en-GB' }).then((component) => { Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, 0, 0, '0'); @@ -271,8 +301,8 @@ describe('Number Component', function() { Harness.testSetInput(component, -1, -1, '-1'); Harness.testSetInput(component, 1000, 1000, '1,000'); Harness.testSetInput(component, -1000, -1000, '-1,000'); - Harness.testSetInput(component, 1000.00, 1000, '1,000'); - Harness.testSetInput(component, -1000.00, -1000, '-1,000'); + Harness.testSetInput(component, 1000.0, 1000, '1,000'); + Harness.testSetInput(component, -1000.0, -1000, '-1,000'); Harness.testSetInput(component, 1000.01, 1000.01, '1,000.01'); Harness.testSetInput(component, -1000.01, -1000.01, '-1,000.01'); Harness.testSetInput(component, 1000.001, 1000.001, '1,000.001'); @@ -284,7 +314,7 @@ describe('Number Component', function() { }); }); - it('Should format numbers for French locale', function() { + it('Should format numbers for French locale', function () { return Harness.testCreate(NumberComponent, comp2, { language: 'fr' }).then((component) => { // The spaces in these tests are a weird unicode space so be careful duplicating the tests. Harness.testSetInput(component, null, null, ''); @@ -293,8 +323,8 @@ describe('Number Component', function() { Harness.testSetInput(component, -1, -1, '-1'); Harness.testSetInput(component, 1000, 1000, '1 000'); Harness.testSetInput(component, -1000, -1000, '-1 000'); - Harness.testSetInput(component, 1000.00, 1000, '1 000'); - Harness.testSetInput(component, -1000.00, -1000, '-1 000'); + Harness.testSetInput(component, 1000.0, 1000, '1 000'); + Harness.testSetInput(component, -1000.0, -1000, '-1 000'); Harness.testSetInput(component, 1000.01, 1000.01, '1 000,01'); Harness.testSetInput(component, -1000.01, -1000.01, '-1 000,01'); Harness.testSetInput(component, 1000.001, 1000.001, '1 000,001'); @@ -306,7 +336,7 @@ describe('Number Component', function() { }); }); - it('Should format numbers for German locale', function() { + it('Should format numbers for German locale', function () { return Harness.testCreate(NumberComponent, comp2, { language: 'de' }).then((component) => { Harness.testSetInput(component, null, null, ''); Harness.testSetInput(component, 0, 0, '0'); @@ -314,8 +344,8 @@ describe('Number Component', function() { Harness.testSetInput(component, -1, -1, '-1'); Harness.testSetInput(component, 1000, 1000, '1.000'); Harness.testSetInput(component, -1000, -1000, '-1.000'); - Harness.testSetInput(component, 1000.00, 1000, '1.000'); - Harness.testSetInput(component, -1000.00, -1000, '-1.000'); + Harness.testSetInput(component, 1000.0, 1000, '1.000'); + Harness.testSetInput(component, -1000.0, -1000, '-1.000'); Harness.testSetInput(component, 1000.01, 1000.01, '1.000,01'); Harness.testSetInput(component, -1000.01, -1000.01, '-1.000,01'); Harness.testSetInput(component, 1000.001, 1000.001, '1.000,001'); @@ -327,13 +357,13 @@ describe('Number Component', function() { }); }); - it('Should display default integer value', function() { - return Harness.testCreate(NumberComponent, comp3).then(number => { + it('Should display default integer value', function () { + return Harness.testCreate(NumberComponent, comp3).then((number) => { assert.deepEqual(_.get(number, ['refs', 'input', '0', 'value']), '42'); }); }); - it('Should display default decimal value', function() { + it('Should display default decimal value', function () { const TEST_VAL = 4.2; const comp = _.cloneDeep(comp3); @@ -341,78 +371,74 @@ describe('Number Component', function() { comp.decimalLimit = 2; comp.requireDecimal = true; - return Harness.testCreate(NumberComponent, comp).then(number => { + return Harness.testCreate(NumberComponent, comp).then((number) => { assert.deepEqual(_.get(number, ['refs', 'input', '0', 'value']), '4.20'); }); }); - it('Should provide min/max validation', function(done) { + it('Should provide min/max validation', function (done) { const form = _.cloneDeep(comp6); - const validValues = [ - null, - 20, - 555, - 34, - 20.000001, - 554.999 - ]; - - const invalidMin = [ - 19.99, - 0, - 1, - 0.34, - -0.1, - -20 - ]; - - const invalidMax = [ - 555.00000001, - 100000, - 5555, - ]; + const validValues = [null, 20, 555, 34, 20.000001, 554.999]; + + const invalidMin = [19.99, 0, 1, 0.34, -0.1, -20]; + + const invalidMax = [555.00000001, 100000, 5555]; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form, { language: 'en-US' }).then(form => { - form.setPristine(false); - - const component = form.getComponent('number'); - const changed = component.setValue(value); - const error = message; + Formio.createForm(element, form, { language: 'en-US' }) + .then((form) => { + form.setPristine(false); - if (value) { - assert.equal(changed, true, 'Should set value'); - } + const component = form.getComponent('number'); + const changed = component.setValue(value); + const error = message; - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert(component.errors.length > 0, 'Should contain error'); - assert.equal(component.errors[0].message, error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert(component.errors.length > 0, 'Should contain error'); + assert.equal(component.errors[0].message, error, 'Should contain error message'); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); testValidity(invalidMin, false, 'Number cannot be less than 20.'); - testValidity(invalidMax, false, 'Number cannot be greater than 555.', invalidMax[invalidMax.length-1]); + testValidity( + invalidMax, + false, + 'Number cannot be greater than 555.', + invalidMax[invalidMax.length - 1], + ); }); - it('Should be able to switch between multiple and single values', function(done) { + it('Should be able to switch between multiple and single values', function (done) { Harness.testCreate(NumberComponent, comp5).then((component) => { assert.equal(_.isEqual(component.defaultValue, [null]), true); component.component.multiple = false; @@ -423,37 +449,43 @@ describe('Number Component', function() { }); }); - it('Should return value as string properly for multiple values', function(done) { - Harness.testCreate(NumberComponent, comp7).then((component) => { - component.refs.input = null; - assert.equal(component.getValueAsString([1, 2, 3, 4, 5]), '1, 2, 3, 4, 5'); - done(); - }).catch(done); + it('Should return value as string properly for multiple values', function (done) { + Harness.testCreate(NumberComponent, comp7) + .then((component) => { + component.refs.input = null; + assert.equal(component.getValueAsString([1, 2, 3, 4, 5]), '1, 2, 3, 4, 5'); + done(); + }) + .catch(done); }); - it('Should not remove decimal symbol and numbers after decimal symbol when submit is pressed', function(done) { + it('Should not remove decimal symbol and numbers after decimal symbol when submit is pressed', function (done) { Formio.createForm(document.createElement('div'), comp8, {}).then((form) => { const inputEvent = new Event('input'); const numberComponent = form.getComponent('number'); const buttonComponent = form.getComponent('submit'); - numberComponent.refs.input[0].value = "123-456"; + numberComponent.refs.input[0].value = '123-456'; numberComponent.refs.input[0].dispatchEvent(inputEvent); - setTimeout(()=>{ + setTimeout(() => { buttonComponent.refs.button.click(); - setTimeout(()=>{ - assert.equal(numberComponent.refs.input[0].value, "123-456"); + setTimeout(() => { + assert.equal(numberComponent.refs.input[0].value, '123-456'); done(); - },200); - },200); + }, 200); + }, 200); }); }); - it('Should remove thousands separator in parseValue function if set on component JSON', function() { - const numberComponent = new NumberComponent({thousandsSeparator: '.', decimalSymbol: ',', delimiter: true}); + it('Should remove thousands separator in parseValue function if set on component JSON', function () { + const numberComponent = new NumberComponent({ + thousandsSeparator: '.', + decimalSymbol: ',', + delimiter: true, + }); assert.equal(numberComponent.parseValue('123.456.789,1'), '123456789,1'); }); - it('Should use a . thousands separator when delimiter is true and thousands separator is set to .', function(done) { + it('Should use a . thousands separator when delimiter is true and thousands separator is set to .', function (done) { Formio.createForm(document.createElement('div'), comp9, {}).then((form) => { const numberComponent = form.getComponent('number'); const inputEvent = new Event('input'); @@ -461,38 +493,40 @@ describe('Number Component', function() { numberComponent.refs.input[0].value = '111222333'; numberComponent.refs.input[0].dispatchEvent(inputEvent); numberComponent.refs.input[0].dispatchEvent(blurEvent); - setTimeout(()=>{ + setTimeout(() => { assert.equal(numberComponent.refs.input[0].value, '111.222.333'); done(); - },200) - }) + }, 200); + }); }); - it('Should not display a number validation error if the default value is set to a numeric string', function() { + it('Should not display a number validation error if the default value is set to a numeric string', function () { return Formio.createForm(document.createElement('div'), comp10, {}).then((form) => { - const numberComponent = form.getComponent("number"); + const numberComponent = form.getComponent('number'); assert.equal(numberComponent._errors.length, 0); }); }); - it('Should maintain the correct caret (cursor) position when rendering value with thousands separators after restoreCaretPosition is called', function(done) { - Formio.createForm(document.createElement('div'), comp11, {}).then((form) => { - const numberComponent = form.getComponent('number'); - form.root.focusedComponent = numberComponent; - const numberElement = numberComponent.refs.input[0]; - const inputEvent = new Event('input'); - - numberElement.value = 1234567; - numberElement.dispatchEvent(inputEvent); - // see https://formio.atlassian.net/browse/FIO-9144 - // before the fix, the caret was moving back by one after being restored - numberComponent.restoreCaretPosition(); - assert.equal(numberElement.value, '1,234,567'); - // selectionStart (a.k.a cursor position) is 9 with the delimiters - // it would be 7 without them and 8 with the previous bug - assert.equal(numberElement.selectionStart, 9); - done(); - }).catch(done); + it('Should maintain the correct caret (cursor) position when rendering value with thousands separators after restoreCaretPosition is called', function (done) { + Formio.createForm(document.createElement('div'), comp11, {}) + .then((form) => { + const numberComponent = form.getComponent('number'); + form.root.focusedComponent = numberComponent; + const numberElement = numberComponent.refs.input[0]; + const inputEvent = new Event('input'); + + numberElement.value = 1234567; + numberElement.dispatchEvent(inputEvent); + // see https://formio.atlassian.net/browse/FIO-9144 + // before the fix, the caret was moving back by one after being restored + numberComponent.restoreCaretPosition(); + assert.equal(numberElement.value, '1,234,567'); + // selectionStart (a.k.a cursor position) is 9 with the delimiters + // it would be 7 without them and 8 with the previous bug + assert.equal(numberElement.selectionStart, 9); + done(); + }) + .catch(done); }); // it('Should add trailing zeros on blur, if decimal required', (done) => { diff --git a/test/unit/PDFBuilder.unit.js b/test/unit/PDFBuilder.unit.js index b1622cbcc6..155c83b45f 100644 --- a/test/unit/PDFBuilder.unit.js +++ b/test/unit/PDFBuilder.unit.js @@ -3,21 +3,21 @@ import { expect } from 'chai'; import { Formio } from '../../src/Formio'; import FormBuilder from '../../src/FormBuilder'; -describe('PDF Builder tests', function() { - describe('PDF Auto Conversion', function() { +describe('PDF Builder tests', function () { + describe('PDF Auto Conversion', function () { let originalUploadFile, originalLoadProject; - - before(function() { + + before(function () { originalUploadFile = Formio.prototype.uploadFile; originalLoadProject = Formio.prototype.loadProject; }); - after(function() { + after(function () { Formio.prototype.uploadFile = originalUploadFile; Formio.prototype.loadProject = originalLoadProject; }); - beforeEach(function() { + beforeEach(function () { Formio.prototype.loadProject = fake.resolves(null); }); @@ -42,12 +42,12 @@ describe('PDF Builder tests', function() { }, }, ], - ...(withNonFillable && { nonFillableConversionUsed: true }) + ...(withNonFillable && { nonFillableConversionUsed: true }), }, }, }); - it('Should assign fields from PDF auto conversion to the empty form', function(done) { + it('Should assign fields from PDF auto conversion to the empty form', function (done) { const uploadResponseMock = getUploadResponseMock(); Formio.prototype.uploadFile = fake.resolves(uploadResponseMock); @@ -60,21 +60,22 @@ describe('PDF Builder tests', function() { }; const builder = new FormBuilder(document.createElement('div'), form, {}); - builder.ready - .then(function(builder) { - builder.on('pdfUploaded', (result) => { - expect(result).to.be.deep.equal(uploadResponseMock.data); - expect(builder.webform.form.components).to.be.deep.equal(uploadResponseMock.data.formfields.components); - expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.undefined; - - done(); - }); + builder.ready.then(function (builder) { + builder.on('pdfUploaded', (result) => { + expect(result).to.be.deep.equal(uploadResponseMock.data); + expect(builder.webform.form.components).to.be.deep.equal( + uploadResponseMock.data.formfields.components, + ); + expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.undefined; - builder.upload(); + done(); }); + + builder.upload(); + }); }); - it('Should assign fields from PDF auto conversion to the initial form', function(done) { + it('Should assign fields from PDF auto conversion to the initial form', function (done) { const uploadResponseMock = getUploadResponseMock(); Formio.prototype.uploadFile = fake.resolves(uploadResponseMock); @@ -95,21 +96,22 @@ describe('PDF Builder tests', function() { }; const builder = new FormBuilder(document.createElement('div'), form, {}); - builder.ready - .then(function(builder) { - builder.on('pdfUploaded', (result) => { - expect(result).to.be.deep.equal(uploadResponseMock.data); - expect(builder.webform.form.components).to.be.deep.equal(uploadResponseMock.data.formfields.components); - expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.undefined; + builder.ready.then(function (builder) { + builder.on('pdfUploaded', (result) => { + expect(result).to.be.deep.equal(uploadResponseMock.data); + expect(builder.webform.form.components).to.be.deep.equal( + uploadResponseMock.data.formfields.components, + ); + expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.undefined; - done(); - }); - - builder.upload(); + done(); }); + + builder.upload(); + }); }); - it('Should assign fields from PDF non fillable conversion to the initial form', function(done) { + it('Should assign fields from PDF non fillable conversion to the initial form', function (done) { const uploadResponseMock = getUploadResponseMock(true); Formio.prototype.uploadFile = fake.resolves(uploadResponseMock); @@ -130,21 +132,22 @@ describe('PDF Builder tests', function() { }; const builder = new FormBuilder(document.createElement('div'), form, {}); - builder.ready - .then(function(builder) { - builder.on('pdfUploaded', (result) => { - expect(result).to.be.deep.equal(uploadResponseMock.data); - expect(builder.webform.form.components).to.be.deep.equal(uploadResponseMock.data.formfields.components); - expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.true; + builder.ready.then(function (builder) { + builder.on('pdfUploaded', (result) => { + expect(result).to.be.deep.equal(uploadResponseMock.data); + expect(builder.webform.form.components).to.be.deep.equal( + uploadResponseMock.data.formfields.components, + ); + expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.true; - done(); - }); - - builder.upload(); + done(); }); + + builder.upload(); + }); }); - it('Should not assign fields from PDF auto conversion to non pristine form', function(done) { + it('Should not assign fields from PDF auto conversion to non pristine form', function (done) { const uploadResponseMock = getUploadResponseMock(true); Formio.prototype.uploadFile = fake.resolves(uploadResponseMock); @@ -178,18 +181,17 @@ describe('PDF Builder tests', function() { }; const builder = new FormBuilder(document.createElement('div'), form, {}); - builder.ready - .then(function(builder) { - builder.on('pdfUploaded', (result) => { - expect(result).to.be.deep.equal(uploadResponseMock.data); - expect(builder.webform.form.components).to.be.deep.equal(form.components); - expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.false; + builder.ready.then(function (builder) { + builder.on('pdfUploaded', (result) => { + expect(result).to.be.deep.equal(uploadResponseMock.data); + expect(builder.webform.form.components).to.be.deep.equal(form.components); + expect(builder.webform.form.settings.pdf.nonFillableConversionUsed).to.be.false; - done(); - }); - - builder.upload(); + done(); }); + + builder.upload(); + }); }); }); }); diff --git a/test/unit/Panel.unit.js b/test/unit/Panel.unit.js index 93f81f00f5..2d02005e29 100644 --- a/test/unit/Panel.unit.js +++ b/test/unit/Panel.unit.js @@ -4,79 +4,84 @@ import { flattenComponents } from '../../src/utils/formUtils'; import PanelComponent from '../../src/components/panel/Panel'; import panelEditForm from '../../src/components/panel/Panel.form'; import { Formio } from '../../src/Formio'; -import { - comp1, - comp2 -} from './fixtures/panel'; +import { comp1, comp2 } from './fixtures/panel'; -describe('Panel Component', function() { - it('Should build a panel component', function() { +describe('Panel Component', function () { + it('Should build a panel component', function () { return Harness.testCreate(PanelComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 2); }); }); - it('Should keep validation errors after expanding collapsed panel', function(done) { + it('Should keep validation errors after expanding collapsed panel', function (done) { const element = document.createElement('div'); - Formio.createForm(element, comp2).then(form => { - const panel = form.getComponent('panel'); - const numberComp = form.getComponent('number'); - const textComp = form.getComponent('textField'); + Formio.createForm(element, comp2) + .then((form) => { + const panel = form.getComponent('panel'); + const numberComp = form.getComponent('number'); + const textComp = form.getComponent('textField'); - assert.equal(panel.collapsed, false); - assert.equal(numberComp.errors.length, 0); - assert.equal(textComp.errors.length, 1); - - // Make sure the error is not visible in the UI. - assert.equal(numberComp.element.classList.contains('has-error'), false, 'Should not contain error classes.'); - assert.equal(textComp.element.classList.contains('has-error'), false, 'Should not contain error classes.'); - - const inputEvent = new Event('input'); - const numberInput = numberComp.refs?.input[0]; - numberInput.value = 5; - numberInput.dispatchEvent(inputEvent); + assert.equal(panel.collapsed, false); + assert.equal(numberComp.errors.length, 0); + assert.equal(textComp.errors.length, 1); - const textInput = textComp.refs?.input[0]; - textInput.value = 'test'; - textInput.dispatchEvent(inputEvent); - textInput.value = ''; - textInput.dispatchEvent(inputEvent); + // Make sure the error is not visible in the UI. + assert.equal( + numberComp.element.classList.contains('has-error'), + false, + 'Should not contain error classes.', + ); + assert.equal( + textComp.element.classList.contains('has-error'), + false, + 'Should not contain error classes.', + ); - setTimeout(() => { - assert.equal(numberComp.errors.length, 1); - assert.equal(numberComp.refs.messageContainer.querySelectorAll('.error').length, 1); - assert.equal(textComp.errors.length, 1); - assert.equal(textComp.refs.messageContainer.querySelectorAll('.error').length, 1); + const inputEvent = new Event('input'); + const numberInput = numberComp.refs?.input[0]; + numberInput.value = 5; + numberInput.dispatchEvent(inputEvent); - panel.collapse(true); + const textInput = textComp.refs?.input[0]; + textInput.value = 'test'; + textInput.dispatchEvent(inputEvent); + textInput.value = ''; + textInput.dispatchEvent(inputEvent); setTimeout(() => { - panel.collapse(false); + assert.equal(numberComp.errors.length, 1); + assert.equal(numberComp.refs.messageContainer.querySelectorAll('.error').length, 1); + assert.equal(textComp.errors.length, 1); + assert.equal(textComp.refs.messageContainer.querySelectorAll('.error').length, 1); + + panel.collapse(true); setTimeout(() => { - assert.equal(panel.collapsed, false); - assert.equal(numberComp.errors.length, 1); - assert.equal(numberComp.refs.messageContainer.querySelectorAll('.error').length, 1); - assert.equal(textComp.errors.length, 1); - assert.equal(textComp.refs.messageContainer.querySelectorAll('.error').length, 1); - assert.equal(panel.refs.messageContainer.querySelectorAll('.error').length, 0); - done(); + panel.collapse(false); + + setTimeout(() => { + assert.equal(panel.collapsed, false); + assert.equal(numberComp.errors.length, 1); + assert.equal(numberComp.refs.messageContainer.querySelectorAll('.error').length, 1); + assert.equal(textComp.errors.length, 1); + assert.equal(textComp.refs.messageContainer.querySelectorAll('.error').length, 1); + assert.equal(panel.refs.messageContainer.querySelectorAll('.error').length, 0); + done(); + }, 300); }, 300); }, 300); - }, 300); - }).catch(done); + }) + .catch(done); }); - describe('Edit Form', function() { - it('should include components for important settings', function() { + describe('Edit Form', function () { + it('should include components for important settings', function () { const components = flattenComponents(panelEditForm().components); - const keys = Object.keys(components).map(path => components[path].key); - const settings = [ - 'breadcrumbClickable' - ]; + const keys = Object.keys(components).map((path) => components[path].key); + const settings = ['breadcrumbClickable']; - assert(settings.every(s => keys.includes(s))); + assert(settings.every((s) => keys.includes(s))); }); }); }); diff --git a/test/unit/Password.unit.js b/test/unit/Password.unit.js index 4f3c8a32cb..5e33fec644 100644 --- a/test/unit/Password.unit.js +++ b/test/unit/Password.unit.js @@ -4,90 +4,79 @@ import { Formio } from '../../src/Formio'; import assert from 'power-assert'; import _ from 'lodash'; -import { - comp1, - comp2 -} from './fixtures/password'; +import { comp1, comp2 } from './fixtures/password'; -describe('Password Component', function() { - it('Should build a password component', function() { +describe('Password Component', function () { + it('Should build a password component', function () { return Harness.testCreate(PasswordComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="password"]', 1); }); }); - it('Should provide min/max length validation', function(done) { + it('Should provide min/max length validation', function (done) { const form = _.cloneDeep(comp2); form.components[0].validate = { minLength: 5, maxLength: 10 }; - const validValues = [ - '', - 'te_st', - 'test value', - ' ', - 'What?', - 'test: ', - 't ', - ' t ' - ]; + const validValues = ['', 'te_st', 'test value', ' ', 'What?', 'test: ', 't ', ' t ']; - const invalidMin = [ - 't', - 'tt', - 'ttt', - 'tttt', - ' t ', - ' t', - '_4_' - ]; + const invalidMin = ['t', 'tt', 'ttt', 'tttt', ' t ', ' t', '_4_']; - const invalidMax = [ - 'test__value', - 'test value ', - ' test value', - 'test: value', - ]; + const invalidMax = ['test__value', 'test value ', ' test value', 'test: value']; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); - - const component = form.getComponent('password'); - const changed = component.setValue(value); - const error = message; + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - if (value) { - assert.equal(changed, true, 'Should set value'); - } + const component = form.getComponent('password'); + const changed = component.setValue(value); + const error = message; - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert.equal(component.errors.length, 1, 'Should contain error'); - assert.equal(component.errors[0].message, error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert.equal(component.errors.length, 1, 'Should contain error'); + assert.equal(component.errors[0].message, error, 'Should contain error message'); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); testValidity(invalidMin, false, 'Password must have at least 5 characters.'); - testValidity(invalidMax, false, 'Password must have no more than 10 characters.', invalidMax[invalidMax.length-1]); + testValidity( + invalidMax, + false, + 'Password must have no more than 10 characters.', + invalidMax[invalidMax.length - 1], + ); }); - it('Should provide pattern validation', function(done) { + it('Should provide pattern validation', function (done) { const form = _.cloneDeep(comp2); form.components[0].validate = { pattern: '\\D+' }; @@ -99,67 +88,81 @@ describe('Password Component', function() { ' some - test - value ', ]; - const invalidValues = [ - 'test(2)', - '123', - '0 waste', - '"9"', - ' 9', - ]; + const invalidValues = ['test(2)', '123', '0 waste', '"9"', ' 9']; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); - - const component = form.getComponent('password'); - const changed = component.setValue(value); - const error = message; + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - if (value) { - assert.equal(changed, true, 'Should set value'); - } + const component = form.getComponent('password'); + const changed = component.setValue(value); + const error = message; - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert.equal(component.errors.length, 1, 'Should contain error'); - assert.equal(component.errors[0].message.trim(), error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert.equal(component.errors.length, 1, 'Should contain error'); + assert.equal( + component.errors[0].message.trim(), + error, + 'Should contain error message', + ); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); - testValidity(invalidValues, false, 'Password does not match the pattern \\D+', invalidValues[invalidValues.length-1]); + testValidity( + invalidValues, + false, + 'Password does not match the pattern \\D+', + invalidValues[invalidValues.length - 1], + ); }); - it('Should not show required validation error message in edit page before editing', function(done) { + it('Should not show required validation error message in edit page before editing', function (done) { const form = _.cloneDeep(comp2); form.components[0].validate = { required: true }; const element = document.createElement('div'); - - Formio.createForm(element, form).then(form => { - const component = form.getComponent('password'); - component.setValue(''); - form.root.editing = true; - form.setPristine(true); - setTimeout(() => { - assert.equal(component.visibleErrors.length, 0); - assert.equal(component.errors.length, 1); - done(); - }, 300); - }).catch(done); + + Formio.createForm(element, form) + .then((form) => { + const component = form.getComponent('password'); + component.setValue(''); + form.root.editing = true; + form.setPristine(true); + setTimeout(() => { + assert.equal(component.visibleErrors.length, 0); + assert.equal(component.errors.length, 1); + done(); + }, 300); + }) + .catch(done); }); }); diff --git a/test/unit/PhoneNumber.unit.js b/test/unit/PhoneNumber.unit.js index 8e8d6c9b01..e7c73e099c 100644 --- a/test/unit/PhoneNumber.unit.js +++ b/test/unit/PhoneNumber.unit.js @@ -3,43 +3,44 @@ import PhoneNumberComponent from '../../src/components/phonenumber/PhoneNumber'; import assert from 'power-assert'; import { Formio } from '../../src/Formio'; -import { - comp1, - comp2 -} from './fixtures/phonenumber'; +import { comp1, comp2 } from './fixtures/phonenumber'; -describe('PhoneNumber Component', function() { - it('Should build a phone number component', function() { +describe('PhoneNumber Component', function () { + it('Should build a phone number component', function () { return Harness.testCreate(PhoneNumberComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 1); }); }); - it('Should check mask and value in the phone component in the email template', function(done) { - const formJson = { - components: [{ + it('Should check mask and value in the phone component in the email template', function (done) { + const formJson = { + components: [ + { label: 'Phone Number', tableView: true, allowMultipleMasks: true, - inputMasks: [{ - label: 'mask1', - mask: 'mask1' - }], + inputMasks: [ + { + label: 'mask1', + mask: 'mask1', + }, + ], key: 'phoneNumber', type: 'phoneNumber', - input: true - }] + input: true, + }, + ], }; const element = document.createElement('div'); Formio.createForm(element, formJson) - .then(form => { + .then((form) => { form.setSubmission({ data: { phoneNumber: { - value: 'mask1', - maskName: 'mask2' - } - }, + value: 'mask1', + maskName: 'mask2', + }, + }, }); const phoneNumber = form.getComponent('phoneNumber'); @@ -49,25 +50,34 @@ describe('PhoneNumber Component', function() { assert.equal(phoneNumber.dataValue.maskName, 'mask2', 'Should check maskName'); const toString = phoneNumber.getValueAsString(phoneNumber.dataValue, { email: true }); assert.ok(toString.includes('table'), 'Email template should render html table'); - assert.ok(toString.includes(phoneNumber.dataValue.maskName), 'Email template should have Phone Number mackName'); - assert.ok(toString.includes(phoneNumber.dataValue.value), 'Email template should have Phone Number value'); + assert.ok( + toString.includes(phoneNumber.dataValue.maskName), + 'Email template should have Phone Number mackName', + ); + assert.ok( + toString.includes(phoneNumber.dataValue.value), + 'Email template should have Phone Number value', + ); done(); }, 300); }) .catch(done); }); - it('Should remove previous input mask when switching to a blank input mask', function(done) { + it('Should remove previous input mask when switching to a blank input mask', function (done) { Formio.createForm(document.createElement('div'), comp2, {}).then((form) => { const phoneNumberComponent = form.getComponent('phoneNumber'); const changeEvent = new Event('change'); - phoneNumberComponent.refs.select[0].value = "Other"; + phoneNumberComponent.refs.select[0].value = 'Other'; phoneNumberComponent.refs.select[0].dispatchEvent(changeEvent); - setTimeout(()=>{ - assert.equal(phoneNumberComponent.refs.input[0].querySelector('input').value, ""); - assert.equal(phoneNumberComponent.refs.input[0].querySelector('input').getAttribute('placeholder'), null); + setTimeout(() => { + assert.equal(phoneNumberComponent.refs.input[0].querySelector('input').value, ''); + assert.equal( + phoneNumberComponent.refs.input[0].querySelector('input').getAttribute('placeholder'), + null, + ); done(); - },200); + }, 200); }); }); }); diff --git a/test/unit/ReCaptcha.unit.js b/test/unit/ReCaptcha.unit.js index dc79883b5e..1581d629bb 100644 --- a/test/unit/ReCaptcha.unit.js +++ b/test/unit/ReCaptcha.unit.js @@ -1,13 +1,11 @@ import ReCaptchaComponent from '../../src/components/recaptcha/ReCaptcha'; -import { - comp1 -} from './fixtures/recaptcha'; +import { comp1 } from './fixtures/recaptcha'; -describe('reCAPTCHA Component', function() { - it('Should build a reCAPTCHA component in builder mode', function(done) { +describe('reCAPTCHA Component', function () { + it('Should build a reCAPTCHA component in builder mode', function (done) { new ReCaptchaComponent(comp1, { - builder: true + builder: true, }); done(); }); diff --git a/test/unit/Table.unit.js b/test/unit/Table.unit.js index 1b8af2efc3..1843661416 100644 --- a/test/unit/Table.unit.js +++ b/test/unit/Table.unit.js @@ -1,12 +1,10 @@ import Harness from '../harness'; import TableComponent from '../../src/components/table/Table'; -import { - comp1 -} from './fixtures/table'; +import { comp1 } from './fixtures/table'; -describe('Table Component', function() { - it('Should build a Table component', function() { +describe('Table Component', function () { + it('Should build a Table component', function () { return Harness.testCreate(TableComponent, comp1).then((component) => { Harness.testElements(component, 'input[type="text"]', 6); }); diff --git a/test/unit/Tabs.unit.js b/test/unit/Tabs.unit.js index 26b4009a3c..c486c0f698 100644 --- a/test/unit/Tabs.unit.js +++ b/test/unit/Tabs.unit.js @@ -2,41 +2,58 @@ import assert from 'power-assert'; import { Formio } from '../../src/formio.form'; import { comp1 } from './fixtures/tabs'; -describe('Tabs Component', function() { - it('Test setting error classes when set to modalEdit', function(done) { +describe('Tabs Component', function () { + it('Test setting error classes when set to modalEdit', function (done) { const formElement = document.createElement('div'); - Formio.createForm(formElement, { display: 'form', type: 'form', components: [comp1] }).then((form) => { - const comp = form.components[0]; + Formio.createForm(formElement, { display: 'form', type: 'form', components: [comp1] }) + .then((form) => { + const comp = form.components[0]; - const data = { - textField: '', - }; - - form.checkValidity(data, true, data); - - setTimeout(() => { - const openModalWrapper = form.element.querySelector('[ref="openModalWrapper"]'); - assert(openModalWrapper.className.includes('formio-error-wrapper'), 'Should have error class'); - assert(openModalWrapper.className.includes('has-message'), 'Should have class indicating that the component has a message'); - - const openModalButton = comp.element.querySelector('[ref="openModal"]'); - - assert(!openModalButton.className.includes('tab-error'), 'Open modal element should not have a tab-error class'); - - const validData = { - textField: 'Text', + const data = { + textField: '', }; - form.setSubmission({ data: validData }); + form.checkValidity(data, true, data); setTimeout(() => { const openModalWrapper = form.element.querySelector('[ref="openModalWrapper"]'); - assert(!openModalWrapper.className.includes('formio-error-wrapper'), 'Should not have error class'); - assert(!openModalWrapper.className.includes('has-message'), 'Should not have class indicating that the component has a message'); - - done(); - }, 250); - }, 200); - }).catch(done); + assert( + openModalWrapper.className.includes('formio-error-wrapper'), + 'Should have error class', + ); + assert( + openModalWrapper.className.includes('has-message'), + 'Should have class indicating that the component has a message', + ); + + const openModalButton = comp.element.querySelector('[ref="openModal"]'); + + assert( + !openModalButton.className.includes('tab-error'), + 'Open modal element should not have a tab-error class', + ); + + const validData = { + textField: 'Text', + }; + + form.setSubmission({ data: validData }); + + setTimeout(() => { + const openModalWrapper = form.element.querySelector('[ref="openModalWrapper"]'); + assert( + !openModalWrapper.className.includes('formio-error-wrapper'), + 'Should not have error class', + ); + assert( + !openModalWrapper.className.includes('has-message'), + 'Should not have class indicating that the component has a message', + ); + + done(); + }, 250); + }, 200); + }) + .catch(done); }); }); diff --git a/test/unit/Tags.unit.js b/test/unit/Tags.unit.js index 01155e7d50..7805990a57 100644 --- a/test/unit/Tags.unit.js +++ b/test/unit/Tags.unit.js @@ -4,59 +4,61 @@ import assert from 'power-assert'; import modalTagsComponent from '../formtest/modalTagsComponent.json'; import _ from 'lodash'; -import { - comp1, - comp2, - comp3, - comp4, - comp5, - comp6, -} from './fixtures/tags'; +import { comp1, comp2, comp3, comp4, comp5, comp6 } from './fixtures/tags'; import { Formio } from '../../src/Formio'; -describe('Tags Component', function() { - it('Should build a tags component', function() { +describe('Tags Component', function () { + it('Should build a tags component', function () { return Harness.testCreate(TagsComponent, comp1); }); - it('Should set placeholder', function(done) { - Harness.testCreate(TagsComponent, comp4).then((component) => { - assert.equal(component.choices.config.placeholder, true); - assert.equal(component.choices.config.placeholderValue, component.component.placeholder); - assert.equal(component.choices.input.element.attributes.placeholder.value, component.component.placeholder); - done(); - }).catch(done); + it('Should set placeholder', function (done) { + Harness.testCreate(TagsComponent, comp4) + .then((component) => { + assert.equal(component.choices.config.placeholder, true); + assert.equal(component.choices.config.placeholderValue, component.component.placeholder); + assert.equal( + component.choices.input.element.attributes.placeholder.value, + component.component.placeholder, + ); + done(); + }) + .catch(done); }); - it('Should not allow to add non-unique tags on blur', function(done) { + it('Should not allow to add non-unique tags on blur', function (done) { const element = document.createElement('div'); - Formio.createForm(element, { type: 'form', display: 'form', components: [comp2] }).then(form => { - const component = form.getComponent(['tags']); - const values = ['test', 'test1', 'test']; - Harness.setTagsValue(values, component); - assert.equal(component.choices.getValue(true).length, 2); - done(); - }).catch(done); + Formio.createForm(element, { type: 'form', display: 'form', components: [comp2] }) + .then((form) => { + const component = form.getComponent(['tags']); + const values = ['test', 'test1', 'test']; + Harness.setTagsValue(values, component); + assert.equal(component.choices.getValue(true).length, 2); + done(); + }) + .catch(done); }); - it('Should not exceed maxTags limit', function(done) { + it('Should not exceed maxTags limit', function (done) { const element = document.createElement('div'); - Formio.createForm(element, { type: 'form', display: 'form', components: [comp2] }).then(form => { - const component = form.getComponent(['tags']); - const values = ['1', '2', '3', '4', '5']; - Harness.setTagsValue(values, component); + Formio.createForm(element, { type: 'form', display: 'form', components: [comp2] }) + .then((form) => { + const component = form.getComponent(['tags']); + const values = ['1', '2', '3', '4', '5']; + Harness.setTagsValue(values, component); - setTimeout(() => { - assert.equal(component.choices.getValue(true).length, 4); - done(); - }, 400); - }).catch(done); + setTimeout(() => { + assert.equal(component.choices.getValue(true).length, 4); + done(); + }, 400); + }) + .catch(done); }); - it('Check getValueAsString', function(done) { + it('Check getValueAsString', function (done) { const element = document.createElement('div'); Formio.createForm(element, modalTagsComponent) - .then(form => { + .then((form) => { const component = form.getComponent(['tags']); const modalWindow = component.componentModal.refs.modalContents; @@ -65,7 +67,11 @@ describe('Tags Component', function() { setTimeout(() => { const modalPreview = component.element.querySelector('[ref="openModal"]'); - assert.equal(modalPreview.textContent.trim(), 'test,test1,test2', 'All tags should be rendered inside Modal Preview'); + assert.equal( + modalPreview.textContent.trim(), + 'test,test1,test2', + 'All tags should be rendered inside Modal Preview', + ); form.destroy(); done(); }, 250); @@ -73,90 +79,102 @@ describe('Tags Component', function() { .catch(done); }); - it('Should use correct delimiter for value', function(done) { + it('Should use correct delimiter for value', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].delimeter = '-'; - Formio.createForm(element, form).then(form => { - const tags = form.getComponent('tags'); - const value = ['tag1','tag2', 'tag3']; + Formio.createForm(element, form) + .then((form) => { + const tags = form.getComponent('tags'); + const value = ['tag1', 'tag2', 'tag3']; - tags.setValue(value); + tags.setValue(value); - setTimeout(() => { - assert.equal(tags.getValue(), value.join('-')); - assert.equal(tags.dataValue, value.join('-')); - assert.equal(form.submission.data.tags, value.join('-')); + setTimeout(() => { + assert.equal(tags.getValue(), value.join('-')); + assert.equal(tags.dataValue, value.join('-')); + assert.equal(form.submission.data.tags, value.join('-')); - document.innerHTML = ''; - done(); - }, 200); - }).catch(done); + document.innerHTML = ''; + done(); + }, 200); + }) + .catch(done); }); - it('Should use store value as array', function(done) { + it('Should use store value as array', function (done) { const form = _.cloneDeep(comp3); const element = document.createElement('div'); form.components[0].storeas = 'array'; - Formio.createForm(element, form).then(form => { - const tags = form.getComponent('tags'); - const value = ['tag1','tag2', 'tag3']; + Formio.createForm(element, form) + .then((form) => { + const tags = form.getComponent('tags'); + const value = ['tag1', 'tag2', 'tag3']; - tags.setValue(value); + tags.setValue(value); - setTimeout(() => { - assert.deepEqual(tags.getValue(), value.join(',')); - assert.deepEqual(form.submission.data.tags, value); - assert.equal(tags.dataValue, value); + setTimeout(() => { + assert.deepEqual(tags.getValue(), value.join(',')); + assert.deepEqual(form.submission.data.tags, value); + assert.equal(tags.dataValue, value); - document.innerHTML = ''; - done(); - }, 200); - }).catch(done); + document.innerHTML = ''; + done(); + }, 200); + }) + .catch(done); }); - it('Should show the specified delimiter when get value as string', function(done) { + it('Should show the specified delimiter when get value as string', function (done) { const form = _.cloneDeep(comp5); const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const tags = form.getComponent('tags'); - const value = ['tag1', 'tag2', 'tag3']; + Formio.createForm(element, form) + .then((form) => { + const tags = form.getComponent('tags'); + const value = ['tag1', 'tag2', 'tag3']; - tags.setValue(value); + tags.setValue(value); - setTimeout(() => { - assert.deepEqual(tags.getValue(), value.join(tags.component.delimeter)); - assert.deepEqual(form.submission.data.tags, value); - assert.equal(tags.dataValue, value); - assert.equal(tags.getValueAsString(value), value.join(`${tags.component.delimeter} `)); + setTimeout(() => { + assert.deepEqual(tags.getValue(), value.join(tags.component.delimeter)); + assert.deepEqual(form.submission.data.tags, value); + assert.equal(tags.dataValue, value); + assert.equal(tags.getValueAsString(value), value.join(`${tags.component.delimeter} `)); - document.innerHTML = ''; - done(); - }, 200); - }).catch(done); + document.innerHTML = ''; + done(); + }, 200); + }) + .catch(done); }); - it('OnBlur validation should work properly with Tags component', function(done) { + it('OnBlur validation should work properly with Tags component', function (done) { const element = document.createElement('div'); - Formio.createForm(element, comp6).then(form => { - const tags = form.getComponent('tags'); - // tags.setValue(['1', '2', '3']); - Harness.setTagsValue(['test', 'test1', 'test2'], tags); - tags.choices.input.element.focus(); - - setTimeout(() => { - assert.equal(tags.errors.length, 0, 'Tags should be valid while changing'); - tags.choices.input.element.dispatchEvent(new Event('blur')); + Formio.createForm(element, comp6) + .then((form) => { + const tags = form.getComponent('tags'); + // tags.setValue(['1', '2', '3']); + Harness.setTagsValue(['test', 'test1', 'test2'], tags); + tags.choices.input.element.focus(); setTimeout(() => { - assert.equal(tags.errors.length, 1, 'Should set error after Tags component was blurred'); - done(); - }, 500); - }, 350); - }).catch(done); + assert.equal(tags.errors.length, 0, 'Tags should be valid while changing'); + tags.choices.input.element.dispatchEvent(new Event('blur')); + + setTimeout(() => { + assert.equal( + tags.errors.length, + 1, + 'Should set error after Tags component was blurred', + ); + done(); + }, 500); + }, 350); + }) + .catch(done); }); }); diff --git a/test/unit/Templates.unit.js b/test/unit/Templates.unit.js index 531b4e9dcd..094f7d541e 100644 --- a/test/unit/Templates.unit.js +++ b/test/unit/Templates.unit.js @@ -14,7 +14,7 @@ const fixComponent = (instance, index = 0) => { instance.id = instance.key; index++; if (instance.everyComponent) { - instance.everyComponent(component => fixComponent(component, index)); + instance.everyComponent((component) => fixComponent(component, index)); if (instance.hasOwnProperty('subForm') && instance.subForm) { instance.subForm.id = instance.key; } @@ -25,51 +25,69 @@ const fixComponent = (instance, index = 0) => { } }; -describe('Rendering Tests', function() { - Object.keys(templates).forEach(framework => { - describe(`Framework ${framework}`, function() { - describe('Form Renders', function() { - Object.keys(forms).forEach(form => { - it(`Form renders ${form}`, function() { - return new Form(forms[form], { template: framework }).ready.then(instance => { +describe('Rendering Tests', function () { + Object.keys(templates).forEach((framework) => { + describe(`Framework ${framework}`, function () { + describe('Form Renders', function () { + Object.keys(forms).forEach((form) => { + it(`Form renders ${form}`, function () { + return new Form(forms[form], { template: framework }).ready.then((instance) => { fixComponent(instance); - assert.equal(renders[`form-${framework}-${form}`], pretty(instance.render(), { ocd: true })); + assert.equal( + renders[`form-${framework}-${form}`], + pretty(instance.render(), { ocd: true }), + ); }); }); }); }); - Object.keys(AllComponents).forEach(component => { + Object.keys(AllComponents).forEach((component) => { if (component !== 'componentmodal') { - describe(`Component ${component}`, function() { - it(`Renders ${component} for ${framework}`, function(done) { + describe(`Component ${component}`, function () { + it(`Renders ${component} for ${framework}`, function (done) { const instance = new AllComponents[component]({}, { template: framework }); fixComponent(instance); - assert.equal(renders[`component-${framework}-${component}`], pretty(instance.render(), { ocd: true })); + assert.equal( + renders[`component-${framework}-${component}`], + pretty(instance.render(), { ocd: true }), + ); done(); }); - it(`Renders ${component} for ${framework} as required`, function(done) { - const instance = new AllComponents[component]({ - validate: { - required: true - } - }, { - template: framework, - }); + it(`Renders ${component} for ${framework} as required`, function (done) { + const instance = new AllComponents[component]( + { + validate: { + required: true, + }, + }, + { + template: framework, + }, + ); fixComponent(instance); - assert.equal(renders[`component-${framework}-${component}-required`], pretty(instance.render(), { ocd: true })); + assert.equal( + renders[`component-${framework}-${component}-required`], + pretty(instance.render(), { ocd: true }), + ); done(); }); - it(`Renders ${component} for ${framework} as multiple`, function(done) { - const instance = new AllComponents[component]({ - multiple: true - }, { - template: framework, - }); + it(`Renders ${component} for ${framework} as multiple`, function (done) { + const instance = new AllComponents[component]( + { + multiple: true, + }, + { + template: framework, + }, + ); fixComponent(instance); - assert.equal(pretty(renders[`component-${framework}-${component}-multiple`]), pretty(instance.render(), { ocd: true })); + assert.equal( + pretty(renders[`component-${framework}-${component}-multiple`]), + pretty(instance.render(), { ocd: true }), + ); done(); }); @@ -79,23 +97,32 @@ describe('Rendering Tests', function() { values.unshift(undefined); values.forEach((value, index) => { - it(`Renders ${component} for ${framework} value ${index} as html`, function(done) { - const instance = new AllComponents[component]({}, { - template: framework, - flatten: true, - renderMode: 'html', - }); + it(`Renders ${component} for ${framework} value ${index} as html`, function (done) { + const instance = new AllComponents[component]( + {}, + { + template: framework, + flatten: true, + renderMode: 'html', + }, + ); instance.dataValue = value; fixComponent(instance); - assert.equal(renders[`component-${framework}-${component}-html-value${index}`], pretty(instance.render(), { ocd: true })); + assert.equal( + renders[`component-${framework}-${component}-html-value${index}`], + pretty(instance.render(), { ocd: true }), + ); done(); }); - it(`Renders ${component} for ${framework} value ${index} as string`, function(done) { - const instance = new AllComponents[component]({}, { - template: framework, - flatten: true, - renderMode: 'html', - }); + it(`Renders ${component} for ${framework} value ${index} as string`, function (done) { + const instance = new AllComponents[component]( + {}, + { + template: framework, + flatten: true, + renderMode: 'html', + }, + ); fixComponent(instance); const file = renders[`component-${framework}-${component}-string-value${index}`]; const val = instance.getValueAsString(value); @@ -103,7 +130,10 @@ describe('Rendering Tests', function() { if (val !== file) { console.log('er'); } - assert.equal(renders[`component-${framework}-${component}-string-value${index}`], pretty(instance.getValueAsString(value), { ocd: true })); + assert.equal( + renders[`component-${framework}-${component}-string-value${index}`], + pretty(instance.getValueAsString(value), { ocd: true }), + ); done(); }); }); diff --git a/test/unit/TextArea.unit.js b/test/unit/TextArea.unit.js index 769d0ba249..93e81e4e03 100644 --- a/test/unit/TextArea.unit.js +++ b/test/unit/TextArea.unit.js @@ -12,23 +12,23 @@ import TextAreaComponent from '../../src/components/textarea/TextArea'; import { fastCloneDeep } from '@formio/core'; window.ace = require('ace-builds'); -describe('TextArea Component', function() { - it('Should build a TextArea component', function() { +describe('TextArea Component', function () { + it('Should build a TextArea component', function () { return Harness.testCreate(TextAreaComponent, comp1).then((component) => { Harness.testElements(component, 'textarea', 1); }); }); - it('setValue should be called only once', function() { + it('setValue should be called only once', function () { return Harness.testCreate(TextAreaComponent, comp2).then((component) => { const valueToSet = [ { - 'firstName': 'Bobby', - 'lastName': 'Lynch' + firstName: 'Bobby', + lastName: 'Lynch', }, { - 'firstName': 'Harold', - 'lastName': 'Freeman' + firstName: 'Harold', + lastName: 'Freeman', }, ]; const emit = sinon.spy(component, 'setValue'); @@ -39,78 +39,70 @@ describe('TextArea Component', function() { }); }); - it('Should provide min/max length validation', function(done) { + it('Should provide min/max length validation', function (done) { const form = _.cloneDeep(comp3); form.components[0].validate = { minLength: 5, maxLength: 10 }; - const validValues = [ - '', - 'te_st', - 'test value', - ' ', - 'What?', - 'test: ', - 't ', - ' t ' - ]; + const validValues = ['', 'te_st', 'test value', ' ', 'What?', 'test: ', 't ', ' t ']; - const invalidMin = [ - 't', - 'tt', - 'ttt', - 'tttt', - ' t ', - ' t', - '_4_' - ]; + const invalidMin = ['t', 'tt', 'ttt', 'tttt', ' t ', ' t', '_4_']; - const invalidMax = [ - 'test__value', - 'test value ', - ' test value', - 'test: value', - ]; + const invalidMax = ['test__value', 'test value ', ' test value', 'test: value']; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); - - const component = form.getComponent('textArea'); - const changed = component.setValue(value); - const error = message; + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - if (value) { - assert.equal(changed, true, 'Should set value'); - } + const component = form.getComponent('textArea'); + const changed = component.setValue(value); + const error = message; - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert.equal(component.errors.length, 1, 'Should contain error'); - assert.equal(component.errors[0].message, error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert.equal(component.errors.length, 1, 'Should contain error'); + assert.equal(component.errors[0].message, error, 'Should contain error message'); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); testValidity(invalidMin, false, 'Text Area must have at least 5 characters.'); - testValidity(invalidMax, false, 'Text Area must have no more than 10 characters.', invalidMax[invalidMax.length-1]); + testValidity( + invalidMax, + false, + 'Text Area must have no more than 10 characters.', + invalidMax[invalidMax.length - 1], + ); }); - it('Should provide min/max words validation', function(done) { + it('Should provide min/max words validation', function (done) { const form = _.cloneDeep(comp3); form.components[0].validate = { minWords: 2, maxWords: 5 }; @@ -124,16 +116,7 @@ describe('TextArea Component', function() { '" test "', ]; - const invalidMin = [ - ' t ', - '? ', - 'e', - '_test ', - ' 9', - 't ', - 'What?', - '"4"' - ]; + const invalidMin = [' t ', '? ', 'e', '_test ', ' 9', 't ', 'What?', '"4"']; const invalidMax = [ 'te st __ va lue ""', @@ -146,42 +129,56 @@ describe('TextArea Component', function() { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); - - const component = form.getComponent('textArea'); - const changed = component.setValue(value); - const error = message; + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - if (value) { - assert.equal(changed, true, 'Should set value'); - } + const component = form.getComponent('textArea'); + const changed = component.setValue(value); + const error = message; - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert.equal(component.errors.length, 1, 'Should contain error'); - assert.equal(component.errors[0].message, error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert.equal(component.errors.length, 1, 'Should contain error'); + assert.equal(component.errors[0].message, error, 'Should contain error message'); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); testValidity(invalidMin, false, 'Text Area must have at least 2 words.'); - testValidity(invalidMax, false, 'Text Area must have no more than 5 words.', invalidMax[invalidMax.length-1]); + testValidity( + invalidMax, + false, + 'Text Area must have no more than 5 words.', + invalidMax[invalidMax.length - 1], + ); }); - it('Should provide pattern validation', function(done) { + it('Should provide pattern validation', function (done) { const form = _.cloneDeep(comp3); form.components[0].validate = { pattern: '\\D+' }; @@ -193,233 +190,274 @@ describe('TextArea Component', function() { ' some - test - value ', ]; - const invalidValues = [ - 'test(2)', - '123', - '0 waste', - '"9"', - ' 9', - ]; + const invalidValues = ['test(2)', '123', '0 waste', '"9"', ' 9']; const testValidity = (values, valid, message, lastValue) => { _.each(values, (value) => { const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - form.setPristine(false); + Formio.createForm(element, form) + .then((form) => { + form.setPristine(false); - const component = form.getComponent('textArea'); - const changed = component.setValue(value); - const error = message; + const component = form.getComponent('textArea'); + const changed = component.setValue(value); + const error = message; - if (value) { - assert.equal(changed, true, 'Should set value'); - } - - setTimeout(() => { - if (valid) { - assert.equal(component.errors.length, 0, 'Should not contain error'); - } - else { - assert.equal(component.errors.length, 1, 'Should contain error'); - assert.equal(component.errors[0].message.trim(), error, 'Should contain error message'); - assert.equal(component.element.classList.contains('has-error'), true, 'Should contain error class'); - assert.equal(component.refs.messageContainer.textContent.trim(), error, 'Should show error'); + if (value) { + assert.equal(changed, true, 'Should set value'); } - if (_.isEqual(value, lastValue)) { - done(); - } - }, 300); - }).catch(done); + setTimeout(() => { + if (valid) { + assert.equal(component.errors.length, 0, 'Should not contain error'); + } else { + assert.equal(component.errors.length, 1, 'Should contain error'); + assert.equal( + component.errors[0].message.trim(), + error, + 'Should contain error message', + ); + assert.equal( + component.element.classList.contains('has-error'), + true, + 'Should contain error class', + ); + assert.equal( + component.refs.messageContainer.textContent.trim(), + error, + 'Should show error', + ); + } + + if (_.isEqual(value, lastValue)) { + done(); + } + }, 300); + }) + .catch(done); }); }; testValidity(validValues, true); - testValidity(invalidValues, + testValidity( + invalidValues, false, 'Text Area does not match the pattern \\D+', - invalidValues[invalidValues.length-1] + invalidValues[invalidValues.length - 1], ); }); - it('Should set custom number of rows', function(done) { + it('Should set custom number of rows', function (done) { const form = _.cloneDeep(comp3); form.components[0].rows = 5; const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const component = form.getComponent('textArea'); - assert.equal(component.refs.input[0].rows, component.component.rows, 'Should set custom number of rows'); + Formio.createForm(element, form) + .then((form) => { + const component = form.getComponent('textArea'); + assert.equal( + component.refs.input[0].rows, + component.component.rows, + 'Should set custom number of rows', + ); - done(); - }).catch(done); + done(); + }) + .catch(done); }); - it('Should render HTML', function(done) { + it('Should render HTML', function (done) { const form = _.cloneDeep(comp3); form.components[0].inputFormat = 'html'; const element = document.createElement('div'); Formio.createForm(element, form, { - readOnly: true - }).then(form => { - form.setSubmission({ - data: { - textArea: 'HTML!' - } - }); - setTimeout(() => { - const textArea = form.getComponent('textArea'); - assert.equal(textArea.refs.input[0].innerHTML, 'HTML!'); - done(); - }, 300); - }).catch(done); + readOnly: true, + }) + .then((form) => { + form.setSubmission({ + data: { + textArea: 'HTML!', + }, + }); + setTimeout(() => { + const textArea = form.getComponent('textArea'); + assert.equal(textArea.refs.input[0].innerHTML, 'HTML!'); + done(); + }, 300); + }) + .catch(done); }); - it('Should render plain text', function(done) { + it('Should render plain text', function (done) { const form = _.cloneDeep(comp3); form.components[0].inputFormat = 'plain'; const element = document.createElement('div'); Formio.createForm(element, form, { - readOnly: true - }).then(form => { - form.setSubmission({ - data: { - textArea: 'Plain text!' - } - }); - setTimeout(() => { - const textArea = form.getComponent('textArea'); - assert.equal(textArea.refs.input[0].innerText, 'Plain text!'); - done(); - }, 300); - }).catch(done); + readOnly: true, + }) + .then((form) => { + form.setSubmission({ + data: { + textArea: 'Plain text!', + }, + }); + setTimeout(() => { + const textArea = form.getComponent('textArea'); + assert.equal(textArea.refs.input[0].innerText, 'Plain text!'); + done(); + }, 300); + }) + .catch(done); }); - it('Should correctly count characters if character counter is enabled', function(done) { + it('Should correctly count characters if character counter is enabled', function (done) { const form = _.cloneDeep(comp3); form.components[0].showCharCount = true; const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const component = form.getComponent('textArea'); - const inputValue = (value) => { - const input = component.refs.input[0]; - const inputEvent = new Event('input'); - input.value = value; - input.dispatchEvent(inputEvent); - }; - - const checkValue = (value) => { - assert.equal(component.dataValue, value, 'Should set value'); - assert.equal(parseInt(component.refs.charcount[0].textContent), value.length, 'Should show correct chars number'); - assert.equal(component.refs.charcount[0].textContent, `${value.length} characters`, 'Should show correct message'); - }; - - let value = 'test Value (@#!-"]) _ 23.,5}/*&&'; - inputValue(value); - setTimeout(() => { - checkValue(value); - value = ''; + Formio.createForm(element, form) + .then((form) => { + const component = form.getComponent('textArea'); + const inputValue = (value) => { + const input = component.refs.input[0]; + const inputEvent = new Event('input'); + input.value = value; + input.dispatchEvent(inputEvent); + }; + + const checkValue = (value) => { + assert.equal(component.dataValue, value, 'Should set value'); + assert.equal( + parseInt(component.refs.charcount[0].textContent), + value.length, + 'Should show correct chars number', + ); + assert.equal( + component.refs.charcount[0].textContent, + `${value.length} characters`, + 'Should show correct message', + ); + }; + + let value = 'test Value (@#!-"]) _ 23.,5}/*&&'; inputValue(value); - setTimeout(() => { checkValue(value); - value = ' '; + value = ''; inputValue(value); setTimeout(() => { checkValue(value); + value = ' '; + inputValue(value); - done(); + setTimeout(() => { + checkValue(value); + + done(); + }, 200); }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should correctly count words if word counter is enabled', function(done) { + it('Should correctly count words if word counter is enabled', function (done) { const form = _.cloneDeep(comp3); form.components[0].showWordCount = true; const element = document.createElement('div'); - Formio.createForm(element, form).then(form => { - const component = form.getComponent('textArea'); - const inputValue = (value) => { - const input = component.refs.input[0]; - const inputEvent = new Event('input'); - input.value = value; - input.dispatchEvent(inputEvent); - }; - - const checkValue = (value, expected) => { - assert.equal(component.dataValue, value, 'Should set value'); - assert.equal(parseInt(component.refs.wordcount[0].textContent), expected, 'Should show correct words number'); - assert.equal(component.refs.wordcount[0].textContent, `${expected} words`, 'Should show correct message'); - }; - - let value = 'test , test_test 11 - "so me"'; - inputValue(value); - - setTimeout(() => { - checkValue(value, 7); - value = ' test '; + Formio.createForm(element, form) + .then((form) => { + const component = form.getComponent('textArea'); + const inputValue = (value) => { + const input = component.refs.input[0]; + const inputEvent = new Event('input'); + input.value = value; + input.dispatchEvent(inputEvent); + }; + + const checkValue = (value, expected) => { + assert.equal(component.dataValue, value, 'Should set value'); + assert.equal( + parseInt(component.refs.wordcount[0].textContent), + expected, + 'Should show correct words number', + ); + assert.equal( + component.refs.wordcount[0].textContent, + `${expected} words`, + 'Should show correct message', + ); + }; + + let value = 'test , test_test 11 - "so me"'; inputValue(value); setTimeout(() => { - checkValue(value, 1); - value = ' . . '; + checkValue(value, 7); + value = ' test '; inputValue(value); setTimeout(() => { - checkValue(value, 2); + checkValue(value, 1); + value = ' . . '; + inputValue(value); - done(); + setTimeout(() => { + checkValue(value, 2); + + done(); + }, 200); }, 200); }, 200); - }, 200); - }).catch(done); + }) + .catch(done); }); - it('Should translate character counter if it is enabled', function(done) { + it('Should translate character counter if it is enabled', function (done) { const form = _.cloneDeep(comp3); form.components[0].showCharCount = true; form.components[0].validate = { - maxLength: 20 - } + maxLength: 20, + }; Formio.createForm(document.createElement('div'), form, { language: 'sp', i18n: { sp: { characters: 'stafbil', - typeRemaining: '{{ remaining }} {{ type }} eftir.' - } - } - }).then((form) => { - let component = form.getComponent('textArea'); - const inputEvent = new Event('input'); - component.refs.input[0].value = 'test'; - component.refs.input[0].dispatchEvent(inputEvent) - - setTimeout(()=>{ - component = form.getComponent('textArea'); - assert.equal(component.refs.charcount[0].textContent, '16 stafbil eftir.'); - done() - },200) - }).catch(done); + typeRemaining: '{{ remaining }} {{ type }} eftir.', + }, + }, + }) + .then((form) => { + let component = form.getComponent('textArea'); + const inputEvent = new Event('input'); + component.refs.input[0].value = 'test'; + component.refs.input[0].dispatchEvent(inputEvent); + + setTimeout(() => { + component = form.getComponent('textArea'); + assert.equal(component.refs.charcount[0].textContent, '16 stafbil eftir.'); + done(); + }, 200); + }) + .catch(done); }); - describe('Rich text editors', function() { - describe('CKEditor', function() { - it('Should allow to insert media fiels and show the in them read-only mode', function(done) { + describe('Rich text editors', function () { + describe('CKEditor', function () { + it('Should allow to insert media fiels and show the in them read-only mode', function (done) { const element = document.createElement('div'); - Formio.createForm(element, formWithCKEditor, { readOnly: true }).then(form => { - form.submission = { - data: { - textArea: ` + Formio.createForm(element, formWithCKEditor, { readOnly: true }) + .then((form) => { + form.submission = { + data: { + textArea: `
    @@ -436,75 +474,84 @@ describe('TextArea Component', function() {
    `, - }, - state: 'submitted', - }; + }, + state: 'submitted', + }; + + setTimeout(() => { + const mediaA = form.element.querySelector( + 'iframe[src="https://www.youtube.com/embed/GsLRrmnJXF8"]', + ); + const mediaB = form.element.querySelector( + 'iframe[src="https://www.youtube.com/embed/FmA6U5rXl38"]', + ); + assert(mediaA, 'Should not remove embedded media'); + assert(mediaB, 'Should not remove embedded media'); - setTimeout(() => { - const mediaA = form.element.querySelector('iframe[src="https://www.youtube.com/embed/GsLRrmnJXF8"]'); - const mediaB = form.element.querySelector('iframe[src="https://www.youtube.com/embed/FmA6U5rXl38"]'); - assert(mediaA, 'Should not remove embedded media'); - assert(mediaB, 'Should not remove embedded media'); - - done(); - }, 300); - }).catch(done); + done(); + }, 300); + }) + .catch(done); }); }); - it('Should clear value in the editor on Reset', function(done) { + it('Should clear value in the editor on Reset', function (done) { const element = document.createElement('div'); - Formio.createForm(element, formWithRichTextAreas).then(form => { - form.setValue({ - data: { - textArea: 'Test', - textAreaAce: 'Test', - }, - }); + Formio.createForm(element, formWithRichTextAreas) + .then((form) => { + form.setValue({ + data: { + textArea: 'Test', + textAreaAce: 'Test', + }, + }); - const plainTextArea = form.getComponent(['textArea']); - const aceTextArea = form.getComponent(['textAreaAce']); - aceTextArea.editorsReady[0].then(() => { - const textAreaElement = plainTextArea.element.querySelector('textarea'); - console.log(aceTextArea.editors); - const aceEditor = aceTextArea.editors[0]; + const plainTextArea = form.getComponent(['textArea']); + const aceTextArea = form.getComponent(['textAreaAce']); + aceTextArea.editorsReady[0].then(() => { + const textAreaElement = plainTextArea.element.querySelector('textarea'); + console.log(aceTextArea.editors); + const aceEditor = aceTextArea.editors[0]; - // Make sure value is set to the components - assert.equal(plainTextArea.dataValue, 'Test'); - assert.equal(aceTextArea.dataValue, 'Test'); + // Make sure value is set to the components + assert.equal(plainTextArea.dataValue, 'Test'); + assert.equal(aceTextArea.dataValue, 'Test'); - // Make sure value is set to the editors/elements - assert.equal(textAreaElement.value, 'Test'); - assert.equal(aceEditor.getValue(), 'Test'); + // Make sure value is set to the editors/elements + assert.equal(textAreaElement.value, 'Test'); + assert.equal(aceEditor.getValue(), 'Test'); - form.resetValue(); + form.resetValue(); - setTimeout(() => { - // Make sure value is cleared on the components - assert.equal(plainTextArea.dataValue, ''); - assert.equal(aceTextArea.dataValue, ''); + setTimeout(() => { + // Make sure value is cleared on the components + assert.equal(plainTextArea.dataValue, ''); + assert.equal(aceTextArea.dataValue, ''); - // Make sure value is cleared in the editors/elements - assert.equal(textAreaElement.value, ''); - assert.equal(aceEditor.getValue(), ''); - done(); - }, 300); - }); - }).catch(done); + // Make sure value is cleared in the editors/elements + assert.equal(textAreaElement.value, ''); + assert.equal(aceEditor.getValue(), ''); + done(); + }, 300); + }); + }) + .catch(done); }); - it('Should set empty value properly when save as JSON', function(done) { + it('Should set empty value properly when save as JSON', function (done) { const element = document.createElement('div'); - Formio.createForm(element, comp4).then(form => { - const aceTextArea = form.getComponent(['jsonTextarea']); - assert.equal(aceTextArea.data.jsonTextarea, '', 'The value should be empty'); - done(); - }).catch(done); + Formio.createForm(element, comp4) + .then((form) => { + const aceTextArea = form.getComponent(['jsonTextarea']); + assert.equal(aceTextArea.data.jsonTextarea, '', 'The value should be empty'); + done(); + }) + .catch(done); }); - it('Should not autofocus until the editor is ready', function(done) { + it('Should not autofocus until the editor is ready', function (done) { const element = document.createElement('div'); const testComponents = [ { @@ -514,20 +561,22 @@ describe('TextArea Component', function() { key: 'textArea', label: 'Text Area', input: true, - } + }, ]; const testForm = { ...formWithCKEditor, components: testComponents }; - Formio.createForm(element, testForm).then(form => { + Formio.createForm(element, testForm) + .then((form) => { const textArea = form.getComponent('textArea'); // since prior to this fix the focus function will throw, we'll make sure it doesn't expect(textArea.focus.bind(textArea)).to.not.throw(); done(); - }).catch(done); + }) + .catch(done); }); - it('Should not autofocus if the form is readOnly', function(done) { + it('Should not autofocus if the form is readOnly', function (done) { const element = document.createElement('div'); const testComponents = [ { @@ -537,30 +586,34 @@ describe('TextArea Component', function() { key: 'textArea', label: 'Text Area', input: true, - } + }, ]; const testForm = { ...formWithCKEditor, components: testComponents }; - Formio.createForm(element, testForm, { readOnly: true }).then(form => { + Formio.createForm(element, testForm, { readOnly: true }) + .then((form) => { const textArea = form.getComponent('textArea'); // since prior to this fix the focus function will throw if readOnly, we'll make sure it doesn't expect(textArea.focus.bind(textArea)).to.not.throw(); done(); - }).catch(done); + }) + .catch(done); }); - it('Should set array as value for textarea with ace editor with json data type', function(done) { + it('Should set array as value for textarea with ace editor with json data type', function (done) { const element = document.createElement('div'); - - Formio.createForm(element, textAreaJsonType).then(form => { + + Formio.createForm(element, textAreaJsonType) + .then((form) => { const textArea = form.getComponent('textArea'); - textArea.setValue([1,2,3]); + textArea.setValue([1, 2, 3]); setTimeout(() => { - assert.deepEqual(textArea.dataValue, [1,2,3]); + assert.deepEqual(textArea.dataValue, [1, 2, 3]); done(); - }, 300) - }).catch(done); + }, 300); + }) + .catch(done); }); }); }); diff --git a/test/unit/TextField.builder.spec.js b/test/unit/TextField.builder.spec.js index 1436a840cb..b09f9057f7 100644 --- a/test/unit/TextField.builder.spec.js +++ b/test/unit/TextField.builder.spec.js @@ -2,42 +2,56 @@ import Harness from '../../../test/harness'; import EventEmitter from '../../EventEmitter'; import assert from 'power-assert'; -describe('TextField Builder', function() { +describe('TextField Builder', function () { let builder = null; - before(function(done) { + before(function (done) { // Incrise Events limit for this tests set Harness.builderBefore(done, { editForm: { - events: new EventEmitter() - } + events: new EventEmitter(), + }, }); }); - after(function() { + after(function () { Harness.builderAfter(); }); - it('Should create a new textfield component', function() { + it('Should create a new textfield component', function () { builder = Harness.buildComponent('textfield'); return builder.editForm.formReady.then(() => { // Make sure default preview is correct. const preview = builder.componentPreview.innerHTML; - assert(preview.indexOf('formio-component formio-component-textfield formio-component-textField') !== -1, 'Must have correct classes'); - assert(preview.indexOf('') !== -1, 'Must have a label'); - assert(preview.indexOf('Text Field') !== -1, + 'Must have a label', + ); + assert( + preview.indexOf(' { assert(preview.match(/label.*input/), 'Label must be on top.'); - assert(preview.indexOf('') !== -1, 'Must have a label'); + assert( + preview.indexOf('') !== -1, + 'Must have a label', + ); done(); }); }); - it('Should allow you to hide/show the label', function(done) { + it('Should allow you to hide/show the label', function (done) { Harness.setComponentProperty('hideLabel', false, true, (preview) => { assert(preview.indexOf('