From 1bc024a1c503753a796d6411a792ae6acf4752e9 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 6 Dec 2019 11:30:41 +0100 Subject: [PATCH 001/598] update dependencies --- package.json | 26 +- server/federation/helpers.js | 4 +- yarn.lock | 835 ++++++++++++++++------------------- 3 files changed, 403 insertions(+), 462 deletions(-) diff --git a/package.json b/package.json index 96de332d..51a710d7 100644 --- a/package.json +++ b/package.json @@ -44,15 +44,15 @@ "axios": "^0.19.0", "bcryptjs": "^2.4.3", "body-parser": "^1.18.3", - "bootstrap": "^4.3.1", + "bootstrap": "^4.4.1", "config": "^3.2.4", "consola": "^2.11.0", "cookie-parser": "^1.4.4", "cors": "^2.8.5", "cross-env": "^6.0.0", "dayjs": "^1.8.17", - "element-ui": "^2.12.0", - "email-templates": "^6.0.2", + "element-ui": "^2.13.0", + "email-templates": "^6.0.6", "express": "^4.17.1", "express-jwt": "^5.3.1", "express-middleware-log": "^1.2.0", @@ -69,29 +69,29 @@ "node-fetch": "^2.6.0", "nuxt": "^2.10.2", "nuxt-express-module": "^0.0.11", - "pg": "^7.12.1", + "pg": "^7.14.0", "sanitize-html": "^1.20.1", "sass-loader": "^8.0.0", "sequelize": "^5.21.2", "sequelize-cli": "^5.5.1", - "sharp": "^0.23.2", - "sqlite3": "^4.1.0", + "sharp": "^0.23.4", + "sqlite3": "^4.1.1", "url": "^0.11.0", "v-calendar": "^1.0.0-beta.16", "vue-awesome": "^4.0.0", "vue-clipboard2": "^0.3.1", - "vue-i18n": "^8.15.0", - "yargs": "^14.0.0" + "vue-i18n": "^8.15.1", + "yargs": "^15.0.2" }, "devDependencies": { - "@nuxtjs/eslint-config": "^1.1.2", + "@nuxtjs/eslint-config": "^2.0.0", "babel-eslint": "^10.0.3", - "eslint": "^6.6.0", - "eslint-config-prettier": "^6.5.0", + "eslint": "^6.7.2", + "eslint-config-prettier": "^6.7.0", "eslint-config-standard": ">=14.1.0", "eslint-loader": "^3.0.0", "eslint-plugin-import": ">=2.17.3", - "eslint-plugin-jest": ">=23.0.2", + "eslint-plugin-jest": ">=23.1.1", "eslint-plugin-node": ">=10.0.0", "eslint-plugin-nuxt": ">=0.5.0", "eslint-plugin-prettier": "^3.1.1", @@ -100,7 +100,7 @@ "eslint-plugin-vue": "^6.0.1", "jsdoc": "^3.6.3", "less-loader": "^5.0.0", - "nodemon": "^1.19.4", + "nodemon": "^2.0.1", "prettier": "^1.19.1", "pug-plain-loader": "^1.0.0", "webpack-cli": "^3.3.10" diff --git a/server/federation/helpers.js b/server/federation/helpers.js index e138612e..75823e8c 100644 --- a/server/federation/helpers.js +++ b/server/federation/helpers.js @@ -97,7 +97,7 @@ const Helpers = { } } - fedi_user = await fetch(URL, { headers: { 'Accept': 'application/jrd+json, application/json' } }) + fedi_user = await fetch(URL, { headers: { Accept: 'application/jrd+json, application/json' } }) .then(res => { if (!res.ok) { debug('[ERR] Actor %s => %s', URL, res.statusText) @@ -123,7 +123,7 @@ const Helpers = { if (instance) { return instance } } - instance = await fetch(`${instance_url}/api/v1/instance`, { headers: { 'Accept': 'application/json' } }) + instance = await fetch(`${instance_url}/api/v1/instance`, { headers: { Accept: 'application/json' } }) .then(res => res.json()) .then(instance => { const data = { diff --git a/yarn.lock b/yarn.lock index 4f272e8f..94d4beaf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -712,10 +712,10 @@ resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222" integrity sha512-O4QDrx+JoGKZc6aN64L04vqa7e41tIiLU+OvKdcYaEMP97UttL0f9GIi9/0A4WAMx0uBd6SidDIhktZhgOcN8Q== -"@hapi/boom@^7.4.3": - version "7.4.11" - resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-7.4.11.tgz#37af8417eb9416aef3367aa60fa04a1a9f1fc262" - integrity sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A== +"@hapi/boom@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-8.0.1.tgz#13f1f2f2a3abfb0787c79e35e238c8aff6aa1661" + integrity sha512-SnBM2GzEYEA6AGFKXBqNLWXR3uNBui0bkmklYXX1gYtevVhDTy2uakwkSauxvIWMtlANGRhzChYg95If3FWCwA== dependencies: "@hapi/hoek" "8.x.x" @@ -746,21 +746,21 @@ dependencies: "@hapi/hoek" "8.x.x" -"@ladjs/i18n@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@ladjs/i18n/-/i18n-1.2.1.tgz#74478f3495e2f6b1684e58ff043c040954c6ff35" - integrity sha512-rlo8e+2UIylCo/KiZuxd/DJsyGZ1XMFFJaxxVXMj6BO2qyfjB91pjCpIQxUmpSWddWQlPKxsm85avr1o2RG9Uw== +"@ladjs/i18n@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@ladjs/i18n/-/i18n-2.0.0.tgz#0235d989a8600bb9b230264261a99dfce4b0aae3" + integrity sha512-2h9bVJ818dcCfuV8kUEAA4B5jDyDsPilhGkBKgR1W1vt+QZFueIKBolJ/FJKr5ExHySmFKF5sOTC6f3S0+3KHA== dependencies: - "@hapi/boom" "^7.4.3" - auto-bind "^2.1.0" - boolean "^1.0.0" + "@hapi/boom" "^8.0.1" + boolean "1.0.0" country-language "^0.1.7" debug "^4.1.1" - i18n "^0.8.3" + i18n "^0.8.4" i18n-locales "^0.0.2" lodash "^4.17.15" moment "^2.24.0" - qs "^6.8.0" + multimatch "^4.0.0" + qs "^6.9.1" titleize "^2.1.0" "@nuxt/babel-preset-app@2.10.2": @@ -1041,19 +1041,19 @@ consola "^2.10.1" defu "^0.0.3" -"@nuxtjs/eslint-config@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/eslint-config/-/eslint-config-1.1.2.tgz#cde4c950014a781bcc34abbfef9c62546d8fc34c" - integrity sha512-uKBdza1/Poz32gEodQ9MSW8M9CU4RPdvEiSLX5LWyavrbjhXW9iIbzJzSDlgMhD1QfQ5WrWv1iqL3Bh/ArbIgw== +"@nuxtjs/eslint-config@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nuxtjs/eslint-config/-/eslint-config-2.0.0.tgz#8030d4bfd2bf6141eed23c78eaa26c98357b793f" + integrity sha512-FsMV3eK+Xu9cEc90QTW2iID4XKi58oVwRqx3JpXgBLNJyB8TlvokO3fUZucN+cVqKMPcwoP3TYnQ1LZqRedhUw== dependencies: - eslint-config-standard "^12.0.0" - eslint-plugin-import "^2.18.0" - eslint-plugin-jest "^22.10.0" - eslint-plugin-node "^9.1.0" + eslint-config-standard "^14.1.0" + eslint-plugin-import "^2.18.2" + eslint-plugin-jest "^23.0.4" + eslint-plugin-node "^10.0.0" eslint-plugin-promise "^4.2.1" - eslint-plugin-standard "^4.0.0" - eslint-plugin-unicorn "^9.1.1" - eslint-plugin-vue "^5.2.3" + eslint-plugin-standard "^4.0.1" + eslint-plugin-unicorn "^13.0.0" + eslint-plugin-vue "^6.0.1" "@nuxtjs/proxy@^1.3.3": version "1.3.3" @@ -1094,38 +1094,26 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== +"@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/node@*": version "12.7.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.12.tgz#7c6c571cc2f3f3ac4a59a5f2bd48f5bdbc8653cc" integrity sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ== -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== -"@types/react@^16.8.12": - version "16.9.5" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.5.tgz#079dabd918b19b32118c25fd00a786bb6d0d5e51" - integrity sha512-jQ12VMiFOWYlp+j66dghOWcmDDwhca0bnlcTxS4Qz/fh5gi6wpaZDthPEu/Gc/YlAuO87vbiUXL8qKstFvuOaA== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@typescript-eslint/experimental-utils@^1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" - integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "1.13.0" - eslint-scope "^4.0.0" - "@typescript-eslint/experimental-utils@^2.5.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.7.0.tgz#58d790a3884df3041b5a5e08f9e5e6b7c41864b5" @@ -1135,14 +1123,6 @@ "@typescript-eslint/typescript-estree" "2.7.0" eslint-scope "^5.0.0" -"@typescript-eslint/typescript-estree@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" - integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== - dependencies: - lodash.unescape "4.0.1" - semver "5.5.0" - "@typescript-eslint/typescript-estree@2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.7.0.tgz#34fd98c77a07b40d04d5b4203eddd3abeab909f4" @@ -1443,7 +1423,7 @@ acorn@^4.0.4, acorn@~4.0.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= -acorn@^6.0.2, acorn@^6.0.7, acorn@^6.2.1: +acorn@^6.0.7, acorn@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== @@ -1495,14 +1475,6 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -ambi@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/ambi/-/ambi-2.5.0.tgz#7c8e372be48891157e7cea01cb6f9143d1f74220" - integrity sha1-fI43K+SIkRV+fOoBy2+RQ9H3QiA= - dependencies: - editions "^1.1.1" - typechecker "^4.3.0" - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -1549,6 +1521,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1629,6 +1606,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1642,6 +1624,11 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1652,6 +1639,11 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1713,7 +1705,7 @@ async-validator@~1.8.1: dependencies: babel-runtime "6.x" -async@^1.5.0, async@~1.5.2: +async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= @@ -1733,13 +1725,6 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -auto-bind@^2.1.0, auto-bind@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-2.1.1.tgz#8ae509671ecdfbd5009fc99b0f19ae9c3a2abf50" - integrity sha512-NUwV1i9D3vxxY1KnfZgSZ716d6ovY7o8LfOwLhGIPFBowIb6Ln6DBW64+jCqPzUznel2hRSkQnYQqvh7/ldw8A== - dependencies: - "@types/react" "^16.8.12" - autoprefixer@^9.6.1: version "9.6.4" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.4.tgz#e6453be47af316b2923eaeaed87860f52ad4b7eb" @@ -1986,15 +1971,15 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boolean@^1.0.0: +boolean@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolean/-/boolean-1.0.0.tgz#45764b4aac187a050995b0a33d7579b6759f0dfd" integrity sha512-IB1lgIywn37N9Aff8CciCblVpMUflgL42vyxPUH0IvaDdIi/QwBHKv1lq/HOkATHCfa7c4MbMYJ7Bo7hGuoI+w== -bootstrap@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.3.1.tgz#280ca8f610504d99d7b6b4bfc4b68cec601704ac" - integrity sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag== +bootstrap@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01" + integrity sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA== boxen@^1.2.1: version "1.3.0" @@ -2407,7 +2392,7 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@^2.0.2, chokidar@^2.1.8: +chokidar@^2.0.2: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -2458,6 +2443,11 @@ ci-info@^1.5.0, ci-info@^1.6.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -2556,6 +2546,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -2997,11 +2996,6 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= -csextends@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/csextends/-/csextends-1.2.0.tgz#6374b210984b54d4495f29c99d3dd069b80543e5" - integrity sha512-S/8k1bDTJIwuGgQYmsRoE+8P+ohV32WhQ0l4zqrc0XDdxOhjQQD7/wTZwCzoZX53jSX3V/qwjT+OkPTxWQcmjg== - css-blank-pseudo@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" @@ -3196,11 +3190,6 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" -csstype@^2.2.0: - version "2.6.7" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" - integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ== - cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -3465,6 +3454,14 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + dom-serializer@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -3495,6 +3492,13 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" + integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== + dependencies: + domelementtype "^2.0.1" + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -3511,6 +3515,15 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.0.0.tgz#15b8278e37bfa8468d157478c58c367718133c08" + integrity sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg== + dependencies: + dom-serializer "^0.2.1" + domelementtype "^2.0.1" + domhandler "^3.0.0" + dot-prop@^4.1.0, dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -3548,13 +3561,6 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -eachr@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/eachr/-/eachr-2.0.4.tgz#466f7caa10708f610509e32c807aafe57fc122bf" - integrity sha1-Rm98qhBwj2EFCeMsgHqv5X/BIr8= - dependencies: - typechecker "^2.0.8" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3570,19 +3576,6 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" -editions@^1.1.1, editions@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" - integrity sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg== - -editions@^2.1.0, editions@^2.1.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.2.0.tgz#dacd0c2a9441ebef592bba316a6264febb337f35" - integrity sha512-RYg3iEA2BDLCNVe8PUkD+ox5vAKxB9XS/mAhx1bdxGCF0CpX077C0pyTA9t5D6idCYA3avl5/XDHKPsHFrygfw== - dependencies: - errlop "^1.1.2" - semver "^6.3.0" - editorconfig@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" @@ -3608,10 +3601,10 @@ electron-to-chromium@^1.3.247: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.280.tgz#5f8950c8329e3e11b59c705fd59b4b8d9b3de5b9" integrity sha512-qYWNMjKLEfQAWZF2Sarvo+ahigu0EArnpCFSoUuZJS3W5wIeVfeEvsgmT2mgIrieQkeQ0+xFmykK3nx2ezekPQ== -element-ui@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.12.0.tgz#a893bc11ae4f7dbb7e9d541606f23e643f131ee4" - integrity sha512-DapyT0PW4i/1ETPHk8K8Qbe8B6hj10+dXsRTrOTFryV9wAs6e9mCxbV65awokyR2/v/KuIHJmqX+mH3wUa4rOQ== +element-ui@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.13.0.tgz#f6bb04e5b0a76ea5f62466044b774407ba4ebd2d" + integrity sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw== dependencies: async-validator "~1.8.1" babel-helper-vue-jsx-merge-props "^2.0.0" @@ -3633,19 +3626,18 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -email-templates@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-6.0.3.tgz#aa42b5d83922255116c12ad9870a9e56404cbf8d" - integrity sha512-AP0S6F7+JJF4gUX8h/mKG0VWgopDJjUeCIF4/VnJSn/8G13TakHPC9pQntpmHHC6ohIFQwxKyNo3H4MsWuUogw== +email-templates@^6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/email-templates/-/email-templates-6.0.6.tgz#b32163b17900fd6fdacb526e81ee32656cb9cf9c" + integrity sha512-p4dWh4Br4xk3FHCXPEHmAwBm4AwVX4TBU9nP0uzxStZB/PeCyw2eLkJ17e0xcbLW+rF6D1MNQPwAT/QySzkxMQ== dependencies: - "@ladjs/i18n" "^1.2.1" + "@ladjs/i18n" "^2.0.0" "@sindresorhus/is" "^1.2.0" - auto-bind "^2.1.1" consolidate "^0.15.1" debug "^4.1.1" get-paths "^0.0.7" html-to-text "^5.1.1" - juice "^5.2.0" + juice "^6.0.0" lodash "^4.17.15" nodemailer "^6.3.1" pify "^4.0.1" @@ -3706,13 +3698,6 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== -errlop@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.2.tgz#a99a48f37aa264d614e342ffdbbaa49eec9220e0" - integrity sha512-djkRp+urJ+SmqDBd7F6LUgm4Be1TTYBxia2bhjNdFBuBDQtJDHExD2VbxR6eyst3h1TZy3qPRCdqb6FBoFttTA== - dependencies: - editions "^2.1.3" - errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -3810,7 +3795,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-ast-utils@^1.0.0: +eslint-ast-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz#3d58ba557801cfb1c941d68131ee9f8c34bd1586" integrity sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA== @@ -3818,23 +3803,18 @@ eslint-ast-utils@^1.0.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-prettier@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.5.0.tgz#aaf9a495e2a816865e541bfdbb73a65cc162b3eb" - integrity sha512-cjXp8SbO9VFGW/Z7mbTydqS9to8Z58E5aYhj3e1+Hx7lS9s6gL5ILKNpCqZAFOVYRcSkWPFYljHrEh8QFEK5EQ== +eslint-config-prettier@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz#9a876952e12df2b284adbd3440994bf1f39dfbb9" + integrity sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ== dependencies: get-stdin "^6.0.0" -eslint-config-standard@>=14.1.0: +eslint-config-standard@>=14.1.0, eslint-config-standard@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== -eslint-config-standard@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" - integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== - eslint-import-resolver-node@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" @@ -3862,14 +3842,6 @@ eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" -eslint-plugin-es@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" - integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== - dependencies: - eslint-utils "^1.4.2" - regexpp "^2.0.1" - eslint-plugin-es@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz#0f5f5da5f18aa21989feebe8a73eadefb3432976" @@ -3878,7 +3850,7 @@ eslint-plugin-es@^2.0.0: eslint-utils "^1.4.2" regexpp "^3.0.0" -eslint-plugin-import@>=2.17.3, eslint-plugin-import@^2.18.0: +eslint-plugin-import@>=2.17.3, eslint-plugin-import@^2.18.2: version "2.18.2" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ== @@ -3895,21 +3867,14 @@ eslint-plugin-import@>=2.17.3, eslint-plugin-import@^2.18.0: read-pkg-up "^2.0.0" resolve "^1.11.0" -eslint-plugin-jest@>=23.0.2: - version "23.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.0.3.tgz#d3f157f7791f97713372c13259ba1dfc436eb4c1" - integrity sha512-9cNxr66zeOyz1S9AkQL4/ouilR6QHpYj8vKOQZ60fu9hAt5PJWS4KqWqfr1aqN5NFEZSPjFOla2Azn+KTWiGwg== +eslint-plugin-jest@>=23.1.1, eslint-plugin-jest@^23.0.4: + version "23.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.1.1.tgz#1220ab53d5a4bf5c3c4cd07c0dabc6199d4064dd" + integrity sha512-2oPxHKNh4j1zmJ6GaCBuGcb8FVZU7YjFUOJzGOPnl9ic7VA/MGAskArLJiRIlnFUmi1EUxY+UiATAy8dv8s5JA== dependencies: "@typescript-eslint/experimental-utils" "^2.5.0" -eslint-plugin-jest@^22.10.0: - version "22.17.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.17.0.tgz#dc170ec8369cd1bff9c5dd8589344e3f73c88cf6" - integrity sha512-WT4DP4RoGBhIQjv+5D0FM20fAdAUstfYAf/mkufLNTojsfgzc5/IYW22cIg/Q4QBavAZsROQlqppiWDpFZDS8Q== - dependencies: - "@typescript-eslint/experimental-utils" "^1.13.0" - -eslint-plugin-node@>=10.0.0: +eslint-plugin-node@>=10.0.0, eslint-plugin-node@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz#fd1adbc7a300cf7eb6ac55cf4b0b6fc6e577f5a6" integrity sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ== @@ -3921,18 +3886,6 @@ eslint-plugin-node@>=10.0.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-node@^9.1.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.2.0.tgz#b1911f111002d366c5954a6d96d3cd5bf2a3036a" - integrity sha512-2abNmzAH/JpxI4gEOwd6K8wZIodK3BmHbTxz4s79OIYwwIt2gkpEXlAouJXu4H1c9ySTnRso0tsuthSOZbUMlA== - dependencies: - eslint-plugin-es "^1.4.1" - eslint-utils "^1.4.2" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - eslint-plugin-nuxt@>=0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/eslint-plugin-nuxt/-/eslint-plugin-nuxt-0.5.0.tgz#ca855110c5e32d07629112d53cf632bece1ba78c" @@ -3953,35 +3906,32 @@ eslint-plugin-promise@>=4.0.1, eslint-plugin-promise@^4.2.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== -eslint-plugin-standard@>=4.0.1, eslint-plugin-standard@^4.0.0: +eslint-plugin-standard@>=4.0.1, eslint-plugin-standard@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== -eslint-plugin-unicorn@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-9.1.1.tgz#1588a0473f9a0e37cfbbcf7552065a0b0a96ce26" - integrity sha512-SHh/N54pRu5KXlS4Boa1qbWM7yTNl6VpuYJ8Qc1O3TJDr+CDUwEEdUtVlVSV/dBUE97BC8Xk0+Y5zphn21qlCA== +eslint-plugin-unicorn@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-13.0.0.tgz#3d73a17cc34ade1aaa02655ae78bbd8a2053fa81" + integrity sha512-9CQk0v74vQpETMt6iqNgjf3IbWEFhrT0sjaLnjkl9SF3rJH6ZL9f7H42BXJ6LPENQR97QzhrIvB8VG0nD05wxQ== dependencies: + ci-info "^2.0.0" clean-regexp "^1.0.0" - eslint-ast-utils "^1.0.0" - import-modules "^1.1.0" - lodash.camelcase "^4.1.1" - lodash.defaultsdeep "^4.6.0" - lodash.kebabcase "^4.0.1" - lodash.snakecase "^4.0.1" + eslint-ast-utils "^1.1.0" + eslint-template-visitor "^1.1.0" + import-modules "^2.0.0" + lodash.camelcase "^4.3.0" + lodash.defaultsdeep "^4.6.1" + lodash.kebabcase "^4.1.1" + lodash.snakecase "^4.1.1" lodash.topairs "^4.3.0" - lodash.upperfirst "^4.2.0" - regexpp "^2.0.1" + lodash.upperfirst "^4.3.1" + read-pkg-up "^7.0.0" + regexpp "^3.0.0" reserved-words "^0.1.2" - safe-regex "^2.0.1" - -eslint-plugin-vue@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961" - integrity sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw== - dependencies: - vue-eslint-parser "^5.0.0" + safe-regex "^2.1.1" + semver "^6.3.0" eslint-plugin-vue@^6.0.0, eslint-plugin-vue@^6.0.1: version "6.0.1" @@ -4006,6 +3956,15 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-template-visitor@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-1.1.0.tgz#f090d124d1a52e05552149fc50468ed59608b166" + integrity sha512-Lmy6QVlmFiIGl5fPi+8ACnov3sare+0Ouf7deJAGGhmUfeWJ5fVarELUxZRpsZ9sHejiJUq8626d0dn9uvcZTw== + dependencies: + eslint-visitor-keys "^1.1.0" + espree "^6.1.1" + multimap "^1.0.2" + eslint-utils@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" @@ -4025,10 +3984,10 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.6.0.tgz#4a01a2fb48d32aacef5530ee9c5a78f11a8afd04" - integrity sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g== +eslint@^6.7.2: + version "6.7.2" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.2.tgz#c17707ca4ad7b2d8af986a33feba71e18a9fecd1" + integrity sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -4045,7 +4004,7 @@ eslint@^6.6.0: file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -4058,7 +4017,7 @@ eslint@^6.6.0: minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" @@ -4073,15 +4032,6 @@ esm@^3.2.25: resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" - integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== - dependencies: - acorn "^6.0.2" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - espree@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" @@ -4091,7 +4041,7 @@ espree@^5.0.0: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^6.1.2: +espree@^6.1.1, espree@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== @@ -4313,13 +4263,6 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extendr@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/extendr/-/extendr-2.1.0.tgz#301aa0bbea565f4d2dc8f570f2a22611a8527b56" - integrity sha1-MBqgu+pWX00tyPVw8qImEahSe1Y= - dependencies: - typechecker "~2.0.1" - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -4354,13 +4297,6 @@ extract-css-chunks-webpack-plugin@^4.6.0: webpack-external-import "^0.0.1-beta.19" webpack-sources "^1.1.0" -extract-opts@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/extract-opts/-/extract-opts-2.2.0.tgz#1fa28eba7352c6db480f885ceb71a46810be6d7d" - integrity sha1-H6KOunNSxttID4hc63GkaBC+bX0= - dependencies: - typechecker "~2.0.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -4386,7 +4322,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4502,7 +4438,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4786,17 +4722,6 @@ glob@^7.1.5: once "^1.3.0" path-is-absolute "^1.0.0" -glob@~6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -4840,11 +4765,18 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -4874,7 +4806,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@*, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== @@ -5125,7 +5057,7 @@ html-webpack-plugin@^3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.10.0, htmlparser2@^3.10.1, htmlparser2@^3.3.0, htmlparser2@^3.9.1, htmlparser2@^3.9.2: +htmlparser2@^3.10.0, htmlparser2@^3.10.1, htmlparser2@^3.3.0, htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -5137,6 +5069,16 @@ htmlparser2@^3.10.0, htmlparser2@^3.10.1, htmlparser2@^3.3.0, htmlparser2@^3.9.1 inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.0.0.tgz#6034658db65b7713a572a9ebf79f650832dceec8" + integrity sha512-cChwXn5Vam57fyXajDtPXL1wTYc8JtLbr2TN76FYu05itVVVealxLowe2B3IEznJG4p9HAYn/0tJaRlGuEglFQ== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -5211,17 +5153,17 @@ i18n-locales@^0.0.2: resolved "https://registry.yarnpkg.com/i18n-locales/-/i18n-locales-0.0.2.tgz#12e56046f1fa260e11658f4ac62f60b363479ff9" integrity sha512-WCaJVIfU10v0/ZNy+mG7fCUQb1o2PsM7tNf1dUg0uU9OxtygDkWRqLT9Q/X30V2XsUb6XUEPbSsdUiORfDPVQA== -i18n@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.8.3.tgz#2d8cf1c24722602c2041d01ba6ae5eaa51388f0e" - integrity sha1-LYzxwkciYCwgQdAbpq5eqlE4jw4= +i18n@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.8.4.tgz#948e1ee7ddefef18b2785969388e097327031bd0" + integrity sha512-PvMcG+yqYWXrwgdmCpL+APCGa8lRY0tdlo2cXp9UeR3u4h1bJGqFsgybfmG/MqtL1iDmdaPPPLJebXGrZ1XoMQ== dependencies: debug "*" - make-plural "^3.0.3" - math-interval-parser "^1.1.0" - messageformat "^0.3.1" + make-plural "^6.0.1" + math-interval-parser "^2.0.1" + messageformat "^2.3.0" mustache "*" - sprintf-js ">=1.0.3" + sprintf-js "^1.1.2" iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" @@ -5279,19 +5221,6 @@ ignore@^5.1.1, ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== -ignorefs@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ignorefs/-/ignorefs-1.2.0.tgz#da59fb858976e4a5e43702ccd1f282fdbc9e5756" - integrity sha1-2ln7hYl25KXkNwLM0fKC/byeV1Y= - dependencies: - editions "^1.3.3" - ignorepatterns "^1.1.0" - -ignorepatterns@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ignorepatterns/-/ignorepatterns-1.1.0.tgz#ac8f436f2239b5dfb66d5f0d3a904a87ac67cc5e" - integrity sha1-rI9DbyI5td+2bV8NOpBKh6xnzF4= - image-size@^0.7.3: version "0.7.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" @@ -5345,10 +5274,10 @@ import-local@2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" -import-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-1.1.0.tgz#748db79c5cc42bb9701efab424f894e72600e9dc" - integrity sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw= +import-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-2.0.0.tgz#9c1e13b4e7a15682f70a6e3fa29534e4540cfc5d" + integrity sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw== imurmurhash@^0.1.4: version "0.1.4" @@ -5960,18 +5889,18 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -juice@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/juice/-/juice-5.2.0.tgz#a40ea144bde2845fe2aade46a81f493f8ea677a0" - integrity sha512-0l6GZmT3efexyaaay3SchKT5kG311N59TEFP5lfvEy0nz9SNqjx311plJ3b4jze7arsmDsiHQLh/xnAuk0HFTQ== +juice@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/juice/-/juice-6.0.0.tgz#cd8f8fe5210ef129d186fe2c41c0ec169f7b07b6" + integrity sha512-5T3JPgXYiw6A6axsb9E09Gzq46WbfJeDirY6nMrqY55iAdqEoPDxSr1GpXqYfoyndx4ujpBPXGLzBRzbiqOOaw== dependencies: cheerio "^0.22.0" commander "^2.15.1" cross-spawn "^6.0.5" deep-extend "^0.6.0" - mensch "^0.3.3" + mensch "^0.3.4" slick "^1.12.2" - web-resource-inliner "^4.3.1" + web-resource-inliner "^4.3.3" jwa@^1.4.1: version "1.4.1" @@ -6096,6 +6025,11 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + linkify-it@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" @@ -6188,7 +6122,7 @@ lodash.bind@^4.1.4: resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= -lodash.camelcase@^4.1.1: +lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= @@ -6203,7 +6137,7 @@ lodash.defaults@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= -lodash.defaultsdeep@^4.6.0: +lodash.defaultsdeep@^4.6.1: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== @@ -6263,7 +6197,7 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.kebabcase@^4.0.1, lodash.kebabcase@^4.1.1: +lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= @@ -6313,7 +6247,7 @@ lodash.set@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= -lodash.snakecase@^4.0.1: +lodash.snakecase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= @@ -6353,7 +6287,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash.upperfirst@^4.2.0: +lodash.upperfirst@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= @@ -6434,13 +6368,18 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-plural@^3.0.3, make-plural@~3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-3.0.6.tgz#2033a03bac290b8f3bb91258f65b9df7e8b01ca7" - integrity sha1-IDOgO6wpC487uRJY9lud9+iwHKc= +make-plural@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-4.3.0.tgz#f23de08efdb0cac2e0c9ba9f315b0dff6b4c2735" + integrity sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA== optionalDependencies: minimist "^1.2.0" +make-plural@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-6.0.1.tgz#ed3839fac3f469ebbe505751d48fe3319769edfc" + integrity sha512-h0uBNi4tpDkiWUyYKrJNj8Kif6q3Ba5zp/8jnfPy3pQE+4XcTj6h3eZM5SYVUyDNX9Zk69Isr/dx0I+78aJUaQ== + mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" @@ -6486,12 +6425,10 @@ marked@^0.7.0: resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== -math-interval-parser@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-interval-parser/-/math-interval-parser-1.1.0.tgz#dbeda5b06b3249973c6df6170fde2386f0afd893" - integrity sha1-2+2lsGsySZc8bfYXD94jhvCv2JM= - dependencies: - xregexp "^2.0.0" +math-interval-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/math-interval-parser/-/math-interval-parser-2.0.1.tgz#e22cd6d15a0a7f4c03aec560db76513da615bed4" + integrity sha512-VmlAmb0UJwlvMyx8iPhXUDnVW1F9IrGEd9CIOmv+XL8AErCUUuozoDMrgImvnYt2A+53qVX/tPW6YJurMKYsvA== md5.js@^1.3.4: version "1.3.5" @@ -6561,10 +6498,10 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" -mensch@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.3.tgz#e200ff4dd823717f8e0563b32e3f5481fca262b2" - integrity sha1-4gD/TdgjcX+OBWOzLj9UgfyiYrI= +mensch@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" + integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== merge-descriptors@1.0.1: version "1.0.1" @@ -6583,16 +6520,24 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -messageformat@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-0.3.1.tgz#e58fff8245e9b3971799e5b43db58b3e9417f5a2" - integrity sha1-5Y//gkXps5cXmeW0PbWLPpQX9aI= +messageformat-formatters@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/messageformat-formatters/-/messageformat-formatters-2.0.1.tgz#0492c1402a48775f751c9b17c0354e92be012b08" + integrity sha512-E/lQRXhtHwGuiQjI7qxkLp8AHbMD5r2217XNe/SREbBlSawe0lOqsFb7rflZJmlQFSULNLIqlcjjsCPlB3m3Mg== + +messageformat-parser@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-4.1.2.tgz#fd34ec39912a14868a1595eaeb742485ab8ab372" + integrity sha512-7dWuifeyldz7vhEuL96Kwq1fhZXBW+TUfbnHN4UCrCxoXQTYjHnR78eI66Gk9LaLLsAvzPNVJBaa66DRfFNaiA== + +messageformat@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-2.3.0.tgz#de263c49029d5eae65d7ee25e0754f57f425ad91" + integrity sha512-uTzvsv0lTeQxYI2y1NPa1lItL5VRI8Gb93Y2K2ue5gBPyrbJxfDi/EYWxh2PKv5yO42AJeeqblS9MJSh/IEk4w== dependencies: - async "~1.5.2" - glob "~6.0.4" - make-plural "~3.0.3" - nopt "~3.0.6" - watchr "~2.4.13" + make-plural "^4.3.0" + messageformat-formatters "^2.0.1" + messageformat-parser "^4.1.2" methods@~1.1.2: version "1.1.2" @@ -6678,7 +6623,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6848,6 +6793,22 @@ multer@^1.4.2: type-is "^1.6.4" xtend "^4.0.0" +multimap@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" + integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== + +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + mustache@*: version "3.1.0" resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.1.0.tgz#9fba26e7aefc5709f07ff585abb7e0abced6c372" @@ -7042,12 +7003,12 @@ nodemailer@^6.3.1: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.3.1.tgz#2784beebac6b9f014c424c54dbdcc5c4d1221346" integrity sha512-j0BsSyaMlyadEDEypK/F+xlne2K5m6wzPYMXS/yxKI0s7jmT1kBx6GEKRVbZmyYfKOsjkeC/TiMVDJBI/w5gMQ== -nodemon@^1.19.4: - version "1.19.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.19.4.tgz#56db5c607408e0fdf8920d2b444819af1aae0971" - integrity sha512-VGPaqQBNk193lrJFotBU8nvWZPqEZY2eIzymy2jjY0fJ9qIsxA0sxQ8ATPl0gZC645gijYEc1jtZvpS8QWzJGQ== +nodemon@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.1.tgz#cec436f8153ad5d3e6c27c304849a06cabea71cc" + integrity sha512-UC6FVhNLXjbbV4UzaXA3wUdbEkUZzLGgMGzmxvWAex5nzib/jhcSHVFlQODdbuUHq8SnnZ4/EABBAbC3RplvPg== dependencies: - chokidar "^2.1.8" + chokidar "^3.2.2" debug "^3.2.6" ignore-by-default "^1.0.1" minimatch "^3.0.4" @@ -7078,14 +7039,7 @@ nopt@~1.0.10: dependencies: abbrev "1" -nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7328,17 +7282,17 @@ optimize-css-assets-webpack-plugin@^5.0.3: cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" - fast-levenshtein "~2.0.4" + fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" - wordwrap "~1.0.0" + word-wrap "~1.2.3" os-browserify@^0.3.0: version "0.3.0" @@ -7514,6 +7468,16 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -7619,7 +7583,7 @@ pg-int8@1.0.1: resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-pool@^2.0.4: +pg-pool@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.7.tgz#f14ecab83507941062c313df23f6adcd9fd0ce54" integrity sha512-UiJyO5B9zZpu32GSlP0tXy8J2NsJ9EFGFfz5v6PSbdz/1hBLX1rNiiy5+mAm5iJJYwfCv4A0EBcQLGWwjbpzZw== @@ -7635,15 +7599,15 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@^7.12.1: - version "7.12.1" - resolved "https://registry.yarnpkg.com/pg/-/pg-7.12.1.tgz#880636d46d2efbe0968e64e9fe0eeece8ef72a7e" - integrity sha512-l1UuyfEvoswYfcUe6k+JaxiN+5vkOgYcVSbSuw3FvdLqDbaoa2RJo1zfJKfPsSYPFVERd4GHvX3s2PjG1asSDA== +pg@^7.14.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-7.14.0.tgz#f46727845ad19c2670a7e8151063a670338b6057" + integrity sha512-TLsdOWKFu44vHdejml4Uoo8h0EwCjdIj9Z9kpz7pA5i8iQxOTwVb1+Fy+X86kW5AXKxQpYpYDs4j/qPDbro/lg== dependencies: buffer-writer "2.0.0" packet-reader "1.0.0" pg-connection-string "0.1.3" - pg-pool "^2.0.4" + pg-pool "^2.0.7" pg-types "^2.1.0" pgpass "1.x" semver "4.3.2" @@ -8396,10 +8360,10 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" -prebuild-install@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.2.tgz#6392e9541ac0b879ef0f22b3d65037417eb2035e" - integrity sha512-INDfXzTPnhT+WYQemqnAXlP7SvfiFMopMozSgXCZ+RDLb279gKfIuLk4o7PgEawLp3WrMgIYGBpkxpraROHsSA== +prebuild-install@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.3.tgz#ef4052baac60d465f5ba6bf003c9c1de79b9da8e" + integrity sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" @@ -8724,10 +8688,10 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.8.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.0.tgz#d1297e2a049c53119cb49cca366adbbacc80b409" - integrity sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA== +qs@^6.9.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" + integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== qs@~6.5.2: version "6.5.2" @@ -8807,6 +8771,15 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -8816,6 +8789,16 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -8986,7 +8969,7 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.78.0, request@^2.83.0, request@^2.87.0: +request@^2.83.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -9188,20 +9171,13 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safe-regex@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.0.2.tgz#3601b28d3aefe4b963d42f6c2cdb241265cbd63c" - integrity sha512-rRALJT0mh4qVFIJ9HvfjKDN77F9vp7kltOpFFI/8e6oKyHFmmxz4aSkY/YVauRDe7U0RrHdw9Lsxdel3E19s0A== +safe-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" + integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== dependencies: regexp-tree "~0.1.1" -safefs@^3.1.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/safefs/-/safefs-3.2.2.tgz#8170c1444d7038e08caea05a374fae2fa349e15c" - integrity sha1-gXDBRE1wOOCMrqBaN0+uL6NJ4Vw= - dependencies: - graceful-fs "*" - "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -9239,15 +9215,6 @@ sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scandirectory@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/scandirectory/-/scandirectory-2.5.0.tgz#6ce03f54a090b668e3cbedbf20edf9e310593e72" - integrity sha1-bOA/VKCQtmjjy+2/IO354xBZPnI= - dependencies: - ignorefs "^1.0.0" - safefs "^3.1.2" - taskgroup "^4.0.5" - schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -9300,11 +9267,6 @@ semver@4.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -9441,16 +9403,16 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -sharp@^0.23.2: - version "0.23.2" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.23.2.tgz#5f8b77513aa1f7e4d0dd969a3904ced75486c1d7" - integrity sha512-BSo0tq6Jtzwa6GDKvVMNNPCP/HLczrFLGVcorYv7OtxlKx4UPHy7x9DdfT8F+PK7FCFDemVRwtsjWpvaJI9v6w== +sharp@^0.23.4: + version "0.23.4" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.23.4.tgz#ca36067cb6ff7067fa6c77b01651cb9a890f8eb3" + integrity sha512-fJMagt6cT0UDy9XCsgyLi0eiwWWhQRxbwGmqQT6sY8Av4s0SVsT/deg8fobBQCTDU5iXRgz0rAeXoE2LBZ8g+Q== dependencies: color "^3.1.2" detect-libc "^1.0.3" nan "^2.14.0" npmlog "^4.1.2" - prebuild-install "^5.3.2" + prebuild-install "^5.3.3" semver "^6.3.0" simple-get "^3.1.0" tar "^5.0.5" @@ -9663,7 +9625,7 @@ split@^1.0.0: dependencies: through "2" -sprintf-js@>=1.0.3: +sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== @@ -9673,10 +9635,10 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sqlite3@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.1.0.tgz#e051fb9c133be15726322a69e2e37ec560368380" - integrity sha512-RvqoKxq+8pDHsJo7aXxsFR18i+dU2Wp5o12qAJOV5LNcDt+fgJsc2QKKg3sIRfXrN9ZjzY1T7SNe/DFVqAXjaw== +sqlite3@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.1.1.tgz#539a42e476640796578e22d589b3283c28055242" + integrity sha512-CvT5XY+MWnn0HkbwVKJAyWEMfzpAPwnTiB3TobA5Mri44SrTovmmh499NPQP+gatkeOipqPlBLel7rn4E/PCQg== dependencies: nan "^2.12.1" node-pre-gyp "^0.11.0" @@ -9832,6 +9794,15 @@ string-width@^4.0.0, string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^5.2.0" +string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -9888,6 +9859,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -10042,14 +10020,6 @@ tar@^5.0.5: mkdirp "^0.5.0" yallist "^4.0.0" -taskgroup@^4.0.5, taskgroup@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/taskgroup/-/taskgroup-4.3.1.tgz#7de193febd768273c457730497024d512c27915a" - integrity sha1-feGT/r12gnPEV3MElwJNUSwnkVo= - dependencies: - ambi "^2.2.0" - csextends "^1.0.3" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -10316,6 +10286,16 @@ type-fest@^0.5.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@^1.6.4, type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10329,23 +10309,6 @@ type@^1.0.1: resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -typechecker@^2.0.8: - version "2.1.0" - resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-2.1.0.tgz#d1c2093a54ff8a19f58cff877eeaa54f2242d383" - integrity sha1-0cIJOlT/ihn1jP+HfuqlTyJC04M= - -typechecker@^4.3.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-4.7.0.tgz#5249f427358f45b7250c4924fd4d01ed9ba435e9" - integrity sha512-4LHc1KMNJ6NDGO+dSM/yNfZQRtp8NN7psYrPHUblD62Dvkwsp3VShsbM78kOgpcmMkRTgvwdKOTjctS+uMllgQ== - dependencies: - editions "^2.1.0" - -typechecker@~2.0.1: - version "2.0.8" - resolved "https://registry.yarnpkg.com/typechecker/-/typechecker-2.0.8.tgz#e83da84bb64c584ccb345838576c40b0337db82e" - integrity sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4= - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10712,18 +10675,6 @@ vue-clipboard2@^0.3.1: dependencies: clipboard "^2.0.0" -vue-eslint-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz#00f4e4da94ec974b821a26ff0ed0f7a78402b8a1" - integrity sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g== - dependencies: - debug "^4.1.0" - eslint-scope "^4.0.0" - eslint-visitor-keys "^1.0.0" - espree "^4.1.0" - esquery "^1.0.1" - lodash "^4.17.11" - vue-eslint-parser@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-6.0.5.tgz#c1c067c2755748e28f3872cd42e8c1c4c1a8059f" @@ -10753,10 +10704,10 @@ vue-hot-reload-api@^2.3.0: resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== -vue-i18n@^8.15.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.15.0.tgz#9b11ef8e7a124f67cdf788c8c90a81f3606240ed" - integrity sha512-juJ/avAP39bOMycC+qQDLJ8U9z9LtLF/9PsRoJLBSfsYZo9bqYntyyX5QPicwlb1emJKjgxhZ3YofHiQcXBu0Q== +vue-i18n@^8.15.1: + version "8.15.1" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.15.1.tgz#90097a08a1e932f645c6b9c404c780d24f6d6224" + integrity sha512-GBbz8qYCu0U2LNu4IcuFLZiuyninG4k26knvhL7GZG5Ncp4RR2VKDEH6g8gQ6I+UUBCvH2MBQVPSdxWe4DBkPw== vue-loader@^15.7.1: version "15.7.1" @@ -10840,31 +10791,17 @@ watchpack@^1.6.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -watchr@~2.4.13: - version "2.4.13" - resolved "https://registry.yarnpkg.com/watchr/-/watchr-2.4.13.tgz#d74847bb4d6f90f61fe2c74f9f68662aa0e07601" - integrity sha1-10hHu01vkPYf4sdPn2hmKqDgdgE= - dependencies: - eachr "^2.0.2" - extendr "^2.1.0" - extract-opts "^2.2.0" - ignorefs "^1.0.0" - safefs "^3.1.2" - scandirectory "^2.5.0" - taskgroup "^4.2.0" - typechecker "^2.0.8" - -web-resource-inliner@^4.3.1: - version "4.3.3" - resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-4.3.3.tgz#a5446b02bc11beb4cb5e764e928d9c1e4ef47f41" - integrity sha512-Qk19pohqZs3SoFUW4ZlOHlM8hsOnXhTpCrQ16b1qtJtKzJgO7NZLGP+/lcb2g3hWDQD39/LE/JYOn1Sjy7tn1A== +web-resource-inliner@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-4.3.4.tgz#07e1b4bcbcbee1021251b018e902bac5713f1be0" + integrity sha512-agVAgRhOOi4GVlvKK34oM23tDgH8390HfLnZY2HZl8OFBwKNvUJkH7t89AT2iluQP8w9VHAAKX6Z8EN7/9tqKA== dependencies: async "^3.1.0" chalk "^2.4.2" datauri "^2.0.0" - htmlparser2 "^3.9.2" + htmlparser2 "^4.0.0" lodash.unescape "^4.0.1" - request "^2.78.0" + request "^2.88.0" safer-buffer "^2.1.2" valid-data-url "^2.0.0" xtend "^4.0.2" @@ -11067,16 +11004,16 @@ wkx@^0.4.8: dependencies: "@types/node" "*" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -11102,6 +11039,15 @@ wrap-ansi@^6.0.0: string-width "^4.1.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -11152,11 +11098,6 @@ xmlcreate@^2.0.0: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.1.tgz#2ec38bd7b708d213fd1a90e2431c4af9c09f6a52" integrity sha512-MjGsXhKG8YjTKrDCXseFo3ClbMGvUD4en29H2Cev1dv4P/chlpw6KdYmlCWDkhosBVKRDjM836+3e3pm1cBNJA== -xregexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= - xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -11197,10 +11138,10 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" - integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -11238,22 +11179,22 @@ yargs@^13.1.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@^14.0.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" - integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== +yargs@^15.0.2: + version "15.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.0.2.tgz#4248bf218ef050385c4f7e14ebdf425653d13bd3" + integrity sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q== dependencies: - cliui "^5.0.0" + cliui "^6.0.0" decamelize "^1.2.0" - find-up "^3.0.0" + find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^15.0.0" + yargs-parser "^16.1.0" yargs@~3.10.0: version "3.10.0" From 3476afe1abf8c8b79d1fb1bef8853da9b3b67a95 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 10 Dec 2019 22:29:36 +0100 Subject: [PATCH 002/598] [api] cors for public api --- server/api/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/api/index.js b/server/api/index.js index eb6debaa..3b96f860 100644 --- a/server/api/index.js +++ b/server/api/index.js @@ -2,6 +2,7 @@ const express = require('express') const multer = require('multer') const cookieParser = require('cookie-parser') const bodyParser = require('body-parser') +const cors = require('cors')() const { isAuth, isAdmin } = require('./auth') const eventController = require('./controller/event') @@ -77,13 +78,13 @@ api.get('/event/confirm/:event_id', isAuth, eventController.confirm) api.get('/event/unconfirm/:event_id', isAuth, eventController.unconfirm) // get event -api.get('/event/:event_id.:format?', eventController.get) +api.get('/event/:event_id.:format?', cors, eventController.get) // export events (rss/ics) -api.get('/export/:type', exportController.export) +api.get('/export/:type', cors, exportController.export) // get events in this range -api.get('/event/:month/:year', eventController.getAll) +api.get('/event/:month/:year', cors, eventController.getAll) api.get('/instances', isAdmin, instanceController.getAll) api.get('/instances/:instance_domain', isAdmin, instanceController.get) From 8994cce1ad5f8f6fe7e1c09900a321f4582c377e Mon Sep 17 00:00:00 2001 From: les Date: Tue, 10 Dec 2019 22:30:47 +0100 Subject: [PATCH 003/598] [fix] remove username / fix #60 --- .../20191210212618-remove_username.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 server/migrations/20191210212618-remove_username.js diff --git a/server/migrations/20191210212618-remove_username.js b/server/migrations/20191210212618-remove_username.js new file mode 100644 index 00000000..5f5928f6 --- /dev/null +++ b/server/migrations/20191210212618-remove_username.js @@ -0,0 +1,17 @@ +'use strict'; + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.removeColumn('users', 'username') + }, + + down: (queryInterface, Sequelize) => { + /* + Add reverting commands here. + Return a promise to correctly handle asynchronicity. + + Example: + return queryInterface.dropTable('users'); + */ + } +}; From 4015a54d57e7acd2778b33b961cef7af0406172d Mon Sep 17 00:00:00 2001 From: les Date: Tue, 10 Dec 2019 22:58:10 +0100 Subject: [PATCH 004/598] [ui] add admin in mobile / fix #63 --- assets/style.less | 4 ++++ pages/event/_id.vue | 33 +++++++++++++++++++++++++++++++++ server/federation/helpers.js | 15 ++++++++------- server/federation/nodeinfo.js | 2 +- server/federation/users.js | 1 + 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/assets/style.less b/assets/style.less index 5f4516ba..b579dabf 100644 --- a/assets/style.less +++ b/assets/style.less @@ -62,6 +62,10 @@ pre { font-family: unset; } +.el-message-box { + max-width: 95%; +} + .el-popover { word-break: normal; } diff --git a/pages/event/_id.vue b/pages/event/_id.vue index cdd69c0c..aca13612 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -53,6 +53,13 @@ hr .d-block.d-lg-none + el-dropdown + el-button.mr-1.mb-1(type='' icon='el-icon-arrow-down' size='mini') {{$t('common.admin')}} + el-dropdown-menu(slot='dropdown') + el-dropdown-item(@click.native='toggle') {{$t(event.is_visible?'common.hide':'common.confirm')}} + el-dropdown-item(@click.native='$router.replace(`/add/${event.id}`)') {{$t('common.edit')}} + el-dropdown-item(@click.native='remove') {{$t('common.remove')}} + el-button(plain size='mini' type='primary' v-clipboard:success='copyLink' v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}} a.el-button.el-button--success.el-button--mini.is-plain(role='button' plain size='mini' type='success' @@ -258,6 +265,32 @@ export default { } }, methods: { + async remove () { + try { + await MessageBox.confirm(this.$t('event.remove_confirmation'), this.$t('common.confirm'), { + confirmButtonText: this.$t('common.ok'), + cancelButtonText: this.$t('common.cancel'), + type: 'error' }) + await this.$axios.delete(`/user/event/${this.event.id}`) + this.delEvent(Number(this.event.id)) + this.$router.replace('/') + } catch (e) { + console.error(e) + } + }, + async toggle () { + try { + if (this.event.is_visible) { + await this.$axios.$get(`/event/unconfirm/${this.event.id}`) + this.event.is_visible = false + } else { + await this.$axios.$get(`/event/confirm/${this.event.id}`) + this.event.is_visible = true + } + } catch (e) { + console.error(e) + } + }, async hideResource (resource, hidden) { await this.$axios.$put(`/resources/${resource.id}`, { hidden }) resource.hidden = hidden diff --git a/server/federation/helpers.js b/server/federation/helpers.js index 75823e8c..4aa142e3 100644 --- a/server/federation/helpers.js +++ b/server/federation/helpers.js @@ -38,14 +38,15 @@ const Helpers = { const header = `keyId="${config.baseurl}/federation/u/${settingsController.settings.instance_name}",headers="(request-target) host date",signature="${signature_b64}"` const ret = await fetch(inbox, { headers: { - 'Host': inboxUrl.hostname, - 'Date': d.toUTCString(), - 'Signature': header, + Host: inboxUrl.hostname, + Date: d.toUTCString(), + Signature: header, 'Content-Type': 'application/activity+json; charset=utf-8', - 'Accept': 'application/activity+json, application/json; chartset=utf-8' + Accept: 'application/activity+json, application/json; chartset=utf-8' }, method: 'POST', - body: JSON.stringify(message) }) + body: JSON.stringify(message) +}) debug('sign %s => %s', ret.status, await ret.text()) }, @@ -64,7 +65,7 @@ const Helpers = { }) for (const sharedInbox in recipients) { - debug('Notify %s with event %s cc => %d', sharedInbox, event.title , recipients[sharedInbox].length) + debug('Notify %s with event %s cc => %d', sharedInbox, event.title, recipients[sharedInbox].length) const body = { id: `${config.baseurl}/federation/m/${event.id}#create`, type, @@ -78,7 +79,7 @@ const Helpers = { body['@context'] = [ 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', - { Hashtag: 'as:Hashtag' } ] + { Hashtag: 'as:Hashtag' }] Helpers.signAndSend(body, sharedInbox) } }, diff --git a/server/federation/nodeinfo.js b/server/federation/nodeinfo.js index 445eb78c..21363147 100644 --- a/server/federation/nodeinfo.js +++ b/server/federation/nodeinfo.js @@ -7,7 +7,7 @@ const version = require('../../package.json').version router.use(cors()) -router.get('/', async (req, res) => { +router.get('/', (req, res) => { const ret = { version: '1.0', server: { diff --git a/server/federation/users.js b/server/federation/users.js index 8f24b505..b0f2d260 100644 --- a/server/federation/users.js +++ b/server/federation/users.js @@ -84,6 +84,7 @@ module.exports = { }, async outbox (req, res) { + // TODO const name = req.params.name const page = req.query.page From ee1482b9cb9b2be3e0dcee2361d1dd6bfd8ba967 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 10 Dec 2019 23:08:13 +0100 Subject: [PATCH 005/598] v0.17.12 --- CHANGELOG | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index c0ec4258..663b8877 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ All notable changes to this project will be documented in this file. +### 0.17.12 +- [ui] add admin section on event page in mobile #63 +- [fix] remove username from users ### 0.17.11 - [refactor] s/fed_user/ap_user diff --git a/package.json b/package.json index 51a710d7..5b3e6da0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gancio", - "version": "0.17.11", + "version": "0.17.12", "description": "A shared agenda for local communities", "author": "lesion", "scripts": { From b729f5a4f871ffe6b570f26e2246a1eadc2cb6ea Mon Sep 17 00:00:00 2001 From: les Date: Tue, 10 Dec 2019 23:13:36 +0100 Subject: [PATCH 006/598] v0.17.13 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5b3e6da0..8f57d83e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gancio", - "version": "0.17.12", + "version": "0.17.13", "description": "A shared agenda for local communities", "author": "lesion", "scripts": { From 9473d6df00b7752c3c007cc6eee356e1ffb9a54f Mon Sep 17 00:00:00 2001 From: les Date: Tue, 10 Dec 2019 23:16:51 +0100 Subject: [PATCH 007/598] [npm] add keywords to package.json --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 8f57d83e..03ca39dc 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,9 @@ "email": "lesion@autistici.org", "url": "https://framagit.org/les/gancio/issues" }, + "keywords": [ + "AP", "gancio", "events", "federation", "activitypub", "event", "server", "self-host", "app" + ], "repository": { "type": "git", "url": "https://framagit.org/les/gancio" From 33e470379a994347c2f4ba9da25da8ed6dfd1dc1 Mon Sep 17 00:00:00 2001 From: fadelkon Date: Wed, 18 Dec 2019 14:21:30 +0100 Subject: [PATCH 008/598] Prepare catalan translation --- locales/ca.json | 197 ++++++++++++++++++++++++++++++++++++++++++ locales/email/ca.json | 23 +++++ locales/index.js | 3 +- plugins/element-ui.js | 1 + 4 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 locales/ca.json create mode 100644 locales/email/ca.json diff --git a/locales/ca.json b/locales/ca.json new file mode 100644 index 00000000..baf0734c --- /dev/null +++ b/locales/ca.json @@ -0,0 +1,197 @@ +{ + "common": { + "add_event": "Add event", + "next": "Next", + "export": "Export", + "send": "Send", + "where": "Where", + "address": "Address", + "when": "When", + "what": "What", + "media": "Media", + "login": "Login", + "email": "Email", + "password": "Password", + "register": "Register", + "description": "Description", + "remove": "Remove", + "hide": "Hide", + "search": "Search", + "edit": "Edit", + "info": "Info", + "confirm": "Confirm", + "admin": "Admin", + "users": "Users", + "events": "Events", + "places": "Places", + "settings": "Options", + "actions": "Actions", + "deactivate": "Disable", + "remove_admin": "Remove admin", + "activate": "Activate", + "save": "Save", + "preview": "Preview", + "logout": "Logout", + "share": "Share", + "name": "Name", + "associate": "Associate", + "edit_event": "Edit event", + "related": "Related", + "add": "Add", + "logout_ok": "Logged out", + "copy": "Copy", + "recover_password": "Recover password", + "new_password": "New password", + "new_user": "New user", + "ok": "Ok", + "cancel": "Cancel", + "enable": "Enable", + "disable": "Disable", + "me": "You", + "password_updated": "Password updated!", + "resources": "Resources", + "n_resources": "no resource|a resource|{n} resources", + "activate_user": "Confirmed", + "displayname": "Display name", + "federation": "Federation", + "set_password": "Set password", + "copy_link": "Copy link", + "send_via_mail": "Send email", + "add_to_calendar": "Add to calendar", + "instances": "Instances", + "copied": "Copied", + "embed": "Embed", + "embed_title": "Embed this event in your website", + "embed_help": "Copying the following code into your website the event will be shown like here.", + "feed": "Feed rss", + "feed_url_copied": "Feed url copied, paste it in your feed reader", + "follow_me_title": "Follow updates from fediverse", + "follow": "Follow", + "moderation": "Moderation" + }, + "login": { + "description": "By logging in you can publish new events.", + "check_email": "Check your mailbox (spam too)", + "not_registered": "Aren't registered", + "forgot_password": "Forgot the password?", + "error": "Error: ", + "insert_email": "Insert your email", + "ok": "Logged in" + }, + "recover": { + "not_valid_code": "Something goes wrong..." + }, + "export": { + "intro": "Unlike the capitalist platforms, which do everything they can to keep data and users within them, we believe that information, like people, must be free. For this you can stay updated on the events you want, without necessarily going through this site.", + "email_description": "You can receive the events that interest you via email.", + "insert_your_address": "Insert your email address.", + "feed_description": "\nTo follow updates from a computer or smartphone without the need to periodically open this site, the recommended method is RSS Feeds.

\n\n

With rss feeds you use a special app to receive updates from the sites that interest you most. It's a good way to follow many sites very quickly, without the need to create an account or other complications.

\n\n
  • If you have Android, we recommend Flym or Feeder
  • \n
  • For iPhone / iPad you can use Feed4U
  • \n
  • For the desktop / laptop we recommend Feedbro, to be installed in Firefox or Chrome and compatible with all major operating systems.
  • \n
    \nAdding this link to your feed reader will keep you up to date.", + "ical_description": "Computers and smartphones are commonly equipped with an application to manage a calendar. These programs can usually be used to import a remote calendar.", + "list_description": "If you have a website and want to show a list of events, you can use the following code" + }, + "register": { + "description": "\n Social movements need to organize and self-finance.
    This is a gift for you, use it only for non-commercial and obviously anti-fascist, anti-sexist, anti-racist events.\n
    Before you can publish we must approve the account , consider that behind this site there are people of\n flesh and blood, so write us two lines to let us know what events you would like to publish.", + "error": "Error: ", + "complete": "Registration has to be confirmed." + }, + "event": { + "anon": "Anon", + "anon_description": "You can add an event without registering or logging in, but in this case you will have to wait for someone to read it \n confirming that it is an event suitable for this space, delegating this choice. Furthermore it will not be possible to modify it.

    \n You can instead log in or register, otherwise go ahead and get an answer as soon as possible.", + "same_day": "on same day", + "what_description": "Title", + "description_description": "Description", + "tag_description": "Tag", + "media_description": "You can add flyer (optional)", + "added": "Event added", + "added_anon": "Event added but has to be confirmed.", + "where_description": "Where's the event? If not present, write it and press enter. ", + "confirmed": "Event confirmed", + "not_found": "Event not found", + "remove_confirmation": "Are you sure to remove this event?", + "recurrent": "Recurrent", + "recurrent_event_too": "recurrent events too", + "past_too": "past too", + "only_future": "only next events", + "recurrent_description": "Choose the frequency and select the days", + "multidate_description": "It's a festival? Choose when it starts and when it ends", + "multidate": "More days", + "normal": "Normal", + "normal_description": "Choose the day.", + "recurrent_1w_days": "Each {days}", + "recurrent_2w_days": "A {days} each two", + "recurrent_1m_days": "|The {days} of each month|{days} of each month", + "recurrent_2m_days": "|The {days} a month each two|The {days} a month each two", + "recurrent_1m_ordinal": "The {n} {days} of each month", + "recurrent_2m_ordinal": "|The {n} {days} a month each two|The {n} {days} a month each two", + "each_week": "Each week", + "each_2w": "Each two weeks", + "each_month": "Each month", + "due": "due", + "from": "From", + "image_too_big": "Too big image! Max 4M", + "interact_with_me_at": "Interact with me on fediverse at", + "follow_me_description": "Among the various ways to stay up to date on the events published here on {title},\n you can follow the account {account} from the fediverse, for example via mastodon, and possibly add resources to this event from there.

    \n If you have never heard of mastodon and the fediverse we recommend reading this article .

    Enter your instance below (eg mastodon.cisti.org or mastodon.bida.im)" + }, + "admin": { + "place_description": "In the event that a place is incorrect or change address, you can change it.
    Consider that all events associated with this place will change address (even past ones!)", + "event_confirm_description": "You can confirm here the events entered by anonymous users", + "delete_user": "Remove", + "remove_admin": "Remove admin", + "delete_user_confirm": "Are you sure to remove this user?", + "user_remove_ok": "User removed", + "user_create_ok": "User created", + "allow_registration_description": "Allow open registrations?", + "allow_anon_event": "Allow anon events (has to be confirmed)?", + "allow_recurrent_event": "Enable recurrent events", + "recurrent_event_visible": "Show recurrent events by default", + "federation": "Federation / ActivityPub", + "enable_federation": "Enable federation", + "enable_federation_help": "It will be possible to follow this instance from the fediverse", + "select_instance_timezone": "Select instance timezone", + "enable_resources": "Enable resources", + "enable_resources_help": "Allows you to add resources to the event from the fediverse", + "hide_boost_bookmark": "Hides boost/bookmarks", + "hide_boost_bookmark_help": "Hides the small icons that show the number of boosts / bookmarks coming from the fediverse", + "block": "Block", + "unblock": "Unblock", + "user_add_help": "We will send an email to the new user with instructions to confirm the subscription and choose a password", + "instance_name": "Instance name", + "show_resource": "Show resource", + "hide_resource": "Hide resource", + "delete_resource": "Delete resource", + "delete_resource_confirm": "Are you sure to delete this resource?", + "block_user": "Block user", + "filter_instances": "Filter instances", + "filter_users": "Filter users" + }, + "auth": { + "not_confirmed": "Not confirmed yet", + "fail": "Auth failed!. Are you sure password is correct?" + }, + "settings": { + "update_confirm": "Do you want to save your modification?", + "change_password": "Modify your password", + "password_updated": "Password updated", + "danger_section": "Dangerous section", + "remove_account": "By pressing the following button your user will be deleted. The events you published instead no.", + "remove_account_confirm": "You are about to permanently delete your account" + }, + "error": { + "nick_taken": "This nickname is already used", + "email_taken": "This email is already used" + }, + "confirm": { + "title": "User confirmation", + "not_valid": "Mmmmm something goes wrong.", + "valid": "Your account is confirmed, you can log in." + }, + "ordinal": { + "1": "first", + "2": "second", + "3": "third", + "4": "fourth", + "5": "fifth", + "-1": "last" + }, + "about": "\n

    Gancio is a shared agenda for local communities.

    \n " +} diff --git a/locales/email/ca.json b/locales/email/ca.json new file mode 100644 index 00000000..7bc1e21e --- /dev/null +++ b/locales/email/ca.json @@ -0,0 +1,23 @@ +{ + "register": { + "subject": "Request registration received", + "content": "We received the registration request. We will confirm it as soon as possible." + }, + "confirm": { + "subject": "You can now start publishing events", + "content": "Hi, your account on {{config.title}} has been confirmed. Write to us at {{config.admin}} for any information." + }, + "user_confirm": { + "subject": "You can now start publishing events", + "content": "Hi, your account on {{config.title}} has been created. Confirm it and choose a password." + }, + "recover": { + "subject": "Password recovery", + "content": "Hi, you requested a password recovery on {{config.title}}. Click here to confirm" + }, + "admin_register": { + "subject": "New registration", + "content": "{{user.email}} has requested registration on {{config.title}}:
    {{user.description}}

    Confirm it here." + } +} + diff --git a/locales/index.js b/locales/index.js index f2e7ef1f..5a13a5ff 100644 --- a/locales/index.js +++ b/locales/index.js @@ -1,7 +1,8 @@ import it from './it.json' import en from './en.json' import es from './es.json' +import ca from './ca.json' export default { - it, en, es + it, en, es, ca } diff --git a/plugins/element-ui.js b/plugins/element-ui.js index 45407a44..45486dca 100644 --- a/plugins/element-ui.js +++ b/plugins/element-ui.js @@ -10,6 +10,7 @@ const locales = { it: require('element-ui/lib/locale/lang/it'), en: require('element-ui/lib/locale/lang/en'), es: require('element-ui/lib/locale/lang/es') + ca: require('element-ui/lib/locale/lang/ca') } export default ({ app, store }) => { From d9c4cbdb9c7b02dd52cd036636fb474ab1768ce5 Mon Sep 17 00:00:00 2001 From: fadelkon Date: Wed, 18 Dec 2019 14:22:15 +0100 Subject: [PATCH 009/598] Translate strings to catalan --- locales/ca.json | 328 +++++++++++++++++++++--------------------- locales/email/ca.json | 20 +-- 2 files changed, 174 insertions(+), 174 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index baf0734c..94ffa5c9 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -1,197 +1,197 @@ { "common": { - "add_event": "Add event", - "next": "Next", - "export": "Export", - "send": "Send", - "where": "Where", - "address": "Address", - "when": "When", - "what": "What", - "media": "Media", - "login": "Login", + "add_event": "Afegeix activitat", + "next": "Següent", + "export": "Exporta", + "send": "Envia", + "where": "On", + "address": "Adreça", + "when": "Quan", + "what": "Què", + "media": "Mèdia", + "login": "Inicia sessió", "email": "Email", - "password": "Password", - "register": "Register", - "description": "Description", - "remove": "Remove", - "hide": "Hide", - "search": "Search", - "edit": "Edit", + "password": "Contrasenya", + "register": "Crea un compte", + "description": "Descripció", + "remove": "Esborra", + "hide": "Amaga", + "search": "Cerca", + "edit": "Edita", "info": "Info", - "confirm": "Confirm", + "confirm": "Confirma", "admin": "Admin", - "users": "Users", - "events": "Events", - "places": "Places", - "settings": "Options", - "actions": "Actions", - "deactivate": "Disable", - "remove_admin": "Remove admin", - "activate": "Activate", - "save": "Save", - "preview": "Preview", - "logout": "Logout", - "share": "Share", - "name": "Name", - "associate": "Associate", - "edit_event": "Edit event", - "related": "Related", - "add": "Add", - "logout_ok": "Logged out", - "copy": "Copy", - "recover_password": "Recover password", - "new_password": "New password", - "new_user": "New user", + "users": "Usuàries", + "events": "Activitats", + "places": "Llocs", + "settings": "Configuració", + "actions": "Accions", + "deactivate": "Deshabilita", + "remove_admin": "Treu els permisos d'admin", + "activate": "Activa", + "save": "Desa", + "preview": "Vista prèvia", + "logout": "Tanca la sessió", + "share": "Comparteix", + "name": "Nom", + "associate": "Associa", + "edit_event": "Edita l'activitat", + "related": "Relacionades", + "add": "Afegeix", + "logout_ok": "S'ha tancat la sessió", + "copy": "Copia", + "recover_password": "Recupera la contrasenya", + "new_password": "Contrasenya nova", + "new_user": "Usuària nova", "ok": "Ok", - "cancel": "Cancel", - "enable": "Enable", - "disable": "Disable", - "me": "You", - "password_updated": "Password updated!", - "resources": "Resources", - "n_resources": "no resource|a resource|{n} resources", - "activate_user": "Confirmed", - "displayname": "Display name", - "federation": "Federation", - "set_password": "Set password", - "copy_link": "Copy link", - "send_via_mail": "Send email", - "add_to_calendar": "Add to calendar", - "instances": "Instances", - "copied": "Copied", - "embed": "Embed", - "embed_title": "Embed this event in your website", - "embed_help": "Copying the following code into your website the event will be shown like here.", - "feed": "Feed rss", - "feed_url_copied": "Feed url copied, paste it in your feed reader", - "follow_me_title": "Follow updates from fediverse", - "follow": "Follow", - "moderation": "Moderation" + "cancel": "Canceŀla", + "enable": "Habilita", + "disable": "Deshabilita", + "me": "Tu", + "password_updated": "S'ha actualitzat la contrasenya!", + "resources": "Recursos", + "n_resources": "cap recurs|un recurs|{n} recursos", + "activate_user": "S'ha confirmat", + "displayname": "Nom per mostrar", + "federation": "Federació", + "set_password": "Posa una contrasenya", + "copy_link": "Copia'n l'enllaç", + "send_via_mail": "Envia un mail", + "add_to_calendar": "Afegeix al calendari", + "instances": "Instàncies", + "copied": "S'ha copiat", + "embed": "Encasta", + "embed_title": "Mostra aquesta activitat en la teva web", + "embed_help": "Si copies aquest codi a la teva web, es mostrarà l'activitat com la veus aquí", + "feed": "Flux RSS", + "feed_url_copied": "S'ha copiat la URL del flux. Ja la pots enganxar al lector de fluxos", + "follow_me_title": "Segueix les actualitzacions del Fedivers", + "follow": "Segueix", + "moderation": "Moderació" }, "login": { - "description": "By logging in you can publish new events.", - "check_email": "Check your mailbox (spam too)", - "not_registered": "Aren't registered", - "forgot_password": "Forgot the password?", + "description": "Amb la sessió iniciada pots afegir activitats noves", + "check_email": "Comprova al teu correu la safata d'entrada i la de brossa", + "not_registered": "No estàs registrat/da?", + "forgot_password": "Has oblidat la contrasenya?", "error": "Error: ", - "insert_email": "Insert your email", - "ok": "Logged in" + "insert_email": "Introdueix el teu mail", + "ok": "Has iniciat sessió" }, "recover": { - "not_valid_code": "Something goes wrong..." + "not_valid_code": "Hi ha alguna cosa malament..." }, "export": { - "intro": "Unlike the capitalist platforms, which do everything they can to keep data and users within them, we believe that information, like people, must be free. For this you can stay updated on the events you want, without necessarily going through this site.", - "email_description": "You can receive the events that interest you via email.", - "insert_your_address": "Insert your email address.", - "feed_description": "\nTo follow updates from a computer or smartphone without the need to periodically open this site, the recommended method is RSS Feeds.

    \n\n

    With rss feeds you use a special app to receive updates from the sites that interest you most. It's a good way to follow many sites very quickly, without the need to create an account or other complications.

    \n\n
  • If you have Android, we recommend Flym or Feeder
  • \n
  • For iPhone / iPad you can use Feed4U
  • \n
  • For the desktop / laptop we recommend Feedbro, to be installed in Firefox or Chrome and compatible with all major operating systems.
  • \n
    \nAdding this link to your feed reader will keep you up to date.", - "ical_description": "Computers and smartphones are commonly equipped with an application to manage a calendar. These programs can usually be used to import a remote calendar.", - "list_description": "If you have a website and want to show a list of events, you can use the following code" + "intro": "A diferència de les plataformes capitalistes, que recopilen informació de tot el que hi fem les usuàries, nosaltres creiem que la informació, tal com les persones, ha de ser lliure. Per això, pots estar al corrent de les activitats que vols sense necessitat de passar per aquest web.", + "email_description": "Pots rebre correus sobre les activitats que t'interessin.", + "insert_your_address": "Introdueix la teva adreça de mail.", + "feed_description": "\nPer tal de seguir les actualitzacions sense haver d'entrar periòdicament aquí, et recomanem fer servir el flux RSS

    \n\n

    Hi ha aplicacions que agrupen i llegeixen fluxos RSS de diverses webs, blogs i aplicacions web. És una bona manera de mantenir-te informada sense haver de crear comptes a tot arreu.

    \n\n
  • Per a Android recomanem Flym o Feeder
  • \n
  • Per a iPhone / iPad pots fer servir Feed4U
  • \n
  • Per a l'ordinador recomanem Feedbro, que és una extensió de navegador disponible per a Firefox i per a Chrome i Chromium. Funciona en els principals sistemes operatius.
  • \n
    \nAfegeix aquest enllaç al teu lector de fluxos per mantenir-te al dia sense esforç.", + "ical_description": "Els sistemes operatius d'ordinadors i mòbils solen oferir aplicacions de calendari. Algunes permeten importar calendaris remots, que van comprovant periòdicament.", + "list_description": "Si tens una web i vols encastar una llista d'activitats, pots fer servir el codi de sota." }, "register": { - "description": "\n Social movements need to organize and self-finance.
    This is a gift for you, use it only for non-commercial and obviously anti-fascist, anti-sexist, anti-racist events.\n
    Before you can publish we must approve the account , consider that behind this site there are people of\n flesh and blood, so write us two lines to let us know what events you would like to publish.", + "description": "\n Els moviments socials necessitem organitzar-nos i auto-finançar-nos.
    Aquest és un regal per vosaltres, feu-lo servir només per usos no-comercials i òbviament per activitats antifeixistes, antisexistes, i antiracistes.\n
    Abans que puguis publicar, hem d'aprovar el teu compte , tingues en comtpe que darrere d'aquesta web hi ha persones de\n carn i ossos. Ens agradaria saber quin tipus d'activitats vols publicar, ens escrius dues línies explicant-ho?", "error": "Error: ", - "complete": "Registration has to be confirmed." + "complete": "El registre ha de ser confirmat." }, "event": { - "anon": "Anon", - "anon_description": "You can add an event without registering or logging in, but in this case you will have to wait for someone to read it \n confirming that it is an event suitable for this space, delegating this choice. Furthermore it will not be possible to modify it.

    \n You can instead log in or register, otherwise go ahead and get an answer as soon as possible.", - "same_day": "on same day", - "what_description": "Title", - "description_description": "Description", - "tag_description": "Tag", - "media_description": "You can add flyer (optional)", - "added": "Event added", - "added_anon": "Event added but has to be confirmed.", - "where_description": "Where's the event? If not present, write it and press enter. ", - "confirmed": "Event confirmed", - "not_found": "Event not found", - "remove_confirmation": "Are you sure to remove this event?", - "recurrent": "Recurrent", - "recurrent_event_too": "recurrent events too", - "past_too": "past too", - "only_future": "only next events", - "recurrent_description": "Choose the frequency and select the days", - "multidate_description": "It's a festival? Choose when it starts and when it ends", - "multidate": "More days", + "anon": "Anònim", + "anon_description": "Pots afegir activitats sense haver de crear un compte o iniciar sessió, però a canvi hauràs d'esperar que algun/a admin la llegeixi i l'aprovi,\n confirmant que és adequada. Demana més feina humana i no podrà ser modificada.

    \n Pots iniciar sessió o crear un compte, però si ho necessites, endavant! Procurarem trigar poc.", + "same_day": "al mateix dia", + "what_description": "Títol", + "description_description": "Descripció", + "tag_description": "Etiqueta", + "media_description": "Pots adjuntar un cartell (opcional)", + "added": "S'ha afegit l'activitat", + "added_anon": "S'ha afegit l'activitat però encara ha de ser confirmada.", + "where_description": "On es farà? Si no està posat, escriu-ho i prem Enter. ", + "confirmed": "S'ha confirmat l'activitat", + "not_found": "No s'ha trobat l'activitat", + "remove_confirmation": "Segur que vols esborrar l'activitat?", + "recurrent": "Periòdica", + "recurrent_event_too": "també les periòdiques", + "past_too": "també les passades", + "only_future": "només les futures", + "recurrent_description": "Tria la freqüència i els dies", + "multidate_description": "Són unes jornades o un festival? Tria quan comença i quan acaba", + "multidate": "Més dies", "normal": "Normal", - "normal_description": "Choose the day.", - "recurrent_1w_days": "Each {days}", - "recurrent_2w_days": "A {days} each two", - "recurrent_1m_days": "|The {days} of each month|{days} of each month", - "recurrent_2m_days": "|The {days} a month each two|The {days} a month each two", - "recurrent_1m_ordinal": "The {n} {days} of each month", - "recurrent_2m_ordinal": "|The {n} {days} a month each two|The {n} {days} a month each two", - "each_week": "Each week", - "each_2w": "Each two weeks", - "each_month": "Each month", - "due": "due", - "from": "From", - "image_too_big": "Too big image! Max 4M", - "interact_with_me_at": "Interact with me on fediverse at", - "follow_me_description": "Among the various ways to stay up to date on the events published here on {title},\n you can follow the account {account} from the fediverse, for example via mastodon, and possibly add resources to this event from there.

    \n If you have never heard of mastodon and the fediverse we recommend reading this article .

    Enter your instance below (eg mastodon.cisti.org or mastodon.bida.im)" + "normal_description": "Tria el dia.", + "recurrent_1w_days": "Cada {days}", + "recurrent_2w_days": "Un de cada dos {days}", + "recurrent_1m_days": "|El dia {days} de cada mes|Els dies {days} de cada mes", + "recurrent_2m_days": "|El dia {days} d'un de cada dos mesos|Els dies {days} d'un de cada dos mesos", + "recurrent_1m_ordinal": "El {n} {days} de cada mes", + "recurrent_2m_ordinal": "|El {n} {days} de cada dos mesos|Els {n} {days} de cada dos mesos", + "each_week": "Cada setmana", + "each_2w": "Cada dues setmanes", + "each_month": "Cada mes", + "due": "a les", + "from": "Des de les", + "image_too_big": "La imatge és massa gran! Max 4 MB", + "interact_with_me_at": "Interacciona amb mi a", + "follow_me_description": "Entre les diverses maneres d'estar al dia de les activitats que es publiquen aquí a {title},\n pots seguir-nos al compte {account} des de Mastodon o altres, i afegir recursos des d'allà.

    \n Si mai has sentit de «Mastodon» o del «Fedivers», recomanem llegir aquest article (en anglès) .

    Introdueix la teva instància a sota (ex: red.confederac.io o mastodont.cat)" }, "admin": { - "place_description": "In the event that a place is incorrect or change address, you can change it.
    Consider that all events associated with this place will change address (even past ones!)", - "event_confirm_description": "You can confirm here the events entered by anonymous users", - "delete_user": "Remove", - "remove_admin": "Remove admin", - "delete_user_confirm": "Are you sure to remove this user?", - "user_remove_ok": "User removed", - "user_create_ok": "User created", - "allow_registration_description": "Allow open registrations?", - "allow_anon_event": "Allow anon events (has to be confirmed)?", - "allow_recurrent_event": "Enable recurrent events", - "recurrent_event_visible": "Show recurrent events by default", - "federation": "Federation / ActivityPub", - "enable_federation": "Enable federation", - "enable_federation_help": "It will be possible to follow this instance from the fediverse", - "select_instance_timezone": "Select instance timezone", - "enable_resources": "Enable resources", - "enable_resources_help": "Allows you to add resources to the event from the fediverse", - "hide_boost_bookmark": "Hides boost/bookmarks", - "hide_boost_bookmark_help": "Hides the small icons that show the number of boosts / bookmarks coming from the fediverse", - "block": "Block", - "unblock": "Unblock", - "user_add_help": "We will send an email to the new user with instructions to confirm the subscription and choose a password", - "instance_name": "Instance name", - "show_resource": "Show resource", - "hide_resource": "Hide resource", - "delete_resource": "Delete resource", - "delete_resource_confirm": "Are you sure to delete this resource?", - "block_user": "Block user", - "filter_instances": "Filter instances", - "filter_users": "Filter users" + "place_description": "En el cas que un lloc és incorrecte o l'adreça ha de canviar, pots arreglar-ho.
    Tingues en compte que totes les activitats passades i futures associades amb aquest lloc també canviaran d'adreça!", + "event_confirm_description": "Des d'aquí pots confirmar les activitats creades anònimament", + "delete_user": "Esborra", + "remove_admin": "Esborra admin", + "delete_user_confirm": "Segur que vols esborrar aquest compte?", + "user_remove_ok": "S'ha esborrat el compte", + "user_create_ok": "S'ha creat el compte", + "allow_registration_description": "Vols deixar el registre obert?", + "allow_anon_event": "Vols permetre activitats anònimes (s'han de confirmar manualment)?", + "allow_recurrent_event": "Habilitar activitats periòdiques", + "recurrent_event_visible": "Mostra per defecte les activitats periòdiques", + "federation": "Federació / ActivityPub", + "enable_federation": "Activa la federació", + "enable_federation_help": "Aquesta instància es podrà seguir des del Fedivers", + "select_instance_timezone": "Tria la zona horària", + "enable_resources": "Habilita els recursos", + "enable_resources_help": "Et permet afegir a l'activitat recursos des del Fedivers", + "hide_boost_bookmark": "Amaga retuts i preferits", + "hide_boost_bookmark_help": "Amaga les icones que mostren el nombre de reaccions del Fedivers en forma de boosts o retuts i de preferits", + "block": "Bloqueja", + "unblock": "Desbloqueja", + "user_add_help": "Enviarem un mail a la nova persona usuària amb instruccions per confirmar el registre i canviar la contrasenya", + "instance_name": "Nom de la instància", + "show_resource": "Mostra el recurs", + "hide_resource": "Amaga el recurs", + "delete_resource": "Esborra el recurs", + "delete_resource_confirm": "Segur que vols esborrar el recurs?", + "block_user": "Bloqueja l'usuària", + "filter_instances": "Filtra instàncies", + "filter_users": "Filtra usuàries" }, "auth": { - "not_confirmed": "Not confirmed yet", - "fail": "Auth failed!. Are you sure password is correct?" + "not_confirmed": "Encara no s'ha confirmat", + "fail": "Ha fallta l'autenticació! Pots comprovar la contrasenya?" }, "settings": { - "update_confirm": "Do you want to save your modification?", - "change_password": "Modify your password", - "password_updated": "Password updated", - "danger_section": "Dangerous section", - "remove_account": "By pressing the following button your user will be deleted. The events you published instead no.", - "remove_account_confirm": "You are about to permanently delete your account" + "update_confirm": "Vols desar els canvis?", + "change_password": "Canvia la contrasenya", + "password_updated": "S'ha actualitzat la contrasenya", + "danger_section": "Secció perillosa", + "remove_account": "Si cliques el botó s'esborrarà el teu compte. Les activitats que hagis publicat es quedaran.", + "remove_account_confirm": "Estàs a punt d'esborrar permanentment el teu compte!" }, "error": { - "nick_taken": "This nickname is already used", - "email_taken": "This email is already used" + "nick_taken": "Aquest nom ja està agafat", + "email_taken": "Aquest mail ja s'està fent servir" }, "confirm": { - "title": "User confirmation", - "not_valid": "Mmmmm something goes wrong.", - "valid": "Your account is confirmed, you can log in." + "title": "Confirmació d'usuàries", + "not_valid": "Ermmmm hi ha algun error.", + "valid": "S'ha confirmat el teu compte, ja pots iniciar sessió." }, "ordinal": { - "1": "first", - "2": "second", - "3": "third", - "4": "fourth", - "5": "fifth", - "-1": "last" + "1": "primer", + "2": "segon", + "3": "tercer", + "4": "quart", + "5": "cinquè", + "-1": "últim" }, - "about": "\n

    Gancio is a shared agenda for local communities.

    \n " + "about": "\n

    Gancio és una agenda compartida per comunitats locals.

    \n " } diff --git a/locales/email/ca.json b/locales/email/ca.json index 7bc1e21e..a2bb2e04 100644 --- a/locales/email/ca.json +++ b/locales/email/ca.json @@ -1,23 +1,23 @@ { "register": { - "subject": "Request registration received", - "content": "We received the registration request. We will confirm it as soon as possible." + "subject": "Hem rebut una soŀlicitud de registre", + "content": "Hem rebut una soŀlicitud de registre. Hi respondrem tan aviat com ens sigui possible." }, "confirm": { - "subject": "You can now start publishing events", - "content": "Hi, your account on {{config.title}} has been confirmed. Write to us at {{config.admin}} for any information." + "subject": "Ja pots publicar activitats", + "content": "Ei, el teu compte a {{config.title}} ha estat confirmat. Escriu-nos a {{config.admin}} per qualsevol dubte." }, "user_confirm": { - "subject": "You can now start publishing events", - "content": "Hi, your account on {{config.title}} has been created. Confirm it and choose a password." + "subject": "Ja pots publicar activitats", + "content": "Ei, has creat un compte a {{config.title}}, oi? Confirma-ho i tria una contrasenya, sisplau. Gràcies!" }, "recover": { - "subject": "Password recovery", - "content": "Hi, you requested a password recovery on {{config.title}}. Click here to confirm" + "subject": "Recupera la contrasenya", + "content": "Ep, has demanat restablir la contrasenya a {{config.title}}, oi? Clica aquí per a continuar el procés." }, "admin_register": { - "subject": "New registration", - "content": "{{user.email}} has requested registration on {{config.title}}:
    {{user.description}}

    Confirm it here." + "subject": "Registre nou", + "content": "{{user.email}} ha soŀlicitat regsitrar-se a {{config.title}}:
    {{user.description}}

    Respon a la soŀlicitud aquí." } } From 8ee1c6dc08c6ffa0ebfe2e57f0fb36b47625e705 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 18 Dec 2019 14:44:09 +0100 Subject: [PATCH 010/598] [fix] fedi outbox --- server/api/models/ap_user.js | 2 +- server/federation/index.js | 2 +- server/federation/users.js | 18 +++++++----------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/server/api/models/ap_user.js b/server/api/models/ap_user.js index 199175e7..870bfe4c 100644 --- a/server/api/models/ap_user.js +++ b/server/api/models/ap_user.js @@ -15,4 +15,4 @@ module.exports = (sequelize, DataTypes) => { } return APUser -} \ No newline at end of file +} diff --git a/server/federation/index.js b/server/federation/index.js index 569cf126..269d85d4 100644 --- a/server/federation/index.js +++ b/server/federation/index.js @@ -31,7 +31,7 @@ router.get('/m/:event_id', async (req, res) => { const event_id = req.params.event_id if (req.accepts('html')) { return res.redirect(301, `/event/${event_id}`) } - const event = await Event.findByPk(req.params.event_id, { include: [ User, Tag, Place ] }) + const event = await Event.findByPk(req.params.event_id, { include: [User, Tag, Place] }) if (!event) { return res.status(404).send('Not found') } return res.json(event.toNoteAP(event.user.username)) }) diff --git a/server/federation/users.js b/server/federation/users.js index b0f2d260..1cfd320e 100644 --- a/server/federation/users.js +++ b/server/federation/users.js @@ -1,4 +1,4 @@ -const { User, Event, Place, Tag, APUser } = require('../api/models') +const { event: Event, place: Place, tag: Tag, ap_user: APUser } = require('../api/models') const config = require('config') const debug = require('debug')('fediverse:user') @@ -48,7 +48,7 @@ module.exports = { res.json(ret) }, - async followers(req, res) { + async followers (req, res) { // TODO const name = req.params.name const page = req.query.page @@ -89,12 +89,9 @@ module.exports = { const page = req.query.page if (!name) { return res.status(400).send('Bad request.') } - const user = await User.findOne({ - include: [ { model: Event, include: [ Place, Tag ] } ], - where: { username: name } - }) + if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) } - if (!user) { return res.status(404).send(`No record found for ${name}`) } + const events = await Event.findAll( { include: [Tag, Place] }) debug('Inside outbox, should return all events from this user') @@ -105,7 +102,7 @@ module.exports = { '@context': ['https://www.w3.org/ns/activitystreams'], id: `${config.baseurl}/federation/u/${name}/outbox`, type: 'OrderedCollection', - totalItems: user.events.length, + totalItems: events.length, first: `${config.baseurl}/federation/u/${name}/outbox?page=true`, last: `${config.baseurl}/federation/u/${name}/outbox?page=true` }) @@ -116,10 +113,9 @@ module.exports = { '@context': ['https://www.w3.org/ns/activitystreams', { Hashtag: 'as:Hashtag' }], id: `${config.baseurl}/federation/u/${name}/outbox?page=${page}`, type: 'OrderedCollectionPage', - totalItems: user.events.length, + totalItems: events.length, partOf: `${config.baseurl}/federation/u/${name}/outbox`, - orderedItems: user.events.map(e => ({ - ...e.toNoteAP(user.username), actor: `${config.baseurl}/federation/u/${user.username}` })) + orderedItems: events.map(e => ({ ...e.toNoteAP(name), actor: `${config.baseurl}/federation/u/${name}` })) // user.events.map(e => ({ // id: `${config.baseurl}/federation/m/${e.id}#create`, // type: 'Create', From 4a5e5617ee4760a7ad2776b0d8088726d53502d9 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 18 Dec 2019 14:59:10 +0100 Subject: [PATCH 011/598] [locale] add catalan https://framagit.org/les/gancio/merge_requests/2 --- CHANGELOG | 4 ++++ plugins/element-ui.js | 2 +- server/helpers.js | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 663b8877..e741e3ef 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ All notable changes to this project will be documented in this file. +### unreleased +[locale] add catalan +[fix] fedi outbox + ### 0.17.12 - [ui] add admin section on event page in mobile #63 - [fix] remove username from users diff --git a/plugins/element-ui.js b/plugins/element-ui.js index 45486dca..182e6815 100644 --- a/plugins/element-ui.js +++ b/plugins/element-ui.js @@ -9,7 +9,7 @@ import locale from 'element-ui/lib/locale' const locales = { it: require('element-ui/lib/locale/lang/it'), en: require('element-ui/lib/locale/lang/en'), - es: require('element-ui/lib/locale/lang/es') + es: require('element-ui/lib/locale/lang/es'), ca: require('element-ui/lib/locale/lang/ca') } diff --git a/server/helpers.js b/server/helpers.js index 82c57d54..e1ceb8d7 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -34,7 +34,7 @@ module.exports = { // set locale and user locale const acceptedLanguages = req.headers['accept-language'] - const supportedLanguages = ['en', 'it', 'es'] + const supportedLanguages = ['en', 'it', 'es', 'ca'] acceptLanguage.languages(supportedLanguages) req.settings.locale = acceptLanguage.get(acceptedLanguages) req.settings.user_locale = settingsController.user_locale[req.settings.locale] From c510541c50c2694b5c86f85168016c8d29f5a1f9 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 18 Dec 2019 15:02:38 +0100 Subject: [PATCH 012/598] v0.17.14 --- CHANGELOG | 2 +- package.json | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index e741e3ef..0e352ab1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,6 @@ All notable changes to this project will be documented in this file. -### unreleased +### 1.17.14 [locale] add catalan [fix] fedi outbox diff --git a/package.json b/package.json index 03ca39dc..8efbe610 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gancio", - "version": "0.17.13", + "version": "0.17.14", "description": "A shared agenda for local communities", "author": "lesion", "scripts": { @@ -20,7 +20,15 @@ "url": "https://framagit.org/les/gancio/issues" }, "keywords": [ - "AP", "gancio", "events", "federation", "activitypub", "event", "server", "self-host", "app" + "AP", + "gancio", + "events", + "federation", + "activitypub", + "event", + "server", + "self-host", + "app" ], "repository": { "type": "git", From 7ab81be418f394b63b80a046d4d6172b9799465d Mon Sep 17 00:00:00 2001 From: les Date: Thu, 26 Dec 2019 11:46:21 +0100 Subject: [PATCH 013/598] [oauth] start oauth auth_code server implementation --- CHANGELOG | 3 + layouts/modal.vue | 12 + locales/it.json | 3 +- package.json | 33 +- pages/Authorize.vue | 52 + pages/add/_edit.vue | 45 +- server/api/controller/oauth.js | 58 + server/api/index.js | 10 +- server/api/models/oauth_client.js | 19 + server/api/models/oauth_code.js | 18 + server/api/models/oauth_token.js | 15 + server/api/oauth.js | 74 + .../migrations/20191226001504-oauth_client.js | 30 + .../migrations/20191226102934-oauth_code.js | 37 + server/model.js | 84 + server/routes.js | 39 +- yarn.lock | 1937 ++++++++++------- 17 files changed, 1631 insertions(+), 838 deletions(-) create mode 100644 layouts/modal.vue create mode 100644 pages/Authorize.vue create mode 100644 server/api/controller/oauth.js create mode 100644 server/api/models/oauth_client.js create mode 100644 server/api/models/oauth_code.js create mode 100644 server/api/models/oauth_token.js create mode 100644 server/api/oauth.js create mode 100644 server/migrations/20191226001504-oauth_client.js create mode 100644 server/migrations/20191226102934-oauth_code.js create mode 100644 server/model.js diff --git a/CHANGELOG b/CHANGELOG index 0e352ab1..37fce3f7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,8 @@ All notable changes to this project will be documented in this file. +unreleased +- oauth server implementation + ### 1.17.14 [locale] add catalan [fix] fedi outbox diff --git a/layouts/modal.vue b/layouts/modal.vue new file mode 100644 index 00000000..f72dd127 --- /dev/null +++ b/layouts/modal.vue @@ -0,0 +1,12 @@ + + diff --git a/locales/it.json b/locales/it.json index a9cdfabe..ae80cd0a 100644 --- a/locales/it.json +++ b/locales/it.json @@ -67,7 +67,8 @@ "follow": "Segui", "n_resources": "nessuna risorsa|una risorsa|{n} risorse", "resources": "Risorse", - "moderation": "Moderazione" + "moderation": "Moderazione", + "authorize": "Autorizza" }, "login": { "description": "Entrando puoi pubblicare nuovi eventi.", diff --git a/package.json b/package.json index 8efbe610..52d7235a 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "author": "lesion", "scripts": { "dev:nuxt": "cross-env NODE_ENV=development nuxt dev", - "dev": "cross-env DEBUG=*,-babel,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=development node server/index.js", + "dev": "cross-env DEBUG=*,-babel*,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=development node server/index.js", "build": "nuxt build", - "start": "cross-env DEBUG=*,-babel,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=production node server/cli.js", + "start": "cross-env DEBUG=*,-babel*,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=production node server/cli.js", "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", "doc": "cd docs && bundle exec jekyll b", "doc:dev": "cd docs && bundle exec jekyll s --drafts", @@ -50,26 +50,27 @@ ], "dependencies": { "@nuxtjs/auth": "^4.8.4", - "@nuxtjs/axios": "^5.8.0", + "@nuxtjs/axios": "^5.9.0", "accept-language": "^3.0.18", "axios": "^0.19.0", "bcryptjs": "^2.4.3", "body-parser": "^1.18.3", "bootstrap": "^4.4.1", "config": "^3.2.4", - "consola": "^2.11.0", + "consola": "^2.11.1", "cookie-parser": "^1.4.4", "cors": "^2.8.5", "cross-env": "^6.0.0", - "dayjs": "^1.8.17", + "dayjs": "^1.8.18", "element-ui": "^2.13.0", - "email-templates": "^6.0.6", + "email-templates": "^6.1.1", "express": "^4.17.1", "express-jwt": "^5.3.1", "express-middleware-log": "^1.2.0", + "express-oauth-server": "^2.0.0", "http-signature": "^1.3.1", "ics": "^2.16.0", - "inquirer": "^7.0.0", + "inquirer": "^7.0.1", "jsonwebtoken": "^8.5.1", "less": "^3.10.3", "lodash": "^4.17.14", @@ -78,20 +79,20 @@ "morgan": "^1.9.1", "multer": "^1.4.2", "node-fetch": "^2.6.0", - "nuxt": "^2.10.2", + "nuxt": "^2.11.0", "nuxt-express-module": "^0.0.11", - "pg": "^7.14.0", + "pg": "^7.15.1", "sanitize-html": "^1.20.1", "sass-loader": "^8.0.0", - "sequelize": "^5.21.2", + "sequelize": "^5.21.3", "sequelize-cli": "^5.5.1", "sharp": "^0.23.4", "sqlite3": "^4.1.1", "url": "^0.11.0", - "v-calendar": "^1.0.0-beta.16", + "v-calendar": "^1.0.0-beta.23", "vue-awesome": "^4.0.0", "vue-clipboard2": "^0.3.1", - "vue-i18n": "^8.15.1", + "vue-i18n": "^8.15.3", "yargs": "^15.0.2" }, "devDependencies": { @@ -100,18 +101,18 @@ "eslint": "^6.7.2", "eslint-config-prettier": "^6.7.0", "eslint-config-standard": ">=14.1.0", - "eslint-loader": "^3.0.0", - "eslint-plugin-import": ">=2.17.3", + "eslint-loader": "^3.0.3", + "eslint-plugin-import": ">=2.19.1", "eslint-plugin-jest": ">=23.1.1", "eslint-plugin-node": ">=10.0.0", "eslint-plugin-nuxt": ">=0.5.0", - "eslint-plugin-prettier": "^3.1.1", + "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-promise": ">=4.0.1", "eslint-plugin-standard": ">=4.0.1", "eslint-plugin-vue": "^6.0.1", "jsdoc": "^3.6.3", "less-loader": "^5.0.0", - "nodemon": "^2.0.1", + "nodemon": "^2.0.2", "prettier": "^1.19.1", "pug-plain-loader": "^1.0.0", "webpack-cli": "^3.3.10" diff --git a/pages/Authorize.vue b/pages/Authorize.vue new file mode 100644 index 00000000..746c950c --- /dev/null +++ b/pages/Authorize.vue @@ -0,0 +1,52 @@ + + + diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index 61d23b28..a3039681 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -31,11 +31,13 @@ el-tab-pane span(slot='label') {{$t('common.where')}} p(v-html="$t('event.where_description')") - + span {{event.place.name}} el-select.mb-3(v-model='event.place.name' + @keypress.tab='testBlur' @change='placeChoosed' filterable allow-create default-first-option + @blur='testBlur' ) el-option(v-for='place in places' :label='place.name' :value='place.name' :key='place.id') div {{$t("common.address")}} @@ -92,6 +94,8 @@ //- MEDIA / FLYER / POSTER el-tab-pane span(slot='label') {{$t('common.media')}} + div.mb-2 {{$t('event.media_description')}} + img(:src='mediaUrl' @load='imageLoaded') el-upload.text-center( action='' :limit="1" @@ -100,12 +104,10 @@ accept='image/*' :on-remove='cleanFile' :on-change='uploadedFile' - :multiple='false' - :file-list="fileList" - ) + :multiple='false') i.el-icon-upload - div.el-upload__text {{$t('event.media_description')}} - el-button.float-right(@click='done' :disabled='!couldProceed') {{edit?$t('common.edit'):$t('common.send')}} + el-input(v-model='mediaUrl' @blur='checkMediaUrl') + el-button.mt-2.float-right(@click='done' :disabled='!couldProceed') {{edit?$t('common.edit'):$t('common.send')}} diff --git a/server/api/index.js b/server/api/index.js index 18be34fa..55e66ca7 100644 --- a/server/api/index.js +++ b/server/api/index.js @@ -1,6 +1,5 @@ const express = require('express') const multer = require('multer') -const bodyParser = require('body-parser') const cors = require('cors')() const { isAuth, isAdmin } = require('./auth') diff --git a/server/api/oauth.js b/server/api/oauth.js index c58bc3ad..e8277d0c 100644 --- a/server/api/oauth.js +++ b/server/api/oauth.js @@ -1,7 +1,6 @@ const express = require('express') const OAuthServer = require('express-oauth-server') const oauth = express.Router() -const bodyParser = require('body-parser') const oauthController = require('./controller/oauth') const oauthServer = new OAuthServer({ @@ -12,61 +11,30 @@ const oauthServer = new OAuthServer({ }) oauth.oauth = oauthServer -oauth.use(bodyParser.json()) -oauth.use(bodyParser.urlencoded({ extended: false })) +oauth.use(express.urlencoded({ extended: false })) +oauth.use(express.json()) // post token -// oauth.post(oauthServer.authorize()) -oauth.post('/token', (req, res, next) => { - return oauthServer.token()(req, res, next) - .then(code => { - console.error('dopo il token', code) - }) - .catch(e => console.error('nel catch ', e)) -}) +oauth.post('/token', oauthServer.token()) - -/** - * create a new application - */ oauth.get('/authorize', async (req, res, next) => { if (!req.user) { - return res.redirect(`/?ref=login&redirect=${req.path}&client_id=${req.query.client_id}&redirect_uri=${req.query.redirect_uri}`) + return res.redirect(`/login?redirect=${req.path}&client_id=${req.query.client_id}&redirect_uri=${req.query.redirect_uri}`) } - return oauthServer.authorize()(req, res, next).then(code => { - console.error('dentro authorize?', code) - console.error(req.locals) - return - // return res.redirect(`/?ref=authorize&client_id=${req.query.client_id}&redirect_uri=${req.query.redirect_uri}&code=${code}`) - }).catch(e => { console.error('porcodio catch ', e) }) + return oauthServer.authorize() }) oauth.post('/authorize', (req, res, next) => { if (!req.user) { - return res.redirect(`/?ref=login&redirect=${req.path}&client_id=${req.query.client_id}&redirect_uri=${req.query.redirect_uri}`) + return res.redirect(`/login?redirect=${req.path}&client_id=${req.query.client_id}&redirect_uri=${req.query.redirect_uri}`) } - console.error('sono nel post di authorize!') - const ret = oauthServer.authorize() - console.error('PORCODIO ', ret) - return ret(req, res, next).then(code => { - console.error('DAJE CHE ARRIVO QUI ', code) - console.error(req.locals) - next() - }).catch(e => console.error('CATCH ', e)) + + return oauthServer.authorize() }) -oauth.get('/login', (req, res) => { - res.render('login', { - client_id: req.query.client_id, - redirect_uri: req.query.redirect_uri, - redirect: req.query.redirect, - }) -}) - - oauth.use((err, req, res, next) => { - res.status(400).json(err) + res.status(500).json(err) }) // oauth.post('/login', ) diff --git a/server/helpers.js b/server/helpers.js index e1ceb8d7..96c5160b 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -40,6 +40,7 @@ module.exports = { req.settings.user_locale = settingsController.user_locale[req.settings.locale] moment.locale(req.settings.locale) + // TODO: oauth // auth jwt(req, res, async () => { if (!req.user) { return next() } diff --git a/server/model.js b/server/model.js deleted file mode 100644 index a8e87e64..00000000 --- a/server/model.js +++ /dev/null @@ -1,84 +0,0 @@ -const crypto = require('crypto') -const { promisify } = require('util') -const randomBytes = promisify(crypto.randomBytes) - -async function randomString(len = 16) { - const bytes = await randomBytes(len*8) - return crypto - .createHash('sha1') - .update(bytes) - .digest('hex') -} - -const OAuth = { - clients: [ - { clientId : 'confidentialApplication', clientSecret : 'topSecret', - redirectUris : ['https://localhost:13120/asdf', 'https://example-app.com/callback', 'https://oauthdebugger.com/debug'], - grants: ['password', 'authorization_code', 'client_credentials'] - }, - { - clientId: '1766891b7fb5fda4235dc7f0dde70fcd783371c2', clientSecret: 'ed6fdc050a415f178f2ac8428b76734edef75e5c', - grants: ['authorization_code'], redirectUris: ['urn:ietf:wg:oauth:2.0:oob'], scopes: ['write'], state: 'a' - } - ], - tokens: [], - users: [{ id : '123', username: 'thomseddon', password: 'nightworld' }], - - getAccessToken (bearerToken) { - console.error('dentro get access token', bearerToken, OAuth.tokens) - const tokens = OAuth.tokens.filter(token => token.accessToken === bearerToken) - return tokens.length ? tokens[0] : false - }, - verifyScope (accessToken, scope) { - console.error('dentro verify scope', scope) - }, - getRefreshToken (bearerToken) { - console.error('dentro refresh token') - const tokens = OAuth.tokens.filter( token => token.refreshToken === bearerToken ) - return tokens.length ? tokens[0] : false - }, - getClientCredentials () { - console.error('dentro get client credentials') - }, - getClient (clientId, clientSecret) { - console.error(`getClient ${clientId} / ${clientSecret}`) - const clients = OAuth.clients.filter( client => client.clientId === clientId) - console.error(clients) - return clients.length ? clients[0] : false - }, - getAuthorizationCode(authorizationCode) { - console.error('get auth code') - }, - revokeAuthorizationCode (code) { - console.error('dentro revoke auth code ', code) - }, - async createClient (client) { - client.client_id = await randomString(256) - client.client_secret = await randomString(256) - OAuth.clients.push(client) - return client - }, - saveAuthorizationCode(code, client, user) { - console.error('dentro save auth code') - const ret = { - ...code, - user, - client - } - OAuth.tokens.push(ret) - console.error('DIOCANEEEE salvo auth code!', OAuth.tokens) - return ret - }, - saveToken (token) { - console.error('dentro save token') - }, - // saveAuthorizationCode (token, client, user) { - // console.error('dentro save auth code') - // return true - // }, - getUser (username, password) { - console.error('dentro get user') - } -} - -module.exports = OAuth diff --git a/server/routes.js b/server/routes.js index cdf3da2b..8403f16b 100644 --- a/server/routes.js +++ b/server/routes.js @@ -26,29 +26,28 @@ app.use('/favicon.ico', express.static(path.resolve(config.favicon || './assets/ app.use('/logo.png', express.static('./static/gancio.png')) app.use('/media/', express.static(config.upload_path)) -// get instance settings +// initialize instance settings / authentication / locale app.use(cookieParser()) app.use(helpers.initMiddleware) -app.use('/oauth', oauth) - // rss/ics/atom feed app.get('/feed/:type', cors(), exportController.export) // api! app.use('/api', api) +app.use('/oauth', oauth) // federation api / activitypub / webfinger / nodeinfo app.use('/.well-known', webfinger) app.use('/federation', federation) // // Handle 500 -// app.use((error, req, res, next) => { -// debug('Error 500: %s', error) -// res.status(500).send('500: Internal Server Error') -// }) +app.use((error, req, res, next) => { + debug('Error 500: %s', error) + res.status(500).send('500: Internal Server Error') +}) // remaining request goes to nuxt -// first nuxt component is ./pages/index.vue +// first nuxt component is ./pages/index.vue (with ./layouts/default.vue) module.exports = app From 5c4cf2967f14b055b0c68423e2467591b2866e9e Mon Sep 17 00:00:00 2001 From: les Date: Fri, 3 Jan 2020 22:25:39 +0100 Subject: [PATCH 016/598] forgot --- components/Login.vue | 84 -------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 components/Login.vue diff --git a/components/Login.vue b/components/Login.vue deleted file mode 100644 index 40fe6265..00000000 --- a/components/Login.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - From ae2269a8e9cfb85a75c971d941705a78a92addc6 Mon Sep 17 00:00:00 2001 From: les Date: Mon, 13 Jan 2020 11:18:10 +0100 Subject: [PATCH 017/598] [ux] register/login as pages --- components/Nav.vue | 113 ++++++++++++++--------------- pages/Login.vue | 20 ++--- {components => pages}/Register.vue | 29 ++++---- 3 files changed, 78 insertions(+), 84 deletions(-) rename {components => pages}/Register.vue (60%) diff --git a/components/Nav.vue b/components/Nav.vue index 3b41be81..c9c7357d 100644 --- a/components/Nav.vue +++ b/components/Nav.vue @@ -1,77 +1,55 @@ - diff --git a/pages/Login.vue b/pages/Login.vue index 4475a7e6..9f09d746 100644 --- a/pages/Login.vue +++ b/pages/Login.vue @@ -1,7 +1,7 @@ diff --git a/components/Register.vue b/pages/Register.vue similarity index 60% rename from components/Register.vue rename to pages/Register.vue index 82303e88..c95ef06f 100644 --- a/components/Register.vue +++ b/pages/Register.vue @@ -1,31 +1,30 @@ From ce079cac8073f5763901c1e7329cabd5a05c7244 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:13:43 +0100 Subject: [PATCH 020/598] [ux] new style --- assets/style.less | 208 ++++++++++++++++++++++++---------------------- nuxt.config.js | 31 +++---- 2 files changed, 119 insertions(+), 120 deletions(-) diff --git a/assets/style.less b/assets/style.less index b579dabf..cd86fada 100644 --- a/assets/style.less +++ b/assets/style.less @@ -1,120 +1,126 @@ -@home_background: #222C32; -@background: white; -@success: #c7ffbc; +:focus {outline:none;} +::-moz-focus-inner {border:0;} + +blockquote { + border-left: 3px solid grey; + font-style: italic; + color: #666; + padding-left: 1em; +} + +code { + font-family: sans-serif; + display: inline-block; + padding: 0 .4rem; + border-radius: 5px; + font-size: .8rem; + font-weight: 700; + background: rgba(0,0,0,.1); + color: rgba(0,0,0,.8); +} + +html, body { + font-family: sans-serif; + scroll-behavior: smooth; + text-rendering: optimizeSpeed; + background-color: #333; + overflow-y: auto; + scrollbar-width: thin; +} #__nuxt, #__layout { - height: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; +} + +#main { + min-height: 200px; + scrollbar-width: thin; + transition: all .3s; + background-color: white; + &.dark { + background-color: #333; + color: white; + } } -#home { - background-color: @home_background; - min-height: 100%; -} - -a, a:hover { - text-decoration: none; -} - -html, body { - margin: 0px; - background-color: @background; - width: 100%; - height: 100%; - box-sizing: border-box; - font-family: BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif !important; - font-size: 15px; -} - -* { - box-sizing: border-box; -} - -.el-form-item { - margin-bottom: 5px; -} - -.el-main { +#content { + flex-grow: 1; max-width: 1000px; - border-radius: 0px; - margin: auto; - padding: 10px; - overflow: unset; + width: 100%; + margin: 0 auto; +} + +#header, #footer { + color: white; + background-color: #222; + font-size: 18px; + // > *{ + // max-width: 1200px; + // margin: 0 auto; + // } } -.el-select-dropdown { - max-width: 100%; - left: 0px; + +#footer { + a { + color: orangered; + transition: color .4s; + &:hover { + text-decoration: none; + color: orange; + } + } + + #links a { + margin-left: 15px; + } + min-height: 6em; + padding-top: 2em; + font-size: 1em; } + +#header .el-menu--horizontal { + background-color: #222; + color: white; + .el-menu-item, .el-submenu__title { + color: white; + } + + .el-menu-item:not(.is-disabled):focus, + .el-menu-item.is-active, + .el-menu-item:not(.is-disabled):hover, + .el-submenu:focus > .el-submenu__title, + .el-submenu:hover > .el-submenu__title, + .el-submenu.is-active > .el-submenu__title, + .el-submenu.is-opened { + color: white; + background-color: #333 + } +} + .page-enter-active, .page-leave-active { - transition: opacity .2s, transform .3s; + transition: opacity .2s, transform .2s; } .page-enter, .page-leave-active { - transition: opacity .3s, transform .2s; + transition: opacity .2s, transform .2s; opacity: 0; transform: translateX(30px); } -pre { - font-family: BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif !important; - margin-bottom: 0px; - white-space: pre-line; - font-family: unset; +.el-card { + max-width: 700px; + margin: 0 auto; } -.el-message-box { - max-width: 95%; -} - -.el-popover { - word-break: normal; -} - -.el-dialog { - z-index: 100; - max-width: 550px; - .el-dialog__body { - word-break: unset; +.el-menu-item { + a { + color: #303133; + display: block; + text-decoration: none; + text-overflow: ellipsis; + overflow: hidden; } - .el-dialog__headerbtn { - font-size: 27px; - top: 9px; - right: 10px; - .el-dialog__close { - color: red; - // padding: 5px; - // background-color: #f0f0f0; - // border-radius: 22px; - // border: 1px solid #f0f0f0; - } - } - p { - font-size: 16px; - } -} - -.el-input__icon { - font-size: 20px; -} - -@media only screen and (max-width: 768px) { - .el-dialog { - margin-top: 0px !important; - border-radius: 0px; - width: 100%; - } - - html { - font-size: 13px; - } - - .el-main { - margin-top: 0px !important; - border-radius: 0px; - padding: 5px; - } - - .el-menu-item { - padding: 0px 17px; - } -} +} \ No newline at end of file diff --git a/nuxt.config.js b/nuxt.config.js index fadd8bdb..4ef2dc65 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -19,14 +19,15 @@ module.exports = { /* ** Customize the progress-bar color */ - // loading: { color: '#fff' }, - + loading: { color: 'orange', height: '5px' }, /* ** Global CSS */ css: [ 'bootstrap/dist/css/bootstrap.min.css', - 'element-ui/lib/theme-chalk/index.css' + 'element-ui/lib/theme-chalk/index.css', + 'element-ui/lib/theme-chalk/display.css', + '@/assets/style.less' ], /* @@ -42,7 +43,12 @@ module.exports = { ], render: { - compressor: false + compressor: false, + bundleRenderer: { + shouldPreload: (file, type) => { + return ['script', 'style', 'font'].includes(type) + } + } }, /* ** Nuxt.js modules @@ -62,7 +68,7 @@ module.exports = { }, auth: { redirect: { - login: '/?ref=login' + login: '/login' }, strategies: { local: { @@ -81,23 +87,10 @@ module.exports = { ** Build configuration */ build: { - optimization: { - splitChunks: { - cacheGroups: { - element: { - test: /[\\/]node_modules[\\/](element-ui)[\\/]/, - name: 'element-ui', - chunks: 'all' - } - } - } - }, - transpile: [/^element-ui/, /^vue-awesome/], + transpile: [/^element-ui/, /^vue-awesome/, /^@nuxt/], splitChunks: { layouts: true }, - parallel: true, - hardSource: true, cache: true } } From 7c1f1de53fd0a7498d55741f06061fce6df677e1 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:14:52 +0100 Subject: [PATCH 021/598] update deps and add tiptap --- package.json | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 52d7235a..29edd833 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,10 @@ "self-host", "app" ], + "homepage": "https://gancio.org", + "resolutions": { + "prosemirror-model": "1.8.2" + }, "repository": { "type": "git", "url": "https://framagit.org/les/gancio" @@ -49,19 +53,19 @@ ".nuxt/" ], "dependencies": { - "@nuxtjs/auth": "^4.8.4", - "@nuxtjs/axios": "^5.9.0", + "@nuxtjs/auth": "^4.8.5", + "@nuxtjs/axios": "^5.9.3", "accept-language": "^3.0.18", - "axios": "^0.19.0", + "axios": "^0.19.1", "bcryptjs": "^2.4.3", "body-parser": "^1.18.3", "bootstrap": "^4.4.1", "config": "^3.2.4", - "consola": "^2.11.1", + "consola": "^2.11.3", "cookie-parser": "^1.4.4", "cors": "^2.8.5", "cross-env": "^6.0.0", - "dayjs": "^1.8.18", + "dayjs": "^1.8.19", "element-ui": "^2.13.0", "email-templates": "^6.1.1", "express": "^4.17.1", @@ -70,47 +74,48 @@ "express-oauth-server": "^2.0.0", "http-signature": "^1.3.1", "ics": "^2.16.0", - "inquirer": "^7.0.1", + "inquirer": "^7.0.3", "jsonwebtoken": "^8.5.1", "less": "^3.10.3", "lodash": "^4.17.14", "mkdirp": "^0.5.1", + "modern-css-reset": "^1.0.4", "moment-timezone": "^0.5.27", "morgan": "^1.9.1", "multer": "^1.4.2", "node-fetch": "^2.6.0", "nuxt": "^2.11.0", "nuxt-express-module": "^0.0.11", - "pg": "^7.15.1", + "pg": "^7.17.1", "sanitize-html": "^1.20.1", - "sass-loader": "^8.0.0", "sequelize": "^5.21.3", "sequelize-cli": "^5.5.1", "sharp": "^0.23.4", "sqlite3": "^4.1.1", + "tiptap": "^1.26.6", + "tiptap-extensions": "^1.28.6", "url": "^0.11.0", - "v-calendar": "^1.0.0-beta.23", + "v-calendar": "^1.0.1", "vue-awesome": "^4.0.0", "vue-clipboard2": "^0.3.1", "vue-i18n": "^8.15.3", - "yargs": "^15.0.2" + "yargs": "^15.1.0" }, "devDependencies": { "@nuxtjs/eslint-config": "^2.0.0", "babel-eslint": "^10.0.3", - "eslint": "^6.7.2", - "eslint-config-prettier": "^6.7.0", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.9.0", "eslint-config-standard": ">=14.1.0", "eslint-loader": "^3.0.3", - "eslint-plugin-import": ">=2.19.1", - "eslint-plugin-jest": ">=23.1.1", - "eslint-plugin-node": ">=10.0.0", + "eslint-plugin-import": ">=2.20.0", + "eslint-plugin-jest": ">=23.6.0", + "eslint-plugin-node": ">=11.0.0", "eslint-plugin-nuxt": ">=0.5.0", "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-promise": ">=4.0.1", "eslint-plugin-standard": ">=4.0.1", - "eslint-plugin-vue": "^6.0.1", - "jsdoc": "^3.6.3", + "eslint-plugin-vue": "^6.1.2", "less-loader": "^5.0.0", "nodemon": "^2.0.2", "prettier": "^1.19.1", From daebfe378bf83c8c5a580cfdd0ede99a38a59c5c Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:17:38 +0100 Subject: [PATCH 022/598] double page calendar on xl display --- components/Calendar.vue | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/components/Calendar.vue b/components/Calendar.vue index fb7fba4f..cb2bfc96 100644 --- a/components/Calendar.vue +++ b/components/Calendar.vue @@ -2,8 +2,9 @@ #calendar v-calendar( title-position='left' - :locale='$i18n.locale' is-dark + :columns="$screens({ default: 1, lg: 2 })" + :locale='$i18n.locale' :attributes='attributes' :from-page.sync='page' is-expanded @@ -13,8 +14,8 @@ From e8acba60c3f10ebceb52b9c35e6d428401db8e11 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:18:00 +0100 Subject: [PATCH 023/598] new editor component --- components/Editor.vue | 157 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 components/Editor.vue diff --git a/components/Editor.vue b/components/Editor.vue new file mode 100644 index 00000000..2912a75f --- /dev/null +++ b/components/Editor.vue @@ -0,0 +1,157 @@ + + + From 1894993cb75a0016cdd5895c5e3cf25b54dc53fa Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:19:21 +0100 Subject: [PATCH 024/598] lazy event image --- components/Event.vue | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/components/Event.vue b/components/Event.vue index 3364b997..ee145dcc 100644 --- a/components/Event.vue +++ b/components/Event.vue @@ -2,7 +2,7 @@ nuxt-link.event(:to='`/event/${link}`' :class='{ withImg: event.image_path }') //- image - img(v-if='showImage && event.image_path' :src='`/media/thumb/${event.image_path}`') + el-image(v-if='showImage && event.image_path' lazy :src='`/media/thumb/${event.image_path}`') .event-info .content-info @@ -20,7 +20,7 @@ li(v-if='settings.enable_federation && event.resources && event.resources.length') {{$tc('common.n_resources', event.resources.length)}} From 6178b3c3016d21586fdf1395fb1e19f55acfb88e Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:29:51 +0100 Subject: [PATCH 028/598] new modal layout --- layouts/modal.vue | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/layouts/modal.vue b/layouts/modal.vue index f72dd127..4280959f 100644 --- a/layouts/modal.vue +++ b/layouts/modal.vue @@ -1,12 +1,9 @@ - From 2a034a6d2d6a0494f831fdbd3e3ae9ec6d2dee24 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:30:14 +0100 Subject: [PATCH 029/598] new locale strings --- locales/ca.json | 6 +++--- locales/en.json | 9 +++++---- locales/es.json | 2 +- locales/it.json | 20 +++++++++++--------- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index 94ffa5c9..c636712c 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -96,7 +96,7 @@ }, "event": { "anon": "Anònim", - "anon_description": "Pots afegir activitats sense haver de crear un compte o iniciar sessió, però a canvi hauràs d'esperar que algun/a admin la llegeixi i l'aprovi,\n confirmant que és adequada. Demana més feina humana i no podrà ser modificada.

    \n Pots iniciar sessió o crear un compte, però si ho necessites, endavant! Procurarem trigar poc.", + "anon_description": "Pots afegir activitats sense haver de crear un compte o iniciar sessió, però a canvi hauràs d'esperar que algun/a admin la llegeixi i l'aprovi,\n confirmant que és adequada. Demana més feina humana i no podrà ser modificada.

    \n Pots iniciar sessió o crear un compte, però si ho necessites, endavant! Procurarem trigar poc.", "same_day": "al mateix dia", "what_description": "Títol", "description_description": "Descripció", @@ -109,8 +109,8 @@ "not_found": "No s'ha trobat l'activitat", "remove_confirmation": "Segur que vols esborrar l'activitat?", "recurrent": "Periòdica", - "recurrent_event_too": "també les periòdiques", - "past_too": "també les passades", + "show_recurrent": "també les periòdiques", + "show_past": "també les passades", "only_future": "només les futures", "recurrent_description": "Tria la freqüència i els dies", "multidate_description": "Són unes jornades o un festival? Tria quan comença i quan acaba", diff --git a/locales/en.json b/locales/en.json index 1b72658d..5fb26c9d 100644 --- a/locales/en.json +++ b/locales/en.json @@ -67,7 +67,8 @@ "feed_url_copied": "Feed url copied, paste it in your feed reader", "follow_me_title": "Follow updates from fediverse", "follow": "Follow", - "moderation": "Moderation" + "moderation": "Moderation", + "user": "User" }, "login": { "description": "By logging in you can publish new events.", @@ -96,7 +97,7 @@ }, "event": { "anon": "Anon", - "anon_description": "You can add an event without registering or logging in, but in this case you will have to wait for someone to read it \n confirming that it is an event suitable for this space, delegating this choice. Furthermore it will not be possible to modify it.

    \n You can instead log in or register, otherwise go ahead and get an answer as soon as possible.", + "anon_description": "You can add an event without registering or logging in, but in this case you will have to wait for someone to read it \n confirming that it is an event suitable for this space, delegating this choice. Furthermore it will not be possible to modify it.

    \n You can instead log in or register, otherwise go ahead and get an answer as soon as possible.", "same_day": "on same day", "what_description": "Title", "description_description": "Description", @@ -109,8 +110,8 @@ "not_found": "Event not found", "remove_confirmation": "Are you sure to remove this event?", "recurrent": "Recurrent", - "recurrent_event_too": "recurrent events too", - "past_too": "past too", + "show_recurrent": "recurrent events too", + "show_past": "past too", "only_future": "only next events", "recurrent_description": "Choose the frequency and select the days", "multidate_description": "It's a festival? Choose when it starts and when it ends", diff --git a/locales/es.json b/locales/es.json index f0a5511d..f373412f 100644 --- a/locales/es.json +++ b/locales/es.json @@ -78,7 +78,7 @@ }, "event": { "anon": "Anónimo", - "anon_description": "Podés ingresar un evento sin registrarte o iniciar sesión,\n pero en este caso tendrás que esperar a que alguien lo lea para confirmar que\n es un evento adecuado para este espacio, delegando esta elección. Además, no será posible modificarlo.

    \n Si no te gusta, podés iniciar sesión o registrarte ,\n de lo contrario, continúa y recibirás una respuesta lo antes posible.", + "anon_description": "Podés ingresar un evento sin registrarte o iniciar sesión,\n pero en este caso tendrás que esperar a que alguien lo lea para confirmar que\n es un evento adecuado para este espacio, delegando esta elección. Además, no será posible modificarlo.

    \n Si no te gusta, podés iniciar sesión o registrarte ,\n de lo contrario, continúa y recibirás una respuesta lo antes posible.", "same_day": "Mismo día", "what_description": "Nombre evento", "description_description": "Descripción, podés copiar y pegar", diff --git a/locales/it.json b/locales/it.json index ae80cd0a..a63bcd51 100644 --- a/locales/it.json +++ b/locales/it.json @@ -61,14 +61,16 @@ "embed": "Incorpora", "embed_title": "Mostra questo evento sul tuo sito web", "embed_help": "Copiando il seguente codice sul tuo sito web l'evento verrà incluso come qui di lato", - "feed": "Feed rss", + "feed": "Feed", "feed_url_copied": "Feed url copiato, incollalo nel tuo feed reader", "follow_me_title": "Segui gli aggiornamenti dal fediverso", "follow": "Segui", "n_resources": "nessuna risorsa|una risorsa|{n} risorse", "resources": "Risorse", "moderation": "Moderazione", - "authorize": "Autorizza" + "authorize": "Autorizza", + "title": "Titolo", + "user": "Utente" }, "login": { "description": "Entrando puoi pubblicare nuovi eventi.", @@ -86,7 +88,7 @@ "intro": "Contrariamente alle piattaforme del capitalismo, che fanno di tutto per tenere\n i dati e gli utenti al loro interno, crediamo che le informazioni, come le persone,\n debbano essere libere. Per questo puoi rimanere aggiornata sugli eventi che vuoi, come meglio credi, senza necessariamente passare da questo sito.", "email_description": "Puoi ricevere via mail gli eventi che ti interessano.", "insert_your_address": "Indirizzo email", - "feed_description": "Per seguire gli aggiornamenti da computer o smartphone senza la necessità di aprire periodicamente il sito, il metodo consigliato è quello dei Feed RSS.

    \n\n

    Con i feed rss utilizzi un'apposita applicazione per ricevere aggiornamenti dai siti che più ti interessano. È un buon metodo per seguire anche molti siti in modo molto rapido, senza necessità di creare un account o altre complicazioni.

    \n \n
  • Se hai Android, ti consigliamo Flym o Feeder
  • \n
  • Per iPhone/iPad puoi usare Feed4U
  • \n
  • Per il computer fisso/portatile consigliamo Feedbro, da installare all'interno di Firefox o di Chrome e compatibile con tutti i principali sistemi operativi.
  • \n
    \n Aggiungendo questo link al tuo lettore di feed, rimarrai aggiornata.", + "feed_description": "Per seguire gli aggiornamenti da computer o smartphone senza la necessità di aprire periodicamente il sito, il metodo consigliato è quello dei Feed RSS.

    \n\n

    Con i feed rss utilizzi un'apposita applicazione per ricevere aggiornamenti dai siti che più ti interessano. È un buon metodo per seguire anche molti siti in modo molto rapido, senza necessità di creare un account o altre complicazioni.

    \n \n
  • Se hai Android, ti consigliamo Flym o Feeder
  • \n
  • Per iPhone/iPad puoi usare Feed4U
  • \n
  • Per il computer fisso/portatile consigliamo Brief, da installare all'interno di Firefox e compatibile con tutti i principali sistemi operativi.
  • \n
    \n Aggiungendo questo link al tuo lettore di feed, rimarrai aggiornata.", "ical_description": "I computer e gli smartphone sono comunemente attrezzati con un'applicazione per gestire un calendario. A questi programmi solitamente è possibile far importare un calendario remoto.", "list_description": "Se hai un sito web e vuoi mostrare una lista di eventi, puoi usare il seguente codice" }, @@ -97,7 +99,7 @@ }, "event": { "anon": "Anonimo", - "anon_description": "Puoi inserire un evento senza registrarti o fare il login, \n ma in questo caso dovrai aspettare che qualcuno lo legga confermando che si\n tratta di un evento adatto a questo spazio, delegando questa scelta. Inoltre non sarà possibile modificarlo.

    \n Puoi invece fare il login o registrarti,\n altrimenti vai avanti e riceverai una risposta il prima possibile. ", + "anon_description": "Puoi inserire un evento senza registrarti o fare il login, \n ma in questo caso dovrai aspettare che qualcuno lo legga confermando che si\n tratta di un evento adatto a questo spazio, delegando questa scelta. Inoltre non sarà possibile modificarlo.

    \n Puoi invece fare il login o registrarti,\n altrimenti vai avanti, lo confermeremo appena possibile. ", "same_day": "Stesso giorno", "what_description": "Nome evento", "description_description": "Descrizione, dajene di copia/incolla", @@ -110,9 +112,8 @@ "not_found": "Evento non trovato", "remove_confirmation": "Sicura di voler eliminare questo evento?", "recurrent": "Ricorrente", - "recurrent_event_too": "mostra appuntamenti fissi", - "past_too": "anche passati", - "only_future": "solo prossimi eventi", + "show_recurrent": "appuntamenti ricorrenti", + "show_past": "eventi passati", "recurrent_description": "Scegli la frequenza e seleziona i giorni", "multidate_description": "Un festival o una tre giorni? Scegli quando comincia e quando finisce.", "multidate": "Più giorni", @@ -165,7 +166,8 @@ "user_blocked": "L'utente {user} non potrà più aggiungere risorse", "filter_instances": "Filtra istanze", "filter_users": "Filtra utenti", - "instance_name": "Nome istanza" + "instance_name": "Nome istanza", + "favicon": "Logo" }, "auth": { "not_confirmed": "Non abbiamo ancora confermato questa mail...", @@ -186,7 +188,7 @@ "confirm": { "title": "Conferma utente", "not_valid": "Mmmmm qualcosa è andato storto.", - "valid": "Il tuo account è stato confermato, ora puoi entrare" + "valid": "Il tuo account è stato confermato, ora puoi entrare" }, "ordinal": { "1": "primo", From 0ea0eba35cbeecf2f2d4eaa36d4c0486a392d444 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:31:28 +0100 Subject: [PATCH 030/598] enable `about` mod from ui --- pages/about.vue | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pages/about.vue b/pages/about.vue index 9c750384..038295fa 100644 --- a/pages/about.vue +++ b/pages/about.vue @@ -1,16 +1,24 @@ - From eb65ccbf72438a03272c779bc1b65250c8de1661 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:33:56 +0100 Subject: [PATCH 033/598] a new search experience --- components/Search.vue | 107 ++++++++++++++++++++++++++++++------------ 1 file changed, 78 insertions(+), 29 deletions(-) diff --git a/components/Search.vue b/components/Search.vue index 7c1adcb2..0216f44c 100644 --- a/components/Search.vue +++ b/components/Search.vue @@ -1,33 +1,35 @@ + From 2272dc944c5871deaaa66c1b4ef1e3d562a00dfc Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:37:25 +0100 Subject: [PATCH 034/598] sanitizehtml on event description --- server/api/controller/user.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/server/api/controller/user.js b/server/api/controller/user.js index 05bbbfce..3bb60008 100644 --- a/server/api/controller/user.js +++ b/server/api/controller/user.js @@ -4,6 +4,7 @@ const crypto = require('crypto') const jwt = require('jsonwebtoken') const { Op } = require('sequelize') const jsonwebtoken = require('jsonwebtoken') +const sanitizeHtml = require('sanitize-html') const config = require('config') const mail = require('../mail') const { user: User, event: Event, tag: Tag, place: Place } = require('../models') @@ -65,12 +66,15 @@ const userController = { * add event */ async addEvent (req, res) { + if (req.err) { + debug(req.err) + return res.status(400).json(req.err.toString()) + } const body = req.body - const eventDetails = { title: body.title, // remove html tags - description: body.description ? body.description.replace(/(<([^>]+)>)/ig, '') : '', + description: sanitizeHtml(body.description), multidate: body.multidate, start_datetime: body.start_datetime, end_datetime: body.end_datetime, @@ -88,8 +92,10 @@ const userController = { // create place if needed let place try { - place = await Place.findOrCreate({ where: { name: body.place_name }, - defaults: { address: body.place_address } }) + place = await Place.findOrCreate({ + where: { name: body.place_name }, + defaults: { address: body.place_address } + }) .spread((place, created) => place) await event.setPlace(place) event.place = place @@ -124,6 +130,9 @@ const userController = { }, async updateEvent (req, res) { + if (req.err) { + return res.status(400).json(req.err.toString()) + } const body = req.body const event = await Event.findByPk(body.id) if (!req.user.is_admin && event.userId !== req.user.id) { @@ -140,15 +149,15 @@ const userController = { body.image_path = req.file.filename } - body.description = body.description - .replace(/(<([^>]+)>)/ig, '') // remove all tags from description + body.description = sanitizeHtml(body.description) await event.update(body) let place try { - place = await Place.findOrCreate({ where: { name: body.place_name }, - defaults: { address: body.place_address } }) - .spread((place, created) => place) + place = await Place.findOrCreate({ + where: { name: body.place_name }, + defaults: { address: body.place_address } + }).spread((place, created) => place) } catch (e) { console.log('error', e) } From 7e28c3cf7d1e4765fbc16edb483c374972714e63 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:38:03 +0100 Subject: [PATCH 035/598] [fedi] improve moderation interface --- components/admin/Federation.vue | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/components/admin/Federation.vue b/components/admin/Federation.vue index 4e92f88b..b906e6f7 100644 --- a/components/admin/Federation.vue +++ b/components/admin/Federation.vue @@ -49,11 +49,11 @@ el-input(v-model='usersFilter' :placeholder="$t('admin.filter_users')") client-only el-pagination(v-if='enable_federation && users.length>perPage' :page-size='perPage' :currentPage.sync='instancePage' :total='users.length') - el-table(:data='paginatedSelectedUsers' small) + el-table(:data='paginatedSelectedUsers' small) el-table-column(label='User' width='150') template(slot-scope='data') span(slot='reference') - a(:href='data.row.object.id' target='_blank') {{data.row.object.name}} + a(:href='data.row.object.id' target='_blank') {{data.row.object.name}} small ({{data.row.object.preferredUsername}}) el-table-column(:label="$t('common.resources')" width='90') template(slot-scope='data') @@ -88,7 +88,6 @@ From 056dc421e1bd8045af659b30de2807ef1a2007ff Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:39:37 +0100 Subject: [PATCH 037/598] [admin] remove pagination if not needed --- components/admin/Places.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/admin/Places.vue b/components/admin/Places.vue index 0bf91ffa..9fa10647 100644 --- a/components/admin/Places.vue +++ b/components/admin/Places.vue @@ -20,10 +20,10 @@ @click='place = data.row') {{$t('common.edit')}} client-only - el-pagination(:page-size='perPage' :currentPage.sync='placePage' :total='places.length') + el-pagination(v-if='places.length>perPage' :page-size='perPage' :currentPage.sync='placePage' :total='places.length') diff --git a/pages/admin.vue b/pages/admin.vue deleted file mode 100644 index f45c808f..00000000 --- a/pages/admin.vue +++ /dev/null @@ -1,121 +0,0 @@ - - From 3ff4b9dcefee92bdbb58e6ba1b49cc188511a45a Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:42:44 +0100 Subject: [PATCH 040/598] minor --- pages/Authorize.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pages/Authorize.vue b/pages/Authorize.vue index 746c950c..3f0d4d7b 100644 --- a/pages/Authorize.vue +++ b/pages/Authorize.vue @@ -25,21 +25,20 @@ export default { layout: 'modal', name: 'Authorize', middleware: ['auth'], - head: { title: 'Authorize' }, - data () { - return { - client: { name: 'Test' } - } - }, async asyncData ({ $axios, query }) { // retrieve client validity try { const client = await $axios.$get(`/client/${query.client_id}`) return { client } - } catch(e) { + } catch (e) { console.error(e) } }, + data () { + return { + client: { name: 'Test' } + } + }, computed: { ...mapState(['settings']), authorizeURL () { @@ -48,5 +47,8 @@ export default { return `oauth/authorize?${query}` } }, + head () { + return { title: `${this.settings.title} - Authorize` } + } } From 58811777a80c0543eb3116a54470b10a692890c0 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 15 Jan 2020 23:46:47 +0100 Subject: [PATCH 041/598] minor --- pages/export.vue | 60 +++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/pages/export.vue b/pages/export.vue index 850c4487..40d7234a 100644 --- a/pages/export.vue +++ b/pages/export.vue @@ -1,9 +1,7 @@ \ No newline at end of file + diff --git a/pages/event/_id.vue b/pages/event/_id.vue index 8c4709bc..d25f1c16 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -39,8 +39,7 @@ el-menu-item(@click='showEmbed=true') {{$t('common.embed')}} //- TODO (ics of recurrent events) - //- el-menu-item(v-if='!event.recurrent') - el-menu-item + el-menu-item(v-if='!event.recurrent') a(:href='`${settings.baseurl}/api/event/${event.id}.ics`') {{$t('common.add_to_calendar')}} EventAdmin(v-if='is_mine' :event='event') @@ -96,7 +95,7 @@ export default { : event.start_datetime // const now = new Date() // const events = await $axios.$get( - // `/event/${now.getMonth()}/${now.getFullYear()}` + // `/event/${now.getMonth()}/${now.getFullYear()}` // ) // store.commit('setEvents', events) return { event, id: Number(id) } @@ -281,7 +280,7 @@ export default { await this.$axios.post('/instances/toggle_user_block', { user_id: resource.apUserApId }) Message({ message: this.$t('admin.user_blocked', { user: resource.apUserApId }), type: 'success', showClose: true }) }, - async deleteResource (resource) { + deleteResource (resource) { MessageBox.confirm(this.$t('admin.delete_resource_confirm'), this.$t('common.confirm'), { confirmButtonText: this.$t('common.ok'), diff --git a/pages/export.vue b/pages/export.vue index 40d7234a..64ae3ad5 100644 --- a/pages/export.vue +++ b/pages/export.vue @@ -83,18 +83,18 @@ export default { } if (this.filters.places.length) { - params.push(`places=${this.filters.places}`) + params.push(`places=${this.filters.places.map(p => p.id)}`) } if (this.filters.tags.length) { - params.push(`tags=${this.filters.tags}`) + params.push(`tags=${this.filters.tags.map(t => t.id)}`) } return `` }, link () { - const tags = this.filters.tags.join(',') - const places = this.filters.places.join(',') + const tags = this.filters.tags.map(t => t.id).join(',') + const places = this.filters.places.map(p => p.id).join(',') let query = '' if (tags || places) { query = '?' diff --git a/pages/index.vue b/pages/index.vue index 1ab3b5f4..4adf7ef1 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -3,13 +3,12 @@ + + + + + + + + + + + +Changelog | Gancio + + + + + + + + + + + + + + + +
    + +
    + +
    + + + +
    +

    All notable changes to this project will be documented in this file.

    + +

    unreleased

    +
      +
    • oauth server implementation
    • +
    + +

    0.17.14

    +
      +
    • [locale] add catalan
    • +
    • [fix] fedi outbox
    • +
    + +

    0.17.12

    +
      +
    • [ui] add admin section on event page in mobile #63
    • +
    • [fix] remove username from users
    • +
    + +

    0.17.11

    +
      +
    • [refactor] s/fed_user/ap_user
    • +
    • [fedi] admin moderation
    • +
    + +

    0.17.10

    +
      +
    • [refactor] s/comment/resource/
    • +
    • [refactor] remove username field
    • +
    • [doc] about and federation
    • +
    + +

    0.17.8

    +
      +
    • [fix] use thumb in head og:img only
    • +
    + +

    0.17.7

    +
      +
    • [fix] #58 wrong url for RSS feed
    • +
    + +

    0.17.5

    +
      +
    • [fedi] comments moderation
    • +
    • [fedi] user moderation
    • +
    • [fedi] instance moderation
    • +
    • [hotfix] cli setup
    • +
    • [doc] fix debian upgrade
    • +
    • [fix] comment ap_id key length
    • +
    • [fix] fediverse signature
    • +
    • [fedi] better /inbox /followers response
    • +
    + +

    0.17.0

    +
      +
    • [feat] add rss link @homepage
    • +
    • [ui] add lot of explanation text
    • +
    • [ui] show copied messages
    • +
    • [admin] show n of unconfirmed users/events
    • +
    • [ui] spinner while event image is loading
    • +
    • [fedi] add follow me dialog in event
    • +
    • [fix] do not add reminders in full ics export
    • +
    • [fix] remove spaces from hashtags sent via AP
    • +
    • [fix] #56 unconfirmed event sent via ap
    • +
    • [fix] localPosts/comments in fediverse stats
    • +
    + +

    0.16.0

    +
      +
    • [feat] embed event as widget in external website
    • +
    • [fedi] instances moderation in admin
    • +
    • [fix] toggle event visibility by owner
    • +
    • [fedi] manage unboost
    • +
    • [refactoring] auth as middleware
    • +
    + +

    0.15.7

    +
      +
    • [fix] minor
    • +
    + +

    0.15.6

    +
      +
    • [fix] tags in event
    • +
    + +

    0.15.5

    +
      +
    • [model] migrations setup
    • +
    • [feat] embeddable event widget/iframe
    • +
    + +

    0.15.2

    +
      +
    • [fix] delete event
    • +
    • [fix] wrong html hierarchy
    • +
    + +

    0.15.0

    +
      +
    • [fix] backtop icon on mobile
    • +
    • [fix] webfinger nodeinfo return real node info
    • +
    • [fix] register email confirmation
    • +
    • [feat] add federation settings (enable comments/boost/like)
    • +
    • [feat] new event page layout
    • +
    • [feat] could download .ics of event
    • +
    • [feat] add cors to feed requests
    • +
    • [refactoring] settings middleware, cleaning codebase
    • +
    + +

    0.14.18

    +
      +
    • [improve] better quality for images
    • +
    • [fix] password recovery email
    • +
    • [feat] new action field for notification
    • +
    • [feat] add DEBUG env variable in docker-compose.yml
    • +
    • [style] fixed width in confirmation events table
    • +
    • [fix] #38 timezone issue in rss export and using tor…
    • +
    + +

    0.14.17

    +
      +
    • [fix] image previews from external website
    • +
    • [fix] docker-compose postgresql docs
    • +
    • [improve] export white logo to fediverse
    • +
    + + + +
    +
    +
    +
    + + + diff --git a/docs/_site/config.html b/docs/_site/config.html index 1cff10d1..be0956ae 100644 --- a/docs/_site/config.html +++ b/docs/_site/config.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/dev.html b/docs/_site/dev.html index 6717b348..6553b47f 100644 --- a/docs/_site/dev.html +++ b/docs/_site/dev.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + @@ -378,6 +406,10 @@ + + + + diff --git a/docs/_site/dev/locales.html b/docs/_site/dev/locales.html index 9ab0d5b2..2d099d85 100644 --- a/docs/_site/dev/locales.html +++ b/docs/_site/dev/locales.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/dev/migration.html b/docs/_site/dev/migration.html index f068c838..1265c495 100644 --- a/docs/_site/dev/migration.html +++ b/docs/_site/dev/migration.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/dev/structure.html b/docs/_site/dev/structure.html index ea61733a..5c96d8e0 100644 --- a/docs/_site/dev/structure.html +++ b/docs/_site/dev/structure.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/federation.html b/docs/_site/federation.html index fb7b5f93..b6de800f 100644 --- a/docs/_site/federation.html +++ b/docs/_site/federation.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/feed.xml b/docs/_site/feed.xml index add088c3..ed7fe771 100644 --- a/docs/_site/feed.xml +++ b/docs/_site/feed.xml @@ -1 +1 @@ -Jekyll2019-12-06T00:50:52+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file +Jekyll2020-01-21T01:24:44+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file diff --git a/docs/_site/index.html b/docs/_site/index.html index 9d85c031..3cf52551 100644 --- a/docs/_site/index.html +++ b/docs/_site/index.html @@ -151,6 +151,10 @@ + + + + @@ -224,6 +228,10 @@ + + + + @@ -260,6 +268,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/install.html b/docs/_site/install.html index be401093..30edc7e2 100644 --- a/docs/_site/install.html +++ b/docs/_site/install.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/install/debian.html b/docs/_site/install/debian.html index eb009961..47003fe3 100644 --- a/docs/_site/install/debian.html +++ b/docs/_site/install/debian.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/install/docker.html b/docs/_site/install/docker.html index 47eda038..3a93e256 100644 --- a/docs/_site/install/docker.html +++ b/docs/_site/install/docker.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/install/nginx.html b/docs/_site/install/nginx.html index 5341a62d..9573040d 100644 --- a/docs/_site/install/nginx.html +++ b/docs/_site/install/nginx.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/instances.html b/docs/_site/instances.html index 7c6feecc..f45577e9 100644 --- a/docs/_site/instances.html +++ b/docs/_site/instances.html @@ -149,6 +149,10 @@ + + + + @@ -222,6 +226,10 @@ + + + + @@ -258,6 +266,26 @@ + + + + + + + + + + + + diff --git a/docs/_site/oauth.html b/docs/_site/oauth.html new file mode 100644 index 00000000..b859bc26 --- /dev/null +++ b/docs/_site/oauth.html @@ -0,0 +1,438 @@ + + + + + + + + OAuth - Gancio + + + + + + + + + + + + + + + + + + + + +OAuth | Gancio + + + + + + + + + + + + + + + +
    + +
    + +
    + + + +
    +

    OAuth

    +

    An open standard for token-based authentication and authorization on the Internet.

    + +

    Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests.

    + +

    To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2.

    + +

    Create client

    +

    Create a new application to obtain OAuth2 credentials.

    + +

    POST

    + +

    /api/client

    + +

    Request parameters

    + + + + + + + + + + + + + + + + + + + + + + + + +
    client_namestringA name for your application
    redirect_uristringWhere the user should be redirected after authorization
    scopesstringSpace separated list of scopes. If none is provided, defaults to write as it’s the only supported scope!
    websitestringA URL to the homepage of your app
    + +

    Example

    +
    curl -X POST \
    +        -d 'client_name=Wordpress Event Manager' \
    +        -d 'redirect_uri=https://noblogs.org/' \
    +        -d 'website=https://myapp.example' \
    +        http://localhost:13120/api/client
    +
    + +

    Returns

    +

    Application, with client_id and client_secret

    + +
    {
    +   "name" : "Wordpress Event Manager",
    +   "scopes" : "write",
    +   "website" : "https://myapp.example",
    +   "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4",
    +   "redirect_uri" : "https://noblogs.org",
    +   "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d"
    +}
    +
    + +

    List of scopes

    +
      +
    • write
      +Grant access to add/update events.
    • +
    + +

    Authorize a user

    +

    Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. +The authorization code can be used while requesting a token to obtain access to user-level methods.

    + +

    GET

    +

    /authorize

    + +

    Request parameters

    + + + + + + + + + + + + + + + + + + + + + + + + +
    response_typestringShould be set equal to code
    redirect_uristringWhere the user should be redirected after authorization
    scopestringShould be write
    client_idstringClient ID, obtained during app registration.
    + + + + +
    +
    +
    +
    + + + diff --git a/docs/assets/css/fa.min.css b/docs/assets/css/fa.min.css new file mode 100644 index 00000000..540440ce --- /dev/null +++ b/docs/assets/css/fa.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/docs/assets/css/premonition.css b/docs/assets/css/premonition.css new file mode 100644 index 00000000..04f5bcba --- /dev/null +++ b/docs/assets/css/premonition.css @@ -0,0 +1,90 @@ +.premonition { + display: grid; + grid-template-columns: 43px auto; + padding-top: 13px; + padding-bottom: 6px; + margin: 30px 0 30px 0; + background-color: #e3edf2; + border-left: 4px solid #5bc0de; + color: #5bc0de; +} + +.premonition code { + background-color: #fff; + color: #5bc0de; +} + +.premonition .header { + font-weight: 700; + font-size: 15px; + color: #5bc0de; +} + +.premonition .fa { + font-size: 18px; + opacity: .3; + padding-top: 2px; + padding-left: 20px; +} + +.premonition .content { + color: rgba(0, 0, 0, 0.5); + padding-right: 40px; +} + +.premonition.info { + background-color: #f3f8f3; + color: #50af51; + border-color: #50af51; +} + +.premonition.info a { + color: #50af51; + text-decoration: underline; +} + +.premonition.info code { + color: #50af51; +} + +.premonition.info .header { + color: #50af51; +} + +.premonition.warning { + background-color: #fcf8f2; + color: #f0ad4e; + border-color: #f0ad4e; +} + +.premonition.warning a { + color: #f0ad4e; + text-decoration: underline; +} + +.premonition.warning code { + color: #f0ad4e; +} + +.premonition.warning .header { + color: #f0ad4e; +} + +.premonition.error { + background-color: #fdf7f7; + color: #d9534f; + border-color: #d9534f; +} + +.premonition.error a { + color: #d9534f; + text-decoration: underline; +} + +.premonition.error code { + color: #d9534f; +} + +.premonition.error .header { + color: #d9534f; +} diff --git a/docs/assets/fonts/FontAwesome.otf b/docs/assets/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..401ec0f36e4f73b8efa40bd6f604fe80d286db70 GIT binary patch literal 134808 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 literal 0 HcmV?d00001 diff --git a/docs/assets/fonts/fontawesome-webfont.eot b/docs/assets/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..e9f60ca953f93e35eab4108bd414bc02ddcf3928 GIT binary patch literal 165742 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

    5q!RY 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 + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/fonts/fontawesome-webfont.ttf b/docs/assets/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mRO}xo^G_%I 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/docs/assets/fonts/fontawesome-webfont.woff2 b/docs/assets/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 zcmV(81_!itTT%&fM`8Do zgetlXfhX-f>pHa>CezJ5a+CKJB5E?t-D3Q@I zv;Az_{%F*wqQWVk+*x^)@=9sx>ldws&U_`?fwx|)6i0%hGq@6No|Wjj+Lhc2#LbXI zik@&>S#lthOy5xS4viawbfqcF5t#22r#4c;ULsQqOn&iMQrAORQWXh`G=YxhM*4YN zTfgWxZlU6?d>wP(yNq!jqfNVxB}>Ww7cSen4lE1$g!lMN&~*PN_7ITCO&u%|6=U~^ zD`NV@*N5j%{d4(V*d&F9*Lp4o^=-wV4E$&&XJX#);dbqZ^8pUYCyEa?qdKs=!}D|N zZKGn0G1#bWFe1l-8nC}AR*a~P9;0KUBrGsNR8Um3F%kp&^sGD!?K|!B(qItgwkPpO z4nOg8&Z#<)4^Bj%sQjrANfD$Zj098^i(7$$Vl;{o&HR7r?C&hE&b-&}y`y4mHj%mu zNlfW!ecOyC;56fuZ7e6t7R&P^z1O9)e^Pe=qGENxwk%7Q3&sYU;&zJz+X!u6Ex^F$ zTu6(Z`;JIR{;Knn>IcTcKbV%&ZSxB`P>8MADLLm#sD>oQy@;IWvGh3j=*Qa5&VIQ& z#BvplZofSw5gN50lul%1ZW|#duBPzgJG1nxIGMaB*-obI9wC1%7zRoi%C^%k;Mn?+ z?pUuq3@j1^4v?E3B49cgqW>EY2?-#3jqje^;JgycOCcwp0HG~LNR*rji6bO_n_6Fl zxt$OawF6EyR#iAg$gdotjwKXO)cf75+S~gE2n>cpa0mh<1W_5Hw7c36opP+~qRPFS z?z(HcYuX#9GugKj(K=EQB_0sAfiipahu*36k{xIzyD2!y5%vK1@c|DQ3Q0^$kT!Po zBklXM?*0ZWJJ6;!hoDZHGR|mrw+{{o{_lUy{_6}+Pm!l|BNl}Q;&@bv@2Wy(0-c_O zab6Z9oUWgiKYRW)Vv0%P;3X|rT9E6xVx&Q%6AWJDG0oX-H5vJ?>5A8;PEnm%C;H~y z%@URb{E<@x+!!CGA#@@j24G?{>Gvg*2lVeVHM;^7(Pnl#tDV)(Y|gCiIh;CbXJ$WV za+~#V|9GDufDe2U{2(L>iu$ z&FbBmZ9gV+TlVF2nNyNeYL2HloUh~eKdpS)>J9Pm#Xd(4%myqFVno%qUa9n|Ua803 z8#-)?GmgDZL7HHzH4B_FHnRat`EXP62|?edFIDRb!q%9yytA|?Ib5`-)rNGqg%GbH z-}d(Uw;KH$fouQgEh;fvK+gfZPMGsl{cktu>gD1?zL z`z7_05U{qkjReFC1qI#x+jpODe!iG=?eIufIBbyAS`i6yq~pK;J!P{R?B6jf<_85Y z$&N8sKi05v?h+0-IZ#Z-(g8koZ#f{v7%?Dp!%F^s91LTw|BvSLb7Oj@878i9HK*kSp)6{%ZXlv-PQ)RD zE`x4f_xM$H9{@mn{1`uWwLbR;xgELO9FcMuRbkvnQXmT&j}ZE~*Z9?u0F(1c4Md6G z%ZpLJy?$`%3V_^=J3F{;`T31Z7#Ad=bomK731~(`S)uLTR8OErP908ueHZaDB4D$q z{GZri&j-sW%|A#W5to*SAH-ai&E<86{%v3LDwPh%=3Mm7wrS#iOV1$&8oKgshx_jMlowl4ED4$f#L1!t6C1g9p~=ODPt z5-F*yQZ*RmNQ`~4r~k{Ouxs3@+Z>Q5N}1kIzW_;y+Y`2(U+=Sj1(9)2Vkg!}$DaT~ zSw&5w0~|KUc7%a7st`^}4doR9Pl!$j8b%9FcqlQFIssg|->XC5YmQ@}VmJj+^a&GW z;TT&?6ewkE94j()E$+}^)|h0Xjx{@?P9)U!BBDsDj}WU31 zAtcV{=d|bI-bs8=m>_-=CKKcXWW_GX0~^$^=>jcb2lM)283`*Z!V{7?x-M-}_~|s` zV|lNhxg(2J)xt(s?g(|g4crMAX)o}cuastffHd9kY=i3#SX1;l!-O06F-4v5y)!_N z{n~32h};!G7bhd5ytZSkz1eQ+sUW)X74K7DJFF%9?n#Q!!7ID?F7r$p*h2z%vFq+0 z9=`hOhOu`E+Rawmf`Ea#sNtl*!}&#cW`0Ouz3DI?ydh+i=s;0>PiQfT7Zu*A>rw!Z2oWMZdTlLANQLT4}czIhYZic*axDrD;QpTldic#?)QnYZQ#V&@GPdWKu$ce zkR96D(D?F+uOEL7E{&8{@#anN+7VOiE7M#=o-3l-Qlfm(Hnj`lCvjX<;N1eImGc}P zIfq1q23S0QB<*mCfZhipyXl3dlKdo_(zgrVEctLByL0)aRMXBH-Ttp)yZ_WqYe|tF zU*@4;)#eID=!hTcSCgMs|CA-!(RT=~eyOCyMAVSk!pq$%^Rswq@*cQ(TXI^ehX9#d zQzf)Vo7@<4U`9OSg`E*=es@n8G*SbT@I9!qVekl|qYka=BE@A6$s=C?(x-c+DlyNW} z6eaQe@Drh#XmE?Ex(!VKoZcdgD?X0w=CviN3tmmjikMECbJNHMagMY-l@hQIzV7AZ zriQRf5j1k=Eh_KlCFt5{BiAK6a8T){lxWsNJ@?M~+S(158s#PwDXC&%gvLuu_&~q; zp5%18A)_>(Gy@` zHu}fy7?5gdqUqRaZ9G+VYFVjT`f3hBTtJLx%QHo4W^k7Hn4dbj+U@EPSKG&~pSs!K zvyPmU&Tyr~vom3Dulo^!F^FVgi})a%1Gn9)rTvJRN`lw2KOkz(aW}5MO~dBSW@edL zwPwp4)N=wJup1;S7@U)OkZj2gQGo~o4#o=@iYEeNjFZoLvW2r$?(LKzQYnI52$jlzP&K3-Fs?@ z8TYz{a*Ip6o|)y)qHif|*~IjRGj3tOR55>Cr^87ZMJVZQz4x-c--DZz!bJ3J`mBFt zv$MzMB*TT@cUYc?%vG%XC_t5juJ=v#VIpp<4lLvW$%%|VH?JfU3&D=q@FkudiARUh(d2N+ zWLd~2X5t4S?fb`JHk6Khs0b;)4m))>Bf>MuG>~md#IxJ@3UBxJiBI@&t;m6*b~tLF z>Y4m_C`-#PTHIv21B#D$$;E^HZ8uiYUtFhV*G%O%3~-xR^LiE@?1e}-zAdW`mbEM> zF-u5dt!0p?EOIRw9HXESaG^}g@5b$*Gd<>1m;%N!sdSMt*}PbmYdWd4wf_iOfHlC+ za|MYGa1MylQ*%_SxCI*3>pCu7wYNkflt8fcEw)9s%#j8m5R?-^jqs5&y2-XJ@J1PZ zvCEQxGD63Ll8sRsnbjBI1u1mJ!>4@OBQ%73++6qLsDSXuV7F#t5G=NzBh&|HiRm#q z*)7%le!&>OD#^0421Im4)tJOE2i~}o^A-DsEaeX+t0KZ z{sQInfSneVRDtp{f^<>g*rTZi2sAuCI!Z9Zh$ZFSky>G5VCcOA>UPbn{DxunR4-Zq z0{Rr3Vcwm`(344N37c0jkQV&${exerkPtp8!}^!LNFtPq`QzzulIshDd^c?rMzvmA z&&_^jixC$vO7ZGm0Le*_7u+*exgqHorQCbdJY~!;JgCi-!q5HtGLD2^A9dP#_`PVfh~Qf+*{6POoKUi6l2P%*Hl&QKAyfLqkaIKd`D8JY1@={Zhq*1zZjQU5-VVG9EdQhh(N}S^W*!YLJe?QZ~`l?e_yw z5+Rt%0P61dAXbLEnF=K$2o+w?V3$raPx6eS5Bi3KtXuINb~@n7ggV*iUfP^;*T3fx zK(YWg|IErMMW^{br`nI~*hvLG+;Qa(JTE9Xz2mD|`K zWkMsBLSxbz*}wwmYD`=a5~IW|zFKINTi5zYJdLXS5AlQ;aj16QewJ%pn@7XW)l@{k zKU1m8+14)_#x2y>CEb#Vl-cMv42b@BrfGab7RyPY#BuR=W2k^v0h<(f44SbZ&kQd& z1c7+0f=Eva?9UId@{fgyyLhy>XLZ>Hs_gVQ>JLK39^$?US5+# zF8FwgP0>wLKjyriCrA1t{C?ppovgaV>1c~smv@h!4uR$(`2`$DeE7c~B> zpO)wsEU7ZQ#)-uJ6()96NKJ8Y@H7-Z0#aPGy|SvlSYbSo*fbFCmK;D$X{<=pL|?w> z37bU`XR6OqiFvV2n$yv2RQ}kYO5LsvtCo2WW6I7VnMg|XEFd+Y{o1b`B?Ku6B<2+= z&U7;n*3GsPjMqSY02HvKv_gCJS?}VwnX)lP$9Q?8>7cln_TCYaRXg*#;^hb%1uH+IT+qbi5QUIEkAPwUL- zZcK{joDF?6iF-BK80ny(qch>Bj2#sVh;E9olq4i9E2BhC2h@ZuNbOcWnAb?Aj+ol{ zPjg%dw*~)|Ezvu`S2h4n_?1nG-8izHMroCi)H}Y7r8gOC^D?nEB?8ux%nux4T`W2w zjmomxy+te?pWb^_g#G~wZee%3vH68gXQ75Jt@23+IdVE`poA6wl8hR#JV_HpwK4Eu zBw$Qpa>tT{f!Cet&Rr4Zc;X#7JyIEVCMr=i=zs(;dVe1C%lLUbh~NS0gJ4a3_SBi0 zWKV|KrDg~RR0H=-#?#LMUi65trDJ==U20Be7 z%Xwpj z8rGRuVi>6*eIn2 z4sdTqnx|BWhY_zMYaCA7zUpjza))jPvt-vupa&k7+<6n*ist$5`NN|BwO~KBX%LYryjwYCD`L@BOz&Y#&6yLk zrl09#3<5$~a4xgYhziDTTr}+GvxUZ_irgNJWb6?^#5mb!Oz(fO^4&7G%H z5^GS_GXIRAC_Q6#bn~Jjo?A1S$rmQJt!U~*P6dbvJ-70Rj*C#qoAg1nM--Cz!Y317 z=u#u7#!Wgd*X$9WGk^)j?$&fleixkNGkSM;Ai$K^JD4}R=>kur91A#{$yq51$wX5{ z_^yQCFMy;I)XX=RX%FBGjUjh=$~M62v?QPtjW|Ux>QrIgjQe~*2*&>nXZq^b5AiNL zZOI)6wC_3KIl*(?NODXbHzum22a=JFGaEv41mKQ*TW=5nCK7LT+EZuu)vXw=D|?|q zMZe$WYg*z7q#{n@ie%~;HG`r$nwUvewW8XJl|HLR?P9D;g~!gQW+^ITmZnEFJoC&$ zpqK!kl`d!W6#u8;k_s8NrGXb9K``UKExyy)qZX#Ac7FthR3Nwo1`lL3ODL!o z#aVG+vZ|XXb=~EAEWJ7~DkOX|><)vPi!TI8y2~t+U`4!!=-3qTcu*UzvmX| zU;vxoFY7w$fXLF*)+alS*@;#LhY>_6%d`y63v$W)kPx*5f^bYS(x#$=iQiEsSbWTj#TRZs?$7t8|iN~L%c(PyNt zN>cc8olk|i&vOa$9mc_tq1qTUO?Q~7+#U@N=prKaG!!!T;ppICO~e}UM7l3dA&J#? zf-}{*xAKAEE{qjsE0aKYPnTB6aq63DUe`n4s;NtDuJ@l2EaI^^NCY{ITBxi%Cb)05 zg&!!x67sqr4))=f2=^B;|&U9nAtxK%O?JrH(qLN-KLYGA2ys`5Pbca_F5=9yX0 zI@KWOZ;?E|06C&Ni~*hajz+-M`jaFaJ2KXs*J`w}5c=M_?075|63ZIOft^DH#ZttH zbQl)6uo5JL99BwZ9>Hda#W}|*0Iy-0IZ%nKCgAwd#WqiGzSaX5Y^gk*)brv38S)wL zWOF?u0W-yO7LT=1Ezn{_pw#>#jSuWwImbE(F^wt}}lf1z<$?f+@!t&&enhvFSp|oAa+s9!U zHXe30?GjS`pv=ByF^BCWSWJbRy2A=eiD6-y5fj~pEXMQfgpkY{A~P+|N8}+K%cVH8 zxAHg&eBe|%Q{GUMi~=9Hw)OFF98FTLS>9sw=B0b@E4xqqW!sxF_VU+f1*fUgb*|_4 zRz3PvJ}t!oYhpH4pAwRi(5Y}*;!VBKPpDx3vfLzB=tRMJ8;%jV@j>6aqg%i<1&#b+ zk^D-3Kdxp(KRuW4k%?rmuP94I&g0b4>O%zd6?@oyO6liO1^U`$YEO(w~dfSW-)I*JFbc95RKnhH_Ueo)^V z5O<-H?_2BbD+u?V6s?hlkNW{&D{7-4R^P`fkDgL0;{mp{b)#&5Aruay{_1@GD<`i@ zS^hSgHnz=Q2J4n}WYT?K1Ba~KTmN}=+nAMVj->#wyKf}M<5@kRd1_Le5osxl7MTWO zkkpGzVMHjsSp8MXcS#7V+PhkS79{jH0@}OoIU2e8CV!dMG+M*m)+daUL`I+W-4I(& zUB!OpWEez0R`B*0QI%Jr&CRlbeRfkm!A=eXZTHE;D+5#BaqzefNU;B5|N6>RA@|Ob zujYmt7m3)_czpI-ihZS1NN z{mBusZ?O_Oo54A_*Q29z84jB*6Wst#IvTqXn1FOd0WHRQYg4!CYPDfB?VoaEw10XJ zM*G{lAl|>>gn0kjc8K>kTL8Snq(eBCBR95iHQy_>TsDaOw3GMV`td+(amo3Y-6~SVgFExhSbYQt48O)0=vGOBz@93V1J{b z%hnjMkz5Lb^ba^Q<`P+L@G)XOzkbHOO0N0Xg0Ihy$^3ajb3G!GhUm=0X6-0?ONj*> z_f3DrB8?gdNMPm0cL=p(y+ve&>N;XLt~MwFIj|UsJns<6WB+W8-IyLPg}oO15Nn;A zXX*?`q_n+^0gs7HP%P#UtYbBYu|?p@^*>8)y$gH5q(rM|2sDE3?Nr_ z6;wk|U!eBTYxBbDj4oegyx`H4PD;~E0DDx)A+w4$lWIO__?$4^47wxdhTYj)uj=EM znyJ8s%uB-ov3ip%{vp~EGl-_rGMMKEfwnp}WIi3G1!!q)Mb=!*J@7~jy3`z6D|(ulUfoM`T~yvcgH%qlR3L>cQz}3KH_#K=7el_UiNveh$%U8? z_LGuK4xOlJQHD;H94v&y2_rh?&Qj5;yNIP~_>vbFIhO?$;xT|Nf?1iDP{&TfzW|C{ zCb@Y`IIq*W&G(5WFw0|-!FC7~@WzQ;j=+kc@=CQq%FR2Z@=-e+m0g92{YkVJKEF#;crZ%nQcFJ%ER9s%lZuHyt zzJCQXZKOUpq-8^{@!U>*5UtJX?PJ5B=GmY497K(+_9#(mFzjTf_-f`njzVGrbu~ zIo%B~2+9wdNd~?$Ckbz>{gcoZ5?p1VB{W_&eWQl99s=eyg47Eg{UFjXJqPm>4W7YD z$9-*oALJ8xuo5PzsHx8)k^U}Y)`AIEyYYQx=Stt&>pC^1 z<1Ipzi|(09mqxhhS;O1DqBDH|#e6Brh?)T?##hqzUdF1q6jPRD!uP? zbWjmu@AiW4LERk~L~lO?LlBOkXS8(lwDr(C^0>rF%Uwqug_tr@MLb@WZA&whtoIbB zE8!EYJKqhOTZ^g|%QMT``HvY}F|fSBy?KOoxP^}j7bAZUs@!njJZjWwL(^eq=6+n~ z8%LxAL!~qu?!w+=bz*cNLZC~R!u8OxQEj~wJTO)h@b)gBEo@zQDyI4YXo5}-(Ea; zYM(shM=smh)qbs|w%6;$>GU<*xxL%3UDH z0vH0D^OBr9a`sG=$rh?)7@YIo7tGXb<&x^?G`z4x$kihn?Wt54!tl=`j5ks~^J>k@Dr0)P<4=`SHK z9HqZCbCIW(RVN`J;D75Pe20ytLgS&Ts0!l`bX*&cR3jPU^U~6tO^zfhGHzeRUZ*DYv5=CgnUBb27sKfkX_*_QW8g{ZJrxy%`UQ0*MHZ%`jL5C?){`F! z&C1heYOrD0xYm%Mlg`aWz|)=J6XL61(PaYmoZu*Oee#}dZ#fyd`&CdjdPpQ^urvhm z*}68VQ1kadK;l>pC^5~>n9Trx;doyON_o9|l{4Dr69cU$EWU&B<4x-^ZkyN@g+6xh zPwMoB)w72E_{3`d-x8SCuyV~Y<7PBtbGlz8b|q|+<4fOKPHB=WR`~8S-zT@E#MIz^ z=alPCn@!+HKuGW89YXG6E7SeT?x%L$Rz`6^7@OU(bxT^EXsU2P?CnJ`_xORo0LS5ZqJMxCVbRWeo-#hK z{zFi%iIA{N#Sai5nrc7MZU}T|<(}BnT?3{T;ZumX`1pI_wN=xH1(7Hxv$bO9qbFvM z=4UX|gWc*FmBdU?L8VP}WEBU@DdV#;!@A>HA=Y*PjwWDlg|GfH5>Q(U8=Ya^l!UuA z`@jrShkPR|fU*HMN(H2f3L_iHxXfRx)nrwvq&6c~8APszz?(uMOM~~;e4-k-z`+?7 zfGGlRkkAmSbZh-=1DfW@EUpy$Y!T?8>kso)AM7dJxn-C&fjmLF2(TVpFr4e2U+g#7 z+4k*TetXy?4RKO}&ah^a69N0{Pzn%X8X;zvwD}fTRfDp#XjmKaqHNo}UcvD?D4zpu zpg)quKs{n;XPMnk&6ayDlWEX8k|(r56^l4OXTtD$NJe@v5fJxV4@4v5kU@+YF81KM zB`3Ckcdb1#4>KC1$+)+jS|{?MNO*>ms=Mx+CI?BKk~GjUN$;IXX{4>cn`P*Fl-e82 z)6I{U{cqygw40B6gQ97V*DIRULB6*KLPT`CR2Q|GilRB@t|Z3gvZLw#C-?I9 zy!hb|Fjj~seB&a|1(KNJ>wxs3916gZ*He~34@x1F)sNqi(l*9MHd0)QHWXaHyE(K7 z7cKZ-J*L4?vm!Z3S1w#G4ti~Cddo)5wN>F(8-aiB*r&s{6%BN!A zfXYqSk3jA<$0DOjjri6<$##L%7TK|6qVIW0hR0*(fg#o6fLB0H$oz`;1a}}DIS=m zbyp1H(H}*@XgRD90l;D@8c^gVE|w&ON1VYZKqwZG5%G1S)>4fd>}E_8%j0} z>CWmY4@fF`)8Fw6=$}2#(#%l{FRR_s*mX%Ry$HHIkK6B%!5A!-uyP}Uc?5jE0|so# zJYf39QTYezJ;eLe`Rl1hBpc|f(m|4R>6nc&+U%5MHUVSI^MY5$rR0aBG=BCa?{*tv z8T?`Y(3M|9)vn`N-fV}=sLpm8aiki6a}XqLIP~HXQxETrC1SUhA1v?k|2gmVR&_R2s(seFN2Y%r46JqWZi{zMzO@6d9I)pcW^+TATpWS22)!K7 z{@c%I{Tj3rhq(T^vsRbu&Ze%9K%2Jx;;cHVUtnV^eewPNOqD#*TeOfPRjbx2AAHc} zt-4#2+gs(Qnd`dLr*F8*$-Dx&zg#^>Qus?OAzM6)zDVOgj)gmgIpO%m1%Wz|)Je^w zE56KO{+Rh8zqjowkH|kGk|#&d2je}T?ZiXYJha&VyO4V8#=E9bh(Tco8rT zPe-~LXJF3m-dlc?;6F}7;88&8_{fAd=8#U#frP4_L49h#jzVGc!5lN~#ic3g6~oWV zv^sIRNviD2sp=g0o*CI#Z^KCv z#FxvQ-B_rBq7Gjt0mKsW!!`BC6$k3Nbv~=i32Sh;2_&#wx~G` z(eO_m^%*b>b$6$%N#e-yrUExgrg)Xbt1_?iT*?_%W<73Jkye1Kq|hQGIg_l`b~tzn z`?hTr4-{}gX!g?+=y~FiGlIKtQ3(zuiP@z5*mQMqJp{b_?lasFliFvhEL3A?EU$@}>?(xy?0}JwQH8W)@ zgM%@G>PXH-ueM<_`@adULW)`<8U01d5R+zQxRm%!F$xyv|chrOou44}{FQ zu6YqRf~q96u+ODLO0G^H%4Fs2B8k-be>oiK3g$C0AW6*^ms%)ZC=G0PHVrTJK#p08 zLXKYE*x7xsPgH(6W4>d;@{V2knw5LvDa+k`?zu!b?IaU>6Z`Pq6UTXDmMjv=q=0+& zbV0gTGkOq6NxG|T!|+7LG~A?B1pV4nGi0U@Nzx9T^F)#<4HAstN!zTAE&*ige(75b zE&EHBUNV4MV+@np3f(yUgLS?vS?RQ1T-jfytki+QU-&E97h_7L+8iXKTrxUZSLO`W zV$?#Q?RP!b+FLOvP6MA=R(dp(9y_!AD3@k>PN&3w;8lV1W+;Df)|ucTc-JF?m*BR~ zOsPF17R8HHWkv%j8E+8z^ns8d>p9D}&pP2~Dkoz~<@M#QkC?n$ z&e?ks$b<$?W~FX=nO!(W5x+0$ryG2dx-rUj?F|2CK-5Y)v02RT)wWJ`+B%|S>gH%j ztfKJtZwjIKzq@q2O_0W5goIMejlWX#_i4d8d`{b6P$HnB{fI(9u(`CzAZ=h_p7o2O zI!*lxi_iiR31c$L#i%^U6{h{zleCsq2#-&VQv#A)oq+%)VO&84x^U<84CMIggs<|k zy=BH+=Ey;ktf{G+F3hldr`GGNcZSEmemrDYNoc|SQck^RYZ`Xo=5O44Zl=_nqJ53m z?jA^dWvppdl~<{u*c`_{q0Ag3%_vJcw7Cau9bggfCgx23cwR=Xk^w6xrQHLW>mJ6~ zoLc6EiL#W%j~X5^KVItxMGgd}D4^Y)9{5DysmOKYi5BuUui;d}nD6_L6YasFOjC}# zHczo(ZSUG->j%o24td8i_|W>9e3D++Qxe`w@T9$cDvUBrFU6PyDH+cIXb67yo5J#3 zG40794Me%jg^c&;B&HbEF_T9x&XsSefG`7I4C>qZhx=cAaV){D41BBnVE){<2L>v7 z@O+e}#wYA`9CLORgK8)rap0>`tBHC{KGDrK|BkwuzlaI=96JbeGJ_Pwi(vS%g;$GU z{Zx5S_h+a9Wo0lHhxZH-?es7(>U}TAl)Q~QXj^ng`9!-l)?P)w#v|is_sESpWZ=t+AIf!#G5rs&Syz>JIdC**R%{28T7 z3V@q>j&C4r)}lPRp4ColvW%S&W~ir4e=5v=&{fKhhgb93U!Md&2bOjoJ19Yb8HK3L zy4q61UjHC7w>>t}Ha#-tZtH%1W3Rmx2ar!UlUNLfmEdH$tN}_H)_jlNOi-NOoqi9^ zg{k`SIGQU_MC|n7T(8vT(ya@_ty9AnT&F$vRoQmT4Nc^QnjT{!Vf(8~JI_I`92Py) zsKlD7l)2VxfdNW{PJnQm=uIU-Qee^9h&$N%C=>g=hc&|xSDL-sJ+%mnhFKt;XD#Gj z2zE4q&{%)2*@^mvO4vZ|*FE@S$1}z1{Oo{4vd%e)yV|NLF_6$95=Yw_z4vQ4lC3tBMDGfINUylPM{vLdC8$PvGww3M z#7!FCN}^#}-qt^>V~yZ$FrFzti)i5lP8Wc{b)L^3ngy~Q{tIn0A4raVvcVtQ$}w_8 z{3pGv*4Hunp5VvTf00XaophUX0ZP&+jLmekkfXZY#_;M=VNVsAyL*H&%BP~bR*Q}dWg0oT^8Hb z+8?1G&z0BSPn^-$hiXOPI+G&__cnoUIy{k1=Mc@&b;oJ3rj6kk$$N!*-WU(H*D=bT zr0V|Tqw7^x$?|Od3@g!L!cOqQSF7ZW$!NRFDNm;|d2K~(*`%*Q*3~y3q@}A_QE>1T z_6D(LLad5BIEtTzyE_8L9|e!)^p^N1XG>BwZkhJX2IjpB!BjvAu5P?4wikmTJr-d# ze~F%~qM?I`uv&gYSC`RHUPM?eSZ1ec==@HA#jy~*aWwx=5(dFZKo$AuQ_>Rp!25mj zSZFWpKHMx~mgDF1I61Y+^zJP>M|=fW1(A{|-QHr~ANxVa>i9KBlioZk*_GScI>eu& z1|bw(XKH?{PY2&7|BF?JPV1t%IM>@CuK1MYhZAS<3|$8;R~lD;C|B%GHu9HNvEw0;77(X?22w1IM z%aiOB(=+-KA2<0vs~0Nfhj)MhXFr;#l`0{U>G=9ec~qi63stjc&eM9u(Mj>TmCs)n zqy~jI(kAj;bc_&x@JKEnS@BxtC^T6o>twE#!UOw>4wdD*?dko{h9uAd6M2~^-V^XtQB8iDT>SuRV5`lF@KVqR6BpM!C7IOSK==Vpw&g(pxj3)fUkzqW=b~T@qFwtEZ zW+hV>@`(tZVIO~PD)HCr*ovK<9kXxHykgqU{en1fN;#jwg4p7qn!+cTEpyI5hH}vG z>x6~8sZ_AKr9oJMqy|Y0(OfufU3-I1W($>IBOJ=s6IioUUS_%(HTTpfCmY%9#O%-* z7Wh}nGS9alcExi=;#_~8?TAqrbG4o*nahwsLFg1}QWPF4TIl>4u;pQqh|II-98+uo z(Uzi8j9bgxoMgNzDV@owyPUubP~^g*#Jxy#7^83fyfvKkIEl$Fgu-3GXv3c-G_7y!TzN53|0z0QrgQ7caCIUODsHrJxMO^Wb*kGR?`kWpC;A=J&>1(h7!{7l6brcI(kLf%V{TT2<75-6 z8&zYT427ft`=>CKA>vVv&c z>9c-_$@t1_qhpRP6z0#+ww!e6an%ezStolEC*FwaLF8jo@%>hTO&IniscS@-4Xk^{ zrtKJ5&7a4q|Ll#BJS?d+UDhcz~oPM2|KSxUs4*+p8fP(ywu!Bkt8%c6sw78 zWyNMQf4$PiP-wJBw)J zFrI&zxy$w&L>{f?;zPdE1W50pp&X*=#w>q9Fo{|y964+OygHpN!b_)=H+o!D;6hCIj zaWcvUbE@H&Wtj%YJiK-AP$vs@i<*4hd0{uunqN#iOC>hj6>gO$NE&}#blRdD+`i|#RqLfDYEs|E;WZS(Jd4JuKXL$d|7$*@si*w5&^NgZ;jfd9P&&PAfyK0 z@-#u^rMW!<3dHgDRD+nfKzz(tB&HQ<8g4F2+(~@yQiKAa_dwrJf`{u|5QPP|UW&x-B%aYvU?T(iBW85A*9V0nld}B|2ByRyeWvN&^j9@JKZ@!Qbsb8_^ zONlcJ=M0REj)N6&mU~$eu?2^f;T}P5TkRP+t4-So4XIQpAtJu020vP`T?2z@1x3Vd zvJ1qX!amg}mWG+-dq>E0of@wos@EzJey05Ent8dE>tKl|t3mre*_a~%{M0D|w-9f} zC?w+bfEz#g9_ATATsZS!`bnjtFS^eH6s zdY{~Fa>v+oy@j+DD2O^9u(yLph#W_UVr5pQccN(|L%vTj^!N}UkkH#>=UUua>^w(f zJbJADK(RUlt4b}v)x_UlVCbm>IDnyO(zDGhZ+jkL3o0&`h0 z@{No_wWBu{*EDzEFzZK`(=~~~dX2&bK`()oMNe|h|4Dlo1x#xHR(r?t-E^1H#SqLUK8XTlHbx)yx-zJV%;W zKH0>$zqd^jvt0{Zv#3t^*dDNRu~*%VWSum|q z51|7P!|^AB8yP?XE}H1sStdAo3W_XgHx(MPwWI3&GkMs-JB@+sRef+T-$|bg0qg$@ zcvks%*4}As_(r{2#p-68|I7JkSlVNUnAGeZE@BMm>Ov~4d?vr*k9=pVw`DKNYshuG z{&rknNQbtbo??Qa3K@Uo4zmWL7IK@zzE~4tS9XEc*vZt)r;Y|JJv<;-Pq|0 z%OO{|+~4Q~2Y_nK%zLWsoY`7QB;R_zdr#gJaIYRa=XjEGnV2kj4}%4b7WKja_3cjMco6HoZV~yG2pj)qF`7L zVJc{QADVF*X?0cOT;3WMsv=DOy3n*h`BatGSlLolhrUJwXZBrl<;2|=MZwM#05d?$ zzq2)~RxsboSgg_(FUIe6>$S#fx_X73LiM~S2ib$bO1gL%8=}nT-y8|%NqY0{0f5ps z`ihbDjgrz?{)Wz#?J;z;zqWa=h_}v~Uwwh0e6)CN<68v4cmhg&di-qj$o@o|*H)MN zhH~@QV{>G4ak_TpTan|pCJ~N~V4rVQwtu+3Z0kPcpe!WQvt4J6;&li^~|lB(=48NU`r2 z$5ptqRbX95wQEDI>V|^m?Dw++2AZ+`PnhjdQ-wp7;&+p8j}{AOe&HW^M>tULnR|Ok zuD>oM_4^m!6*k2o77=|29Aq>saUVY9U>1M`Y;3hvO+r$Wxlm;ShBD?sjWJS$x#CFt zalGMd2ttrizow=n(pRG;iN|8%w`f9%viT0fnpPY@C_nri9kzc)_XwUrm{EN^M?~~8 z9KsqptPf>CkY>~*A_I*VIO4tc$c;w&m!_F!^Xs=YV7%&ksTIJ23`_L&b#~lbrq5XC zwJVsP@(gweY7>RvwgO%>J>JhSGf$I)DB$V(zS=M?Nr#PQOVRaGpb^N&Z?Kz!PpG`j zY2z{z2Er-Wh6fb0NAky>3RpbR633Wj$86{78f~M+Q_WnU=k|wC%-kU%`fqsdB*QBV z7l{ai1U_VJ?Zx0LjOU$ViklGOPDxDz7Q{@2g^ zTzoYk-lO!p*rq7Q`jeoGlGu3*@oJ@Ulo@R(vh4SO=F>b}N0A8?-ZIw*>G5P#o*45` zoR=`K^ynmrr?zg-4U}@Yt^%@cxh{CkoMm5 zoPXV&&8X3vA}~MBUNYsjSVrfKEPHdn=5k+U5I|P0`W2GF@sfF;XNZy%{u&bu&Q8i- z=V|l^j+gs)0&%@NSlY-OMMQ(3T%oOEF&Z96qmn4Lq!5jYQghe9lB!h2%iZ)m8(i9n zQU3Xn0y1<|34=SAp9^4;)!bVf2iYvJ>OpJ1qf4XeVnl2s<6=0?EM1vtT&$b1{(Ngg ziP`1QcuaAAau(eR)Xs)Je2aR_jJpp)irmA=VV~$?#P>g8-w^PChhYw9GrTaM=nm53 zC<$un+#*J`K`QNg-=oW9v|YuSD_BV8lzPB(|Jl~}3*`%1sRC2!;!GV6;0|>541kSrttz3llsEV32psoEb>y#`{&)#REmCm={YP3 zkS~Izr@rF*wXZJjgaYCHsz`u-g(1b@h09>l*8)ZPyAQk=cp3W?_!Lk1+m;~P8*K!4 z0ZFiI>Zi2PkyUz~diHB7y()Zd<(bL?Dhn<@{q^^L<@~-4$mL_}__@FWXmHolKV{8X zmtDCkNPNtjG0*go`N(BIsa87)*ry2&G7*|kQC5h&l5AHtZ5%aE5u`I4Cj;AF{i3TJ zcoP!fEU41C8?#|4RP34arDaw7u5&RktJ~QYgl2R(7ZZT|fW!VA{8YQHd(t7WicG+# z(LnD{Opce;bjQ6R$qxFtUgJz5bgkxTAoiq|Uby)>LlXGRQts9Xg1wpWOPu`;5H@|AnueaE;&Yr*p!z}53qVrc-7QXPLS&p48sckL6*~l23wsvl+#eZ@qD?{k}E!>@*~j(GCw3uZe+c6>cFUF(NmvF zC7+C~{t{)_o_?MERiAN})$tgb3cTL4+0ux5*#%N=;LyJ;H-rU?%dzP961Dfy#l=2g z7sV9@3e7L;bw(0rhldkSXDLwUl}hx5Tq#%^zXWR_Rz@Q6=mT7I_Se|Ta?%1L^4NDp zU9)or6R3XU9B02{=iu1H`}AmFc}s^F;7ukNi;7i&ih z)Bjxo@;ow7%fz+n`CL9A&@#?$i4;Th0(zq zq4@P%1npcbS*gTbO0&BD8R^ft-;ju`#KWw9ySA545D}A}9Ns}CKAj7;@tFi&)#MX0 zP?>BsaJb-4lf%)F2=;+n%78RaK%c^)5i9`50Me|Ahl4GHEE$u}8Xyn}nlhj}i8BndXM!{V9@ULn(5BO=r$<`sYbb4v3~;t~tLvr= za%ox-M$LVSxQl5z$uH~snh+g~V|q}Z#dTK2Q8`78(k3U&FYF74k#^;r@~!y%rO(}G_EA+zTka?F#8vv(l>5w`m)5p>zc?}JARmg2a;0vX@8X)$ zxrGwVeI2^a3I#e75dbX2(7D|AHX2wrq@S+utY)mi8fBX&1q}yIO&OsTGH`r?G}-iU zHU*Hj0#KEWC4DbARw|3e#iG>jy*FKP&EG4~32 zmoC^Zo2~LJm+tb7QgYY%8DF{mc~wIt63q`c`uX!V5sy>UWxeE81)SF@eNm%^c75VZ*KB>B;`2 z;ddS|3p!af%~7->3c!l$pDPw;A`&Gk9-}fE0qJzh^_pOfN2QS6w51KeW;$q2Gwc>K z#ui=$hJHLy5Ccv6zghsx1S)re`Nq%I(vb2=FrXH2AtGRbP*dgt3ry$(6*dbBHmpzF z)DwFHCb+zC5sVNNXL5^sPFcLNv>-LCj}*in zB%n`#2xa~aM{dQ&bC}^Iii}(a?`ivB<3!fj+0pGkwBNo3JMsYP=y%-A>orw^cxry` zw9KZ~+_i?Pr}WmHpFW3q)2ZL~;3*u^Zz*gl-tLh|@GTvdJNwA=0|P7Be32N^D_f*juK7AWtCz#4>hE>(_0DNNN*N>a1aA&IDhdw9bkWyB#<|~n11hB zccL`+tIBq9mMF%!i3+ z7PVFGOz=o-eeG5ewfKU|_u7UZRra6A9V$XI{cMyD z6jD%T>j}|h1Ft6zzWU8PYR1716h*Dx5hTjS2M1bZcwGy(MXMlwbkF7HBmQnTJ*tKi<85{MeCN8$Q(z-qr#~Oz!UG+tI~i0b9dl{Z0yvB||xj zSfxDrQSI$sY5BX_?~8CORUpWb6c-C0RKtn(ev$1}t}+)WCwF|-FPf`DGZX;A>ao}8 z=Sm1HyL1Zb9^CP)S7%I4B=R6z$X4V04t(CenRdWvFj$>f{tW5tn$OTY+iH$z=lPtr z8Hs8z(9U~uOipdHt>#->Odj?#Q?Vpj2!j##rSZy$6MhZfhoyg#kxQPix~=gT-67Rc zMJU*dnv;ve*-$zrf0y}tug1L7tTc1QlZk~_Ofx}@Hic3R5ovZU6*mP_5IUbsu`{i( zWd@q@?zuf)s*8!Q8KT9eG|RKUGzP*?L*MCAe%z3Zg-%N_D`O-kGnP%U{MPApJUXQ! z6v^u>OgO2=!ar*yf>Yt8mk!+9#p4YSJoDfdZ?`D-Lm?uLxs_J(rRaWjcjl(l~; zK?+iH{>VLBM7RoSIUI4S@8WhIf6qhQZf^tPol8<4GKO~FDaOszF=U)$eMFfuYdkqW zz+DbI#5nz-fBL#YQYm=$%cDC;(`mGQd(AgAp3TY^G|!J)7Q_n--a2QRRtGJ8K)4{? zp&DP;fJ#t$7p1e0`iG5`SUZ;~VMI#JKc$bHToof&lELh9>6+(v@NK@y&Hh32(2g=( zsSVvd5#}~IYKcssUrw z(x6waKfH!3`oiD<_5Zy0<6z!{&xf)jL%o2P%Lo|7Lh768S0_TN!+x`?g3bM7;bIK{ z6Vm?g+BJTCVDQyJ)=e?_>fj3~(wvuFsXmya5;| z*x|VcAa9N&-KDBKX7XU7%%a%*bg{X~pGvPJ-}~dLNFV;?TIB!)5=)iC)QW?#9M5Y5 zz$*|;0d4KA6yD$OQZgQ-<*qUGEUuZslsAo76}LL=}fX=+YRK2vu_!3iu+bq88_~6K6d23g`7+NXELRGw=j@D~xdDR;< zSpN0LOT*?Y4Kwiy?nVFt`{lej7~*hC>vfK=u+_JN3zv-9agadwoS08RcK&%sH1PV6 z%ii8DEN!`?BSa!z%+aHV0XS@=QCjt-G4=C;tI$J~uAk^!t2A#)+^CG`?VgGcm8PJD z9h3cJL^kJWTc*5x8kyHj(HvdXR``B_E{4}Sw&@Ox#uCibFnTHl7##W;6`Dv`*DQd~ zzt1>$l zy`tr!xYPUpkWSf{f5Sj7i_}-tF$F}i2YMV^5W%qGTd++fR^~PAav?M(Rhe?D4Rhk4 zHzj$00OwBGN+>_2Zdq-K9wJl|`a_LPZF2iA1n!vKw0mMxPE?E?>|H7uedv-Kc3`Tc znERrYG3s7Oo#pO}({__iZ|+swhCx#{SD8=QiDe60DB8|K5d-C-&7B^FbZ;?Y&#M($ zNP_3Qd(pu4q<+gzfPGdS%Zu5$0B^FA6+DYRBgg%sZ>sR_zEnm;BJUd|H}5m9tk*8} zC_fdxX19`qisj~A-_rG9A@!WVvHZZlyfGzJ@APp@I_R9IsL!~3k_7ueI4AQLE3Wlc zsJ2%gb=#nVoiKlk3(I{VD^xFu?on>(6QJU35bBa=XfzR!b_H+p_jZ;uafnByQ$ZFzeFCn{3?&FTXjn(nbO86K)<>eWp)YTN2fr4;#I; zuOdnA*$U}^3y!5y|wZ%gt2Spw?1r~Xs#>Bj<$lV% zOegfQxuQPduw&@N;gU{38I`@@s_{4=;TOt_ihJyWm3kCn_5?TuUw8;s;?(fd+}bD} zSR!4{l&r*?O*VJ_ETm@WXJ(YsE6toKRI1fV8&wE&J`FACU3z^38-{PADv@nR2gSA@ zmNAJ_%^i$9yRo{v+qLC~{I@2mg%vs%mzhz6dhtl@;cB|QY#OF&{<%y6?i>x+MlAdP z!SMKxVdz<^A}37CtcJ<7rLtm5aC`Q=mo}}{tLCH*Xp`pAT@$~J5N)ar{YBC}t_#wB zlImumyV?Xsb{vY|>W4+UU`1DHZWeWT;5Z>iR$1piKQ~KW_7y9eTQawn-6dbFZFl6l zbHiG->gi2dKiqcWY@V}|IitB|q=-+-49|NU`Le1kvnM&LFB^Ro01Z@q<;)xF%I7xO z-d5{+!?gc)RT8;d;?ZPO9xPvV>Q>6_qvS=+D?%1Jfq3HKVUJlZOf-#h-B8Oh@*)wf zp>D75YFjB-bJh_xG>!EE+aSp_bLCUYHr>IiqVf!TnJ5J;iECG?hY&ZGs*@ zMqi^@Gv{UkUbjpVm1gT^CmIz%)EFjBH@8MGdxDJTl@dp%im_D4Ld4O|(=V?dX1LXQ zabx&hE=(>-5wdPx9=)X5(pRBtl-4Ni5NH~T-D9L7$ejA?u6*K(CD=bDz|dU%gf`t3 zQO3ZuZYsH%Fu(%jvnLp<87GR3j?-7JXvC@GpFR5k?!}!!NfITQtWVex=oEq$Qbdv_)@$k~&IuRwktnFF{qbwn&9`6Nb>Uc41%a?M zgG${LZ>@pdbjP58^&MamShIiV3+(fVYy{dbgx)RP)TyehuE7}!6jVYZ%RegiAp?{fle zrZ~A&f3U?pW+7v@D4I(fNcW2BgHx@`=twsqOz=~`E=0rvH0O&X{@H$A%i7trVZ2A_ z0-AHLX$VU&kiqv@&@*~q_hy|-?`nyJ1?Y7xt?`{TNyhP**=B8&I%%g8dVJT|pQ!OT)J~x!odB)G@6&^!F&Xx#i;#~kuQXG?@y9`0` z8jmoU@C*%0W|Oo=J$eg_#%Ba)iUY57W}7z`OL!oVThJ2as~-$ZUM^d+rqr!I^IFjX zWBVC5Xt}pViP5L?6Ps)lU5J|-On4|x5|JRH{|v!INPmIG^6cHduk;ZDTpT-w*`2b=}lq&|5&VzP9gpLxa=Pdj-IB)8~jZ0xqAXJQ<(_Q1Ei` z&6%0u5p%gQxx6o&7S&E2IIwkfqP;HDzf-DTa)fHDUASDWrJ7-OUX|n{3@uxM!@ zW_&@H(PqGBU3px^=npz&)a3oneUBfD$JMVB=SHsCO|dRb7o{ys+C!t{MTlnUx~#vf zb?xF@Q79BkjoXBvQfjTMxl;QQ$B)tPFSYPn%>=h~4pdKK4y21jI}=0Lw_^g0MZ1>0 zMaEQ9al_sGXftG#+bw$q{AO5i7R1BwHm9v<4_%_U+g77UVKY3f)!YDfnbb-^Sf=9X zzUTJMO~iU+Qp!wX1*0>fkuR76^az-TxMX^$BA58{Kh%H&A7|P+L|>&H(ZW!uzBj$C z!e7~-%Tr?&eZCc;mcswvsPxK}{4kIt`JFHVrJ!^ByWpEmM2C~*PgS#&h!5i+1eBY&9lSe`3@5A=D2})4dQ=Lbi7ELpiQ@aGf`O>dG~-{rIee z9&s}0(W>Ca(zF2gRl|+DEbGjMZCmj6<=#PJ)7>Vh$6hE6ad&nj>*K!(9`EXsj{E;E(NN#n zqq}mP(>xZHN;%~eYdXK62QEvGuyRNb#S zGVo+VAqX@L`QWZD3X+OWkpnnSEM~p>rxKihGE`|+4RwpLb$8_IQ< zXVLJ&lFU1%8B25DCl6kvrxKufD}x$0RaH-&sQW^h_|UfME3G87B~QCKWo*@@Dv{b_ zK&puaMu`OVV>T3LX9e_4RexXEelcc*rgptnyEP4o5c4fo4V&CB9gi5nAQvfLMDcsQ z^VG9qF&i0{BT;b8BYvnDRc3XEhGa-0g&L$J zwlZr`49qW!tK8Hd13py~UzBx+xJKWsC_4{hGpMNf*5q8{KjbHZJNA z^jbTY%}}r_Ptz%g(^#edwhcZ=ca_8*&Y? zl{cCt)2II&xO<)-uML|M;dle8ZJ`~f2E8$F(2}$CX@l``6R_kU5=z#}+)tXXCsrYe znIg9musw++6$%Z}mo$XJ_)Al|E9#NL$|hRc+nIxrC#2?vrCE*+;Lu*%7Pkduz6Aoz z=6?VG_kH4)EQP{&Cn9sBZ{MzDvB&+fAEV#BeS0nl=WFQ5$W%&MJ7#9;mhXj**J`Ir zR+6|Jyh86Q(e`S^+yNbNO|Dl=uOgcpW%Vze*S5RgyIE$L{fzW@ccMx4@;YnlkxA?5 zaW003$Fc~VWK36SZSMTIvt1ql$(QxQ$NOCkX3yfdDS|@b>U(Um*1NaC9boQ^vC3-J zexu%o-s!J9#DP10tv9j7EqX!0@7UK^!6&TF4s>Fljo2K6S5MV0n9Cm|0Q3e&Q!rA= znpX9Z$)8+E81nn+%5I`6XaO5-DT|>j8V0%P3hEr&E5R&YWX(0Rh&Q}B338(XS`fzLR;O0^i zd>Hn<8c&)sFK*C4k~U4@vH;Ce=+&!2e5nwaToqMrp`;65!)&i}-NFU5JrG-atd}08 zK?AM@KeF)*dP-jqQZ@nvt^QL%gXO>D3BQc`kD#^uZ_*#iOk;S?;n2L=z$7UxKT4FBS~l*jqV5r3fL zc?yV&`?|@ewX^2-Wh-^gXstuOJjO5YEOQBWd8of5@oLxDN$2purs%J=pL_ArjuQT~ z`pGQWzw#ySrGw631ydqhJG9;XUw&X4AwKL~`rM8aD$d$;T{udabsN{W56yK?!3~Mk z4%MMZK8T74XzxsGaW`k;61Y+_7WOR4s*$=FT3yC`ppYc2Lt3S*wviCb!H35qsum>>o?g+x^38-2Cux#N_m_E3sN z0tqF7xNdRLU5MqF$v(gd`g-)XXqjy=ke8ct%L6}x@&+Ke05ej2PWVuP&-WV7*Xz-^YdpaeNVp4 zS347URKFp(y4dzcf?Euw`K@p14Q!Q&zAE|}u&1=ZO9lazgiD9wRd%-AyvB^#t4>)o zn zTIh5Ujl*cs#>u;pQp2VJM{vf&6*oV2Nj_6aiBDkj?Gq;%?$-RYrP1murR10)yKlB$jpRoq* zU7O+1_k{A7X`)3)%S6uynj4a-7SL)p zY{A_GL;yC~rxz{!hK~Zb)WIvKeOgsCpI)x#cu%$6yq%wB#r)V&9!U5b6c7uI!s=B! zB1wDqDUsYUg#?XSz_9olF7?xcD{h2wDDc&ny!|Y+GD2sBK(aaW{CO3T&3Tvuj8CNjN6N2 zc^<8pBeum+YM(Y_a(^QMr^u1Bg5DHL?aMT55*qSP76$I$#wd9XhZgTn_04@GZH^3E znglJ&eDjmkh${UN9h6h?id^^6oQ?kIhlxNE{|n1N3fR(~3Up*`2 zijvce&z>hx^xV344M)^U?$&HBi@N=CsB!yR$aWt@D4j$@85l>8CgVft*s;SQ5ux&v zuRW5-qk1%jf{J!1qa-^6yn6Hp>aAVR%!xZca8VP7<010#C z&pr(kf!0j6UhAS}@7lX}z714Y-k-Mr2U6J$%r9TLNgk@iro>GrLVqrvwAd_Anl0%1 zNXlv{{r)9TfBC(>^h9tn+sIz+UU!XPOV+D_OXveoVLr~j@2jP1&!}hW_$mEMQ~cA} zyb|tYM@Csk%p{W)s+AS^SYU_@HzktNfMc>tk=jufPq`bxkAWgW)u9_gl_#s{wq6h} z>tG`AhC9kff1(D{|A5GBWz>?bPhM<^gF2Z}8KFMxG&N-#7Wf)HTQ?+ny{83(w0{iY zX}{%0@LVcF^bQm!$DPJOmJ9`JZ{7m9kmpTCW4yrK5Wa+krveuUd*Pv0edJrHe_c_J+3K;Y0fGo2K7-^3KpC?_WFK2zB=YrOQX#|1ZRY}N$ zsjg3wbQaq1zOBrX2Esqh)oYCB=NAGx(#X}&Tlw5RR8wig^q~--1elwg97Q}g_Zmel z?@kHWkas)hZA1u-uXWbPdM8_271IRIjYHLUr-uPBp=?(Ras7yfm^#HYOSK& z`wvMb^~2LMmRw~tZiUa+5rruoQg&l_>o4?H(nG{Q-Ana{or#-gdml%+`dImrvbG{( z7p&tb<2KF1iyEl$<3+|T(cr$3H{GD2`gSx^hn7h3?N z-7f#2g>parXHTO6Xp+A#C2Zuc{Zdc36GglYx@H|9PCaBM{&in*V!%HPSi-P^+!JO5 zI@rugFRTlbeLpC5i#EQCqt8&7BKWgRe%EPME#GG`?dVxT9A|p(!G9fnHgQW#ss8N_Q1c&3xd57=V@14Ul( z;Oq|aNiyHKuw+(mm2ptbABVYXT46HV*GPgdjvGBFxMN#vS0!oI8@L~%w_{iUf@6pe z!J}wU#&NgP={AWH8DsoS@;|-{eIIF4Xopg5(CA$r`Op>xj-ym(=xp)QE=7Xv{$V{4qbf+kT65`SQT( z!ZyvE*xJEVow#eKj@8VD4<6E)84uEj`&>;30OfqZbRZDZHBUS=J|IdC=Y78387%)% z9dc1B&9C;GL0lCl^(lD;dekR|9TQ7r*scadjrLb$X}myZdUYo;Torx0UU9+a&q+K6 zK4o6kXer21DjvD?6l{8}e?ow4KMQBv`LY4j_lk?k1Ir+oK{PaH?B{SH*qzj};=~S$xWpk*YrTFKJ~fRkm`kA6J*@ z(N}Xe3Y2Hsg` zd_4%nK)XGK!B0X5uzJQ&ykzsh$u(ATY$O1^q0w5^ggB79gS0qa&ySdKa40%KHcB;6 zSuzO;!>CpsnY9ilN0f=q%y4Dq;hn8qwyJ1qlNKKx4x-X>n%%9B&MK?4XR z6VrUXNWt|*BRA29)zaX!+%fR}Xm1 zh)0bC`jGnm?+!;tk`SQRu6~VKx=N|OR5wj=Uc%_QBZ4r2r{vhfwQ+~O1RC?#%j#l_ zFq%tNZ*=in4T>4nmTeIZUgv8d7i+Y-Eo94Z+TEXj|F2#QO7z`i_A{c#-IYcf6OTsE zROZjR+n1d=Z%+j1JTn zd+6vm8?`#Qp7VM|4Fn(8W8II^OkLUcMnV0%8i zr-c?L`(fwaopm_}=js0UIS}xkC!hfcsZ1Uc`D4(y%EXaKXp!_}&7Sgy>)}~Pk7k*v z0R*+iSy#a$v~R zeX^24%(kxlnZBzNfrHfi>tqOoyp%v43|w(75S}?G)apg?N;OE`O0+b$p?Yc&Fa4;>M((f(+qN5a0fa6{?2lCvuLHUtJ~ zs?$>|(7(8KG&DIi>SSt=D-4F6OKZ8(PI2i%r5OSRluhu66AmjYKYItpG80XMn@&o9 zR`GQZ{5deuBqL;2oG;ZZDUr_&L2EFS#)4iOjE8~wMjVvio6QBl+}v)l0*m+ix|BR6 zq7j@*t-zf3jCOGVB%GV-9-qnRuVe{8>Sv@<-AIjL3V*mP=gMK7dWVl_LqBz>zeAM?E0)b*m z(-tW@b|C-yqZl(%hEkVNw2uUR%ev%$PwfoW32O$$RZzsii+!`7Q&yF){S3^1cz<&M zQOa^}ud$yq9;5$y=a4dqMi8Wo()uUXucO%AZcab&9@l#!UG*^*LMtD{)wQJ!^~{{|qje>0#VA_7t-GV0Vt=7IO_^w2S|1KGCn=&7 zIiMqlKFliD13Y7lJK7x7ntg0O;-~v1`zg0pU=VC&Sr_guH7d{#*$<^ee(Eg@iS`F% zHA>;eTJ<4O1GTx+rl($J0Z@RWFJ@}K3xQP1SdkK<1Xw00W+4cO!<}9e@|b5YYCH+E zFWSfJrGrx^O4gG#;Z|M={+0UQpTC}7#2Ib8d!Ua7GQO-kqNNQmX*UEU0pJe@7AE4U zwf@t!j*X40k61-dQ|KSSc*Zpj9>=l0*@|=`jumLC5r}r@uU|vj7K7zem7BeOK_t37 zhCmC^0leiNW{O-pQ_NwEDVnA>L($P+o!;NhiVSBkC^Ts;Yr+#e1qvfIbcC$AnegCRn?NkwemQ9q{hZ80)DRKKV55>n@+ zrF_6xec$!x3-5M?t7hpcw?AKqOMFRL_1?t$qmqSty(Mj6DiAf?M7yNXV2p=OfuA`f zBa>sjholVH6rcqddf`ip%Fh>sbg|fg9}8rHx@*{h-8b_G>|28~r~`VU8QhR8o~FUQ zVm$X6d{aD^e%QJ#Rz-f)Y+bL?@#<8df815HKiz1(<-p~CrfcD+F|np^Vcxs=+ty|2{Ww#AoH6&% zo#cyzwgikJ)APFGIg@CG*hvi-ht@)l>k0=EIZLZ=Unl@u0cII6x44LJA^Z!4lKC?+ z9iBtCzQH?K4wgx1B&ErK=cc(pgvCHGS8NR*-4R`eCMk0^@ZhL4ck!fIkTYX0{Nqgm zXA54u6v#2s$LYCGvvG4HO>^;rGg?keO=~o~A8voFukYHJ1yE)-pw)>!Y}+;oIY8agmiMNa9*?C0;5E;h zHZt=0bU-%>p5aW6&N2xd_SY96bo}-0C)BUNVo1v5@6@~jh<6gp=2vF&@wdr}H$BYT z{4PCWcnu{5WIqkMf5GmJVYAB1Ad)%YW&d!Hr;EKvkJ70OOUUK-T=0;^+mHL5gr0C3 zEfR5KgQKbmo0CAPN#e)o^I~h<*%Y~*smuj4Wl)?JMmXI8iCS${OeonAC~;6QHNP2d z87I7@!9)1R!d8j3ifO>Ls+-yplcA1kmC*3XzXVu6ap`AXI@6oLTU$`DRye7g8L|tZ zpEjfb+C53hi6{uQV+PGfmYNmYK&cfMz2Hn@A#As71>D9s->gk`+WGpOc2;8bao>Iw z+|m*+q}t6T$4O})h=stm(t^*S)}vJOojv*?LbHPePzF;5I;L%%b*y%a&;$ig1fR%r z&(EdrJEy-Frq5agd~+-oM}-f|I^f1|NcM`aXW8ji6?K547g`8XK4#|3K%L?MWfbCz zu0Te^JT~LavfwTq1(Ui=feqFWFM%nOSdLj|`ofd%rjvvjgu(Vy^JZUHZQ6_h6WNlg9F`pn0bGzs>?3HLw0ZOK&|M5DU zPKimPl{Zeo*d(cX7TUPF^a~>+90YH4G8YBWFps2b{&?jK$gEYWx3(D1 z!<21adU``7ytCf#r&HikiojIc~8C+D%CNYW3!UMh+0Xdsi zJa%p$1_QS`eLF%c*M|;d-cycTNT3ng2n@+=H5Bb2YKy3*W@TT9jMnMqPRxN}#5li# ze0*p1fWUan)K^A~Y4FG;5kt>L0VD19O>3u&F_-A{u@MHIcSe0TnJmI^0V)0=rO?PJ0vAVOUPhak5s4~M34*5kF z25O02RuL8fQ>{_BoGq=8f#?NIsMkGNodk7Ylh7DoD8 zzPfI@YFNx}*sLL!U@enFT-YvoYpfdnBm?&Bf@OHevw%+U zNRBWjHA7s0U^svMzgEe2yb+DSJl{eE#<^>v`hffK8eg-Ib!p$35ZH= z5}7G;Zk%*q^70w$Uk`XiORbbdlm;NByg~_?BxhNeLBCc$A7><$B}~vTOe5~&dmARs zotTzJbPr_fT)?GJloLIi(i>qk;>rz=9}hSpoIKo}ii>mnOkQ42-`w&=W1Po!xvcF- zEnhzAm-46a){EHM_yRk8D~DsL$RUfV1i!Yw-s%fDz8_C7(k|$ygu(YpZpJvgCa5gz z5rLK^>vQvTkX<$?3u_0KNH*~diAHfFDBFo!mU)+qkEVP3!7wP3Uf{|L*1y4G*7)n! zqpZcO4g-UdfaDhx0NmOOot^!(ktSw_&U!;}Nr}%A5Eb1#&YUEYt0*XFT+&5E=|j=< z9|0W|t=$~l^XX$>=y>)o!GlGDE;{5K{rqWO_{J-W&Yzw!e;C)M$@9{JN@+AeU~GqY z5Kiw*B<7HqHp9|Xm#W1QE}fP?(CUxm4>Si|42@W%F=%{!XE;1D$fP_A?m$ZdjhZhO z$MvEw3*)8HHSKT#$bZ+I%5UrFk#v%-aEB0KAZqEQbl_q|krJE>MX7oAwZ0-PRqgo|BCn>&`IF=Y?=7?)5<=Q#D7yDqGNhr5l|ces8J$>Q}~C`goaq;?B(t0HPdZ@otlM-AqfX#@VUglq#y zWsHU;X<;Tgvt)_3&m3ev^ZX7iX$`k*O%m?D+_2dep;STdlq9yCR!B#D=dR@7LJ z85N`5m3X>xbXYH-LD6v6GPDl}URyDKQhVzb^W8M3^|hoU-b4nq-D5+^lon2;PL zp(ocvSOQQmHb;Zou95p}Tj@NO8%~3BV^2n9QToa)l4ofo^B7W2=o7O2Zy7hzS9+Qa zUv#>;B0uVSJW_+F zhC<5xXSd1N+X}5uO%?u&Sz?xr+3NE3!%pTXIOg(K;@F{1e<)9X;eFV@x8p{La*u76dWsCAC0 z;3<~x07XE$zic`7(5?15A?1C^k-R-y@)9btnLDSgvH^s3d$6>z1M4mtq?T|Iz2YM3 zA?o4=EdIQF9Ci+?4{lBwn@bE6?KU%Y0AxOc_BM={1iR09FGv=mecTfslJU`zg93YT zOo1Jo@g$P+4GQO+;4Q?&^kJcoTaNzub94*cZc~hIGLFQb;6R~&lI|MOw~CDqzYY(N zjCe>+aKWO9$K$o$5FXMp@zCQ4CIsQ>3o`==r}2dIkaDmk(QT?&E&SMTv9|S&6XJknCMcy%W2@rdP%wEgdul!cz zeevkyGTT7sO3FwDl~dss9`+PIA%681n@s6mWE&6(nC5c8(lsyV9gs(PP7hc92rczs z1*EYX;^fJiOiBZui#@5-C{m?XGQ-G^>`gnqI*TpO>_G@HJQ>KO2~5KWF-$y0DAG#q zt@IR34uMfZFui753z0sPh|B0G^vM_P~}qobEq zrQ0l5Oo}5#*R0Y-wylJR92l8TH7-l~!I80%rumsuY;$h{jKzA1WRep%|$Mtgz z>Xr+=pZTauYs&7%qXV9JSn}5Q%GN$Inb@Zcg!Jn~;z5y>%z8 z^3vmGU7;TFwL<%I6im0bLCFC%Q-^5POQUw?oOW(4%3o!?IS^&_RtF+&ldlJfLJ~Uf zM+45QzIfJS^;%d8uD;1{8XM`_dH&`30P?~}5KCuNoE&~*P6xuc7wzHzhfi8dI^1I1 zK?i^(IYS9uox^YP70QEYqMHOIy;UmhPlW)g916w1eH_QvJjhlsxs zzRRIMb@u&1a;aLGnikCh(OuI)>sTNZU)6T+O%J?}F;*Owza|+_T<_`~#Wq-@lQQe; zoozSdrLkLV(vK&*9zm(eQ8rS$3sVd2QGM&{l&w>T>}7wI?C(l~^;=Qa)VPBkGn3IpP+HR#54sm{HY` z+mRkD9%1=qq|fB0SeqliDuv(YXIAV~ZgKgK%|}d^D44=pDbsI+P4mHNj^!aETG1E; z%18w+gU}@LiOGOh`t`J+uUxQjskjx;D#*6=jSCkq50sTIXTH*TAUTuoOfr{&8gQp5 z(IZ+dDQS+uxbwB$YU{MpYSgV6Js%ppFk+MQ@*7}oqcGrMU7Tw&lSwJMSnWmIIA)e^ zM6u4dyCpc1LsKr^Z`u`$#G4rQPG{dIe`MWotu39|N|QZdx{AG7JZ#+T$Dj;p*7UX{56pUxSdX5*+lmX{xiD172Y)8r^qOtsfs`JakDoOQx94|Zfum+8Ls zezZtV@&Kz_v2H}f%*thGFWQJGGO015Xk}l@lu>S0J&{A?_VALZ`AGj98-GQO?`Ion zey1g>LZ#y|HU7rnV|vAv3w8~GK4I%wfbk`UB}`S4+3I45lSh*7q z+hO`l8Q2kJcgc&M^(|;weL5bf!FXvPPq_skm5O+LD_)Dkv9d#P0VRZg1LnA0ds|x@ z9@udrnhD%^KuibLb#T>`9o55XyXu1r3*6Q%0o~}MTRq8ti@^1h*ru{v4Dn@&i)wLO z{w41mvtC!Fhm;x_C*nwI(|N*U>hvW_IEolaZFrT!HA2U&7A(LOnqvi2eC;=E(YKM^1`El#k zQ}QEbC`U9$-j_)}w5QbIh2(D4+Jr@t1`hn$ssHzl@?M0Sl7Qxy%a@DVJVYcuZt+M* zTgMhni6_ZJ)FzV0xF>J;a#d{z1%Moi#u59?PRq~TzJGU00Y8ZnP-B1t17 zR+L{Za&t*>4R9ORsqnewx*$Ff1j%AY>`r=>#l14Jah6z<{Y3dmuGV3S_LkZwNdFL4 zgH)oe?3}!rpC6S)$#jo=`r1deGnOa~Z%=e`N^B385_1APJ3fuNIMJ8rg!Roe5xQJDC_U?_s{tY_J-Nuwi)+f zWY`BH3AvFA+bwfZXCvY)F-@=*oP4jXFR69SX!cT+vC}QbE^8!5_)9F^g)w0jJz=Z- zj9E~}LB=d`lqDe%*8d7mP6ZWuc1||eUZutZKJf0wtU>8^+)9T=@YB7`DX_^3FP)i+ z-l}ZOlBq&7M@<==uP0j=kQyv*To%6Pj9eXS-qE8CZ7~IF59R2j!o&fVtm}T)n)zyOF+NOMiR^UwBUR5fNa=fSkCVa9152N(|@>YDi4> zO%JI&l0c6qkRajwR%$ zO>Wq5=AjE(0Ms-6Kt3n-O}y}A4gOiWEJ6fSvzK+T!b$J6YU+fqO93Djd_VvMQB)SN#!#r_D+d_kI&~iIvSZzS(4M_ivYX2bq40%5HH_M* z$^tksg4Srrsj8}+r(w65Ms@aBOk-Q2Zcf*zcyvzRM4MRH#VQd_I0ORy@W$NX!*e$t z0v3rCeE9YlhRre!e~<-Idp>cWJ{Hro9peUl!p4jv$vgDAsPKfCX;7=1yl zVD}F<8`K3jl<0sMOc_Wlt(rF{w;X`k) zw9awDr~6u`W$5Pfn!R+azh&bYS84v0w}D z2dB>*Lf_-4s)9MGaRN8iK=~Q5i-NDXC$tjK?G_&6p5gi(t6M!~9vq3pNGo2^m%7E? z>R~VSM}-qMjC$2P@HQ!V(6)!=L`dX!M$6Ch;}dq}`uZ|%M!hK|!({mL?*qB+E}bdi z2o%QKl~6Wb!?$t?jpGD+s%ZDfJc>-pKeI__E~mGcjsvS!7Y zusJ3)F4{W)=5srbLX5AK{q_nHnrrs;8QkXe^_70lKB#Ib&#-wSRLkR?ylTBoRU3f< z>157=O}yQ)t+ZSJghcUYG!J_kE8*RpAE}H2p%*%;JcBuLsRFkF{z1=w6aoc*p%r%r z2~2&v#X&v7qc#&8uiKzycKF>vbrF;+Rr+85ANEn+GiKgDpXB0|8&bDimk2NgQpNxn ze+{HkULf-<_n7Ne(RYR1SE3so6@q`V?lR(FK?xt_cBx0HJUI&wlgc!1SUaIVy9165W~)bEVdWK?t&E>anro9=REA^l2S{WD}o3I-yMc) zHONyJ~x~)-!6B6-+T3?r`y=Z8V zO!akq*TxVy`3(ue*5q20roz;H@kvO+I>w7{OMSbH3d~_IE!AtI^LSQqFvJ4Fa>~ws zOhb@g;DiViL=ZM;Cg{79Q>AfzaNnr%J(?J}els|}5TWs2c#c!wp<}+N)i_mc5wZ7W zemAhVwjT7ER#jTZI`nqNuM6Z`ZRtLRzY~Bz(+$xG;BXs#^j`+y`4DGI214ERq58vL z3MK1bq-Q<%Noag7-KE5Z^8Qv1UNPj8x-bbMdy|$ohJ$T}bI>`+59*tyv-HtI;PvcI zo|H+!6L5#jX?qG?N~|F25cWDvxT>YndE_OD#dU_~)dm2+`bXvj&Hq-`fuRDm3+B=R zYXWOLZz&qidpsRa@kdJ6rJ;C3PHHnP%c>iy@9_{QpEUqGU2?+IsT<#j` zWPWZHu#qxyaxzb1yEcMbmQ;b((h5=-535UK%USd1ii`NKG-F+nKC~31jRuTxdElq! zfocYDIvNB=U9Vcu=-9|45-b$pGVH3D>%Bu-UOz|o_*Q1(?DprNv9bjF7brsO;7Mik{3{fR zIjt7%It@V#4hzHeobL+%ymqLi)X+54QbM;#AlG{5(X)B%eE)bGzOJ0squW0&_+)V&)k&ZlVcwHls)yDF-7GhRwz{SlA71SeGBHRa#K0Baw`(tc>suBaw4;>+a^8 zyE`uH>D?LzyZSD4ir1++>Pr?$R3{gKHkcZf%5688(jxLY?;7mlzHc#ftUNg=wW9_cFMZljE zbDsz__PRp@cT8%1DH*Z(;yfsZo>_26cjDdiSBqYf{YXrVEem$b+i-;W#F0P&cizO% zpK!&@xt&$|OSqT7p*}I|w}A1)Ov}EhX5s`eaEZ{)j+Yxf)L-k2@t+|J2|508##_3& z!N#qw`E-OWV_Xf@2|(3x@m;c#;6p)5w6Ac@P+@O;9(k#3PTuN~dk;p2^C~m5M$q`n zcuap(cA~Vz<#{E6V7!wZG^fW|(pzO%7JafdOZ-X&%c+Es63hSqUL!oo zoyiE#N#9>D?yfR3EkLnsvow~=`(VoKP~trS=1V3$E-C5F)tp#%Osa^*X0dPC3!RHX zM_t~ojTX`?0`iOI*n&`bxX?+CZmCva=4&l}Q;fxA(Craq{Q}ryRkxQe+Goa>C*2@1 zPKy2YtuRm_^Z*E<&aZ-pNR{oVT}WoI5}prRv|7S=%N^py1zaw|Ad%pJy(^+zUlueI zVwk2+cCQ-$f{KzOyRP=Jh{bjxf^5tLEYx^B>>5N9cu7tIEk+Z9>}4!3iCk@h-qU2X zP+3&RXfPER%PaAAh7A(j2^#CyZFwKZ=7^+l2SZ#n&oRS1XbWI3xcA+g0SYCJwuqw z0lq`Ao}SV699L>VoU*kH+D~c2?VpULl4)!(2N*|mV?75{qY12aHJv=!gz<&?Cryez zBL$AD4emjwM2Hrm!{oMw5TYsQZG$4moADV~ArKBN>X*)(VZKrxm8ycdnP08+k$ovU z%{w*|#qZFcvM7#@Z#veL{Bc8G{rSh0?Wy~%+qLPfK|PLo`5I5}2V%+zg=B<&_{zoG z+xxbS*Y0R~mu@dgewfFq#iV*u=qyTtrb;6+#jV5h5NQkH|5|=uqI+Yzj2>NY2bN+| zI`nor>!afKKV?4&bXr~3xZl;F-)GgTO=}M778E9qdU~I6vmfOp!&O69Tv^`QyJd6r zwuU!pcB145xvW~3WbX(X6cL|PsTNk|tWnHEjvORy1jLMMz-bKKceKX81rj6k=C3;s z&G^iV$q6NS%SRurI6yTzd2uPUsH}YAjI2)G=RN(j#_Yx2Le_!BUR?gEQ~5Yu2LkK$ zs$H5td%U1>SNXN_(p!Hm?71sf4;Z9z*(qK!)%f52$1TXr8%s-|6fkEriA>VG?j}$9 zvQtpJWbNProyDFlZL$@B1;;-3xZU%Bhi>e68_H36S>?2j0Ak@B;)!{tLlRM%2%FBw z`auBC8Ivgpn2$os>qKBYV3LUJnZef>v$3-91?j*3H=fA{k-H^kBBfc07Lyf?`#!dk z+0dv*UEEZC>R@OSr8JmDa98lcwx9A-gh3Sj zPVeG{tq5mo-YMS6?BXV>ie#Ap47xQ7xHPSQA2fbzEiy~0qEPxGWkKaZ_zYE#=I?FR%$ z`X}qka2xh9=8he`O2Zg!>S6}k_RZB{TkkUOvE@H&OK|}lr?Mf8h(Ik~SvfcNDxH>Z zFz|tqX~j*_Y~(%l-@5#^wC$?DrIPl(DCsw6sl2~mtKY|&#{^g9*rTM=E-w3x3XBeL z&D$R6Yov?=pRNn;BM+?e`1rwNT?Rnl`2+5kl8tc#i*K597G11%OOC*4UDHDqD;=6k zHr5L*?Jp-&qRZ%eR;uAfBX9-Argcvy;pJx@^m>V@b@JeJlB#%ROq4E)sCM3S+)ZZh z(Vsvs(E-}a6UbJ? zi)t=*-PZ9{NTKsE!OCsNmDboQGZLu0htOgNbTfdX+Q}&4&m=}8vBXe=XnIucAv-Yc~5wEt#<(A_qRo#V9!r3PQ(T_+p zvDb$fg~Kxb)%*&vb!|;U&7}tCp>S;~S<9`fi_$p`0m5Iqo$}%pN)cPc^YgkcIkeX% z^WiLVfJnG$--9^Gg`n?Y!p+vm-x-%%zfK;QZnOS8jze;IOttTF`ARb4c4HV6{^UM* z%?bRR?$#0HN*;nEb>pN5w>oZFlNOzreHv`^dcxDLwCP@1JD#@Wv3j)Xvlr8etTDh~ zH+qA1FPfNN=bV$U$_{&w&l^1_REHp7O4+=1b4=r+>{F zJz}v137f{^?qY}leL_mwIf;h)#KP2$@ky@pJwsMfjkzVxOw~oop1wSB86Z#E4XT z@RsOP5gsq4QI%Q#rAz&e71cMl|C^R(y%bQy;I z=SraX>8v=nGuK(Qwce=wMqWCe%!=cD?vBcuIAC&p;8EwnXh!KY)$5|VY9g~bYoanc zYopFCEbk`%)_U7iNk+F+dH6k@OPRtu!fW|{B~$mW6rG`^P9mMg|(`OwEA(}UJ(8eEa{%8cMe z%`O7PK5(|??Uy0VT|B4)+wy5mxdFml#Mz~8&TD!I`8A0Vy9 z_LYqv+(tyYkaA?dME-0IVQF zq6on(SOc)SW|R7tuYcQIk^a?H%$GdpFj7aqHr3b^DfUK#a1 z1%xQI+DKBV)IxZTwM^89h-xhu@a^wm+Hf4=b(#WY-J3M zntBML_NYog>eV&+tKxaMLl*~)Q9x2sae`0zr?5OP9ponQ9Z5$f0xfVrUsEr;ZEmLZ zzu3Y9W2TT=H9Pe@c?1a<8hSkmdIs)AmE+0`hl$i@S+5i(+8GNE>~;xS&2k6 z&H+5_A3=)xrPCLtkWR;}m6~bAM3wdqP9%TAHz4izE`}h|E6c!V97&vKp~gD3BR}D| zq)>H7mlts>H9RPj8PD3TEl9gcM4ub4xZqVWCTHxs&b}jAxdIp?eZ+&1i3cr|bE6eJ zNt(*JjbP4uHo}2$*i)qYnsq_zoNa9ui${ZSJP_@f-1>9)PibQ?0?M|6b-x(+1)Y?f zW*)*dZzB(^lAMws+SM-aZ(W6Kt~@AzN$b^?E6^ZY6htkSvC|S{q45O2aUJTNyWuGr z%RE(3ad~f1UNkvN9Gem&2`a(A@g-jV=Jt;wRv&hR94als=IV3Vc`+hRq#?sJ#t86S zRV2}$%8OgA%)m{3f!~o&zJGE8J(=}OEs+NbiN829N#(8n-Yby^$|$iNS!8W!ucpP2 zh@1sXVW7MuRhd+mt_t>)L-!~K4+Os2<%%7S9VZ}2CqF1Ij&~sytX# zm#$Hiq{;({!UaqYDMn3;hhD2bhQhpsaK+vjh3_!~%tE-2YOpH34hR`f@__ApPq7XR z6fA=70*d{S?l8&Uu&>Iw0?@tlh%6j+?umfI=!E>h!V0uVbN&)Fz23yK*~(I-)#@mv zhx7G~E2PjyyG+L)KSpRHeo7bg^1U$+^^}&D0vrpJw4o4iDNiEJElS7|{c#Wtn*zy$ zH^+50mDecSgrdLqtL*>omLX6;f$9i88pDAxlnMZ(CKMSbj&n1u*@uQ$EbBR0gBN_i za~iADLC8Zzc5udg%(^8Mn6m^kxHlhvlwT@%L+j=^&k8)FB8(p!Cn86|wejcDAqU;U zqr?!T=T`OWv#H>7z$QF4L@jNekHMRviw=Qwu5_My=y5gvw<2x#jIX>(>)h;pU;HRu z4!v#dCsv@do11eI-U8dSM)y7v4}B_g)>g?C(}x2VBCw{Q%=c~lx3{eZ@BI9z)fV)r zId5^Oxu?3(`Fp{XZ>*3Z3_K2^e_eM6zd&IQ@FQW2#Ob+N*I9jO!J?GJd?V6w@6ufM z2J(rQNelv%U*DODS1a4gBJGim|J+X8o`Nu!e3$2^Ij1=2*1ZZY#d&6sq__z0ZtVVZ z%b@`1Vwk_qejRWsHAN!<@&$7W%XUuQIX=*1$>iv>QAgDw>wv?W#}9!x{`}C2k$JN= zCaTH|y)81ceo_0D%K(8}^kLz-mYD0%z9}`;ALHZM>0euyk$Uf6X&&!%s^#-yDBrCf z8c(E+J?KL(`pMv&4DAlE8BjDo3=cWxRLd*^?lAzOuhp#56oxs`%_8+?z2M1E?yRO= zQ@i!sAJm+GC?7C(H2ZVUN(XadwV7^Fw|nXA{04o^3?sonr2X>u?#Yj!@t+x(RoTJ& z6TPNhzMN7k7=bS~_a_Pxq?eExi;EG+OK7L}E$!b%_;Z0ZlUV+=-j-PWd00{RGlh;?}k=%CeTjT3gH8S}klO z-cE{TlvhYs2G32%Ul`E}R@0~Cc;<7H^_E#ihG;W_N+Zn02X1Gb;|^{|d`gISN$vPb6iA3F7=ul4nrMeB6Y z*XQm7VkWpe4VXpfU+eMFaM3VIbb24aSPZAFLbS5=tS(aa?fUf!E=9uP#EzhpbuBPY zQ$oYO7;OpS+ttUSoS^aIlk6G?U3Qcf-(;O&w|~pSomd(FQ2*eZ;`*Cg4Ht~+R_;U7 zG*1wbjFGjFzxOaEddCv@3C?)J?>!L=pYD~CkOjz=7SenIVc z)*kS@Lr_avssNX67ObD=zEWqrym-PZ&h#5;d>goL@yeXy@sc>Kw{M&maZ0mb1Dq7= z{6`er;eHH;iOH33AW#bDI1sRT4|Q>Z>!P*U!U)Xz*6@&^wfdQ-jg6m~)r>vHwx1K5 zRNTV1ZZdGK61l%&K^-sQMq3SCD{x-6wMMlUo5U!}^Zmj<$*ePHX94rG_1O*t>`^JS z0mH<^inR_zOl>sxm`6LmKR7YhThXi3RMB&PllwK#Z)ue{h&rb({Q!uxKDj+GFHFA&Z ze4l{Gq>7VX%s=>geYaciqQHSuR|i%1y&m=(u>|Z?eHwv{KTOxa_W2G~&0f2}jLm%* zObOC9Xt+4r4eny%jmM5f+OPs{yf1`J0nyn(g$@MlHp=4b`?ixdO=}c9>CAOGjc+w6 zKXIuEBgQZ>Id!8!F3N3K0v4%h$g1*YXU0)~8k4uWS8wtDXRScS>lk&cJHrXdZxaa*E0_iv+lS{OF)}dP)V5I@OJP>2nDX zo-+~l_juI0*DOc3Ae~K1WW1WNb{8dL?XhpZgMSCsd;;M7t=eohrFscoVM9kddRA<> z4j_DA^}`RQ{cYf{w?(O1QEZ&*yN*Z1H?2wk-`wgXYdgN!d(4dHe{W=Gps5=uM& zs6F0!cNRdrQoq~f{&Bh)TmuqoOE7yfbaw4920bEo4KRPiPTm)k1NFRe4X;G*ZrTQe zN?$c1TWqgUorX6^!WMtQ*YhxV8~87K$A$rMu#mwxJ~l?O zz78iaDhNkh@=@Di*Caawo@j|?6aYm+*ZilMLlU}{gtskV88Cs}0V(j0gL#x&Xv&e1 z_7lIvR_c`sNHU&qLy8%+cu}=b!lm%&IhqnaCVFS#fUS=zl`Ct>yo4vk6u-(>U!;CX z`L&M0P-kEF5JOLUV)5e6%$A9xs$tc)^R`aO$RP00^a`i@enBS=l`jHG+2!qwpKr36 z_39rYrwrQMtQsmXcLJxux%04r>yAqrqfbnDi~EUbF~ChKf6IV++?TO?nIM~O&1Fiu zAuLZP_NZDiPKs>~!Vd=GI;gac+@dN+$6(;}cwKYSwj*XlT$m930rI*Pqr^r@f}Kcr z^X**{tEvE!Nela;kw3UMBNfPkRf#U~HFq`1uFg_FH~ZEXkPoipFdUIOy)&u5ZW94; zCOIbOR&{W&9kirDMstu9n~WP(V>?NGyCGbU7_L=z!W*>ZeW-*1VuHU9nR+_S&CWS_ z9^4@yQrXnl*Ur9^?vvj9smcmYKq-kZ-jI@VOCAy`-Pzor;FIKC~AnIxkg#JEFRE_du zH#B0&q+aZPUhF6-dB+q%QNXQ_XSDMmyplN_Y;5q}yR-|V~XBWrhISFaFAU8k6$!ku*yc^EJSGK*T z=KmJrv-}|W)j{&|Q29k__J?rgrdiT*(u&d(@*R>&7U2?b7&pUyR-wDvz_&Qyw99Xw zKbNE0@4L&_{_7xztJ>$S{4*m;MhQDpY&H;4L4auz-G8eDr11qq-w*6&e^fA8@^>Br z!b$u0v@3qp9<*DRuxmmcu?6CjG|@3k`KVi=D)YuWFKW~JOaVbnFj(b%KK&4}xuml7 zF64CBx^)%E!*m~Njk3gPT8+5sHpJ|qDdP~aq;(PO9%T5M_-^B_`~<+cm8-v=e?OG8 z*~-cl?h1o^ZZvONyYo0m+b^TgXw@OB-2?`GgGoNA*A^e%{NH5$Z)T`L)kW06IxI=<98b%6lU} zd;iB+CHAF5u!l=cJK>D$!T?2$D0_BP5;hA=VVhZf#%kkFlZ?@=RQAxazhDq`AhEds zgq7{P%O6U_+S`NmGG>G^_TNOB>Eo_1pG_M4=u(X_vqNHs79c<)55!(1c}OC*V*}wO z8{dE%PE)z|3zSu&W$!s?u>Xg-9gr~?|U0uB@mjb^C5Ev3=!e?GFI*zjmb|Q4D zyu~u@3=`&LVB1jIu!OhXiT)16P)2N6vDfmM}z$}e0Zi01L{OR))P zfu4}63BO`^8d`|I>r7G-zM8sey-&v|J?^%A((R=D$5wrax+(Cr*S?+LTU!C?AKFm% zThH_E@opW=^W-w@Hdz;)ORAL#zf~Aa6PkSkl2;ipB!Ak2QaYfg45d#1{WD2wx+u<) zA5zwZN{xUE@R2E}ozxcj?YE|}u?71ENSjIfgV}DJQ@1F~XP8Usa0{iV?=qWQpO2;v zZ%*CsfgO2a=)0Qsufd);lqckn+HkfGu_YUS*8xkbMMbG+PZ-5pIx5W9xDWu(4{*Ae z;MPsxlNSsOfn>me1GePI-i?ZjASVHTm#mzJl7?24ui?0DtQoTo zs!1+h#mj{W!Mq+g-|#}8Zy>e5meHZgrj4= z8?!cubAI>-pzZ=nX>G6<7U{7Tqq%Fdj{ zJ6-jjMV`da96|v>(2xaDnTc#7lvUN*e}?e2EZ#%xDgF@TCuW;Nd)!MzhF#ilBPbjN zUh&S~9u>OfdG`);J-nG1Jyp5fYHt>9{t)nNR%I0Sb;+PHh2|qcnGMo#QJl8w2aXxPeRIhTR9(X3!3R|_iCoR%=rf{e*YNuQ9J2MWPNq6ar z4!pI1Hcme~o3T7?Cn}71MA!X4BthWHg7F$S4~b?XA~449yUJQg`8$lGAYb32RT5)I zYp5d03mRD>Vh_R)3Wq#$U)jJeROYo@y{cnAjje|rbW=m_5v zdRhre4peW9JI6TY%}C1-uZa$T%TOO)MRQaN5+_TXK*8h&?#~4G3<`vF_JKn4B}QuG zWJA+`gV)!p1{Mu(u^pqXhCoacn)1(OF^k+Q143^xvVp zbL#KqOr9Ywh(R))QuiPaAe%G_qZz4~f;t^%wO@@YTXY1Mi1bq`U5>vt73?g58&5gA zGXtii)TcZ5eX>j{;)dPC|}Y;umdv*NnW%@a{bJ%bE9HM1yc^v49`?q&f!})o1m8}dVgcOqEpVx4TXOF@ru2`4y|3%+mhgT=W*RK8 z6(O@ep%JM|2AZRqIayLNy6|@Ka`{9v@5Cqi3d8uB4@&O^R@KgztCSwA@*G zejM6|)v@YSADEAE&J1%pcDX={?om(r#j7lDc9prji1zFK94xnCq5@^uO7aSZC05 zUNoyxd;YU#6dH<5$q{+ee{cxV;hLJs1^_YMsC=+b2Myj7GTY!a-XaVP@^r~n;5w-WnAY*kzmT$khfH&2ouL;on2i6_id@}sdR_6ReKn5@%}+F;L77DhvpWU# zR~PA$Lq(#_o)&Wd<$LE~$tH=!EFUNI+jRfk>=llRTR6cNap8$|?)VBVD91|dUAvex z4XE1lnX>E3xizcj@L_rUw+d)z`dP94nYb?R{>wC-2Wlp;wi=T(-|~XCVfGxN_6vh? z%O@zB3xze{mlYEogz~r)a~g_R!$qCdnJxh~9m-+< zUmHO+y#4ztJ!HJx;|xB;xnC|B?y6|d&&cRFbVA{Cxacs%4@gSJABt?8;h}6>RY)}U zb}k9K%06AjC<<$gIWC|eRg^(GEI}<5tiQ&0=7o96u#nP;%kfs=YF1SYoL;_|fqk%i zcYjn!!PA&59|J*g$S^xB^IAkIuG}MgpS-PX%t$xj)nXn}Snn`HfyZRcbwbgi^)=FD zs6EYAuv}CSJnQ6K_r6wz`$U7Gvh4EHB^h>UCRfN0>oF8QmleUAP=ENiR0;ep?5Ol1bMx<)P ztE$4zlNy*+vINO|PA7Ftq~gOIq0xAyhbD?C3aK`Ca&m7+=AbkI7Y(t#-b~w4x4H>u zZj^{xVV|S9z?36&D-|;2K51ql2!9gKrM(;xDaXF~J}@LE+sg!Tq`(lp4;Ai?l>b_^H}p9?N?P7 zRV(TIQAf_v`BC%S#^2;KEadAi;3bMhZ=9n7j^D%HhYl3gyyy<+^p#}IH+p>p4I>>- zw{&}XL?ScctP8us^h=)3WUiI)AbUe~H~o+&(hV9zDQ<)?dmhg;tZSyNkSKf!btpCc zm31j1>wLBpRv`YAS8^1dobY9?6!C7|e{PfB>sVKWPadRukA#v!b(vRHhXx<1k}NVz zA&n@DOMSSa1CaEZr1Qc9y0`qCHF0z6pl^ZoF$ia4Lg4a`fI&`~0(aoLagn+LQRlq|N5^ zAo?@Ty_40YcT(~JErnoFdR*_*r;T>$0D)ulk34{L2mpz=&?+f^;>O=4ZRfvdPTZ#M zx~)lhvVJ4yn>s?eeeZjjL=Y<9{s&aT4?=5{ZP?qoUOTkK1S_$(jNz z*h0Td6Ql>gJg;ZuO-W6E2>{ur0Ok9R5*P^K&cZ-$X5avZT%h=U!L(!^9B-Jyhlz~s zj9V8rTdqPRthzZZx1Lg6)q<1a1_o5keeHD;K_r_i!DZ5-6g0+b0Q$R*b|>%Z>HMFT zUP}nh?9$2{7&Z-IJ2+%5cq_Hl;YtTzhIJKRG7Qe5N3Q_~%5no`Jsq7tz})-WD7O9m z1A&SYcZZZ4FE5lR#{yqqy*2uG&M%%XD>_(xw_5yI*1|4wb;yuWmVlRmS0?QP++|gB zKYxLG@PAH&(tK)a1R7t+O?NXfhvdf*9}gpO7D`)n|5rxvc=^t{UL!E`&pX(Tml8^17>keUn3>qx z_9L=9pXlpN>w0}2baie1xNG~4aEF#*Qx>e4uAb8tATslC7%o9xQ!$=jE_X*CVQ(cj zt}IhkSE-cMl?pfKZDh11MfN=`+faqx>Zx1Ou+!y=nyU5fY>MsY@k@|BGrB%#I&fMy zf7hQMyJvp?-Xrgd)H@t_M6Yz)-%q=y{(RZqbke$g)YT?gIsND76uQQ)aAI{;TV0Te z@t9P)qS(&4Bf{aTRn|ste}4HEdCt|Ps-evg+l9%YLdZI~68eRYJi;uE+=( zy^}oQq7v`}YQUPoHF>1bgKy<2UAm3$u`IoWwkzme$12f8jI200yT!cXn)Vf@plwr% z-BhJX%=S6ry14`6?As!${;kAcOG{^H#qcJ>TwY;4qze*QhNm77#{DRX9CcvsvmK>v zXHOd}i_?jQ0%(1K`;y*ys0JjN1KW}kq$CXAMaKJE)9GT8$L0*PTpikq$arjiTgC9c z0MXNIIk91iyVMQ8uU zLx2A$raTpYXSZbU+t<*ba!q?oSJJLW2WS#E{5i8%_eRN_EOSx@h0EWSdPq0Yde526 zMsj0FOZ@-%8sBdjQ?B9TMqw}+!xpW2vVoOo$3vn|?*Dyxxe6SAQ39 zr}o=50!rC%N7bOy()6@2%<7C^)zpoujsV|rSO3JAl$Z*CT{W0^43YrJ_Mn~?;Q2Aj zd3Dkz=BEy?I7rBkCljCkJEYP;yF5|ucJ(;9gp94ebyloA9_F{nrbSsP7Au+WbZ)t^ ze9qsp)l0SXl?>D$-RZT}Gb)M87O3hX+x)fy_TH-_BOCf2@VMIzlF*J$*=Zt8L!(BR zTETTx2nyZ7gQhq1?GWmDTs`;EhQ85}V+55CSXm@0=3d%KPU~pyaU2D~hiJ(>hp_C2 zqSERdTekq`t%i}cCBccsRay4VLGDNNIGk-8UXIXnAFZ-=7uLeIlanMi33PpWqwGzZGc^&=nRnea|NaiXT#nC$KguRg@; zFjIWnUqNM&XRbUl%s3GJK&>n3u{D$lGy7*ta5~oM@T^4#>P+7MLU#X4uda)UYWq6k zz3wU|dWDqT;HmmB;tp0I3qB5^%}2CY9sWZ~qv}cWPqOz#awYkt zVfMKTxtqb&36J<(y-k6*{Go|<^2nP?XLx;d4Oo1rBJAW;$YLuQ?P3oWpZMX9ftu~R*EY_5 z>qxKAn}=;AoSJlH)-f#}#G4B4{I$Hh2uEFMx!joWsF~ooB)hs%I&KH;M`>RX{u zppQp9s+yUpG8&cB;`Wa`y;aBL<&N%mu$7#ct}8v{IlaZZ5 z=Zq!ATK!0?TvF(_71yry!WnJoSz3fFUExbel3UtEw-Cd>$K)?;JKtu#>kZqP{YrS_#AOR!cJRfQ$C&JWVVDMyly zLYXAKMK@e#{8`quROGJhxW@|h21{q&-^sT-qBk4wAa}2+LTLUe`D=yE%`~!&m;dQp z^Rse1!g_VVt8}YVd}~=Kb&KS0C0xZ>O05*hZ^(wj(LXfpj?Ltv2gj zo8?Ha&UZ5`5o>v?l+mGht-Qj4$}B;K*S85};;G9chJ`QG=>2rtb9JnpBl?`eIEl08 z=F8#vJ7>(744v9t$Nn5!hks;X6vl6}u0eqaY>4|9XCt>DZ~Z{tULNz&c1aGSL$$ev z65-Dm;A_w05pn{E{A-9!a0?dI)PUjhOP!6*ZEg-q_%@``%^}1Idxd&YNmfpta)EM1 z&RUkbaOAbpSEY9-TX`D!9r>%W4Jryw`9t|r#SViZe<6Rv*rQ|A?vR9|{=&j7ajm`3 z9#wZr`#owb!W-}fozU3pz0hm`9__JPUUN*ob?Iu32|rp z;kgF3`_32QV@_zB`;`4u!hd$xDOa20WWvcA?On%R#~mt3*&W9n#uA)vzN8Pqkp@@8H+}ttZw5(A?hRnQ>%D5kf1xQip0-5#VERy0HuB#4XRgf zb-G*_%N++ublNIM#GVdz$~vmkTjRb=*K(NNEugEZdHhGvZ3=6HEjCLRzdeFE0oX)7 zxkqdEzTys>VMG}2Y&qaOYTX-Em=toaod7orjI7}FYP7j3?FLS4rMtiskCPWEIKdHW zkTR6eV&dsj%fKEjVTzk`^Y7?1WFRaVrU76Cf;a{N8y;#fUq(YJxDqy{6sL(Qzgr|< zTp)2LI~YSUY(&;c()klTBjOkFI^I@rEht}`=}2MBxg?|{J$Jt&7HtMYDna2fN{boQ zP`M?VbKqnur#jT(B?*1#y6e$2szFjX?!3eW28EfE_{ z5Z5feEJ4dm=;L*?TbY`i`5n))QA#!1CwiHc51K$u)Sb^-%!#K(M9x5?C{R{pY?G{9 zI8Ny%ES#_@NnN&NtLCIm^Zw7?Sr#}eyUL#GU%Li(pajnQ?EiJ*rHbr0*CYGnEAue| zWbHU}Hi41@^`6J98-3-YuMD5!(ezb$i}Ge;kinU_E6UXSAt{Z>rnBBLo3|CdTj#P) z>#+3d*L^d`u1QC%+jU)z+jxH7UWLk(m^2EVnVWHB>E@UNxLY1Rlq`Gft}!F=UNfri zNks3P>pkmn2PCm2@}SA3!t**oDuLcZX9^2a$-%@x43$EZhDiO6m_Xzq9#n4qn-$u3 zwrt|f%dPMg*kK41v0d)X^U18T!x8iYdNmW93$@Z1@d$f*-xkI3G13H5CV-D@o?KVa zpOpJ&g7BCCl0`|`k#s4C9-;_@IFM4PRB$Q-SxuYTi}&+2B-&RZr>_BEkOW6iu0HSQT6zh@E+HVE_|mVKdIxxk8`>1o!DGj-sSrnCDQ&I zXOi=DGG0uOBRfl;Fg`o7AH&WekdqSmQ&UOR$NU5#A+Oa3NQXY4Q`HpCe7r)w&$Y$1 z9#KxO2rMM47A#8d%Paw{pLz3Pjy^%6@B;TDR0rTw=z~q2&(;o0mcIVc?FS;mN$jhL zoGYn2JEhaS=%ril>EShyttwvSo-rYb-8%qn$t^8EcVb>;nW95!=uZ`UuXQ+NQ_LD#8ldFQlyV_ z8HXb>1RRuE-_{gBurj>nfll`}UR0XDDRo=S6+Sd5ZX@FnDtDj4vPxo}(%t{AB*>(d z)E=s3(*NbiN^unI%{*&L$8QE%m_qn0VNpTH{VTY6%{GUaZg zuKcylw5TpaOh234XZoLP(=yv!^^_y0E?1bU@>yW%9UfOlfx$jY+qzNL&<0zYOH9myL{1h`)?iN&`dd|p}^n! z7iWqFt?}fCgs5W3CA=oLvS`R4-gv;)OrWhPdkYsRW^eYJf9z13NEw#vp2vP{7nYM9 z@z^+`AT4w1v@^RXAqyE^1G zVw`VIzDvSXlD}vkciQLJQ687Z7k>%5uqox8f!!zyy=j=owihOFIgy-@n4H}nMx$i+ zNr1riQ}Ca9vDMU~rRM_Hb#a>)6=&YvwCPqv(OUE-VECHS0RM1( zorRg7`C$_of#;R$EI$ml@aH&?&=3{}=9!!PONO3bm9Moo%xB_11kiGu5mzo%(E(|W*UN~m%89UW)1r-Q6OpSdONsqpjp2Ot(n^TqzQUf6`KywCiL*z>t6&C{%i zl^o^l9z^GW2ADjOt;6+-B{T(sGCl4f9rw~S+mk;$^ z{DUY6{rJd1(1Yq-c<;e!@mgz;u;U~(pzH-z+=z%j16r!JPW}TrHQZXizX1Y6<^?BO z>fEHteIFEep{Lq@NJZn`0j*X}C-YA_sZz!L7^r+oC9Dz@*r6B#%+y0JUf{XM+K%O5 z%i3qnkSH@DwvS;Aj9W0tm<|xay8t7gsAFAfq1ziNn1Nst8}HI`b4nqlDr&X`5))(f z2xedul)Z1uE9MQZ@9iBK85=uoc&NO%c>jSQwHz`$bH)`l)%uP=gGf}ueTlDLjo?s$ z$T}5ud;K1)P$#w5?b-M*wYsf7Jq>*bN=t96o0S<2VG8A`>R3+Zx-H=ZzDv3TI}~_K zKtLVAwuzKs9gFZR1mcOv5vZ!nbzL3Lx~ZL2ELrwDN$p|S%de~@7J19UTnUIAz$3Xb zBA{fs!4ZjJMc%bOP?dhKKW@dKc3pQ`#P7^m*Q^50?~bvs@PM~rDTwCYGo3SZGSKnk z?+^E_RQ~`_rlfhpY%0L9PhA9Y0^}0ZSl-pTiU5kN?3J{ed?992iu_-l6d{b!&^W!t97dh zt7nGy_wxIp0OCNv9gF-c`XYb@lTt1dK~s=an=7sdI8z6JnXxl+3Q#O@-IZ2egk}Z0 z0NvAKnfBV9U1WS~unHP@bWsc3!=yc;6FTAu1aU(z(Z1hH`ZnY_K+X}&rnLV!+k=fM zuj4ibZPja!&x;?05_)@ycKx-r#X}Mc>+MGqt@D(qX?TwE6ZjpAfQr9ybd8y6PZFl%4DfeL*&Dg(7b!f@w@i zj2)gy4>kF`dEl4hKLCM*hk<;r)>UOKhti_VXkzQIEM2{_TZJ zSRGrEJGS)UgfvCVXd%c#L9NT*Y8S5)TFE?oI%csOp`rtcAC`KWJiqwjRGUIa5yKXTRWOv{SP zW~}#b%gqQ$4{p!(NZ1vb%^hjkaaCt$>W$?o(}$)MX&&`08eyybb!p7YG%R6zo*-_% zStPKyoB2rXYf2eo)Xqu>0XRU3bTL7ad5`M*r8uKfQO+qS=MBMea{fHE!s)9gRK)+3 zGEr4UzVlRwsD~847orT*s|ud!(keteAq12X;-#2i@|3Fuxm}VlUf-fCJ;$r{s!4na zUcM4f{b6{cyC;|9iA2y;QxZ}&f_wc(a05#XI2<80k7E^_AxkZi3@j^aVRxL^>^7Ob_S6Y5u&tBC9%x@o1b>UV_z88v6zBou;Epp^(tqoxe1)JWq zLX6^&05_3NIkO?P_-9EVGV6l`X-`5QxvUGiDtpMPA-yKLM%)l{sKHaApYP%5ZFJKr zR>ta)V`zM}lFFitCJ;qEqpd{*mMenOLQ0?}Q6evK!eo)(=gmy#4Aj$-=1%U@W5BBMycfgJo z<+z#TBC6zRsx;upeL|I~S2LO4tnTCPTW>U3X1UBFiyi*b(lapwM1ODEl)b=m!Cgax zs)TUQyg_+vu%c_pH&Y-?uFYz}stxr(**^XGbNVI!@#-+!DRmLGLAoH_IsJ$&UV9oN zc=#`&-lj}j7GUBqFRhj+iQGTJs9DV^hS-~73XFG2d*ZER&16FeF|U=j+1>c<+K}2u z@Qh@I5^9OOJeK2t@fz}^Qm^YU@G50lL$OYCNhp3UmL))Y2Dz9MFs%#?Dv?0Jg6 zV$n;z&Aa&yk);Mi$il9-nupzPd` zE|_1o6$aDR|F39^B74{v`DgM++YxH6-RBhHc@PHS!WFHDJ0Vz%JBr2|gZvgl3P`Au zDrfd`Es*{@GD$nKf$(JG`c#tFSn9+j5?tM87gVhG2bG)0no@J1-);F2$1UzJERG$^ z!aG&4y;ZW?-}$i+#C9!vg{PA}m2OW7If4M4@@s$}5mm11m5`mP?&6aY9t7@-65;LE02$&Il8gBz;kB!3emQ*ocX3=7?L3q^K^<&Wvva# zUN?1o&rq%0|9-~Q#t=VNTzFlgZ$^f1XC|I^HBYD3 zZ|f{GmD{RpOjP}!*2A^j8HP@71^HEAdZ%1e7tT#@_oYT_{jk zoYC=^^mrvQin?FQ<(`=5GG{>kMZlkz$!CV7NNT&wbm>j)`wods5$ZPfMozvB+hbn3 z$_4P*vb^oB@?(+J>#Tn*O5jA)U&jS5EAgRBQEY)vkpl?AWaR*0b(6cNAG|xM;nt>A z{bKECm@DWJeNT{G=H|2U?!oXA4%&&swIR$Ie`08u3B~;4AJYaBj>ma2FZLvTEi?nZ zt&lAOf%g)qqT3vOmf#tDkbYdp&o6E1+KA7wzyu&(gd{Qpp3RivH6z^TzQ9}$flyq6 zYgn_i4vfEaculM+#+4LLYzDw7UielyW-I#?baRbryb;>S%auyJsS~XD3||t4~R3@K@<}WEJcd zjW53+n)c0Z-w?3!@hQ;xFr@qIP$O6}Klwt(hO-f=DT_4=G?taDB ziL0FtwWGmVSeAtY#6csIUoe6elBkN7YK0{o7b8l^^Eh9nyqRV$=kLVG;VsUJUdArq z)+Y*#WOc#*?BavacnB;#a{um}vLlgYv6Hr?f$}OrTFuJcg~bzFQz~l=q4l-I?6iRN z=txez1Q%4YvL*RNorE2g7WsCJL4xMUV~SGWS(G+_;s9jp%)6^u+_C|s02>sC4g&o2 z%I|?6ij7Am2mcvk1Bg81^lzS*kS5}6^LKTOy+2GyT9mVtZk&y)O({e#^HrR2*0MXl z8}__A>JJ4CkL-_(?hL%f_GccAx3dwOxZNoM%F*4Ts-LBd|GBq$4tIQBeq`Tl1Fse) z$-Y42ook7pXevXu7dHH!|z2d*cX8Ip# z{kDk+QwQJGz|@gMRJxTHo|TnN72+7l0D(^>NgMu;YJ1l~a zd+L1`ge=mW+&!(obC2F`jEOzRx=%?v_9TC*?$U7b?ZPK%CTolz+&8Y-`n^Xk?)I?~ z=KYPj58d|7bo2leFzOp}1-0l6CmpT)Vq7_cs&apk+wKi)XKGK}+AVSn-2Rem@dINL z#q5j2H)&&SE7Ktrt3;Pw)%1zZVKF_?q&0DYi);pejt{L4Z139!)uW>&5tWg&8q$&d zYQzag_heKG!Vh)=FQfGN3H690_Uw-zsl86#zSUmA40w~A>_VB_ic2YEP&jVFGdTLc!J;94=7^~+UF+< zNCIV!sC4bz6>ob|mVG2|MHFKDu|Ju^*%g7ytnQ;hp$~Z#vu4}=nz2JK&Yzrn-PW^p zH+tlfj~$O1lh9a4wsxVi)&APsEmuCjxvgJ*nQPCZl*sXqh?JD>zp8fba>$!$f+iua zDk*`p2pw`s_3YAOK;`VJmL*L!(4BLWAx@jU>pj&oXv8I8fgM#d2C|Ni^?6o&433TD zaEK2G(`zg?uGZD9id`#v6ZZ7RMb4L8z!TJ7+0z8d)&qHN+mtRU9Z`CfO;5A))xZDg z5Jc}0?%gNsRF(fzT%s_TS5+r9`;@*qnIqw7&V@l0CCWuwx5}I~Vzttos}wd(F8f|_ z=hf}gw%S2n@nfyOw5crG$6I zp%;9$_}WhPcK~EzdnHly31gpm*wJT^{Zg}@pq#})IePD)ShWX2PM&-<`Pq@P5rmcNLB753es^X2f~1W|_^o1I&Auz<&NSHfmi1H{v*L*{8t1yQ(X;9&T25C| zsAdqu9a^S%sgey+x6K}}eIAnt%=gsI9;-#y+M;z{!1t|v+YOnluowS5*1R+1u|q-Z zY(re*qbEfU&Z#NaE{kF=E&9jzM?(Cx?wr_!^6p4Md|E|^d5p`g(|Peo=iEB~4ErRF zh7%`>ScUd>AIUQ&yLs~hR#8eXxw-$ENnYvG#oGz$Cp22`|5;lZeLnoelWrEDoY?Ec z(XHkg#iMrUtNv7PXIFaLyts14F>4KdP-E~eX8OgQ>Gl%) zOhDwfUV|;&&^PdKYJ_j8vAdjd&7|=9MB=uz3vh5tbn=1119BAlk5zrjBxh|(bdW(% zgS5kTt=-EE9B30N*|O!$n=SXX{aVm=CdFh(t7?2Sw@}6oIiU0VvEDyjU4ME7cN-Yn z?gAhY0DuS@cliIKOq<~k2bjRxdd(nuz=i1^xS-IfA=UUU1uG{kdYoc7`|b#Xrw=OM zt|W`z>W0p0&W0?4wKwWwL*|76731rYZ=NsO_g%q7tY|A9x)Qe|P)@2D$T|%l(#JfX zMB-BrUsE&?I}Xm)Oh+HAu9@BMv+P!1{UJxQsW_L2%A6&z_W~WQXK`JycUZaH!W$S8 zTzU&#h(ecFu=@;$&b!xo{p?gz`F5c6Y}3l{@X8Q{hE}*MBl?Qrp`5C-G8-wq!WLcaLM{2QQ?{dvP@$dI>&A3HC%GgKa ztTc_@6Pv%q*5q>Gt1sfz4Kot5m6GO^s4?rjQ(CK~6i zdwsMs1Mz*Gz4wgQ^`ae?U{VKF1Lt|CtO#jtqE;LlZe@7ico^8PsAKnrVR7J4wd7P6D5A~O2YX{c0+BVIFD-`b~(KTMT)m)-DY;4N7F!3bYEvH=O zw8lx8O++`GPZry{(&MdiRr(Cd6gpAbgPSotJJJa)tC;IL7~y*Bulimk@o|v6LcUr{ zicv)C=*D{m(wCNa$8TjNv?_26*A5mpe6=lfJYL;+*rU*5RQ~NMZVZ*>ea_pNZ_vui zp4TYz-2v~kvV*4t*Vd0agHj&rli=;pMSiD$>gx*yz$ZS@6+m89wm$!o-B&dWfWRd) zBUp(w^adi|w&%FD=xuj@46e86BP{5DEU`oNIO&#!omY;}Pd&uD;)WR9NcS5z>*GDn zw#CdEIxEo);gg;yPUWmT&BAUXT|3#V;Y11w3M+?AeFU{xVAkgs2kg)2)5z)!Pu0FclNz#B-?$EVx zRIcV37GXCe?rjqKeH@89VZ*=wZEG&XG}9j3=QpbHwgb3Jblr=TLi>CC5Z=!p^Pag{ zJ)@C-`z!cKp%?n5;pCV1cl7<~lW$I`F0YVM@gi%kPc>+=ycJ=&y+f5tkT4rhuZsO2 zP^%<_FS~nj%XM4964t<9X6s)fE|7QRc_i#ODI#xJh&waDG+HO*@{^)RCZ4SHZ`tfM z8=&%M$gBxl3p|iOUUic2NB0~0l+0H!Ij%(Fu`Z}fizb5rLM1#qf zAN<)s3GuptNw~=3G(7BVoI@h*V86&V=lrF?-ZvJ|iz@iPDW%5_Z0mX&NDg0$dQFsz0rFIT#po}Z_E^|Zy){2{g*c?4<954(@xJKZV&hT28|^%(^pbnZIM$^O~b&S73B9a06;F7-`6OMF4A)GeU>Yu5D5g*Vf-5?5YJ1dp zePd7h?(6*{Rv@AV`yI@sDV;hD&+cZRo~S6pz4B2W>hK^O^v8hSDyhm_!_~E)lC0r= z#4TWG_`oqKI=_g+1%}d@oEW#lZVx~$$j;q?+9y6^6DYEu@$b(*ET*ZkkyS8`E>WNE zuYc~_FN~yfRVub?qTZ2GF(xKEdz?Kyq#g-T0i_nTkYvM!QWY2_q?H||u~M%Iz@)v! z;-^MHA`*$t_7w<*Gp=CAKV9D zzVQDa3?B2({|te`TO+C0$IRgnyjljg?%FTFgb+DcO-7xl+lPA+;KAHC^8OwI$eEC_ zoZ6}6^v~iOw=0STXoj=H!~b(cW+5Rj*Tvd-#@P#d+_?16J@xKqFg%GB%&8}^@X zR`WtFMQJ$6w>hlP$ud00$Wwk!2}|3l#BkFmhr@!PhX;TvkrmdQ)^}r9M&I^hryi)D zOFzO|K}rzW#=50&H`KSh^I{;;X@~gs%S%ksU|q-SXUUFmBy1^%ar_IpqQSA!jaIQj zAErZ(Dr4_}{7bKCa(aIuku&JphqfHHvwSe)-$t{F4Pf*KTAM-ynNePz_IiCHA=Rl( zkFNM~A`8D;-WgJ|j2iEez)e5x$M6q^xF8d~A2*il3*iZeWK3inNGn*=>GxD{ox8U6 zmmfQwjNiLgwa?GnGmnOAK5F`>S6!f6_XPp^(SnyzRDSpeH#xOMojjXz1(lI$@uwi6p;$ww{h(GIasiWY zPNqh$6O~Kvd^tH$Q0JKT8e(BB{eB806#|h*7H(LOfIm86E^q;6E*~BO3n9X;L*ZtK z0EFL!S`Q@o-0y(;z84DW;nv-rT-b?fwzR8_a(2>Un=$(2z(zC+3ME1y5C|W+LJeyo zy>hZF9VDmpB<#ukT!}YJm8~`2bNBOZU&IW)(JS@!v7;4swY{exitI@gyIAUmMv+dfhbcfG*UTOs)P+I(p#t@!OC)kW`bXDpV+m32 zQe6$9zg=Zq6+<8pcMx9c%DT+}@R6RcS2o_NeM~}p`RLNInW(ciG4q{L3=Oo=aBe-4 zhYTGIVi1%aK0s>*v;G!Dwo=#E#*9J?z&vE@7DUWXOP%N5XL?HOGKFn#1;5>TO>PB6 z=Y2&>N5EH<oBbrabh`Y z3qxPPeo*Rf*7fjVt(nSzz%lTYK4RCYijmXYY1Vdz|C=^58FgO>oXI<8Y90f)FEJ;1 zuo*eGL^zva(I5q_x^62LE?U6y7-n(*xjw;K4$Q;zRFIk$&Y#Y#1od+^r|Rj;8V%R( zAMK!bqgD(btUxLF!RiQs_TYCHF{ly#yR%@@XzvLFrhHm=vXG0ahWAyo|7r8L4<2Ez ze|z{{=d%7Hs+SNo3y4_vAg@jLp+s0_Y{_c^VWW_Ex60Z2C$Kp-5+SFwF}5mTn4YdOpVi8d2WxACwK?(wTJ7cuFiuCig@(&A zgEey5VNpsJ3l760&i#KYjuu+MEUHha>Cb5GPYvig`Wn_)6$d?Fr%%7;Fo?knjuhXE z92|_iS3L4g9n3qx%6nV0z8;+X9Mfem#a_2Z=g7|8tiUaM3_89h9Nd=mR-qOdPaZvV zU54|#wa3x+G{%ohMtw0+tXBb0%6Z}wKu@K9YxnV{Tkk7@xnrLZ3`btN%croh%9}h$fRAg3r~5fEUv2F?ew`DbVpE%N4HtN`|X z@7sX+?i$ArIa94w60cVPfgw-I8luvbr0HO2z`8%1FPJ@_r1J_O@NdWYBKMgZ29G*8 zg7`r;0#-}LBc_p9t{=9DpovLw^l^_%g^umqc`VVmgF0SNL3I#*-`(pn%^z zi(q7tnQSt3*xDWcb`3V2HDc2J3z^5Qt+0Vh)Ax4k{O!>ek8cZzfQqim4V`ZjqnQdx z(U7G$5Q^v!FpB8NO^p2c?FoNVf63Sv5>6lX`~{ZOCQI)--3 zMF?UJO4^h4Fp!i>B9LI@M}JzM(bsOF*+^DaN~^NI7L!8ku06qi~X2%kd{V?eTHWTz%dFj>j}T?yx{aH-F$- z!1EKCceWN;HRa}>-su}K6gHFpzSEe^>d=ybAhaqe1GDJtfb)8{M;7W+JOM67IU?ua zLt)M#dW5c{id(*Z#ZW$)lHIgp1CiKTLjR9q%rtBs5W zfodp9m9*8I8?rixaawOBIU*p86`#rCgU{hKX~5E zfLHS{O)aaXH_{p(*qNT9?nrW0s4@z-krW+C>a^}W```%c;^ru~+~&Cz2JH`=4K;On zcWOd(h0Fit9Et`(k+84Uk8c+bhV@)!8#7tqj{3DsT<*%cYiuKP|8vmGf0Pc(ugn`1 zM-vX{V*f8|=Fr4KS}>OKauv=*xoCw%*cx#;;r>_a^PkdsvqK$>9XKFBtjQAq(?b{P z1vHU_w&I-e6^br5qrz32dtawq(GY--UwtDXe0r29F*3MMhmW1F1iG{Q~9EjEcD;1^ddH6j{7%L#klChR8DOCnXZb_w0aTTWQ>@HiwDn zXiP?u3auGPPhGwKgofVdqYaHs6`kSkBHP?m?b0!yP~g=H4_grO9=VMrfBomA;m43jr2Z+86zdY~WEfX1T?JdSS5b7@3(9@(KUv&Ewa!}^=C z@YNGDZC5VIdon8r*r%-S%XE?#V(@^K#Y&xm1eRmh3j`wSy~_nT3&qaEkycKV6N+Hs-MIds`6X-C(Is)myLbJty^QX0>P7dsg$8M5?956AuVueKNd@&q@_h!q62|?-?G{EKJ8TgR<=lmw&r=_zjry990o;ft^oeJW!XNQp~8D2yN6oL*2$1klFP$Ib8h(%=6y$c^E z9SBn+mem4qOQ6W_fJ7dc+W|!Uqze1UnhX5!>KaXmIYQROG)Lhc^JPHsW{!T|yE_A6 zez#XoYYNvxOabWejv!Qq=aqb*JC@yc=qcimvtdXUlD7<&z`5{xu03pdPWlw0Q(pS( z2H$u`hv}~{7^($k-^O?$Ww-;zxGtJGm8QVrTqp_$|0r&6L1|CjK($AN!?Ap4JMQH@8Aa9@G|DGS zJp4edx_k(Wm^5C1aS43oT;+fJhE^3H;_VxsF>s&{C0oWLQ`GO^BkV@$i~8dC&)6ff zs4b>Lq)GAG% zCM>7Si{DTetjkQUS>fL#IPk!rKK9ZN(LMOWTgTRS+&l&<2}2lu&Ljd{n5CXs$yqo5 zn^z=R;gf%{tX`0uapFcLMTOSc*Fn=1R}->PsT4QLd)4sht&fTkWD3zq%%hh)4} zR8UUkko^dEVzQ6B)SQD|9+UZIf7 zZ%2H-o#7)_Duaqe{pm=d2+@aDcwKEI@7mRmkxNQV&kr<4EvuIpZ&B+*8=b1Q+A`6{ z?Xw2DGjT72RG(eFDe)Z^JT@+BcyGTid_zHArdwk|>N2V0d_f7hdvAZxF|CzLd+`P` zK^0(6t?>*SMmW2|JEzqrAij$^5(E;)fIwnW!(Hx_qsq6@aV%EaZx^3DD)5r}_-wrq zUXg+bjRt zs}9U9vKC{UYi=(3%kOp>mLxwqi|>i1f$!Xx-^IZGV#j;m6U||I1Henb!|L9nWSK{6 zc~;i8yupR1TKTWdr8>9FCt8jbb7z|_0=ofETo*4Z-)Z|UgrzlV%04Kejtf14|32~v z%XS_L+w^xmH(Y}>z8~4(--vnf`hF?c$#EG@O928G0&}Tze)2hgJfheOYYm*>w|is( zhNj=vZ~4QXJD;`3TIh|0umt8o#8Qbgr*?9~txe5=meI2L63T#{my0IyUp}>PJYifW z5ZzK1^IvhFzs+wAKv*JBT~t-xFnPb|zIGYlcC-t3*6RJGbjn@jRn?ak?P=c&hddQS z)8g@Iu6R9TF?KgOiYR9J3hYhlYxCNKI+G{bstUVF>WU1N2KQimdCmwqMD4t$@imfe zj__3uI=VwEFFrX{$3`e4Wl5BLl}jPI+TqZWlWZ`kq%$_L*>1;7N0((PHcn*?FUyP? z?bMFf#j0v*)tcjX`n0X{W%b23a(vN(kl=)r_nW*Tlp6uNXgF)(=TFq0c zLvjk%ltSZ4o3d_nhuYSDwJpsfTH{u`f4kbqcKX&G8%(mSLIE3c`KKZ|#g{dn*uy#C z9)LJj2EOXJc&rC#>R)7D%Q};Mcx_h!D4(}}tKSX!P3n1pE2SwT5+%xlwV5Av{i=nX zf_~nwz83q3(TR&HxAdg9#Y+>Tlvs{~ukSqg&(UYA`!@i5U=V=K+SYm!u*OI*l^nFs zX=_=SJu=4@7UbdY`{iy8U;Ec}|5(5NM^{$TxsHyrfmvNIOFT;MRAg=zow&GJv+d^f zN=-IE;OBDPjhq|vPWxhNzVFjS9XPdoAkD%jgERm(*b+=Y{vkc#Nu?AQb$@#5Z4R2s zkY2spNmV+O5P<2JWdDuB-HZ}p4nJWsXaX;gu*7NZdBr=}*KP(;x{3JbZy?z3kdr8j z{(-f3BUf<-_~!{pVJD6ygusKR@**+z#_9 zUupR8uaaG&#iBsBkip|rei7U`8GFp^9aXe&t^7^>*;pOdkf8-?`ozgo>6@unIy&#s zKvoo!R@uIQMiy^b`(7xJK9Pg5Ifgw}#EUkT$JQsde_T;h7pswSZdX`o zBSt(hd087`3w@5%ml>7RcLn^BBO^zV(9mOrW?HmyHMOy3adL2Lc{&>mzfYG}-gIUR zvQ(uPmV|mCv`7+D_a;#4$`4*Z79Nbok%`0Y9Sy^dOFK>k@$5R(jS-`_ET71?$G^1j z#hG8oLeZ3y!I zIr!2KKxMG`e%y50jm)j5zrxdGk|6RbETSD?hO(x>^k(_Cb8uRYT*DnIqva{A%}LW! z%?zE2exenF<@3*R@AmFSnk+t(IaEI3HZ91nt3`wm?IQ@KIu4F2GPNIFgW1w-^5Tjr zzliSakOP*e2+4~lXJqpP?xT`+QJ^t(OKNuLq7nQ`U_{~f^uX0Vf+JtzdIy!v3*TE2yxCq+3 zmx2?LZ@vO7E!oLXgADFuhj0Py?`ao@9K$>RJRZX#?8>k$SNF?|r3xP5aU*ScE6enB zWo2B_tEVq_xcR+Q;G}N9c<1B3U&`F5BT65Q(LlpRp!gFOz}T3DZOMUSZxE8V`)k*N z1pVct^9@hQl-|Lh@LZ@r5e~>B@eQk=Zv)hL&FJlozmJ^-vaz?bkE?{3W4|B?9Wl#rhXOZA@F^c##c(~_f3A^44sA8$3F=Yvq)2`RJ&I76~~@H!P<-0mJstYKMk^W z-sKgB0TZBoVR*UQdEOeOoXp@X?j7Q1#^VJ=N6~R*JeikR;1#*8w0Kj3_tfuvYGkcg zlALYL&ie#>9tu!z{eYXNOosb&YI;j2*As}Sbr*4<{#7@5yMvCd+RmfXXPZ>?LQ~cW z43IOF(h6MlNq0h_;<>zwepxd2Xo4-M9|&lgk_ExSSZyl2d&6@uXGa3mru04xOC7_2 zeTxNLP5zdtLmE+qnSt>7%*McATI{_ggapmw$ba4 z)47KnvtHpDgRN8Gd6DmD&VU@!V-#;qkolx`T~Nfvh6ST*^iw;4i!0=K2GrR(yB425 zx1z7lCDO16g5L&2!UyWzO^JT`w>I_7nVv$&xDn16db~&w(;2%dxz5GWS!@?W+l%RL z3d>o2*5&Tx_q9OdM5w!~h?hpmOUgYmi z>Vw5{pBc#t(lo#3iIUn=PL(2~eA%106>GSzBJ4=nWSQ33(9U#p+#cGAG;K6Cc${!w zp!zL!oX6YK? zPhI&O*L7gLVKK|yzjQ0m;&LnK;Ar(MF>(?R5;318I+O4Ld6FyC$%e^z+pvXz{l~9jfQxHf$)q$Ogb2+$5*WC2&13Btc zb|lHGdOF1yW+UPX`?*(dB8OU(XM|dJ_Tb4nu{2yl-EaSin=LoZjtvhQzi(aj{?xA2 z*VWyZZK&l1(=@1>ty>FcK=r+|ygG0RWE?!6kGnY(sWxIc3{F3!r2vugB~K?sq}csb z*>s$l@E7}ykdc*@i7ikw)1dHV851~GR7?paz>g7f2uen=i2HLeyl+Me;22Ebi^j89XnvHWgModvFZwFxteCyK_{Pfc`AnRn$l{Z&4W~^yrjq~P04i4Zpid?a^vu2|4`97BKQtU=SAMAT@hYg!+U8x>1a5l(k z(q}(LUBdg{{}lW_cLmPA9Z(({PJO5ffHP+-XyQbV#q3g zT;LT1k;*N|TQC}{og&qHOz}EtP5mBAdbb~5M<8m&Gg_RNN?QpvQB7oRPq!G@8=J>B z8VMwEe~f5`3lqY{!Q7CL**EZwt*40;t%UYAGeSk~8_lQ|*+?I{(Im zM6Iwe%GQCFR)G>y@jLRz)B3 zs#dSsj8h|R7nSjZdgw`zOOz|qmmt4pks!F_i1;7XUbJ0Cz(oD zbOuVKkK|Bnk6Kha)c7r81k~>!B zER=eoTxlpY+10w!Bfp91QnDKHMfQA@lk!iHeX7{aKbI{xi%wg_XiI~7R5UWI*rr`y z^!fLsU!velyQi>BR}f)mg6~7VNUHx5Cl^>S*vrI`Z<0SPWEZ9&R|YV50^yR%glz0C zj^_?F*>#p(F`47~xliY!W(4pzl_dS-b`I^$h8ZYJC?-nae8$odxYcTT=i}WQ7mjw# zgHPv--!4z-8`0NNptNVs+m^UC1z+DSj!*7;(4E`?{$HGn|LQS+j9Ru$Q0Mt>bebJj zeHFCu_jeXCcIaMY8*LR0P}}X-l=Xj{ULfjIKh&6cNM6Gwm|=tRs{v=kVXMiX@6%dx zLr+l#>wYSMIwgGbo6<<=B7&|ga_(B{^Vooo`bkYEnk}vvDj;g377=`jAcR>i8tPZAUT~)gNk>lRbaFvK3 zWD?)4LaDVe;q?lv3x8skl7JoX=$CQQ5$dnY{d+OuLt=6)#YesFT(Z!;@3W#F*j9AdR6S@TTvC6kCu--xuKO z%(~|<I@d0!?Ze^g<`QT~8HQx3YR;=bu2MQm^$aQ*E}bi|yq7K?87K)e zIOR1`-F(r=sugj$^Ap%yeFiYZEoM{$$&hb1?k`=>>__`<5w)(jrLeMxqql7GaA1fgXZW_ zjvEU2!V#?mf)!f|A`)i0DSej9*3%r)yLVD@COY^44&(BZIhx9)@DVSl!MaX4p8KKq z`fH{%V$bXHe%>x*f>;tBe-NyB%F~m+M<(j^NpfhL1uyMtySiU9cTqyg`L1$AnkFsq z6g_0PLKn?PReWp!6$rgew@b@KNcI;?fa7)yDh+sN-vlFNb@|nwtz2Jv3>5G&e8d+0 zMCAq-v8Y+|q9y(P|LB1B`C^m}GWACf5Ja1!6V(gpsp~!%B}ww!q3$(WywZyIjim!W z92<}wiR&_v5hXwOdws{{;_Mwm=RE(ty!y3{ zO7313dtvL9vSs+|`jZOodR1h8n+I1VWOEFnPHv&PBLo z|3{e!zMSRyk!UU&*;xx-4>t=TA8X}|NUNAA>}1A@a7(gcyTggq!|Xi6)&Ako=o5S2 zUXOQo-+_dk%60*Z#ar~Lti@-T#T;J`U16m?8+_%l+iLiq_V+N3ZgWJrYDjU*$!)(2 z<)_E6eG}h?MP0}LQpqIG<`=jx|K^w2m{etqeH&7+1yp3E+52@f>Ge&c|1`!taDLo< z?Ry`q?!;wX3uJcBLmiO8CU-{@6GP)Jkq67jz-m(rI6PuXlqD)Mo#Yn{ChH^3JoTrG zN{>9^GkZ2n9r(P zVNJskC(vRmgm0vq83Mq~zJPen*TUaG+-9HenJyK%_2mtJdY=h$hfPnamJ?W$iA~csmYBI6DmDi%%vn=XSWpGJ$OI5;gcSJwdPv?1Bd?m)mrlW zJ$qNanNc{sn=d;)ub>`RBE8-p5O^f22~?p-NblrO5jkR>OJA>yzx33)aJQXOhx}y% zAT(BNCoiCnwv#i}>79@jCv4(F$c?~cRDW&gndWeF8Ks&EB9o7GLV`kfQjS*W)b-~v zA{NyEK`xZS&V+yB)1>beuI_yWiYqJKXzKy?}t9UZbjUEgSe|1tF`&$~7NYRvxz?25tbyRbAe27dHI>nK= zhFZv@J7UY@v$A8IIK8!;uFzE#&-hkIK)?Oi_omncEP)ih?^`@WT&zmKMw?T?<#o4U z0E8)}taVbxW+J)BL2Gbl_xbFzAvr)iZ3VB&Fx9X_9~Bil+GY$LJS= zu(5Qq>zQjyj)t^d=5&>>cV)U2e>0aOktkZ67U0 zzaM+qMdXXE-m{SRi^~!+B(O4a@kAOIV1Yw%G8S3NUieQ{ z@`=%UqY^ok@;kyO+gKB^0@B;C*l44)wZBY-*1Qa;46fTrGvSyB$(NFN(RSU!j=aC& zs@kBXkRq>@lPtu5@(S57qR9%?Y;QP_pGFKTOPJJ*b$G#`g0o5Lpng(K7L6wc3jJYE zWA0}1YjK`yIlTiswHaa`F{!pLv7c&OHR$c#KB35I#*r8{HOF<>-pm@HUn(9)gb)Xs z#151Dy*9Tqou2zX*1y)bliHDNv75X?7#8Q}CX<=cF^MlxPJYRL z-p&K{r<)xG@b8_zZd9^98(9sDS-EqmV61Mjgy?!Lw?{N4=>gDN{UaJDAK70tZ2{p5 zlnkJmk6~^j0Q_QM{ws;j60EQ7!~I=!pN;eDmxlL9lSupqM)~O5%<^qqBZ}TU5>iqk z^EYF-dmkjr4syM-(x8IJ>>X(~z%px4wL7VW#aO*`n;mmvcfSd%z?`X+%B-wS231>v z(KrLy%EF1C)|2f*5E z35$#~9)VjnVylbnQv7s3OXUi`B}S%VL!(I9^)G_4>bz0 z;Zt4&XL26;b3-Cs&%rH#+VWH+|IFIZt6OJVs}Xt1WQ|SF3I)v=1O12#J3fXC^gMC0 zmpv6?TBJm5Yhi(*-f+Zo2%wfnq>>3@0h^QXZa=F2ow?#!WWk+S@+?L|NjKAE8<$^| zLkfCH^7vpF7x&a36OtmKKNt5TLcQHU-^bSKx7K|$sy1u`od2T$QkJv0L!HFkrb>?h=_O48fmctYHQl!rtQL>13-$W5(BbyiJ}MoRrs*1IF91XV7YsfBa{aVl2s zx57pJzH2CNk3p4**K0Gw{VaQP^R_d?eA^{SWqYY-VH)tjNX6$lns%fag+BmciwTD; z{eVqUm4Mgr3)34~grHgkOhHM1NIlmK)DJ;NPEBY=^bL5fof%EdN2GAc*tSba|5 zd%Da_mCezJ-OR#}B5eCDOYKr|h*?#syewp!p-?V6K2h15S)NpCOho4^p0%JDK5iEh zx5E`Egfd;y$Z2-YWKQw6dL`Uh+8l`BJ0L5q7U=v+RZic}Zm1hu}UNe`mO z=LptzGSdq5EKUf?`+YG^;{mRZ>MEv&WAW2kl}mE-NCVt17>JK7Wgxm{we_u2<8t}k zhE3`2yO=e>c54;}iy6mEDa~O){1F{NO2EspIQ_)1BZPC>#dQK?im_j?!XC+>TvujUx`O zrP>n6kf(ZfC;SY5DVK1NYw{0LRH(j&?q7GP^!vy~O?pd-yJBaRdj5PM2kMk9%57Lq z8{48QQJxx3-?aAE)fi{#%_G-5f|VtP;dT|evh}ysUl}sn2)6>_4#d`5)A05UZPLX1 z02wc&ab>YE*| z00wzTjq#4xcwee33dNraE!<1rf#}rrLC>Ne*Hz+OPOl;ShcE&{W3yKE(nV^p6KB=` zRMYM@Oo1fB_Fum@?w?s^yJuO8^%W-k>^AFHd7i`>XSn}I49ca z=gHReK08-Pi5@6RFtZAuUM|6SAmr9D@_T~cKyi9ccIdqOV(_+7_q`0!Q~}bIJ)p&& zW{@X%7USX^sK)VIDH$%xZw&JAFK)XGZ*H5^hV7)=SIL`3%j>^td5j9#)xL!K>sfi& z?cYH2ZOjQlvHR&piRSs_6lh@}Fy1D3bWyLXRg>DSOkm@f2&XQ#-T~XVg*Xa+Hzzm> z(gA&X*`GJTi-N~5ukS-Mho#wx7!m1QlKQ3LjFDcuw^Q0VZ0*zsb4BrpU(-i{iRjxZ z4wO`zbg%Kr_q%?k8tX1bhjnJ%E;{f`!2~Od6BuwtlWYrt-E_9gK&;Y|FbP3`P{}?M z?*aFreO^3N5_5SLsoPEJFHiDa>%XbLV$8Z*TJ?HoymC7LVZcg7WTsE-x}QtvjkteE z)emmI$xS`a4?+LBe*!!~@gDlt&DDD1dMDe?TRB)09>_d7wn* z>B%%mKS|5ch9vpQtJwXuLJjOM2Z}vQpox06_V}qN{w1Hf;cu>$RMe=8G?PF*FVnZ< zlGv3(nC%)xH(B;wJMqlj{ebX1v|JYhFlX+7n zbOM7NWBYsG`uS@hqD#v^z^BId-Y#pPr(%W@#^g(|t?qMl-|B&F%?8!`c&j(aaz0d{ zGRmQ$2!<3KgmgVe;%z+tR>_L5{q2jsae_f=KcLhRe{PNxD2qyj1QLQAg#pu3`yOas zD@2DAgAQrzZLUC)(Avl_%KNLYno*aAk#w*|2=AMjyPsokxx--ms^V$9V1_pjI3=1Y z#8SZ|$E_JsT`3M5xPrvD%0an8oi56j=9s90h3n8&sNajoTxSRe2822S-r=;hF%2DM ze8e+Kre}(!T_RZ$(U4rL|I%ZzEV~EFNNeM@N8t6~7*%c>!R!d8lVXBl zVJWn=l4EWf;4AzSakR{LSO?S*SHc4=Xh6ACdK~c8lySDg_f`pkFa*>HU#k^?Mk*9{ za)hMXOej0CYjHfP@rr~g=bzpZWd>K)z(RWS24$;J{WoGXRRr;k!7#8hjdn`O-U8}5 zo6@7Qu$vlPAwxkd&&~X!a5-rWMK9dA?DB9=jmEx5D3{D5oiT{fXLI@`D=Ux#grhuG zD^+!nEA~NcC)v7i@}e#|#_(t9O%4YG-k=tCW>)%JiM~ScnO!i>TNad-?#I#}>v((J!f2=gHwtwVc_EHLQC){JFeq7&ps>W$Ag5{AA z5%-n%)m`Uk9s6B0JIB6kaJrH3z;!O?qLioid$n=1i4lrqDOhOBjy_{)&~}-)5yfq~ zDifYQW_zyMSN{T4L=Pc#ME$CI0va)*OlfjUkgHml<^y$ie%U+w2tv?6msX5G3P$2| z#}ZAU`GSWiS?V@OD{M@e!KF@7;%AG)l_V?oK94RRx+$P-W{4>of3`BKkt$%=Cw)rH zdIYbw;3}9c=gIK<(6$4kYGoOTejN0P^d6Erc!4g3XYGDqwO^ERSQsi+-!=}GN!)X>w*ji{P1H>wZ{UH6 zX{an&UKRFSLBQ>AVwy2F&Q`XK_T!efPgBi&dArxpzkCbg)}*sMQ3d!ynYcWix z_|npYGkjM4H_VCfl1lDfoX0C$VNvA=MKO()qiafz$U5Uzd^r!`sw6gjbZ`=$i^_!5*E*mpvGd zg5%DuZ3wIxm4a&5e0xsqmgD* zYGLt_w3+$h0%!yaVq;0um3t$XEA$yK5Pw|pv!C9zSh@wc?lNT5)5EG6KfIzyluy3k zUv3{ba}*4FG$(pmR^nCj0s#eCNQ4~D zqf!&>E;YJNTW#siz8Z?A8ZLGxgC714l~`@O#>4Wd5=#=oawdMM<77yT(2db7k@4Wp zE%_OM$dm`us47x}?QgqM7)?HZM=$E)8)}u-P|8J5me;Vs-QgJLa01hjt`-GZf4WXYs8)21~d#k7r)eGs%T zoTM@mjdY}?b}Wv#jHbE*Kz`zf{tRkAt>Qc*%XqotdNs+gjp4Eba2n*ly|eRwCt$ys zh~nX>+L&#zD&EyQzPT7a-T4FSO1;b<&IKtjfrbAlppEY|+K)W=f(08x4LSchxPcZ; z&=#FTV)*|ywEy4&Mhf@OGx`^f5+SBVpmLE zI=62U*W>|>NHHU*R5SE{tCw-<<`9FC;fkJ1!6_8;hau))x%lmF$sfp7&pD(kD96H)c$SxIVbZT_~A3 zq=}nfv}2Lwr=d1$v7i?b+##9FLkXQFg^h;+o~eoUixID_yyG_rQYZ@APz*{54#pA0 zKa>pR#RSC`{ME;>CYUt;d;KKSEM)0R4s_P8I^L$4pB(rX9NTKK(#8fN{R*CJBK6fj zg$x42U%7H@19J?CBoA$x)b)Wp621#55p_mM7E4!7(moooafA6ECF-Zt^1qol{;FtA zId&y37DAx8Lw|yrU@Kx3nm!Z4dtT`gHi}vb$}j&kSBP&eGZ2SUb=dNsnEsur&WEKT z)j_QnLZ)5KOXZBcM8xs9Gw{W^CwZ=9$>@IzmDQpcEd(2W&^0pw4EE)QCw7R^@bLL; z`;jKBD-xYQQ2yd6a!O3cQ1R6Y?8$v6opn%hlyAYLdyZByBqP$wt`$?@3G?GqjI-WI zFr(&N%W-LTiVx^1Ho9CEPW9Z5AOL?Gi|-iXg08;`9bHFOX<@)jh53F(ufGo7X8;-H z0l)YvMmC@|H(*Hq)5~Lc+wpVu7B-~+C=Jcxyn+Svys26)m~PyI-+W15v=_={`XO5l zHTRU5<6Q%(;GtU{_)M$_Z@txr^r;MoqLKj!*lxsJ-o*}P>e`FX{w*=TWA)e>mkquq zR>aObeoL>tvlW0b{B)@!*Q#MRNDVE1iwYTY0jEF7nOpwz-CzpVB)}t%DHnxnklM&j z{5nE-m_I0{MuyF@X{w^ZXId;$ZzxX3PofMm&=br2L2ZV2EG&HUL-^jmzMYczD$O`Z z?tN3awcrjqUCwXxK5<+SI?>|?PR!D$t||ghxxLKVr-Z6Dw@24}CgX^Pq}kM_7!5qg z%Z*9SS}A#;Gxrf6Yzc??{fJaAfRlxa)hoqd(HC= z7O1`LmWceuZ0Io0(jzpSr>;rS>W?x`vcp>fVVJl1r4thU;2&FV>(dCwX&XK8S-%w< z9R&H4wYnRLSj%_btvh@R$#$Oo0`rfNf}|CtyFYe$!fDRQ{TCn#B2oP}ys`rt2n8pY zPr*hy=n`c2!FY)-Q6avwsaI|ld#8}B@=2^@?xy>AgA!eO(n7ietiyp6B?7 zzEjdImQZsbH{m6+$_l~!C_p?uVA-?$aetr2!i(>2oJ8*9svS$rL?LjaYe}8@!`*TQ zq#ig1wLj@;6j;-piPNt2DLzE!!*!-C3&;{_h7O&)YC#HO4{G<&N_9zob7B%}yt1NC zn%`Mm`%Yl-g?yhDxiV;rXh^>0f5my?!*A)t)TMO`3`(N+D9}1!YxNnLK)>@{8hpI5 zD`Qq^)g>Q(N6@}yx=%cj9sNvX@vp)=nn6ncK;7JEiZgd^P2j%)6VR%zgBZHuTvAw6 z>wG|E*}P>alWtK8B}_gAdu^xWy(?U(@8_IgZ{Dg_YfH_i| zcEU*ZONGosHYDv&Sy(wA_rub(!|ZW;oHgD9RV~OgubHzEy>?~?K2bePVezxt2%>;P z-?ra7<4n?x&FYaE?cEGI)-)$tD$5+muBu}U?sPHFKe+hV5?aCTUXV`J=9AHC=o-*Q zXUuT@-0>M!)m+!o+T(oHaeB!5lJUF^EcXIqSUNsvI7$4;|X#{w!e5pUJ_ zak1J+C*mxrK*L>l)}}XDmB5!T;U_ev;jCB9B2`6t)Wa`7=7pam>YPepUHy>E1}-i| zx=cTq2|P}#Ey5pcy4D8*2oic4dykynV%zxoUkQ#ZS%}$Wd?mL`_nI;G*TmEF^KJp z_vh{DE5H7`9RZOzAku0+?DJ`Ocwh zS7jB5f%YHF1(sTSKSuTtezZh?ey859@nDV}*wx8We3^(^>c;D^k{15Qf0gLJdBw#% zK4AOfnWngIHTLC=dT)#w{3rZBSpE+*HU0+;Htp>`-fzW8*#W`aU5e&a;9&m+kS-Mo literal 0 HcmV?d00001 diff --git a/docs/oauth.md b/docs/oauth.md new file mode 100644 index 00000000..0af605b1 --- /dev/null +++ b/docs/oauth.md @@ -0,0 +1,73 @@ +--- +layout: default +title: OAuth +permalink: /oauth +nav_order: 9 +--- + +## OAuth +{: .no_toc } +An open standard for token-based authentication and authorization on the Internet. + +Gancio supports OAuth 2.0, an authorization framework described in [RFC 6749](https://tools.ietf.org/html/rfc6749) that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests. + +To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to [acquire a client id/secret](#create-client) and then proceed with normal OAuth 2. + +## Create client +Create a new application to obtain OAuth2 credentials. + +POST +{: .label .label-yellow } + +`/api/client` + + +#### Request parameters + +| client_name | `string` | A name for your application | +| redirect_uri | `string` | Where the user should be redirected after authorization | +| scopes | `string` | Space separated list of scopes. If none is provided, defaults to `write` as it's the only supported scope!| +| website | `string` | A URL to the homepage of your app | + +#### Example +```bash +curl -X POST \ + -d 'client_name=Wordpress Event Manager' \ + -d 'redirect_uri=https://noblogs.org/' \ + -d 'website=https://myapp.example' \ + http://localhost:13120/api/client +``` + +#### Returns +Application, with `client_id` and `client_secret` + +```json +{ + "name" : "Wordpress Event Manager", + "scopes" : "write", + "website" : "https://myapp.example", + "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", + "redirect_uri" : "https://noblogs.org", + "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d" +} +``` + +#### List of scopes +- `write` +Grant access to add/update events. + +## Authorize a user +Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired `redirect_uri`. +The authorization code can be used while requesting a token to obtain access to user-level methods. + +GET +{: .label .label-green} +`/authorize` + +#### Request parameters + +| response_type | `string` | Should be set equal to `code` | +| redirect_uri | `string` | Where the user should be redirected after authorization | +| scope | `string` | Should be `write`| +| client_id | `string` | Client ID, obtained during app registration. | + From c521a586a0b70afd6bf886f06b53d546cae90d41 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 21 Jan 2020 14:46:45 +0100 Subject: [PATCH 065/598] [auth] use nuxt/auth as it should be used --- nuxt.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nuxt.config.js b/nuxt.config.js index 52a5a83c..f55df5f8 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -75,7 +75,7 @@ module.exports = { endpoints: { login: { url: '/auth/login', method: 'post', propertyName: 'token' }, logout: false, - user: false + user: { url: '/auth/user', method: 'get', propertyName: false } }, tokenRequired: true, tokenType: 'Bearer' From 182e9b831acaa5f6fbf66bb622ed6092619d9fd3 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 21 Jan 2020 15:09:01 +0100 Subject: [PATCH 066/598] [ux] embed event logo on br corner --- assets/style.less | 4 ++++ pages/embed/_event_id.vue | 6 ++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/assets/style.less b/assets/style.less index 7a785aae..abb8e150 100644 --- a/assets/style.less +++ b/assets/style.less @@ -126,4 +126,8 @@ html, body { text-overflow: ellipsis; overflow: hidden; } +} + +.el-message-box { + max-width: 90%; } \ No newline at end of file diff --git a/pages/embed/_event_id.vue b/pages/embed/_event_id.vue index b2c4f126..0c9b19fd 100644 --- a/pages/embed/_event_id.vue +++ b/pages/embed/_event_id.vue @@ -63,10 +63,8 @@ export default { diff --git a/pages/Login.vue b/pages/Login.vue index c99a3669..0bc1d1ff 100644 --- a/pages/Login.vue +++ b/pages/Login.vue @@ -66,8 +66,6 @@ export default { try { this.loading = true await this.$auth.loginWith('local', { data: { email: this.email, password: this.password } }) - // const user = await this.$axios.$get('/auth/user') - // this.$auth.setUser(user) this.loading = false Message({ message: this.$t('login.ok'), showClose: true, type: 'success' }) this.close() diff --git a/server/api/controller/oauth.js b/server/api/controller/oauth.js index 167f589d..a6f99456 100644 --- a/server/api/controller/oauth.js +++ b/server/api/controller/oauth.js @@ -21,7 +21,7 @@ const oauthController = { async createClient (req, res) { debug('Create client ', req.body.client_name) // only write scope is supported - if (req.body.scopes && req.body.scopes !== 'write') { + if (req.body.scopes && req.body.scopes !== 'event:write') { return res.status(422).json({ error: 'Invalid scopes' }) } @@ -29,7 +29,7 @@ const oauthController = { id: await randomString(256), name: req.body.client_name, redirectUris: req.body.redirect_uris, - scopes: req.body.scopes || 'write', + scopes: req.body.scopes || 'event:write', website: req.body.website, client_secret: await randomString(256) } @@ -45,6 +45,20 @@ const oauthController = { } }, + async getClient (req, res) { + const client = await OAuthClient.findByPk(req.params.client_id, { raw: true }) + if (!client) { + return res.status(404).send('Not found!') + } + res.json({ + client_id: client.id, + redirect_uris: client.redirectUris, + name: client.name, + website: client.website, + scopes: client.scopes + }) + }, + async getClients (req, res) { const tokens = await OAuthToken.findAll({ include: [{ model: User, where: { id: req.user.id } }, { model: OAuthClient, as: 'client' }], diff --git a/server/api/index.js b/server/api/index.js index 6f1be5cc..9909934e 100644 --- a/server/api/index.js +++ b/server/api/index.js @@ -95,6 +95,7 @@ api.delete('/resources/:resource_id', isAdmin, resourceController.remove) api.get('/resources', isAdmin, resourceController.getAll) api.get('/clients', isAuth, oauthController.getClients) +api.get('/client/:client_id', isAuth, oauthController.getClient) api.post('/client', oauthController.createClient) // api.get('/verify', oauth.oauthServer.authenticate(), (req, res) => { From 984befdcb9c73fe601d409c2977a63abe797ce95 Mon Sep 17 00:00:00 2001 From: Weblate Admin Date: Tue, 21 Jan 2020 16:38:35 +0000 Subject: [PATCH 070/598] Translated using Weblate (English) Currently translated at 100.0% (180 of 180 strings) Translation: Gancio/Website Translate-URL: https://weblate.gancio.org/projects/gancio/website/en/ --- locales/en.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/locales/en.json b/locales/en.json index fd13e3e7..7bb7ab2c 100644 --- a/locales/en.json +++ b/locales/en.json @@ -200,5 +200,12 @@ "5": "fifth", "-1": "last" }, - "about": "\n

    Gancio is a shared agenda for local communities.

    \n " + "about": "\n

    Gancio is a shared agenda for local communities.

    \n ", + "oauth": { + "authorization_request": "Application {app} is asking for the following authorization on {instance_name}:", + "redirected_to": "After confirmation you will be redirected to the address {url}", + "scopes": { + "event:write": "Add and edit your events" + } + } } From ff82780eaf674d372282518081e9837bb5e51ac7 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 21 Jan 2020 22:13:05 +0100 Subject: [PATCH 071/598] add contrast to success button --- assets/style.less | 6 ++++++ pages/Authorize.vue | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/assets/style.less b/assets/style.less index abb8e150..fe3919f3 100644 --- a/assets/style.less +++ b/assets/style.less @@ -130,4 +130,10 @@ html, body { .el-message-box { max-width: 90%; +} + +.el-button--success.is-plain { + color: #2c8600; + border-color: #9de27b; + background-color: #f9fff6; } \ No newline at end of file diff --git a/pages/Authorize.vue b/pages/Authorize.vue index 043d1f8e..6041d4c3 100644 --- a/pages/Authorize.vue +++ b/pages/Authorize.vue @@ -13,9 +13,9 @@ br br a(:href='authorizeURL') - el-button.mr-1(plain type='success') {{$t('common.authorize')}} + el-button.mr-1(plain type='success' icon='el-icon-check') {{$t('common.authorize')}} a(href='/') - el-button.mt-1(plain type='warning') {{$t('common.cancel')}} + el-button.mt-1(plain type='danger') {{$t('common.cancel')}} diff --git a/docs/_site/404.html b/docs/_site/404.html index 3644ad42..145c2555 100644 --- a/docs/_site/404.html +++ b/docs/_site/404.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Gancio","url":"https://gancio.org/404.html","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/about.html b/docs/_site/about.html index 1007807a..0b347eb4 100644 --- a/docs/_site/about.html +++ b/docs/_site/about.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"About","url":"https://gancio.org/about","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/assets/css/style.css b/docs/_site/assets/css/style.css index b6489864..313386b2 100644 --- a/docs/_site/assets/css/style.css +++ b/docs/_site/assets/css/style.css @@ -10,3 +10,12 @@ .navigation-list-item a:hover { color: black; } + + +html, body { + font-family: sans-serif; +} + +.page-content h1:first-of-type { + font-weight: 500; +} \ No newline at end of file diff --git a/docs/_site/assets/gancio.png b/docs/_site/assets/gancio.png new file mode 100644 index 0000000000000000000000000000000000000000..d53e1632fbb3fea130105b2cc79c4ccc7a93f296 GIT binary patch literal 3576 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 A-v9sr literal 0 HcmV?d00001 diff --git a/docs/_site/assets/js/search-data.json b/docs/_site/assets/js/search-data.json index 7ff5f7c8..de724d24 100644 --- a/docs/_site/assets/js/search-data.json +++ b/docs/_site/assets/js/search-data.json @@ -29,66 +29,66 @@ }, "4": { "id": "4", + "title": "Contacts", + "content": "Contacts :elephant: Mastodon ⇒ @gancio@mastodon.cisti.org", + "url": "https://gancio.org/contacts", + "relUrl": "/contacts" + }, + "5": { + "id": "5", "title": "Debian", "content": "Debian installation Install Node.js & yarn (from root) curl -sL https://deb.nodesource.com/setup_12.x | bash - apt-get install -y nodejs curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list apt-get update && apt-get install yarn source Install Gancio yarn global add gancio --prod Setup with postgreSQL (optional as you can choose sqlite) apt-get install postgresql # Create the database su postgres -c psql postgres=# create database gancio; postgres=# create user gancio with encrypted password 'gancio'; postgres=# grant all privileges on database gancio to gancio; Create a user to run gancio from adduser gancio su gancio Launch interactive setup gancio setup --config config.json Start gancio start --config config.json Point your web browser to http://localhost:13120 or where you selected during setup. Setup nginx as a proxy To deploy gancio in production you should use something like pm2: sudo yarn global add pm2 pm2 start gancio -- --config config.json # Run this command to run your application as a service and automatically restart after a reboot: pm2 startup # read the output! sudo pm2 startup -u gancio Upgrade sudo yarn global add gancio sudo service pm2 restart", "url": "https://gancio.org/install/debian", "relUrl": "/install/debian" }, - "5": { - "id": "5", + "6": { + "id": "6", "title": "Hacking", "content": "Development Stack Gancio is built with following technologies: Nuxt.js Vue.js Express Node.js Sequelize Element.ui Testing on your own machine Download source git clone https://framagit.org/les/gancio Install dependencies yarn Hacking yarn dev Please use the issue board and the forum to discuss any modification.", "url": "https://gancio.org/dev", "relUrl": "/dev" }, - "6": { - "id": "6", + "7": { + "id": "7", "title": "Docker", "content": "Initial setup Use sqlite Use postgreSQL Start gancio Upgrade Initial setup You do not need to clone the full repo as we distribute gancio via npm. A Dockerfile and a docker-compose.yml are the only files needed. Create a directory where everything related to gancio is stored (db, images, config) mkdir /opt/gancio cd /opt/gancio note that you can choose a different directory. Use sqlite Download docker-compose.yml and Dockerfile wget https://gancio.org/docker/Dockerfile wget https://gancio.org/docker/sqlite/docker-compose.yml Create an empty db and config (this is needed) touch config.json db.sqlite mkdir user_locale Build docker image and launch interactive setup in one step docker-compose build docker-compose run --rm gancio gancio setup --docker --db=sqlite Use postgreSQL Download docker-compose.yml and Dockerfile wget https://gancio.org/docker/Dockerfile wget https://gancio.org/docker/postgres/docker-compose.yml Create an empty configuration (this is needed) touch config.json mkdir user_locale Build docker image and launch interactive setup in one step docker-compose build docker-compose run --rm gancio gancio setup --docker --db=postgres Start gancio Run your container docker-compose up -d Look at logs with docker-compose logs Setup nginx as a proxy Point your web browser to http://localhost:13120 or where you specified during setup and enjoy :tada: You can edit config.json file and restart the container on your needs, see Configuration for more details. Upgrade cd /opt/gancio docker-compose up -d --no-deps --build", "url": "https://gancio.org/install/docker", "relUrl": "/install/docker" }, - "7": { - "id": "7", + "8": { + "id": "8", "title": "Federation", "content": "Federation Each instance has only one AP Actor that publishes each event. We are considering the introduction of other “Actor” but they will not be linked to users, rather to places or tags/categories. There are no personal homes with a timeline of people I follow, everyone has a sort of local timeline of the instance, it’s an anti filter-bubble feature. Events are not published with the type Event but with type Note because we wanted to add the possibility to interact with events from mastodon instances (boost / bookmark and “comments” that we call resources because we don’t want it to become a place of debate, but more a place where to keep a historical memory of events, e.g. an audio recording of a talk). When mastodon will support Event object type we will change for sure.", "url": "https://gancio.org/federation", "relUrl": "/federation" }, - "8": { - "id": "8", + "9": { + "id": "9", "title": "Home", - "content": "Gancio A shared agenda for local communities. Get started now Demo Source Some relevant key features: Focus on content not on people: nowhere on gancio appears the identity of who published the event, not even under a nickname, not even to administrators (except in the db). This is not an ego-friendly platform. Visitors first. We do not want logged user to get more features than random visitor. We do not want users to register, except to publish events and even in this case you can publish an anonymous event. Anonymous events: optionally a visitor can create events without being registered (an administrator has to confirm them) We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites. Very easy UI Multidays events support (festival, conferences…) Recurrent events support (each monday, each two monday, each monday and friday, each two saturday, etc.) Filters events for tags or places RSS and ICS export (with filters) embeddable iframe (example) boost / bookmark / comment events from the fediverse! Lot of configurations available (user registration open/close, enable federation, enable recurrent events) License Gancio is distributed by an AGPL-3.0 Licence.", + "content": "ancio A shared agenda for local communities. Get started now Demo Source Some relevant key features: Focus on content not on people: nowhere on gancio appears the identity of who published the event, not even under a nickname, not even to administrators (except in the db). This is not an ego-friendly platform. Visitors first. We do not want logged user to get more features than random visitor. We do not want users to register, except to publish events and even in this case you can publish an anonymous event. Anonymous events: optionally a visitor can create events without being registered (an administrator has to confirm them) We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites and via AP Very easy UI Multidays events support (festival, conferences…) Recurrent events support (each monday, each two monday, each monday and friday, each two saturday, etc.) Filters events for tags or places RSS and ICS export (with filters) embeddable iframe (example) boost / bookmark / comment events from the fediverse! Lot of configurations available (user registration open/close, enable federation, enable recurrent events) License Gancio is distributed by an AGPL-3.0 Licence.", "url": "https://gancio.org/", "relUrl": "/" }, - "9": { - "id": "9", + "10": { + "id": "10", "title": "Install", "content": "Install (production) Install on Debian Install using docker Post installation Nginx as a proxy If you wanna hack or run the current develop release take a look at Hacking & contribute", "url": "https://gancio.org/install", "relUrl": "/install" }, - "10": { - "id": "10", + "11": { + "id": "11", "title": "Instances", - "content": "Instances gancio.cisti.org (Torino, Italy) lapunta.org (Firenze, Italy)", + "content": "Instances gancio.cisti.org (Torino, Italy) lapunta.org (Firenze, Italy) Do you want your instance to appear here? Write us.", "url": "https://gancio.org/instances", "relUrl": "/instances" }, - "11": { - "id": "11", - "title": "Support a new language", - "content": "Add a new locale watch this commit", - "url": "https://gancio.org/dev/locales", - "relUrl": "/dev/locales" - }, "12": { "id": "12", - "title": "Migration", - "content": "If you need to modify the db’s structure while hacking, just change server/api/models/ and remember to create a migration, to understand how things works check the sequelize documentation", - "url": "https://gancio.org/dev/migration", - "relUrl": "/dev/migration" + "title": "Internationalization", + "content": "Internationalization We’re self-hosting an instance of weblate you can use to help us with translations.", + "url": "https://gancio.org/dev/locales", + "relUrl": "/dev/locales" }, "13": { "id": "13", @@ -100,9 +100,9 @@ "14": { "id": "14", "title": "OAuth", - "content": "OAuth An open standard for token-based authentication and authorization on the Internet. Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests. To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2. Create client Create a new application to obtain OAuth2 credentials. POST /api/client Request parameters client_name string A name for your application redirect_uri string Where the user should be redirected after authorization scopes string Space separated list of scopes. If none is provided, defaults to write as it’s the only supported scope! website string A URL to the homepage of your app Example curl -X POST -d 'client_name=Wordpress Event Manager' -d 'redirect_uri=https://noblogs.org/' -d 'website=https://myapp.example' http://localhost:13120/api/client Returns Application, with client_id and client_secret { "name" : "Wordpress Event Manager", "scopes" : "write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", "redirect_uri" : "https://noblogs.org", "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d" } List of scopes write Grant access to add/update events. Authorize a user Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods. GET /authorize Request parameters response_type string Should be set equal to code redirect_uri string Where the user should be redirected after authorization scope string Should be write client_id string Client ID, obtained during app registration.", - "url": "https://gancio.org/oauth", - "relUrl": "/oauth" + "content": "BETA FEATUREExpect bad behavior and open issues OAuth An open standard for token-based authentication and authorization on the Internet. Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests. To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2. Create client Create a new application to obtain OAuth2 credentials. POST /api/client Request parameters client_name string A name for your application redirect_uris string Where the user should be redirected after authorization scopes string Space separated list of scopes. If none is provided, defaults to event:write as it’s the only supported scope! website string A URL to the homepage of your app Example curl -X POST -d 'client_name=Wordpress Event Manager' -d 'redirect_uris=https://noblogs.org/' -d 'website=https://myapp.example' http://localhost:13120/api/client Returns Application, with client_id and client_secret { "name" : "Wordpress Event Manager", "scopes" : "event:write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", "redirect_uris" : "https://noblogs.org", "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d" } List of scopes event:write Grant access to add/update events. Authorize a user Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods. GET /authorize Request parameters response_type string Should be set equal to code redirect_uri string Where the user should be redirected after authorization scope string Should be event:write client_id string client_id, obtained during app registration. Obtain a token POST /oauth/token Request parameters client_id string client_id obtained during client registration client_secret string client_secret obtained during client registration scope string Should be event:write grant_type string Set equal to authorization_code code string A user authorization code, obtained via /authorize", + "url": "https://gancio.org/dev/oauth", + "relUrl": "/dev/oauth" }, "15": { "id": "15", diff --git a/docs/_site/assets/oauth_auth.png b/docs/_site/assets/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..34ea5c00670cfe065649df426fde90a75c1e4b4a GIT binary patch literal 34445 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 literal 0 HcmV?d00001 diff --git a/docs/_site/assets/thumbs/oauth_auth.png b/docs/_site/assets/thumbs/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..b35841176a84d67ca7f3d58840dfe8294c8a7a53 GIT binary patch literal 30094 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

    Xw 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 oOM#gKZOlMJw>NTiu{8L1pa + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Changelog","url":"https://gancio.org/changelog","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + +

    - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/config.html b/docs/_site/config.html index be0956ae..80bd0af8 100644 --- a/docs/_site/config.html +++ b/docs/_site/config.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Configuration","url":"https://gancio.org/config","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -314,7 +316,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/dev/migration.html b/docs/_site/contacts.html similarity index 81% rename from docs/_site/dev/migration.html rename to docs/_site/contacts.html index 1265c495..41012c21 100644 --- a/docs/_site/dev/migration.html +++ b/docs/_site/contacts.html @@ -5,13 +5,15 @@ - Migration - Gancio + Contacts - Gancio + + @@ -26,17 +28,17 @@ -Migration | Gancio +Contacts | Gancio - + - - + + +{"@type":"WebPage","headline":"Contacts","url":"https://gancio.org/contacts","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -301,7 +303,8 @@ @@ -313,7 +316,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -322,19 +327,13 @@
    - -
    -

    If you need to modify the db’s structure while hacking, just change server/api/models/ and -remember to create a migration, to understand how things works check the sequelize documentation

    +

    Contacts

    + +

    +:elephant: Mastodon ⇒ @gancio@mastodon.cisti.org +

    diff --git a/docs/_site/dev.html b/docs/_site/dev.html index 6553b47f..337df587 100644 --- a/docs/_site/dev.html +++ b/docs/_site/dev.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Hacking","url":"https://gancio.org/dev","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -370,15 +374,13 @@ -
  • - Support a new language -
  • + -
  • - Migration -
  • + + + @@ -394,7 +396,9 @@ - +
  • + OAuth +
  • @@ -402,9 +406,9 @@ - - - +
  • + Internationalization +
  • diff --git a/docs/_site/dev/locales.html b/docs/_site/dev/locales.html index 2d099d85..44b98bcc 100644 --- a/docs/_site/dev/locales.html +++ b/docs/_site/dev/locales.html @@ -5,13 +5,15 @@ - Support a new language - Gancio + Internationalization - Gancio + + @@ -26,9 +28,9 @@ -Support a new language | Gancio +Internationalization | Gancio - + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Internationalization","url":"https://gancio.org/dev/locales","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -327,14 +331,15 @@ - +
    -

    Add a new locale

    -

    watch this commit

    +

    Internationalization

    + +

    We’re self-hosting an instance of weblate you can use to help us with translations.

    diff --git a/docs/_site/oauth.html b/docs/_site/dev/oauth.html similarity index 78% rename from docs/_site/oauth.html rename to docs/_site/dev/oauth.html index b859bc26..8ec5b53d 100644 --- a/docs/_site/oauth.html +++ b/docs/_site/dev/oauth.html @@ -12,6 +12,8 @@ + + @@ -32,11 +34,11 @@ - - + + +{"@type":"WebPage","headline":"OAuth","url":"https://gancio.org/dev/oauth","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -268,9 +270,9 @@ - @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -322,20 +326,34 @@
    + +
    -

    OAuth

    +

    BETA FEATURE

    Expect bad behavior and open issues

    + + +
    +

    OAuth

    An open standard for token-based authentication and authorization on the Internet.

    Gancio supports OAuth 2.0, an authorization framework described in RFC 6749 that allows third-party applications to obtain limited access to an HTTP service on behalf of a resource owner, through the use of a standardized authorization flow that generates a client access token to be used with HTTP requests.

    To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to acquire a client id/secret and then proceed with normal OAuth 2.

    +
    +

    Create client

    Create a new application to obtain OAuth2 credentials.

    POST

    -

    /api/client

    Request parameters

    @@ -348,14 +366,14 @@ A name for your application - redirect_uri + redirect_uris string Where the user should be redirected after authorization scopes string - Space separated list of scopes. If none is provided, defaults to write as it’s the only supported scope! + Space separated list of scopes. If none is provided, defaults to event:write as it’s the only supported scope! website @@ -368,7 +386,7 @@

    Example

    curl -X POST \
             -d 'client_name=Wordpress Event Manager' \
    -        -d 'redirect_uri=https://noblogs.org/' \
    +        -d 'redirect_uris=https://noblogs.org/' \
             -d 'website=https://myapp.example' \
             http://localhost:13120/api/client
     
    @@ -378,17 +396,17 @@
    {
        "name" : "Wordpress Event Manager",
    -   "scopes" : "write",
    +   "scopes" : "event:write",
        "website" : "https://myapp.example",
        "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4",
    -   "redirect_uri" : "https://noblogs.org",
    +   "redirect_uris" : "https://noblogs.org",
        "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d"
     }
     

    List of scopes

      -
    • write
      +
    • event:write
      Grant access to add/update events.
    @@ -396,6 +414,8 @@ Grant access to add/update events.

    Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods.

    +

    assets/thumbs/oauth_auth.png

    +

    GET

    /authorize

    @@ -416,12 +436,49 @@ The authorization code can be used while requesting a token to obtain access to scope string - Should be write + Should be event:write client_id string - Client ID, obtained during app registration. + client_id, obtained during app registration. + + + + +

    Obtain a token

    + +

    POST

    +

    /oauth/token

    + +

    Request parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    client_idstringclient_id obtained during client registration
    client_secretstringclient_secret obtained during client registration
    scopestringShould be event:write
    grant_typestringSet equal to authorization_code
    codestringA user authorization code, obtained via /authorize
    diff --git a/docs/_site/dev/structure.html b/docs/_site/dev/structure.html index 5c96d8e0..37f81681 100644 --- a/docs/_site/dev/structure.html +++ b/docs/_site/dev/structure.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Project Structure","url":"https://gancio.org/dev/structure","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/favicon.ico b/docs/_site/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..36b55d4a8ffc0352aa0c8daf717533f6b1b6c4aa GIT binary patch literal 4286 zcmb`KT}WhQ7{|{tXpJAE((XDc=pwc(LSi_2lct0S?uBS#Z5K;{N;h?3c@c`S3sJIW zP|#+(En#d}(p8jQc+rHpt((%KOQ2vZxw@p}M~zy|=+pmy=Da)SoH>qX2cPBVd*(UM z`~2VYey^q-!@pCfH2&4T$kw!znx>rraA|db{v)sqH7#g2N-)) z=0~E-AOyrEjQtoCgJkUyRJ;fd)y>Grkd%}Zr?#s^_Zodc6{f zMC|fXT3V{=b6uF%<|i?2#;~uczW^Qss$H7ihxPUKQc+PM+1c5acPg%?rY26Cj^g5C zbNm&=)3{fe*7#S5p*Gv_puKv%!NEb<+uO6`-r3oarKKgAnVHeo-o(U&Y;A2>V$_ek zygWS*^jK1p+UJbl@SO%~zI|$r6`#+i(j;AGWo21%LbnaD9}NE+DAl;vT4F0JE0fk$ z6;o4FEjgh(1a8IjIoGKF7qIT9ZEbBTOc! z{VhZPCQ8*O(XykX!!akFqobpi_+T*T7@L-sW{HD_Iz!<<2~^*IZjY0$t}e%%bPfy* zSmGBJ793-9a&jzj(EkT;EyB;Wq4bCBanje<=a`dD?ll~P$;n9>85xONBdTISL4iFl z^^N{NW75BBkCUFB9+f8PvZSQMo|pY^%s;M8_5I)4;}Z72+Xj`DmD%%h{#}jsKi5XY zXv44eIB9QhcPn#XTvb(-JumM_FGTe@2ksd9dnkRD*oKCN1M|9l!8IDw($^L5lRmH= z^HRvMeqx>if|2^t7z4t;zQGwq#~zn)C5atL!u$!co1S5%V2jJ6(AUn1A$s; zY;2U~=4Rnp$8$9|H&?$GB9Em`Yip~%KXrC?n*Dzx&acFc^4)0Nrx3?`-j{&=@Bugu z%z1eid=KQ>{N|X1&%9ULjrXtH06AX;?*raL?t>7x4qgP6fP2-;;7{-t;JE4cJCq4^ z`F%uW-B0cqvciKyUb1PZn+T{LV>`|`T!dTvE*^ftM+$XtL z^St1h#W}+7BYdWhce!&w?Q3{UY!dY76Dp! + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Federation","url":"https://gancio.org/federation","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -268,9 +270,9 @@ - @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/feed.xml b/docs/_site/feed.xml index ed7fe771..61508920 100644 --- a/docs/_site/feed.xml +++ b/docs/_site/feed.xml @@ -1 +1 @@ -Jekyll2020-01-21T01:24:44+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file +Jekyll2020-01-21T22:11:47+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file diff --git a/docs/_site/index.html b/docs/_site/index.html index 3cf52551..ff035ac0 100644 --- a/docs/_site/index.html +++ b/docs/_site/index.html @@ -14,6 +14,8 @@ + + @@ -38,7 +40,7 @@ +{"@type":"WebSite","headline":"Home","url":"https://gancio.org/","name":"Gancio","description":"Gancio is a shared agenda for local communities.","@context":"https://schema.org"} @@ -69,18 +71,6 @@ - - - - - - - - - - - - @@ -100,6 +90,10 @@ + + + + - - - - - @@ -219,12 +203,26 @@ + + + + + + @@ -250,6 +248,10 @@ + + + + @@ -272,7 +274,7 @@ @@ -315,7 +317,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -324,7 +328,7 @@
    -

    Gancio

    +

    ancio

    A shared agenda for local communities.

    @@ -350,7 +354,7 @@ nowhere on gancio appears the identity of who published the event, not even unde

    Anonymous events: optionally a visitor can create events without being registered (an administrator has to confirm them)

  • -

    We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites.

    +

    We are not interested in making hits so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites and via AP

  • Very easy UI
  • Multidays events support (festival, conferences…)
  • diff --git a/docs/_site/install.html b/docs/_site/install.html index 30edc7e2..59967102 100644 --- a/docs/_site/install.html +++ b/docs/_site/install.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Install","url":"https://gancio.org/install","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/install/debian.html b/docs/_site/install/debian.html index 47003fe3..b409deb2 100644 --- a/docs/_site/install/debian.html +++ b/docs/_site/install/debian.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Debian","url":"https://gancio.org/install/debian","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/install/docker.html b/docs/_site/install/docker.html index 3a93e256..6c67a04f 100644 --- a/docs/_site/install/docker.html +++ b/docs/_site/install/docker.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Docker","url":"https://gancio.org/install/docker","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -314,7 +316,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/install/nginx.html b/docs/_site/install/nginx.html index 9573040d..866fdee5 100644 --- a/docs/_site/install/nginx.html +++ b/docs/_site/install/nginx.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Nginx","url":"https://gancio.org/install/nginx","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • diff --git a/docs/_site/instances.html b/docs/_site/instances.html index f45577e9..5f615516 100644 --- a/docs/_site/instances.html +++ b/docs/_site/instances.html @@ -12,6 +12,8 @@ + + @@ -36,7 +38,7 @@ +{"@type":"WebPage","headline":"Instances","url":"https://gancio.org/instances","description":"A shared agenda for local communities with AP support","@context":"https://schema.org"} @@ -67,18 +69,6 @@ - - - - - - - - - - - - @@ -98,6 +88,10 @@ + + + + - - - - - @@ -217,12 +201,26 @@ + + + + + + @@ -248,6 +246,10 @@ + + + + @@ -270,7 +272,7 @@ @@ -313,7 +315,9 @@
  • Source
  • -
  • Forum
  • +
  • Forum
  • + +
  • Mastodon
  • @@ -331,6 +335,8 @@
  • lapunta.org (Firenze, Italy)
  • +

    Do you want your instance to appear here? Write us.

    +
    diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css index b6489864..313386b2 100644 --- a/docs/assets/css/style.css +++ b/docs/assets/css/style.css @@ -10,3 +10,12 @@ .navigation-list-item a:hover { color: black; } + + +html, body { + font-family: sans-serif; +} + +.page-content h1:first-of-type { + font-weight: 500; +} \ No newline at end of file diff --git a/docs/assets/gancio.png b/docs/assets/gancio.png new file mode 100644 index 0000000000000000000000000000000000000000..d53e1632fbb3fea130105b2cc79c4ccc7a93f296 GIT binary patch literal 3576 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 A-v9sr literal 0 HcmV?d00001 diff --git a/docs/assets/oauth_auth.png b/docs/assets/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..34ea5c00670cfe065649df426fde90a75c1e4b4a GIT binary patch literal 34445 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 literal 0 HcmV?d00001 diff --git a/docs/assets/thumbs/oauth_auth.png b/docs/assets/thumbs/oauth_auth.png new file mode 100644 index 0000000000000000000000000000000000000000..b35841176a84d67ca7f3d58840dfe8294c8a7a53 GIT binary patch literal 30094 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

    Xw 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 oOM#gKZOlMJw>NTiu{8L1pa error "BETA FEATURE" +> Expect bad behavior and open [issues](https://framagit.org/les/gancio/issues) + ## OAuth {: .no_toc } An open standard for token-based authentication and authorization on the Internet. @@ -13,12 +17,13 @@ Gancio supports OAuth 2.0, an authorization framework described in [RFC 6749](ht To obtain an OAuth token for a Gancio instance, make sure that you allow your users to specify the domain they want to connect to before login. Use that domain to [acquire a client id/secret](#create-client) and then proceed with normal OAuth 2. +--- + ## Create client Create a new application to obtain OAuth2 credentials. POST {: .label .label-yellow } - `/api/client` @@ -26,7 +31,7 @@ POST | client_name | `string` | A name for your application | | redirect_uris | `string` | Where the user should be redirected after authorization | -| scopes | `string` | Space separated list of scopes. If none is provided, defaults to `write` as it's the only supported scope!| +| scopes | `string` | Space separated list of scopes. If none is provided, defaults to `event:write` as it's the only supported scope!| | website | `string` | A URL to the homepage of your app | #### Example @@ -44,7 +49,7 @@ Application, with `client_id` and `client_secret` ```json { "name" : "Wordpress Event Manager", - "scopes" : "write", + "scopes" : "event:write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", "redirect_uris" : "https://noblogs.org", @@ -53,13 +58,16 @@ Application, with `client_id` and `client_secret` ``` #### List of scopes -- `write` +- `event:write` Grant access to add/update events. ## Authorize a user Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired `redirect_uri`. The authorization code can be used while requesting a token to obtain access to user-level methods. +[![assets/thumbs/oauth_auth.png](assets/thumbs/oauth_auth.png)](assets/oauth_auth.png){: data-fancybox="group" data-caption="OAuth authorization form"} + + GET {: .label .label-green} `/authorize` @@ -68,6 +76,23 @@ GET | response_type | `string` | Should be set equal to `code` | | redirect_uri | `string` | Where the user should be redirected after authorization | -| scope | `string` | Should be `write`| -| client_id | `string` | Client ID, obtained during app registration. | +| scope | `string` | Should be `event:write`| +| client_id | `string` | `client_id`, obtained during app registration. | + + +## Obtain a token + +POST +{: .label .label-yellow } +`/oauth/token` + + +#### Request parameters + +| client_id | `string` | `client_id` obtained during [client registration](#create-client) | +| client_secret | `string` | `client_secret` obtained during [client registration](#create-client) | +| scope | `string` | Should be `event:write`| +| grant_type | `string` | Set equal to `authorization_code` | +| code | `string` | A user authorization code, obtained via [/authorize](#authorize-a-user) | + diff --git a/docs/dev/structure.md b/docs/dev/structure.md index 63266497..413fc273 100644 --- a/docs/dev/structure.md +++ b/docs/dev/structure.md @@ -3,6 +3,7 @@ layout: default title: Project Structure permalink: /dev/structure parent: Hacking +nav_order: 1 --- ### Project structure diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..36b55d4a8ffc0352aa0c8daf717533f6b1b6c4aa GIT binary patch literal 4286 zcmb`KT}WhQ7{|{tXpJAE((XDc=pwc(LSi_2lct0S?uBS#Z5K;{N;h?3c@c`S3sJIW zP|#+(En#d}(p8jQc+rHpt((%KOQ2vZxw@p}M~zy|=+pmy=Da)SoH>qX2cPBVd*(UM z`~2VYey^q-!@pCfH2&4T$kw!znx>rraA|db{v)sqH7#g2N-)) z=0~E-AOyrEjQtoCgJkUyRJ;fd)y>Grkd%}Zr?#s^_Zodc6{f zMC|fXT3V{=b6uF%<|i?2#;~uczW^Qss$H7ihxPUKQc+PM+1c5acPg%?rY26Cj^g5C zbNm&=)3{fe*7#S5p*Gv_puKv%!NEb<+uO6`-r3oarKKgAnVHeo-o(U&Y;A2>V$_ek zygWS*^jK1p+UJbl@SO%~zI|$r6`#+i(j;AGWo21%LbnaD9}NE+DAl;vT4F0JE0fk$ z6;o4FEjgh(1a8IjIoGKF7qIT9ZEbBTOc! z{VhZPCQ8*O(XykX!!akFqobpi_+T*T7@L-sW{HD_Iz!<<2~^*IZjY0$t}e%%bPfy* zSmGBJ793-9a&jzj(EkT;EyB;Wq4bCBanje<=a`dD?ll~P$;n9>85xONBdTISL4iFl z^^N{NW75BBkCUFB9+f8PvZSQMo|pY^%s;M8_5I)4;}Z72+Xj`DmD%%h{#}jsKi5XY zXv44eIB9QhcPn#XTvb(-JumM_FGTe@2ksd9dnkRD*oKCN1M|9l!8IDw($^L5lRmH= z^HRvMeqx>if|2^t7z4t;zQGwq#~zn)C5atL!u$!co1S5%V2jJ6(AUn1A$s; zY;2U~=4Rnp$8$9|H&?$GB9Em`Yip~%KXrC?n*Dzx&acFc^4)0Nrx3?`-j{&=@Bugu z%z1eid=KQ>{N|X1&%9ULjrXtH06AX;?*raL?t>7x4qgP6fP2-;;7{-t;JE4cJCq4^ z`F%uW-B0cqvciKyUb1PZn+T{LV>`|`T!dTvE*^ftM+$XtL z^St1h#W}+7BYdWhce!&w?Q3{UY!dY76Dp! Gancio +# ![](assets/gancio.png) ancio {: .fs-9 } A shared agenda for local communities. @@ -30,7 +30,7 @@ nowhere on gancio appears the identity of who published the event, not even unde - **Anonymous events**: optionally a visitor can create events without being registered (an administrator has to confirm them) -- **We are not interested in making hits** so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites. +- **We are not interested in making hits** so we export events in many ways, via RSS feeds, via global or individual ics, incorporating lists of events or single event via iframe on other websites and via [AP](/federation) - Very easy UI - Multidays events support (festival, conferences...) diff --git a/docs/instances.md b/docs/instances.md index f67e016a..7d2b7c52 100644 --- a/docs/instances.md +++ b/docs/instances.md @@ -9,3 +9,6 @@ nav_order: 7 - [gancio.cisti.org](https://gancio.cisti.org) (Torino, Italy) - [lapunta.org](https://lapunta.org) (Firenze, Italy) + + +Do you want your instance to appear here? [Write us](/contacts). \ No newline at end of file From 822acd7714bfcebb1ec1d3a78d30461343d32dc0 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 21 Jan 2020 22:36:32 +0100 Subject: [PATCH 073/598] [doc] minor --- docs/_site/dev/oauth.html | 2 +- docs/_site/feed.xml | 2 +- docs/dev/oauth.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_site/dev/oauth.html b/docs/_site/dev/oauth.html index 8ec5b53d..85e186d9 100644 --- a/docs/_site/dev/oauth.html +++ b/docs/_site/dev/oauth.html @@ -414,7 +414,7 @@ Grant access to add/update events.

    Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired redirect_uri. The authorization code can be used while requesting a token to obtain access to user-level methods.

    -

    assets/thumbs/oauth_auth.png

    +

    /assets/thumbs/oauth_auth.png

    GET

    /authorize

    diff --git a/docs/_site/feed.xml b/docs/_site/feed.xml index 61508920..904a80d7 100644 --- a/docs/_site/feed.xml +++ b/docs/_site/feed.xml @@ -1 +1 @@ -Jekyll2020-01-21T22:11:47+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file +Jekyll2020-01-21T22:35:55+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file diff --git a/docs/dev/oauth.md b/docs/dev/oauth.md index 34dba81c..c2634625 100644 --- a/docs/dev/oauth.md +++ b/docs/dev/oauth.md @@ -65,7 +65,7 @@ Grant access to add/update events. Displays an authorization form to the user. If approved, it will create and return an authorization code, then redirect to the desired `redirect_uri`. The authorization code can be used while requesting a token to obtain access to user-level methods. -[![assets/thumbs/oauth_auth.png](assets/thumbs/oauth_auth.png)](assets/oauth_auth.png){: data-fancybox="group" data-caption="OAuth authorization form"} +[![/assets/thumbs/oauth_auth.png](/assets/thumbs/oauth_auth.png)](/assets/oauth_auth.png){: data-fancybox="group" data-caption="OAuth authorization form"} GET From 2e24d129841506d316b7f75cec877060f92727a5 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 21 Jan 2020 22:59:54 +0100 Subject: [PATCH 074/598] sass-loader removed --- components/Editor.vue | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/components/Editor.vue b/components/Editor.vue index 72676dab..b3aa5b4e 100644 --- a/components/Editor.vue +++ b/components/Editor.vue @@ -95,12 +95,9 @@ export default { } } - From 6592a5a240b9edda5153eedd3b0360b648dc6e2e Mon Sep 17 00:00:00 2001 From: les Date: Fri, 24 Jan 2020 01:04:11 +0100 Subject: [PATCH 083/598] v0.20.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4be527ca..34aa66ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gancio", - "version": "0.17.14", + "version": "0.20.0", "description": "A shared agenda for local communities", "author": "lesion", "scripts": { From c846df6c553c8af79b0aaffe442982049e9ca747 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 24 Jan 2020 01:11:58 +0100 Subject: [PATCH 084/598] ... --- docs/_site/assets/js/search-data.json | 2 +- docs/_site/changelog.html | 14 ++++++++++++-- docs/_site/feed.xml | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/_site/assets/js/search-data.json b/docs/_site/assets/js/search-data.json index 3dd51d98..8804ff5c 100644 --- a/docs/_site/assets/js/search-data.json +++ b/docs/_site/assets/js/search-data.json @@ -16,7 +16,7 @@ "2": { "id": "2", "title": "Changelog", - "content": "All notable changes to this project will be documented in this file. unreleased oauth server implementation 0.17.14 [locale] add catalan [fix] fedi outbox 0.17.12 [ui] add admin section on event page in mobile #63 [fix] remove username from users 0.17.11 [refactor] s/fed_user/ap_user [fedi] admin moderation 0.17.10 [refactor] s/comment/resource/ [refactor] remove username field [doc] about and federation 0.17.8 [fix] use thumb in head og:img only 0.17.7 [fix] #58 wrong url for RSS feed 0.17.5 [fedi] comments moderation [fedi] user moderation [fedi] instance moderation [hotfix] cli setup [doc] fix debian upgrade [fix] comment ap_id key length [fix] fediverse signature [fedi] better /inbox /followers response 0.17.0 [feat] add rss link @homepage [ui] add lot of explanation text [ui] show copied messages [admin] show n of unconfirmed users/events [ui] spinner while event image is loading [fedi] add follow me dialog in event [fix] do not add reminders in full ics export [fix] remove spaces from hashtags sent via AP [fix] #56 unconfirmed event sent via ap [fix] localPosts/comments in fediverse stats 0.16.0 [feat] embed event as widget in external website [fedi] instances moderation in admin [fix] toggle event visibility by owner [fedi] manage unboost [refactoring] auth as middleware 0.15.7 [fix] minor 0.15.6 [fix] tags in event 0.15.5 [model] migrations setup [feat] embeddable event widget/iframe 0.15.2 [fix] delete event [fix] wrong html hierarchy 0.15.0 [fix] backtop icon on mobile [fix] webfinger nodeinfo return real node info [fix] register email confirmation [feat] add federation settings (enable comments/boost/like) [feat] new event page layout [feat] could download .ics of event [feat] add cors to feed requests [refactoring] settings middleware, cleaning codebase 0.14.18 [improve] better quality for images [fix] password recovery email [feat] new action field for notification [feat] add DEBUG env variable in docker-compose.yml [style] fixed width in confirmation events table [fix] #38 timezone issue in rss export and using tor… 0.14.17 [fix] image previews from external website [fix] docker-compose postgresql docs [improve] export white logo to fediverse", + "content": "All notable changes to this project will be documented in this file. 0.20.0 New layout (navbar/footer/visible filters) two month calendar on large display admin could edit title, description, about, favicon & logo directly form admin panel new add event layout => https://demo.gancio.org/add new editor to describe events (bold, italic, link) supported also using copy/paste the editor also support live markdown (try using ### at line start) start oauth2 server implementation (documentation: https://gancio.org/dev/oauth) add fediverse moderation fix embedding an event via iframe images converted in .webp new catalan translation, thanks @fadelkon 0.17.14 [locale] add catalan [fix] fedi outbox 0.17.12 [ui] add admin section on event page in mobile #63 [fix] remove username from users 0.17.11 [refactor] s/fed_user/ap_user [fedi] admin moderation 0.17.10 [refactor] s/comment/resource/ [refactor] remove username field [doc] about and federation 0.17.8 [fix] use thumb in head og:img only 0.17.7 [fix] #58 wrong url for RSS feed 0.17.5 [fedi] comments moderation [fedi] user moderation [fedi] instance moderation [hotfix] cli setup [doc] fix debian upgrade [fix] comment ap_id key length [fix] fediverse signature [fedi] better /inbox /followers response 0.17.0 [feat] add rss link @homepage [ui] add lot of explanation text [ui] show copied messages [admin] show n of unconfirmed users/events [ui] spinner while event image is loading [fedi] add follow me dialog in event [fix] do not add reminders in full ics export [fix] remove spaces from hashtags sent via AP [fix] #56 unconfirmed event sent via ap [fix] localPosts/comments in fediverse stats 0.16.0 [feat] embed event as widget in external website [fedi] instances moderation in admin [fix] toggle event visibility by owner [fedi] manage unboost [refactoring] auth as middleware 0.15.7 [fix] minor 0.15.6 [fix] tags in event 0.15.5 [model] migrations setup [feat] embeddable event widget/iframe 0.15.2 [fix] delete event [fix] wrong html hierarchy 0.15.0 [fix] backtop icon on mobile [fix] webfinger nodeinfo return real node info [fix] register email confirmation [feat] add federation settings (enable comments/boost/like) [feat] new event page layout [feat] could download .ics of event [feat] add cors to feed requests [refactoring] settings middleware, cleaning codebase 0.14.18 [improve] better quality for images [fix] password recovery email [feat] new action field for notification [feat] add DEBUG env variable in docker-compose.yml [style] fixed width in confirmation events table [fix] #38 timezone issue in rss export and using tor… 0.14.17 [fix] image previews from external website [fix] docker-compose postgresql docs [improve] export white logo to fediverse", "url": "https://gancio.org/changelog", "relUrl": "/changelog" }, diff --git a/docs/_site/changelog.html b/docs/_site/changelog.html index 1622ad2e..c48e58b4 100644 --- a/docs/_site/changelog.html +++ b/docs/_site/changelog.html @@ -330,9 +330,19 @@

    All notable changes to this project will be documented in this file.

    -

    unreleased

    +

    0.20.0

      -
    • oauth server implementation
    • +
    • New layout (navbar/footer/visible filters)
    • +
    • two month calendar on large display
    • +
    • admin could edit title, description, about, favicon & logo directly form admin panel
    • +
    • new add event layout => https://demo.gancio.org/add
    • +
    • new editor to describe events (bold, italic, link) supported also using copy/paste
    • +
    • the editor also support live markdown (try using ### at line start)
    • +
    • start oauth2 server implementation (documentation: https://gancio.org/dev/oauth)
    • +
    • add fediverse moderation
    • +
    • fix embedding an event via iframe
    • +
    • images converted in .webp
    • +
    • new catalan translation, thanks @fadelkon

    0.17.14

    diff --git a/docs/_site/feed.xml b/docs/_site/feed.xml index 1478291a..a4a201b7 100644 --- a/docs/_site/feed.xml +++ b/docs/_site/feed.xml @@ -1 +1 @@ -Jekyll2020-01-22T01:04:30+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file +Jekyll2020-01-24T01:03:10+01:00https://gancio.org/feed.xmlGancioA shared agenda for local communities with AP support \ No newline at end of file From 6352cb3d12a30d884de78e0769c62b441dd7e7cb Mon Sep 17 00:00:00 2001 From: les Date: Fri, 24 Jan 2020 01:12:12 +0100 Subject: [PATCH 085/598] 0.20.1 - New layout (navbar/footer/visible filters) - two month calendar on large display - admin could edit title, description, about, favicon & logo directly form admin panel - new add event layout => https://demo.gancio.org/add - new editor to describe events (bold, italic, link) supported also using copy/paste - the editor also support live markdown (try using ### at line start) - start oauth2 server implementation (documentation: https://gancio.org/dev/oauth) - add fediverse moderation - fix embedding an event via iframe - images converted in .webp - new catalan translation, thanks @fadelkon --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 34aa66ee..d9116c9a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gancio", - "version": "0.20.0", + "version": "0.20.1", "description": "A shared agenda for local communities", "author": "lesion", "scripts": { From b706333c85f6dda766335f9248f49fb517b2e8be Mon Sep 17 00:00:00 2001 From: les Date: Mon, 27 Jan 2020 00:47:03 +0100 Subject: [PATCH 086/598] use oauth2 password flow for webclient --- components/Nav.vue | 1 + components/admin/Settings.vue | 2 +- nuxt.config.js | 18 +- package.json | 14 +- pages/Login.vue | 15 +- pages/event/followMe.vue | 36 ++-- pages/settings.vue | 10 +- server/api/auth.js | 45 ++--- server/api/controller/event.js | 345 +++++++++++++++------------------ server/api/controller/oauth.js | 27 ++- server/api/controller/user.js | 29 --- server/api/index.js | 41 ++-- server/api/mail.js | 2 +- server/api/oauth.js | 4 + server/federation/helpers.js | 30 +-- server/federation/index.js | 6 + server/helpers.js | 28 +-- server/notifier.js | 2 +- server/routes.js | 22 ++- store/index.js | 24 +-- yarn.lock | 114 +++++------ 21 files changed, 367 insertions(+), 448 deletions(-) diff --git a/components/Nav.vue b/components/Nav.vue index f48f6a22..8084d3f5 100644 --- a/components/Nav.vue +++ b/components/Nav.vue @@ -18,6 +18,7 @@ el-menu-item(v-if='!$auth.loggedIn' index='/login') i.el-icon-user span.hidden-xs-only {{$t('common.login')}} + el-submenu(v-if='$auth.loggedIn' index=3) template(slot='title') i.el-icon-user diff --git a/components/admin/Settings.vue b/components/admin/Settings.vue index f5a348c1..f1b998db 100644 --- a/components/admin/Settings.vue +++ b/components/admin/Settings.vue @@ -48,7 +48,7 @@ export default { data ({ $store }) { return { title: $store.state.settings.title, - description: $store.state.settings.description, + description: $store.state.settings.description } }, computed: { diff --git a/nuxt.config.js b/nuxt.config.js index f55df5f8..3927469a 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -67,15 +67,27 @@ module.exports = { prefix: '/api' }, auth: { + // localStorage: false, // https://github.com/nuxt-community/auth-module/issues/425 + cookie: { + prefix: 'auth.', + expires: 360, + maxAge: 60 * 60 * 24 * 30 + }, redirect: { - login: '/login' + login: '../login' }, strategies: { local: { endpoints: { - login: { url: '/auth/login', method: 'post', propertyName: 'token' }, + login: { + url: '../oauth/login', + method: 'post', + propertyName: 'access_token', + withCredentials: true, + headers: { 'Content-Type': 'application/x-www-form-urlencoded' } + }, logout: false, - user: { url: '/auth/user', method: 'get', propertyName: false } + user: { url: '/user', method: 'get', propertyName: false } }, tokenRequired: true, tokenType: 'Bearer' diff --git a/package.json b/package.json index d9116c9a..9f3a9c4e 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@nuxtjs/auth": "^4.8.5", "@nuxtjs/axios": "^5.9.3", "accept-language": "^3.0.18", - "axios": "^0.19.1", + "axios": "^0.19.2", "bcryptjs": "^2.4.3", "body-parser": "^1.18.3", "bootstrap": "^4.4.1", @@ -64,26 +64,22 @@ "consola": "^2.11.3", "cookie-parser": "^1.4.4", "cors": "^2.8.5", - "cross-env": "^6.0.0", + "cross-env": "^7.0.0", "dayjs": "^1.8.19", "element-ui": "^2.13.0", - "email-templates": "^7.0.1", + "email-templates": "^7.0.2", "express": "^4.17.1", - "express-jwt": "^5.3.1", - "express-middleware-log": "^1.2.0", "express-oauth-server": "^2.0.0", "http-signature": "^1.3.1", "ics": "^2.16.0", - "inquirer": "^7.0.3", + "inquirer": "^7.0.4", "jsonwebtoken": "^8.5.1", "less": "^3.10.3", "lodash": "^4.17.14", - "mkdirp": "^0.5.1", - "modern-css-reset": "^1.0.4", + "mkdirp": "^1.0.3", "moment-timezone": "^0.5.27", "morgan": "^1.9.1", "multer": "^1.4.2", - "node-fetch": "^2.6.0", "nuxt": "^2.11.0", "nuxt-express-module": "^0.0.11", "pg": "^7.17.1", diff --git a/pages/Login.vue b/pages/Login.vue index 0bc1d1ff..a6aecf5f 100644 --- a/pages/Login.vue +++ b/pages/Login.vue @@ -22,7 +22,7 @@ @@ -60,4 +58,4 @@ export default { .instance_thumb { height: 20px; } - \ No newline at end of file + diff --git a/pages/settings.vue b/pages/settings.vue index c8457fa6..e754d27d 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -13,19 +13,11 @@ diff --git a/components/List.vue b/components/List.vue index 32821651..c9fc6b89 100644 --- a/components/List.vue +++ b/components/List.vue @@ -1,4 +1,4 @@ - - diff --git a/components/admin/Moderation.vue b/components/admin/Moderation.vue new file mode 100644 index 00000000..d55adc2e --- /dev/null +++ b/components/admin/Moderation.vue @@ -0,0 +1,164 @@ + + + From 86410d6ad9e4dc84ae7b3f551f603b320f466a93 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 5 Feb 2020 00:42:05 +0100 Subject: [PATCH 125/598] follow me @ home --- assets/style.less | 1 - layouts/default.vue | 13 +++++++++++-- locales/it.json | 5 +++-- pages/Admin.vue | 7 +++++++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/assets/style.less b/assets/style.less index d52008ff..9480ea79 100644 --- a/assets/style.less +++ b/assets/style.less @@ -43,7 +43,6 @@ html, body { background-color: white; &.dark { background-color: #333; - color: white; } } diff --git a/layouts/default.vue b/layouts/default.vue index 1b6e3bd0..7ad4e4fb 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -1,5 +1,9 @@ diff --git a/locales/it.json b/locales/it.json index f9ad4450..ce899e4a 100644 --- a/locales/it.json +++ b/locales/it.json @@ -135,7 +135,7 @@ "due": "alle", "from": "Dalle", "image_too_big": "Immagine troppo grande! Massimo 4M", - "interact_with_me_at": "Seguimi dal fediverso su", + "interact_with_me": "Seguimi dal fediverso", "follow_me_description": "Tra i vari modi di rimanere aggiornati degli eventi pubblicati qui su {title},\n puoi seguire l'account {account} dal fediverso, ad esempio via mastodon, ed eventualmente aggiungere risorse a questo evento da lì.

    \n Se non hai mai sentito parlare di mastodon e del fediverso ti consigliamo di leggere questo articolo.

    Inserisci la tua istanza qui sotto (es. mastodon.cisti.org o mastodon.bida.im)" }, "admin": { @@ -171,7 +171,8 @@ "filter_instances": "Filtra istanze", "filter_users": "Filtra utenti", "instance_name": "Nome istanza", - "favicon": "Logo" + "favicon": "Logo", + "user_block_confirm": "Sicura di voler bloccare l'utente?" }, "auth": { "not_confirmed": "Non abbiamo ancora confermato questa mail...", diff --git a/pages/Admin.vue b/pages/Admin.vue index 7c6981fa..b9046ed8 100644 --- a/pages/Admin.vue +++ b/pages/Admin.vue @@ -51,6 +51,13 @@ span.ml-1 {{$t('common.federation')}} Federation + //- MODERATION + el-tab-pane.pt-1(v-if='settings.enable_federation') + template(slot='label') + v-icon(name='vector-square') + span.ml-1 {{$t('common.moderation')}} + Moderation + diff --git a/components/Home.vue b/components/Home.vue index 247297e5..a0180193 100644 --- a/components/Home.vue +++ b/components/Home.vue @@ -8,14 +8,8 @@ .col Search(past-filter recurrent-filter) - .row.m-0 - .p-0.col-sm-6.col-lg-4.col-xl-4(v-for='event in events' :key='event.id + event.start_datetime') - a.d-block.d-sm-none(:id='event.newDay' v-if='event.newDay') - el-divider {{event.start_datetime|day}} - Event( - :id='event.start_datetime' - :event='event' - ) + #events + Event(v-for='event in events' :key='event.id' :event='event') @@ -53,3 +47,10 @@ export default { } } + diff --git a/components/Search.vue b/components/Search.vue index 46775551..092398f6 100644 --- a/components/Search.vue +++ b/components/Search.vue @@ -19,10 +19,11 @@ span.float-left {{ item.label }} i.float-right.el-icon-place(v-if='item.type==="place"') i.float-right.el-icon-collection-tag(v-if='item.type==="tag"') - br - el-tag.mr-1(type='success' v-for='f in filter' size='small' - disable-transitions closable :key='f.type + f.id' - @close='removeFilter(f)') {{f.label}} + #filters + el-button.mr-1.bg-dark(type='text' round plain v-for='t in filters.tags' size='mini' + :key='t' @click='removeTag(t)') {{t}} + el-button.mr-1.bg-dark.text-warning(type='text' round plain v-for='p in selectedPlaces' size='mini' + :key='p' @click='removePlace(p.id)') {{p.name}} + diff --git a/layouts/default.vue b/layouts/default.vue index 7ad4e4fb..1d880db7 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -1,6 +1,6 @@ diff --git a/components/Event.vue b/components/Event.vue index d43c3536..d62d3f1f 100644 --- a/components/Event.vue +++ b/components/Event.vue @@ -10,17 +10,17 @@ .p-name.p-summary.title {{event.title}} .card-body - div.d-flex.justify-content-between - //- when - time.dt-start.mt-0(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{event|when}} - //- place - el-button.p-location.mt-1.bg-dark.text-warning.float-right(plain size='mini' round type='text' icon='el-icon-location-outline' @click='addPlace') {{event.place.name}} + //- div.d-flex.justify-content-between + //- when + time.d-block.dt-start.mt-0(:datetime='event.start_datetime|unixFormat("YYYY-MM-DD HH:mm")') {{event|when}} + //- place + .p-location.mt-1.text-warning(plain size='mini' round type='text' @click='addPlace') {{event.place.name}} //- description - .p-description.description.mt-3(v-html='description') + //- .p-description.description.mt-3(v-html='description') .card-footer(v-if='event.tags.length') - el-button.ml-1.bg-dark(type='text' plain round size='mini' v-for='tag in event.tags' :key='tag' @click='addTag(tag)') {{tag}} + el-button.ml-1(type='text' plain round size='mini' v-for='tag in event.tags' :key='tag' @click='addTag(tag)') {{tag}} diff --git a/components/Editor.vue b/components/Editor.vue index 74268355..a1a2f89c 100644 --- a/components/Editor.vue +++ b/components/Editor.vue @@ -1,9 +1,9 @@ diff --git a/pages/Login.vue b/pages/Login.vue index 29a61f1d..ed7d5252 100644 --- a/pages/Login.vue +++ b/pages/Login.vue @@ -7,7 +7,7 @@ v-card-subtitle(v-text="$t('login.description')") v-card-text - v-form(v-model='valid' ref='form') + v-form(v-model='valid' ref='form' lazy-validation) v-text-field(v-model='email' type='email' :rules='$validators.email' autofocus :placeholder='$t("common.email")' @@ -68,7 +68,7 @@ export default { this.$root.$message('login.check_email', { color: 'success' }) }, async submit (e) { - e.preventDefault() + if (!this.$refs.form.validate()) return try { this.loading = true const data = new URLSearchParams() diff --git a/pages/about.vue b/pages/about.vue index 532fac9c..7259de24 100644 --- a/pages/about.vue +++ b/pages/about.vue @@ -25,7 +25,7 @@ export default { methods: { ...mapActions(['setSetting']), save () { - this.$root.$message('commmon.done', { color: 'success' }) + this.$root.$message('common.ok', { color: 'success' }) this.setSetting({ key: 'about', value: this.about }) } }, diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index 4d878a44..e8ae5b1f 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -5,55 +5,49 @@ v-card-text v-form(v-model='valid') - //- NOT LOGGED EVENT + //- Not logged event div(v-if='!$auth.loggedIn') v-divider {{$t('event.anon')}} p(v-html="$t('event.anon_description')") - //- title - v-text-field.mb-3(v-model='event.title' + //- Title + v-text-field.mb-3( + @change='v => event.title = v' + :value = 'event.title' :rules="[$validators.required('common.title')]" - :label="$t('event.what_description')" + :label="$t('event.what_description')" autofocus ref='title') - //- description - //- span {{$t('event.description_description')}} + //- Description Editor( v-model='event.description' - :label="$t('event.description_description')" - style='max-height: 400px;') + :placeholder="$t('event.description_description')" + max-height='400px') - //- tags - v-combobox.mt-3(v-model='event.tags' - chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint - :delimiters="[',', ' ']" - :items="tags.map(t => t.tag)" - :label="$t('common.tags')") - - //- WHERE + //- Where v-combobox.mt-2(v-model='event.place.name' - :rules="[$validators.required()]" + :rules="[$validators.required('common.where')]" :label="$t('common.where')" :hint="$t('event.where_description')" persistent-hint :items="places" item-text='name' - @input='selectPlace') - template(v-slot:item="{ item }") - v-list - v-list-item-content + @change='selectPlace') + //- template(v-slot:item="{ item }") + v-list-item(color='primary') + v-list-item-content(color='pink') v-list-item-title {{item.name}} v-list-item-subtitle {{item.address}} v-text-field.mt-3(ref='address' - :rules="[$validators.required()]" + :rules="[$validators.required('common.address')]" :label="$t('common.address')" - v-model='event.place.address' + @change="v => event.place.address = v" + :value="event.place.address" :disabled='disableAddress') - //- WHEN - //- v-divider {{$t('common.when')}} + //- When .text-center v-btn-toggle(v-model="event.type" color='primary') v-btn(value='normal' label="normal") {{$t('event.normal')}} @@ -97,7 +91,7 @@ template(v-slot:activator='{ on }') v-text-field( :label="$t('event.from')" - :rules="[$validators.required()]" + :rules="[$validators.required('event.from')]" :value='time.start' v-on='on' clearable) @@ -148,6 +142,13 @@ persistent-hint accept='image/*') + //- tags + v-combobox.mt-3(v-model='event.tags' + chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint + :delimiters="[',', ' ']" + :items="tags.map(t => t.tag)" + :label="$t('common.tags')") + v-card-actions v-spacer v-btn(@click='done' :loading='loading' :disabled='!valid || loading || !date' @@ -228,7 +229,7 @@ export default { loading: false, mediaUrl: '', queryTags: '', - disableAddress: true, + disableAddress: false, frequencies: [ { value: '1w', text: this.$t('event.each_week') }, { value: '2w', text: this.$t('event.each_2w') }, @@ -360,12 +361,10 @@ export default { return attributes } }, - // mounted () { - // this.$refs.title.focus() - // }, methods: { ...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']), selectPlace (p) { + console.error('sono dentro selectePlace') const place = p && this.places.find(place => place.id === p.id) if (place && place.address) { this.event.place.name = p.name @@ -375,7 +374,7 @@ export default { this.disableAddress = false this.event.place.address = '' } - this.$nextTick(this.$refs.address.focus) + // this.$nextTick(() => this.$refs.address.focus() ) }, // recurrentDays () { // if (this.event.type !== 'recurrent' || !this.date || !this.date.length) { return } diff --git a/pages/event/_id.vue b/pages/event/_id.vue index 427cee52..35f55942 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -1,59 +1,72 @@ \ No newline at end of file diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index e8ae5b1f..6d0d47f0 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -1,9 +1,15 @@ @@ -161,10 +167,11 @@ import _ from 'lodash' import moment from 'dayjs' import Editor from '@/components/Editor' import List from '@/components/List' +import ImportDialog from './ImportDialog' export default { name: 'NewEvent', - components: { List, Editor }, + components: { List, Editor, ImportDialog }, validate ({ store }) { return (store.state.auth.loggedIn || store.state.settings.allow_anon_event) }, @@ -211,6 +218,7 @@ export default { valid: false, dueDateMenu: false, fromDateMenu: false, + openImportDialog: false, event: { type: 'normal', place: { name: '', address: '' }, @@ -363,6 +371,10 @@ export default { }, methods: { ...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']), + eventImported (event) { + console.error('sono dentro event imported', event) + this.event = event + }, selectPlace (p) { console.error('sono dentro selectePlace') const place = p && this.places.find(place => place.id === p.id) @@ -386,6 +398,7 @@ export default { this.event.image = {} }, async done () { + if (!this.$refs.form.validate()) return this.loading = true let start_datetime, end_datetime const [start_hour, start_minute] = this.time.start.split(':') diff --git a/pages/event/_id.vue b/pages/event/_id.vue index 35f55942..e2f9e3c1 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -8,7 +8,7 @@ //- v-list-item(two-line) //- v-list-item-content .text-h5.text-sm-h4 - b {{event.title}} + b.p-name {{event.title}} v-row v-col.col-12.col-lg-9 //- TOFIX: avoid reflow @@ -34,10 +34,10 @@ b.ml-2 {{event|when}} p.subtitle-1 {{event.start_datetime|from}} - .text-h5 + .text-h5.p-location v-icon mdi-map-marker - b.p-location.ml-2 {{event.place.name}} - p.subtitle-1 {{event.place.address}} + b.vcard.ml-2 {{event.place.name}} + p.adr {{event.place.address}} //- info & actions v-list @@ -56,7 +56,7 @@ v-dialog(v-model='showEmbed') EmbedEvent(:event='event' @close='showEmbed=false') - div.p-description(v-html='event.description') + p.p-description.text-h6(v-html='event.description') v-chip.p-category.ml-1(small v-for='tag in event.tags' color='primary' outlined :key='tag') {{tag}} //- //- info & actions diff --git a/server/api/index.js b/server/api/index.js index 65c24baf..0cff1eb1 100644 --- a/server/api/index.js +++ b/server/api/index.js @@ -12,7 +12,7 @@ const apUserController = require('./controller/ap_user') const resourceController = require('./controller/resource') const oauthController = require('./controller/oauth') const announceController = require('./controller/announce') - +const helpers = require('../helpers') const storage = require('./storage') const upload = multer({ storage }) @@ -87,6 +87,8 @@ api.put('/place', isAdmin, eventController.updatePlace) */ api.post('/event', hasPerm('event:write'), upload.single('image'), eventController.add) api.put('/event', hasPerm('event:write'), upload.single('image'), eventController.update) +api.get('/event/import', helpers.importURL) + // remove event api.delete('/event/:id', hasPerm('event:remove'), eventController.remove) @@ -103,13 +105,14 @@ api.delete('/event/notification/:code', eventController.delNotification) api.get('/settings', settingsController.getAllRequest) api.post('/settings', isAdmin, settingsController.setRequest) -api.get('/event/:event_id.:format?', cors, eventController.get) api.post('/settings/logo', isAdmin, multer({ dest: config.upload_path }).single('logo'), settingsController.setLogo) // confirm event api.get('/event/confirm/:event_id', hasPerm('event:write'), eventController.confirm) api.get('/event/unconfirm/:event_id', hasPerm('event:write'), eventController.unconfirm) +// import event + // get event api.get('/event/:event_id.:format?', cors, eventController.get) diff --git a/server/helpers.js b/server/helpers.js index 0f9cdacd..4c784632 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -9,6 +9,8 @@ const path = require('path') const sharp = require('sharp') const axios = require('axios') const crypto = require('crypto') +const Microformats = require('microformat-node') +const get = require('lodash/get') const DOMPurify = require('dompurify') const { JSDOM } = require('jsdom') @@ -104,6 +106,35 @@ module.exports = { outStream.on('finish', () => resolve(filename)) }) + }, + + async importURL (req, res) { + const URL = req.query.URL + try { + const response = await axios.get(URL) + Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => { + if (!data.items.length || !data.items[0].properties) return res.sendStatus(404) + const event = data.items[0].properties + console.error(event) + return res.json({ + title: get(event, 'name[0]', ''), + description: get(event, 'content[0]', ''), + place: get(event, 'location[0].properties.name', ''), + address: get(event, 'location[0].properties.street-address'), + start: get(event, 'start[0]', ''), + end: get(event, 'end[0]', ''), + tags: get(event, 'category', []), + image: get(event, 'featured[0]') + }) + }) + // const event = dom.window.document.querySelected(".h-event") + // console.error(event) + // console.error(response) + } catch(e){ + console.error(e) + } + + // res.json('ok') } } From 7ce02c9e1e54b74f938221356b4eb8a82208efa0 Mon Sep 17 00:00:00 2001 From: les Date: Wed, 14 Oct 2020 21:13:20 +0200 Subject: [PATCH 410/598] testing ics / h-event import --- assets/style.less | 3 + components/Editor.vue | 10 + locales/en.json | 7 +- package.json | 12 +- pages/add/ImportDialog.vue | 42 +- pages/add/_edit.vue | 3 +- pages/event/_id.vue | 136 ++-- server/api/models/event.js | 2 +- yarn.lock | 1353 +++++++++++++++++++++++++++++++++--- 9 files changed, 1373 insertions(+), 195 deletions(-) diff --git a/assets/style.less b/assets/style.less index 4ab71e68..48027994 100644 --- a/assets/style.less +++ b/assets/style.less @@ -1,3 +1,6 @@ +// .v-list { +// color: pink; +// } // :focus {outline:none;} // ::-moz-focus-inner {border:0;} diff --git a/components/Editor.vue b/components/Editor.vue index d8778cc9..3f83f6b4 100644 --- a/components/Editor.vue +++ b/components/Editor.vue @@ -84,6 +84,7 @@ export default { name: 'Editor', components: { EditorContent, EditorMenuBar, EditorMenuBubble }, props: { + label: { type: String, default: 'Editor' }, value: { type: String, default: '' }, border: { type: Boolean, default: false }, noSave: { type: Boolean, default: false }, @@ -155,6 +156,15 @@ export default { font-style: italic; } .editor { + .label { + left: 0px; + position: absolute; + transition: translateY .3s, scale .3s; + &.focused { + color: orange; + transform: translateY(-10px) scale(0.75); + } + } // max-height: auto; // height: auto; overflow-y: auto; diff --git a/locales/en.json b/locales/en.json index 460a5f76..785d3eec 100644 --- a/locales/en.json +++ b/locales/en.json @@ -83,7 +83,8 @@ "place": "Place", "tags": "Tags", "theme": "Theme", - "reset": "Reset" + "reset": "Reset", + "import": "Import" }, "login": { "description": "By logging in you can publish new events.", @@ -149,7 +150,9 @@ "interact_with_me_at": "Interact with me on fediverse at", "follow_me_description": "One of the ways to stay up to date on events published here on {title},\nis following the account {account} from the fediverse, for example via mastodon, and possibly add resources to an event from there.

    \nIf you have never heard of Mastodon and the fediverse we recommend reading this article.

    Enter your instance below (e.g. mastodon.social)", "interact_with_me": "Follow me", - "remove_recurrent_confirmation": "Are you sure you want to remove this recurring event?\nPast events will be maintained, but no further events will be created." + "remove_recurrent_confirmation": "Are you sure you want to remove this recurring event?\nPast events will be maintained, but no further events will be created.", + "import_URL": "Import from URL", + "import_ICS": "Import from ICS" }, "admin": { "place_description": "If you have gotten the place or address wrong, you can change it.
    All current and past events associated with this place will change address.", diff --git a/package.json b/package.json index 225bfd79..efe6f098 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,9 @@ "email-templates": "^7.1.1", "express": "^4.17.1", "express-oauth-server": "^2.0.0", + "fs": "^0.0.1-security", "http-signature": "^1.3.5", + "ical.js": "^1.4.0", "ics": "^2.25.0", "inquirer": "^7.3.3", "jsdom": "^16.4.0", @@ -59,7 +61,7 @@ "multer": "^1.4.2", "nuxt": "^2.14.6", "nuxt-express-module": "^0.0.11", - "pg": "^8.4.0", + "pg": "^8.4.1", "sequelize": "^6.3.5", "sequelize-cli": "^6.2.0", "sharp": "^0.26.1", @@ -78,7 +80,7 @@ "@nuxtjs/eslint-config": "^3.1.0", "@nuxtjs/vuetify": "^1.11.2", "babel-eslint": "^10.1.0", - "eslint": "^7.10.0", + "eslint": "^7.11.0", "eslint-config-prettier": "^6.12.0", "eslint-config-standard": ">=14.1.1", "eslint-loader": "^4.0.2", @@ -89,15 +91,15 @@ "eslint-plugin-promise": ">=4.0.1", "eslint-plugin-standard": ">=4.0.1", "eslint-plugin-vue": "^7.0.1", - "less-loader": "^7.0.1", + "less-loader": "^7.0.2", "nodemon": "^2.0.4", "prettier": "^2.1.2", "pug-plain-loader": "^1.0.0", "sass": "^1.27.0", - "sass-loader": "^10.0.2", + "sass-loader": "^10.0.3", "vue-cli-plugin-vuetify": "~2.0.7", "vuetify-loader": "^1.3.0", - "webpack-cli": "^3.3.12" + "webpack-cli": "^4.0.0" }, "resolutions": { "prosemirror-model": "1.11.2" diff --git a/pages/add/ImportDialog.vue b/pages/add/ImportDialog.vue index 4e0a3d33..59724434 100644 --- a/pages/add/ImportDialog.vue +++ b/pages/add/ImportDialog.vue @@ -1,24 +1,40 @@ From be0cfc5d2aeacad4309aae1b219ca96993d83986 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 16 Oct 2020 14:46:45 +0200 Subject: [PATCH 417/598] s/moment/dayjs --- plugins/filters.js | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/plugins/filters.js b/plugins/filters.js index 29da3cc3..259a2c67 100644 --- a/plugins/filters.js +++ b/plugins/filters.js @@ -1,52 +1,59 @@ import Vue from 'vue' -import moment from 'moment-timezone' +import dayjs from 'dayjs' +import relativeTime from 'dayjs/plugin/relativeTime' +import utc from 'dayjs/plugin/utc' +import timezone from 'dayjs/plugin/timezone' + +dayjs.extend(relativeTime) +dayjs.extend(utc) +dayjs.extend(timezone) export default ({ app, store }) => { // set timezone to instance_timezone!! // to show local time relative to event's place // not where in the world I'm looking at the page from - moment.tz.setDefault(store.state.settings.instance_timezone) - moment.locale(store.state.locale) + dayjs.tz.setDefault(store.state.settings.instance_timezone) + dayjs.locale(store.state.locale) // replace links with anchors // TODO: remove fb tracking id? Vue.filter('linkify', value => value.replace(/(https?:\/\/([^\s]+))/g, '$2')) Vue.filter('url2host', url => url.match(/^https?:\/\/(.[^/:]+)/i)[1]) - Vue.filter('datetime', value => moment(value).locale(store.state.locale).format('ddd, D MMMM HH:mm')) - Vue.filter('dateFormat', (value, format) => moment(value).format(format)) - Vue.filter('unixFormat', (timestamp, format) => moment.unix(timestamp).format(format)) + Vue.filter('datetime', value => dayjs(value).locale(store.state.locale).format('ddd, D MMMM HH:mm')) + Vue.filter('dateFormat', (value, format) => dayjs(value).format(format)) + Vue.filter('unixFormat', (timestamp, format) => dayjs.unix(timestamp).format(format)) // shown in mobile homepage - Vue.filter('day', value => moment.unix(value).locale(store.state.locale).format('dddd, D MMM')) + Vue.filter('day', value => dayjs.unix(value).locale(store.state.locale).format('dddd, D MMM')) - Vue.filter('from', timestamp => moment.unix(timestamp).from()) + Vue.filter('from', timestamp => dayjs.unix(timestamp).from()) // format event start/end datetime based on page Vue.filter('recurrentDetail', event => { const { frequency, days, type } = event.parent.recurrent let recurrent if (frequency === '1w' || frequency === '2w') { - recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => moment().day(d - 1).format('dddd')) }) + recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => dayjs().day(d - 1).format('dddd')) }) } else if (frequency === '1m' || frequency === '2m') { - const d = type === 'ordinal' ? days : days.map(d => moment().day(d - 1).format('dddd')) + const d = type === 'ordinal' ? days : days.map(d => dayjs().day(d - 1).format('dddd')) recurrent = app.i18n.tc(`event.recurrent_${frequency}_${type}`, days.length, { days: d }) } return recurrent }) Vue.filter('when', (event) => { - const start = moment.unix(event.start_datetime) - const end = moment.unix(event.end_datetime) + const start = dayjs.unix(event.start_datetime) + const end = dayjs.unix(event.end_datetime) // const normal = `${start.format('dddd, D MMMM (HH:mm-')}${end.format('HH:mm) ')}` // // recurrent event // if (event.parent && where !== 'home') { // const { frequency, days, type } = event.parent.recurrent // if (frequency === '1w' || frequency === '2w') { - // const recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => moment().day(d - 1).format('dddd')) }) + // const recurrent = app.i18n.tc(`event.recurrent_${frequency}_days`, days.length, { days: days.map(d => dayjs().day(d - 1).format('dddd')) }) // return `${normal} - ${recurrent}` // } else if (frequency === '1m' || frequency === '2m') { - // const d = type === 'ordinal' ? days : days.map(d => moment().day(d - 1).format('dddd')) + // const d = type === 'ordinal' ? days : days.map(d => dayjs().day(d - 1).format('dddd')) // const recurrent = app.i18n.tc(`event.recurrent_${frequency}_${type}`, days.length, { days: d }) // return `${normal} - ${recurrent}` // } From 4853e4fbdf85ef247e054506d8e5a5da9b33df00 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 16 Oct 2020 14:47:18 +0200 Subject: [PATCH 418/598] minor --- components/Home.vue | 8 +++++++- components/Nav.vue | 2 +- locales/en.json | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/components/Home.vue b/components/Home.vue index cac7ead8..eb75a73f 100644 --- a/components/Home.vue +++ b/components/Home.vue @@ -1,13 +1,19 @@ @@ -37,27 +38,42 @@ import Search from '@/components/Search' export default { name: 'Home', + components: { Calendar, Event, Search, Announcement }, + async asyncData ({ params }) { + const events = await this.$api.getEvents({ + start: this.start, + end: this.end, + places: this.filters.places, + tags: this.filters.tags + }) + return { events } + }, data () { return { + date: dayjs().format('YYYY-MM-DD'), events: [], - start: null, + start: dayjs().format('YYYY-MM-DD'), end: null, - filters: { tags: [], places: []}, + filters: { tags: [], places: [] }, selectedDay: null } }, - components: { Calendar, Event, Search, Announcement }, computed: { - ...mapState(['settings', 'announcements']) + ...mapState(['settings', 'announcements']), + calendarEvents () { + return this.events.map(e => dayjs.unix(e.start_datetime).format('YYYY-MM-DD')) + } }, methods: { ...mapActions(['setFilters']), async updateEvents () { this.events = await this.$api.getEvents({ - start: this.start, end: this.end, - places: this.filters.places, tags: this.filters.tags + start: this.start, + end: this.end, + places: this.filters.places, + tags: this.filters.tags }) - this.setFilters(this.filters) + // this.setFilters(this.filters) }, placeClick (place_id) { if (this.filters.places.includes(place_id)) { @@ -79,10 +95,12 @@ export default { this.filters = filters this.updateEvents() }, - monthChange (page) { - this.start = dayjs().year(page.year).month(page.month - 1).startOf('month').startOf('week').unix() - this.end = dayjs().year(page.year).month(page.month - 1).endOf('month').endOf('week').unix() - this.updateEvents () + monthChange (monthYear) { + // return + const [year, month] = monthYear.split('-') + this.start = dayjs().year(year).month(month - 1).startOf('month').unix() // .startOf('week').unix() + this.end = dayjs().year(year).month(month - 1).endOf('month').unix() // .endOf('week').unix() + this.updateEvents() }, async dayClick (day) { const datetime = day.dateTime / 1000 @@ -94,7 +112,7 @@ export default { this.selectedDay = datetime this.events = await this.$api.getEvents({ start: this.selectedDay, - end: this.selectedDay+24*60*60 + end: this.selectedDay + 24 * 60 * 60 }) } }, From 732643ecf3f316a55df2221dd389de29c9c45b24 Mon Sep 17 00:00:00 2001 From: les Date: Sun, 25 Oct 2020 00:31:01 +0200 Subject: [PATCH 439/598] minor --- layouts/error.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/layouts/error.vue b/layouts/error.vue index 6f2eb06d..05b82718 100644 --- a/layouts/error.vue +++ b/layouts/error.vue @@ -9,10 +9,10 @@ import { mapState } from 'vuex' export default { - props: { error: { type: Object } }, - computed: mapState(['settings']), + props: { error: { type: Object, default: () => ({ }) } }, head () { return { title: `${this.settings.title} - Error` } - } + }, + computed: mapState(['settings']) } From cf5975e7ba8f784494db88c8ac98237c46c2b7b9 Mon Sep 17 00:00:00 2001 From: les Date: Sun, 25 Oct 2020 00:31:38 +0200 Subject: [PATCH 440/598] split add event in smaller components --- pages/add/DateInput.vue | 237 +++++++++++++++++++++++++++++++++++++ pages/add/HourInput.vue | 77 ++++++++++++ pages/add/ImportDialog.vue | 2 +- pages/add/WhenInput.vue | 187 ----------------------------- pages/add/WhereInput.vue | 60 ++++++++++ pages/add/_edit.vue | 184 ++++++++-------------------- 6 files changed, 423 insertions(+), 324 deletions(-) create mode 100644 pages/add/DateInput.vue create mode 100644 pages/add/HourInput.vue delete mode 100644 pages/add/WhenInput.vue create mode 100644 pages/add/WhereInput.vue diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue new file mode 100644 index 00000000..1a36244d --- /dev/null +++ b/pages/add/DateInput.vue @@ -0,0 +1,237 @@ + + diff --git a/pages/add/HourInput.vue b/pages/add/HourInput.vue new file mode 100644 index 00000000..96916284 --- /dev/null +++ b/pages/add/HourInput.vue @@ -0,0 +1,77 @@ + + diff --git a/pages/add/ImportDialog.vue b/pages/add/ImportDialog.vue index b1ced6c7..a61cfaa7 100644 --- a/pages/add/ImportDialog.vue +++ b/pages/add/ImportDialog.vue @@ -13,7 +13,7 @@ v-file-input( v-model='file' accept=".ics" - :label="$t('common.ics')" + :label="$t('event.ics')" :hint="$t('event.import_ICS')" persistent-hint ) diff --git a/pages/add/WhenInput.vue b/pages/add/WhenInput.vue deleted file mode 100644 index 856c59f5..00000000 --- a/pages/add/WhenInput.vue +++ /dev/null @@ -1,187 +0,0 @@ - - \ No newline at end of file diff --git a/pages/add/WhereInput.vue b/pages/add/WhereInput.vue new file mode 100644 index 00000000..0b278c18 --- /dev/null +++ b/pages/add/WhereInput.vue @@ -0,0 +1,60 @@ + + diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index 0e95fb01..c9d0d6b8 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -4,130 +4,59 @@ v-card-title h4 {{edit?$t('common.edit_event'):$t('common.add_event')}} v-spacer - v-btn(link text color='primary' @click='openImportDialog=true') + v-btn(link text color='primary' @click='openImportDialog=true') mdi-file-import {{$t('common.import')}} v-dialog(v-model='openImportDialog') ImportDialog(@close='openImportDialog=false' @imported='eventImported') v-card-text v-form(v-model='valid' ref='form' lazy-validation) + v-container + v-row + //- Not logged event + v-col.col-12(v-if='!$auth.loggedIn') + v-divider {{$t('event.anon')}} + p(v-html="$t('event.anon_description')") - //- Not logged event - div(v-if='!$auth.loggedIn') - v-divider {{$t('event.anon')}} - p(v-html="$t('event.anon_description')") + //- Title + v-text-field.col-12( + @change='v => event.title = v' + :value = 'event.title' + :rules="[$validators.required('common.title')]" + :hint="$t('event.what_description')" + :label="$t('common.title')" + autofocus + ref='title') - //- Title - v-text-field.mb-3( - @change='v => event.title = v' - :value = 'event.title' - :rules="[$validators.required('common.title')]" - :label="$t('event.what_description')" - autofocus - ref='title') + //- Where + WhereInput.col-12(v-model='event.place') - //- Description - Editor( - v-model='event.description' - :placeholder="$t('event.description_description')" - max-height='400px') + //- When + DateInput.col-12(v-model='date') + HourInput.col-12(v-model='time') - //- Where - v-combobox.mt-2(v-model='event.place.name' - :rules="[$validators.required('common.where')]" - :label="$t('common.where')" - :hint="$t('event.where_description')" - persistent-hint - :items="places" - item-text='name' - @change='selectPlace') - //- template(v-slot:item="{ item }") - v-list-item(color='primary') - v-list-item-content(color='pink') - v-list-item-title {{item.name}} - v-list-item-subtitle {{item.address}} + //- Description + Editor.col-12.mb-3( + v-model='event.description' + :placeholder="$t('event.description_description')" + max-height='400px') - v-text-field.mt-3(ref='address' - :rules="[$validators.required('common.address')]" - :label="$t('common.address')" - @change="v => event.place.address = v" - :value="event.place.address" - :disabled='disableAddress') + //- MEDIA / FLYER / POSTER - //- When - WhenInput(v-model='date' - :rules="$validators.required('common.when')") + v-file-input.col-6.mt-3( + :label="$t('common.media')" + :hint="$t('event.media_description')" + prepend-icon="mdi-camera" + v-model='event.image' + persistent-hint + accept='image/*') - v-row - v-col - v-menu(v-model='fromDateMenu' - :close-on-content-click="false" - transition="slide-x-transition" - ref='fromDateMenu' - :return-value.sync="time.start" - offset-y - absolute - top - max-width="290px" - min-width="290px") - template(v-slot:activator='{ on }') - v-text-field( - :label="$t('event.from')" - :rules="[$validators.required('event.from')]" - :value='time.start' - v-on='on' - clearable) - v-time-picker( - v-if='fromDateMenu' - :label="$t('event.from')" - format="24hr" - ref='time_start' - :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]" - v-model='time.start' - @click:minute="$refs.fromDateMenu.save(time.start)") - - v-col - v-menu(v-model='dueDateMenu' - :close-on-content-click="false" - transition="slide-x-transition" - ref='dueDateMenu' - :return-value.sync="time.end" - offset-y - absolute - top - max-width="290px" - min-width="290px") - template(v-slot:activator='{ on }') - v-text-field( - :label="$t('event.due')" - :value='time.end' - v-on='on' - clearable - readonly) - v-time-picker( - v-if='dueDateMenu' - :label="$t('event.due')" - format="24hr" - :allowed-minutes="[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]" - v-model='time.end' - @click:minute="$refs.dueDateMenu.save(time.end)") - - //- MEDIA / FLYER / POSTER - - v-file-input( - :label="$t('common.media')" - :hint="$t('event.media_description')" - prepend-icon="mdi-camera" - v-model='event.image' - persistent-hint - accept='image/*') - - //- tags - v-combobox.mt-3(v-model='event.tags' - chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint - :delimiters="[',', ' ']" - :items="tags.map(t => t.tag)" - :label="$t('common.tags')") + //- tags + v-combobox.col-6.mt-3(v-model='event.tags' + chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint + :delimiters="[',', ' ']" + :items="tags.map(t => t.tag)" + :label="$t('common.tags')") v-card-actions v-spacer @@ -142,11 +71,13 @@ import dayjs from 'dayjs' import Editor from '@/components/Editor' import List from '@/components/List' import ImportDialog from './ImportDialog' -import WhenInput from './WhenInput' +import DateInput from './DateInput' +import HourInput from './HourInput' +import WhereInput from './WhereInput' export default { name: 'NewEvent', - components: { List, Editor, ImportDialog, WhenInput }, + components: { List, Editor, ImportDialog, WhereInput, HourInput, DateInput }, validate ({ store }) { return (store.state.auth.loggedIn || store.state.settings.allow_anon_event) }, @@ -191,8 +122,6 @@ export default { const year = dayjs().year() return { valid: false, - dueDateMenu: false, - fromDateMenu: false, openImportDialog: false, event: { type: 'normal', @@ -200,7 +129,7 @@ export default { title: '', description: '', tags: [], - image: {}, + image: null, recurrent: { frequency: '1m', days: [], type: 'weekday_desc' } }, page: { month, year }, @@ -211,29 +140,17 @@ export default { edit: false, loading: false, mediaUrl: '', - disableAddress: false, + disableAddress: false } }, computed: { - ...mapState(['tags', 'places', 'events', 'settings']), + ...mapState(['tags', 'places', 'events', 'settings']) }, methods: { ...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']), eventImported (event) { this.event = Object.assign(this.event, event) }, - selectPlace (p) { - const place = p && this.places.find(place => place.id === p.id) - if (place && place.address) { - this.event.place.name = p.name - this.event.place.address = place.address - this.disableAddress = true - } else { - this.disableAddress = false - this.event.place.address = '' - } - // this.$nextTick(() => this.$refs.address.focus() ) - }, // recurrentDays () { // if (this.event.type !== 'recurrent' || !this.date || !this.date.length) { return } // const type = this.event.recurrent.type @@ -244,7 +161,7 @@ export default { this.event.image = {} }, async done () { - if (!this.$refs.form.validate()) return + if (!this.$refs.form.validate()) { return } this.loading = true let start_datetime, end_datetime const [start_hour, start_minute] = this.time.start.split(':') @@ -325,11 +242,6 @@ export default { } diff --git a/plugins/filters.js b/plugins/filters.js index eb4e01a6..f3d09329 100644 --- a/plugins/filters.js +++ b/plugins/filters.js @@ -34,8 +34,7 @@ export default ({ app, store }) => { // shown in mobile homepage Vue.filter('day', value => dayjs.unix(value).locale(store.state.locale).format('dddd, D MMM')) - Vue.filter('from', timestamp => dayjs.unix(timestamp).from()) - // format event start/end datetime based on page + Vue.filter('from', timestamp => dayjs.unix(timestamp).fromNow()) Vue.filter('recurrentDetail', event => { const { frequency, days, type } = event.parent.recurrent diff --git a/server/api/models/event.js b/server/api/models/event.js index bcf82d2d..a04a8a88 100644 --- a/server/api/models/event.js +++ b/server/api/models/event.js @@ -57,43 +57,43 @@ Resource.belongsTo(Event) Event.hasMany(Event, { as: 'child', foreignKey: 'parentId' }) Event.belongsTo(Event, { as: 'parent' }) -Event.prototype.toAP = function (username, locale, to = []) { +Event.prototype.toAPNote = function (username, locale, to = []) { const tags = this.tags && this.tags.map(t => t.tag.replace(/[ #]/g, '_')) const plainDescription = htmlToText.fromString(this.description.replace('\n', '').slice(0, 1000)) - const summary = ` - 📍 ${this.place && this.place.name} - 📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')} + const content = ` + ${this.title}

    + 📍 ${this.place && this.place.name}
    + 📅 ${moment.unix(this.start_datetime).locale(locale).format('dddd, D MMMM (HH:mm)')}

    - ${plainDescription} + ${plainDescription}

    + + ${config.baseurl}/event/${this.id}
    ${tags && tags.map(t => `#${t}`)} - ` - const attachment = [] - if (this.image_path) { - attachment.push({ - type: 'Document', - mediaType: 'image/jpeg', - url: `${config.baseurl}/media/${this.image_path}`, - name: null, - blurHash: null - }) - } - - to.push('https://www.w3.org/ns/activitystreams#Public') + // const attachment = [] + // if (this.image_path) { + // attachment.push({ + // type: 'Document', + // mediaType: 'image/jpeg', + // url: `${config.baseurl}/media/${this.image_path}`, + // name: null, + // blurHash: null + // }) + // } return { id: `${config.baseurl}/federation/m/${this.id}`, - name: this.title, + // name: this.title, url: `${config.baseurl}/event/${this.id}`, type: 'Note', - startTime: moment.unix(this.start_datetime).locale(locale).format(), - endTime: moment.unix(this.end_datetime).locale(locale).format(), - location: { - name: this.place && this.place.name - }, - attachment, + // startTime: moment.unix(this.start_datetime).locale(locale).format(), + // endTime: moment.unix(this.end_datetime).locale(locale).format(), + // location: { + // name: this.place && this.place.name + // }, + // attachment, tag: tags && tags.map(tag => ({ type: 'Hashtag', name: '#' + tag, @@ -101,9 +101,9 @@ Event.prototype.toAP = function (username, locale, to = []) { })), published: this.createdAt, attributedTo: `${config.baseurl}/federation/u/${username}`, - to, - cc: [`${config.baseurl}/federation/u/${username}/followers`], - summary + to: 'https://www.w3.org/ns/activitystreams#Public', + // cc: [`${config.baseurl}/federation/u/${username}/followers`], + content } } diff --git a/server/federation/helpers.js b/server/federation/helpers.js index 2765732a..3d1bad5b 100644 --- a/server/federation/helpers.js +++ b/server/federation/helpers.js @@ -78,17 +78,19 @@ const Helpers = { const body = { id: `${config.baseurl}/federation/m/${event.id}#create`, type, - to: recipients[sharedInbox], - cc: ['https://www.w3.org/ns/activitystreams#Public', `${config.baseurl}/federation/u/${settingsController.settings.instance_name}/followers`], + to: ['https://www.w3.org/ns/activitystreams#Public'], + cc: [...recipients[sharedInbox], `${config.baseurl}/federation/u/${settingsController.settings.instance_name}/followers`], actor: `${config.baseurl}/federation/u/${settingsController.settings.instance_name}`, - object: event.toAP(settingsController.settings.instance_name, + object: event.toAPNote(settingsController.settings.instance_name, settingsController.settings.instance_locale, recipients[sharedInbox]) } body['@context'] = [ 'https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1', - { Hashtag: 'as:Hashtag' }] + { + Hashtag: 'as:Hashtag' + }] Helpers.signAndSend(body, sharedInbox) } }, diff --git a/server/federation/index.js b/server/federation/index.js index fe87f5dd..70b1f1f6 100644 --- a/server/federation/index.js +++ b/server/federation/index.js @@ -37,7 +37,7 @@ router.get('/m/:event_id', async (req, res) => { const event = await Event.findByPk(req.params.event_id, { include: [User, Tag, Place] }) if (!event) { return res.status(404).send('Not found') } - return res.json(event.toAP(event.user.username, req.settings.locale)) + return res.json(event.toAPNote(event.user.username, req.settings.locale)) }) // get any message coming from federation diff --git a/server/federation/users.js b/server/federation/users.js index 27d9e70a..d1eeb42c 100644 --- a/server/federation/users.js +++ b/server/federation/users.js @@ -12,7 +12,6 @@ module.exports = { const name = req.params.name if (!name) { return res.status(400).send('Bad request.') } - // const user = await User.findOne({ where: { username: name } }) if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) } const ret = { '@context': [ @@ -74,8 +73,8 @@ module.exports = { id: `${config.baseurl}/federation/u/${name}/followers`, type: 'OrderedCollection', totalItems: followers.length, - first: `${config.baseurl}/federation/u/${name}/followers?page=true`, - last: `${config.baseurl}/federation/u/${name}/followers?page=true`, + // first: `${config.baseurl}/federation/u/${name}/followers?page=true`, + // last: `${config.baseurl}/federation/u/${name}/followers?page=true`, orderedItems: followers.map(f => f.ap_id) }) } @@ -84,7 +83,7 @@ module.exports = { id: `${config.baseurl}/federation/u/${name}/followers?page=${page}`, type: 'OrderedCollectionPage', totalItems: followers.length, - partOf: `${config.baseurl}/federation/u/${name}/followers`, + // partOf: `${config.baseurl}/federation/u/${name}/followers`, orderedItems: followers.map(f => f.ap_id) }) }, @@ -92,35 +91,41 @@ module.exports = { async outbox (req, res) { // TODO const name = req.params.name - const page = req.query.page + // const page = req.query.page if (!name) { return res.status(400).send('Bad request.') } if (name !== req.settings.instance_name) { return res.status(404).send(`No record found for ${name}`) } const events = await Event.findAll({ include: [{ model: Tag, required: false }, Place] }) - debug('Inside outbox, should return all events from this user') + debug('Inside outbox, should return all events from this user -> ', events.length) // https://www.w3.org/TR/activitypub/#outbox res.type('application/activity+json; charset=utf-8') - if (!page) { - return res.json({ - '@context': 'https://www.w3.org/ns/activitystreams', - id: `${config.baseurl}/federation/u/${name}/outbox`, - type: 'OrderedCollection', - totalItems: events.length, - first: `${config.baseurl}/federation/u/${name}/outbox?page=true`, - last: `${config.baseurl}/federation/u/${name}/outbox?page=true` - }) - } + // if (!page) { + // return res.json({ + // '@context': 'https://www.w3.org/ns/activitystreams', + // id: `${config.baseurl}/federation/u/${name}/outbox`, + // type: 'OrderedCollection', + // totalItems: events.length, + // first: `${config.baseurl}/federation/u/${name}/outbox?page=true`, + // last: `${config.baseurl}/federation/u/${name}/outbox?page=true` + // }) + // } - debug('With pagination %s', page) + // debug('With pagination %s', page) return res.json({ - '@context': ['https://www.w3.org/ns/activitystreams', { Hashtag: 'as:Hashtag' }], - id: `${config.baseurl}/federation/u/${name}/outbox?page=${page}`, + '@context': [ + 'https://www.w3.org/ns/activitystreams', + 'https://w3id.org/security/v1', + { + hashtag: 'as:Hashtag' + } + ], + id: `${config.baseurl}/federation/u/${name}/outbox`, type: 'OrderedCollectionPage', totalItems: events.length, - partOf: `${config.baseurl}/federation/u/${name}/outbox`, + // partOf: `${config.baseurl}/federation/u/${name}/outbox`, orderedItems: events.map(e => ({ id: `${config.baseurl}/federation/m/${e.id}#create`, @@ -129,7 +134,7 @@ module.exports = { cc: [`${config.baseurl}/federation/u/${name}/followers`], published: e.createdAt, actor: `${config.baseurl}/federation/u/${name}`, - object: e.toAP(name, req.settings.locale) + object: e.toAPNote(name, req.settings.locale) })) }) } diff --git a/server/helpers.js b/server/helpers.js index ec04b5e3..3aa5e0ae 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -23,6 +23,8 @@ domPurify.addHook('beforeSanitizeElements', node => { if (node.hasAttribute && node.hasAttribute('href')) { const href = node.getAttribute('href') const text = node.textContent + + // remove FB tracking param if (href.includes('fbclid=')) { try { const url = new URL.URL(href) @@ -113,7 +115,9 @@ module.exports = { try { const response = await axios.get(URL) Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => { - if (!data.items.length || !data.items[0].properties) return res.sendStatus(404) + if (err || !data.items.length || !data.items[0].properties) { + return res.sendStatus(404) + } const event = data.items[0].properties return res.json({ title: get(event, 'name[0]', ''), @@ -129,7 +133,7 @@ module.exports = { // const event = dom.window.document.querySelected(".h-event") // console.error(event) // console.error(response) - } catch(e){ + } catch (e) { console.error(e) } diff --git a/yarn.lock b/yarn.lock index 40931c10..530607ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -993,10 +993,10 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@eslint/eslintrc@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.0.tgz#bc7e3c4304d4c8720968ccaee793087dfb5fe6b4" - integrity sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ== +"@eslint/eslintrc@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" + integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -1863,17 +1863,17 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" -"@webpack-cli/info@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.0.2.tgz#7ba1a7cfa9efa5b51e76b20ada88ac33b0340ad3" - integrity sha512-FEfLQwmN4pXZSYSrtp+KC84rFanoCIxXFpS2wUvviDCE2fnajwxw2GXzbj83IlH4Dl8Wq8kJjavVwvxv3YJmnw== +"@webpack-cli/info@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.1.0.tgz#c596d5bc48418b39df00c5ed7341bf0f102dbff1" + integrity sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.0.1.tgz#28abe7dcb18224ccd4b4e2d37f70e5be66c3d6a9" - integrity sha512-WGMaTMTK6NOe29Hw1WBEok9vGLfKg5C6jWzNOS/6HH1YadR+RL+TRWRcSyc81Dzulljhk/Ree9mrDM4Np9GGOQ== +"@webpack-cli/serve@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.1.0.tgz#13ad38f89b6e53d1133bac0006a128217a6ebf92" + integrity sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -2040,7 +2040,7 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: +ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== @@ -3341,10 +3341,10 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" - integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== +commander@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" + integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== commondir@^1.0.1: version "1.0.1" @@ -3927,10 +3927,10 @@ dayjs@^1.8.16: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.31.tgz#0cd1114c2539dd5ad9428be0c38df6d4bb40b9d3" integrity sha512-mPh1mslned+5PuIuiUfbw4CikHk6AEAf2Baxih+wP5fssv+wmlVhvgZ7mq+BhLt7Sr/Hc8leWDiwe6YnrpNt3g== -dayjs@^1.9.4: - version "1.9.4" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.4.tgz#fcde984e227f4296f04e7b05720adad2e1071f1b" - integrity sha512-ABSF3alrldf7nM9sQ2U+Ln67NRwmzlLOqG7kK03kck0mw3wlSSEKv/XhKGGxUjQcS57QeiCyNdrFgtj9nWlrng== +dayjs@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.5.tgz#fd49994ebe71639d2ce9575e97186642dfce9808" + integrity sha512-WULIw7UpW/E0y6VywewpbXAMH3d5cZijEhoHLwM+OMVbk/NtchKS/W+57H/0P1rqU7gHrAArjiRLHCUhgMQl6w== de-indent@^1.0.2: version "1.0.2" @@ -4240,10 +4240,10 @@ domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -dompurify@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.0.tgz#51d34e76faa38b5d6b4e83a0678530f27fe3965c" - integrity sha512-bqFOQ7XRmmozp0VsKdIEe8UwZYxj0yttz7l80GBtBqdVRY48cOpXH2J/CVO7AEkV51qY0EBVXfilec18mdmQ/w== +dompurify@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.2.tgz#cb8c2b1a2f3c8a0b565127504ae4eedec176a972" + integrity sha512-BsGR4nDLaC5CNBnyT5I+d5pOeaoWvgVeg6Gq/aqmKYWMPR07131u60I80BvExLAJ0FQEIBQ1BTicw+C5+jOyrg== domutils@1.5.1: version "1.5.1" @@ -4426,7 +4426,7 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.4, enquirer@^2.3.5: +enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -4596,10 +4596,10 @@ eslint-ast-utils@^1.1.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-prettier@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz#390e7863a8ae99970981933826476169285b3a27" - integrity sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ== +eslint-config-prettier@^6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== dependencies: get-stdin "^6.0.0" @@ -4608,10 +4608,10 @@ eslint-config-standard@^14.1.1: resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== -eslint-config-standard@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-15.0.0.tgz#459f823b47ac0541b0a22b1d0a161a9da543f687" - integrity sha512-MZ8KRhUJLtMbjQo9PsEzFG29vqbQJfLoLBHrTaAaFMtDx9PIm1GZgyUanOLgf1xOE1aWrtZZSbxBYCy8dJCCBg== +eslint-config-standard@^16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.1.tgz#9a385eea27f96b7918cb53f07e01e9d10cc56401" + integrity sha512-WBBiQQZdaPyL+4sPkGWhWrHCDtvJoU195B9j8yXE9uFQnX34gMXI5CeBRm95gx3PMEZPM5OpwET10hH4F4SxCA== eslint-import-resolver-node@^0.3.4: version "0.3.4" @@ -4806,13 +4806,13 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.12.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.0.tgz#7b6a85f87a9adc239e979bb721cde5ce0dc27da6" - integrity sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA== +eslint@^7.12.1: + version "7.12.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801" + integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.0" + "@eslint/eslintrc" "^0.2.1" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -4970,10 +4970,10 @@ execa@^3.4.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== +execa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -6092,10 +6092,10 @@ iconv-lite@0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ics@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.0.tgz#67c17d6bcac02b1547cc97bfbe3b99f057900b39" - integrity sha512-j9ffwzVlO4h7iXP0V/3ma55fT+mnk9fS2NsIo9tu0SAnJ9B92qTeJ7r23nscBkNEfzy6yCXBm+3cI6CeFFG24A== +ics@^2.26.1: + version "2.26.1" + resolved "https://registry.yarnpkg.com/ics/-/ics-2.26.1.tgz#3d1228df16263f8e51e975ca40a6a51d19bdebc5" + integrity sha512-C2tspVID1sINpeVea0HMuZeMCHdRBiUHNAWG4P7EuSIrDZ6M/cOe48MTF2a36DCOqEld7LDKkLNDFVnGbGPepA== dependencies: "@hapi/joi" "^17.1.1" uuid "^3.3.3" @@ -6269,7 +6269,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -interpret@^2.0.0: +interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== @@ -7007,6 +7007,11 @@ less@^3.12.2: native-request "^1.0.5" source-map "~0.6.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -8797,10 +8802,10 @@ pg-int8@1.0.1: resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-pool@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0" - integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA== +pg-pool@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.2.tgz#a560e433443ed4ad946b84d774b3f22452694dff" + integrity sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA== pg-protocol@^1.3.0: version "1.3.0" @@ -8818,15 +8823,15 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.1.tgz#06cfb6208ae787a869b2f0022da11b90d13d933e" - integrity sha512-NRsH0aGMXmX1z8Dd0iaPCxWUw4ffu+lIAmGm+sTCwuDDWkpEgRCAHZYDwqaNhC5hG5DRMOjSUFasMWhvcmLN1A== +pg@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.2.tgz#2aa58166a23391e91d56a7ea57c6d99931c0642a" + integrity sha512-E9FlUrrc7w3+sbRmL1CSw99vifACzB2TjhMM9J5w9D1LIg+6un0jKkpHS1EQf2CWhKhec2bhrBLVMmUBDbjPRQ== dependencies: buffer-writer "2.0.0" packet-reader "1.0.0" pg-connection-string "^2.4.0" - pg-pool "^3.2.1" + pg-pool "^3.2.2" pg-protocol "^1.3.0" pg-types "^2.1.0" pgpass "1.x" @@ -10674,10 +10679,10 @@ safe-regex@^2.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.4.tgz#ec7181096947d078d60a1d76d527f47c19b151d8" - integrity sha512-zhdZ8qvZM4iL5XjLVEjJLvKWvC+MB+hHgzL2x/Nf7UHpUNmPYsJvypW79bW39g4LZ603dH/dRSsRYzJJIljtdA== +sass-loader@^10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.5.tgz#f53505b5ddbedf43797470ceb34066ded82bb769" + integrity sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w== dependencies: klona "^2.0.4" loader-utils "^2.0.0" @@ -10703,10 +10708,10 @@ sass@^1.26.5: dependencies: chokidar ">=2.0.0 <4.0.0" -sass@^1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.27.0.tgz#0657ff674206b95ec20dc638a93e179c78f6ada2" - integrity sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig== +sass@^1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.29.0.tgz#ec4e1842c146d8ea9258c28c141b8c2b7c6ab7f1" + integrity sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA== dependencies: chokidar ">=2.0.0 <4.0.0" @@ -12268,11 +12273,16 @@ uuid@^8.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: +v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-compile-cache@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + valid-data-url@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" @@ -12539,23 +12549,23 @@ webpack-bundle-analyzer@^3.9.0: opener "^1.5.1" ws "^6.0.0" -webpack-cli@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.1.0.tgz#3a8fe05326015cc92b67abea68e3c320d418b16e" - integrity sha512-NdhxXMZmoik62Y05t0h1y65LjBM7BwFPq311ihXuMM3RY6dlc4KkCTyHLzTuBEc+bqq6d3xh+CWmU0xRexNJBA== +webpack-cli@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.2.0.tgz#10a09030ad2bd4d8b0f78322fba6ea43ec56aaaa" + integrity sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA== dependencies: - "@webpack-cli/info" "^1.0.2" - "@webpack-cli/serve" "^1.0.1" - ansi-escapes "^4.3.1" + "@webpack-cli/info" "^1.1.0" + "@webpack-cli/serve" "^1.1.0" colorette "^1.2.1" command-line-usage "^6.1.0" - commander "^6.0.0" - enquirer "^2.3.4" - execa "^4.0.0" + commander "^6.2.0" + enquirer "^2.3.6" + execa "^4.1.0" import-local "^3.0.2" - interpret "^2.0.0" + interpret "^2.2.0" + leven "^3.1.0" rechoir "^0.7.0" - v8-compile-cache "^2.1.0" + v8-compile-cache "^2.2.0" webpack-merge "^4.2.2" webpack-dev-middleware@^3.7.2: From 43ba760bb8b68960c53a046c0a0228cf8b99680b Mon Sep 17 00:00:00 2001 From: les Date: Thu, 12 Nov 2020 18:00:46 +0100 Subject: [PATCH 470/598] places and tags are always taken server side --- pages/export.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pages/export.vue b/pages/export.vue index 55c9a5c3..3f673218 100644 --- a/pages/export.vue +++ b/pages/export.vue @@ -72,10 +72,6 @@ export default { name: 'Exports', components: { List, FollowMe }, async asyncData ({ $axios, params, store }) { - // get metadata just in case we are not coming from home - if (store.state.tags.length) { return } - const { tags, places } = await $axios.$get('/event/meta') - store.commit('update', { tags, places }) }, data () { return { From ba8b7028c72826f2e5a1c60d8f820236de8b2a34 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 13 Nov 2020 00:12:05 +0100 Subject: [PATCH 471/598] remove v-calendar deps and makes Home a page not a component --- components/Calendar.vue | 96 ---------------------- components/Home.vue | 159 ------------------------------------- nuxt.config.js | 1 - pages/event/eventAdmin.vue | 3 - pages/index.vue | 157 +++++++++++++++++++++++++++++++++--- plugins/v-calendar.js | 7 -- 6 files changed, 146 insertions(+), 277 deletions(-) delete mode 100644 components/Calendar.vue delete mode 100644 components/Home.vue delete mode 100644 plugins/v-calendar.js diff --git a/components/Calendar.vue b/components/Calendar.vue deleted file mode 100644 index 9f9f0c92..00000000 --- a/components/Calendar.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - diff --git a/components/Home.vue b/components/Home.vue deleted file mode 100644 index d07a0902..00000000 --- a/components/Home.vue +++ /dev/null @@ -1,159 +0,0 @@ - - - - diff --git a/nuxt.config.js b/nuxt.config.js index c760cd87..610b4b3a 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -42,7 +42,6 @@ module.exports = { '@/plugins/axios', // axios baseurl configuration '@/plugins/validators', // inject validators '@/plugins/api' // api helpers - // { src: '@/plugins/v-calendar', ssr: false } // calendar, fix ssr ], render: { diff --git a/pages/event/eventAdmin.vue b/pages/event/eventAdmin.vue index 4239bbc1..9d37dec2 100644 --- a/pages/event/eventAdmin.vue +++ b/pages/event/eventAdmin.vue @@ -16,7 +16,6 @@ div v-btn(text color='primary' @click='remove(true)') {{$t('common.remove')}} + diff --git a/plugins/v-calendar.js b/plugins/v-calendar.js deleted file mode 100644 index 29f0414e..00000000 --- a/plugins/v-calendar.js +++ /dev/null @@ -1,7 +0,0 @@ -// import Vue from 'vue' -// import VCalendar from 'v-calendar' -// export default () => { -// Vue.use(VCalendar, { -// firstDayOfWeek: 2 -// }) -// } From c41c930f7054702b7fbbca60d51c392d1835a166 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 13 Nov 2020 00:12:14 +0100 Subject: [PATCH 472/598] fix Confirm title --- components/Confirm.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Confirm.vue b/components/Confirm.vue index 18702406..bc6d3bb0 100644 --- a/components/Confirm.vue +++ b/components/Confirm.vue @@ -63,7 +63,7 @@ export default { methods: { open (message, options = {}) { this.dialog = true - this.title = options.title || 'Confirm' + this.title = options.title || this.$t('common.confirm') this.message = this.$t(message, options) this.options = Object.assign(this.options, options) return new Promise((resolve, reject) => { From 95e473d531fdf5fb440fb233458ad5532abfc03a Mon Sep 17 00:00:00 2001 From: les Date: Fri, 13 Nov 2020 00:13:44 +0100 Subject: [PATCH 473/598] cleaning export --- assets/style.less | 5 ++ components/FollowMe.vue | 7 +- components/List.vue | 14 ++-- components/Search.vue | 15 ++-- docs/assets/css/style.css | 6 +- locales/it.json | 4 +- package.json | 12 ++-- pages/event/_id.vue | 1 + pages/export.vue | 146 ++++++++++++++++++++++---------------- plugins/api.js | 21 +++--- server/helpers.js | 6 +- store/index.js | 9 --- 12 files changed, 134 insertions(+), 112 deletions(-) diff --git a/assets/style.less b/assets/style.less index 11785459..2cc3e325 100644 --- a/assets/style.less +++ b/assets/style.less @@ -1,3 +1,8 @@ html, body { scrollbar-width: thin; + scrollbar-color: orange; } + +li { + margin-left: 10px; +} \ No newline at end of file diff --git a/components/FollowMe.vue b/components/FollowMe.vue index 620eed66..a486eb2f 100644 --- a/components/FollowMe.vue +++ b/components/FollowMe.vue @@ -1,5 +1,5 @@ diff --git a/components/Search.vue b/components/Search.vue index 8e8c3798..0732c2b7 100644 --- a/components/Search.vue +++ b/components/Search.vue @@ -6,11 +6,6 @@ :label="$t('event.show_recurrent')" @change="v => $emit('showrecurrent', v)") - v-switch.mt-0( - v-if='pastFilter' inset color='primary' - :label="$t('event.show_past')" - @change="v => $emit('showpast', v)") - v-autocomplete.mt-0( :label='$t("common.search")' :items='keywords' @@ -36,7 +31,7 @@ diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css index 895bcced..632592e0 100644 --- a/docs/assets/css/style.css +++ b/docs/assets/css/style.css @@ -1,4 +1,4 @@ -.navigation-list-item { +/* .navigation-list-item { font-size: 18px !important; padding: 4px; } @@ -10,3 +10,7 @@ html, body { .page-content h1:first-of-type { font-weight: 500; } + +li { + margin-left: 10px; +} */ \ No newline at end of file diff --git a/locales/it.json b/locales/it.json index ccde9915..4f864209 100644 --- a/locales/it.json +++ b/locales/it.json @@ -165,8 +165,8 @@ "user_create_ok": "Utente creato", "allow_registration_description": "Vuoi abilitare la registrazione?", "allow_anon_event": "Si possono inserire eventi anonimi (previa conferma)?", - "allow_recurrent_event": "Abilita eventi fissi", - "recurrent_event_visible": "Appuntamenti fissi visibili di default", + "allow_recurrent_event": "Abilita eventi ricorrenti", + "recurrent_event_visible": "Appuntamenti ricorrenti visibili di default", "federation": "Federazione / ActivityPub", "enable_federation": "Abilita la federazione", "enable_federation_help": "Sarà possibile seguire questa istanza dal fediverso", diff --git a/package.json b/package.json index bdfd5a4e..aafd1424 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "cors": "^2.8.5", "cross-env": "^7.0.2", "date-fns": "^2.16.1", - "dayjs": "^1.9.5", + "dayjs": "^1.9.6", "dompurify": "^2.2.2", "email-templates": "^7.1.2", "express": "^4.17.1", @@ -61,7 +61,7 @@ "multer": "^1.4.2", "nuxt": "^2.14.7", "nuxt-express-module": "^0.0.11", - "pg": "^8.4.2", + "pg": "^8.5.0", "sequelize": "^6.3.5", "sequelize-cli": "^6.2.0", "sharp": "^0.26.2", @@ -79,7 +79,7 @@ "@nuxtjs/eslint-config": "^4.0.0", "@nuxtjs/vuetify": "^1.11.2", "babel-eslint": "^10.1.0", - "eslint": "^7.12.1", + "eslint": "^7.13.0", "eslint-config-prettier": "^6.15.0", "eslint-config-standard": "^16.0.1", "eslint-loader": "^4.0.2", @@ -88,14 +88,14 @@ "eslint-plugin-nuxt": "^1.0.0", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-promise": ">=4.0.1", - "eslint-plugin-standard": "^4.0.2", + "eslint-plugin-standard": "^4.1.0", "eslint-plugin-vue": "^7.1.0", - "less-loader": "^7.0.2", + "less-loader": "^7.1.0", "nodemon": "^2.0.6", "prettier": "^2.1.2", "pug-plain-loader": "^1.0.0", "sass": "^1.29.0", - "sass-loader": "^10.0.5", + "sass-loader": "^10.1.0", "vue-cli-plugin-vuetify": "~2.0.7", "vuetify-loader": "^1.3.0", "webpack-cli": "^4.2.0" diff --git a/pages/event/_id.vue b/pages/event/_id.vue index 2ece5023..a3cc3227 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -144,6 +144,7 @@ const htmlToText = require('html-to-text') export default { name: 'Event', components: { EventAdmin, EmbedEvent, FollowMe }, + transition: null, async asyncData ({ $axios, params, error, store }) { try { const event = await $axios.$get(`/event/${params.id}`) diff --git a/pages/export.vue b/pages/export.vue index 3f673218..4e82bfe9 100644 --- a/pages/export.vue +++ b/pages/export.vue @@ -1,87 +1,109 @@ diff --git a/plugins/api.js b/plugins/api.js index 77e664a7..edd450e6 100644 --- a/plugins/api.js +++ b/plugins/api.js @@ -1,11 +1,10 @@ export default ({ $axios, store }, inject) => { - const api = { /** * Get events - * + * * filter: { * start_datetime: unix_timestamp (default now) * end_datetime: unix_timestamp @@ -13,16 +12,18 @@ export default ({ $axios, store }, inject) => { * places: [place_id], * limit: (default ∞) * } - * + * */ async getEvents (params) { try { - const events = await $axios.$get(`/events`, { params: { - start: params.start, - end: params.end, - places: params.places && params.places.join(','), - tags: params.tags && params.tags.join(',') - }} ) + const events = await $axios.$get('/events', { + params: { + start: params.start, + end: params.end, + places: params.places && params.places.join(','), + tags: params.tags && params.tags.join(',') + } + }) return events } catch (e) { console.error(e) @@ -31,4 +32,4 @@ export default ({ $axios, store }, inject) => { } } inject('api', api) -} \ No newline at end of file +} diff --git a/server/helpers.js b/server/helpers.js index 3aa5e0ae..f02278c2 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -1,6 +1,6 @@ const settingsController = require('./api/controller/settings') const acceptLanguage = require('accept-language') -const moment = require('moment-timezone') +const dayjs = require('dayjs') const config = require('config') const debug = require('debug')('helpers') const pkg = require('../package.json') @@ -66,8 +66,8 @@ module.exports = { acceptLanguage.languages(Object.keys(locales)) req.settings.locale = acceptLanguage.get(acceptedLanguages) req.settings.user_locale = settingsController.user_locale[req.settings.locale] - moment.locale(req.settings.locale) - moment.tz.setDefault(req.settings.instance_timezone) + dayjs.locale(req.settings.locale) + dayjs.tz.setDefault(req.settings.instance_timezone) next() }, diff --git a/store/index.js b/store/index.js index 7ee8c80a..23646ad9 100644 --- a/store/index.js +++ b/store/index.js @@ -72,21 +72,12 @@ export const actions = { const { tags, places } = await this.$axios.$get('/event/meta') commit('update', { tags, places }) }, - async addEvent ({ commit }, formData) { - await this.$axios.$post('/event', formData) - }, - async updateEvent ({ commit }, formData) { - await this.$axios.$put('/event', formData) - }, setFilters ({ commit }, filters) { commit('setFilters', filters) }, setAnnouncements ({ commit }, announcements) { commit('setAnnouncements', announcements) }, - delEvent ({ commit }, eventId) { - commit('delEvent', eventId) - }, async setSetting ({ commit }, setting) { await this.$axios.$post('/settings', setting) commit('setSetting', setting) From f22c6b848390bb628e0e200a56eda5c99991de65 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 13 Nov 2020 00:13:59 +0100 Subject: [PATCH 474/598] DateInput --- pages/add/DateInput.vue | 29 +++++++++++++---------------- pages/add/_edit.vue | 16 +++++++++------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/pages/add/DateInput.vue b/pages/add/DateInput.vue index c5a1cf60..95e56101 100644 --- a/pages/add/DateInput.vue +++ b/pages/add/DateInput.vue @@ -20,11 +20,11 @@ v-row v-date-picker( :min='today' v-model="value.date" - :range="type === 'multidate'" + :range="value.type === 'multidate'" :locale='settings.locale' @input="pick") - v-btn-toggle.col-md-4(@change='changeType' color='primary' :value='type') + v-btn-toggle.col-md-4(@change='changeType' color='primary' :value='value.type') v-btn(value='normal') {{$t('event.normal')}} v-btn(value='multidate') {{$t('event.multidate')}} v-menu(v-if='settings.allow_recurrent_event' offset-y open-on-hover) @@ -34,8 +34,8 @@ v-row v-list-item(v-for='f in frequencies' :key='f.value' @click='selectFrequency(f.value)') {{f.text}} - //- //- p.col-12 {{$t(`event.${type}_description`)}} - //- v-btn-toggle(v-if="type === 'recurrent'" v-model='recurrent.frequency' color='primary') + p.col-12 {{$t(`event.${value.type}_description`)}} + //- v-btn-toggle(v-if="type === 'recurrent'" v-model='value.recurrent.frequency' color='primary') //- v-btn(v-for='f in frequencies' :value='f.value') {{f.text}} //- .datePicker @@ -49,9 +49,9 @@ v-row //- is-expanded //- :min-date='type !== "recurrent" && new Date()') - div.text-center.mb-2(v-if='type === "recurrent"') - span(v-if='recurrent.frequency !== "1m" && recurrent.frequency !== "2m"') {{whenPatterns}} - v-btn-toggle.mt-1(v-else v-model='recurrent.type' color='primary') + div.text-center.mb-2(v-if='value.type === "recurrent"') + span(v-if='value.recurrent.frequency !== "1m" && value.recurrent.frequency !== "2m"') {{whenPatterns}} + v-btn-toggle.mt-1(v-else v-model='value.recurrent.type' color='primary') v-btn(v-for='whenPattern in whenPatterns' :value='whenPattern.key' :key='whenPatterns.key' small) span {{whenPattern.label}} @@ -72,7 +72,6 @@ export default { }, data () { return { - date: null, datePickerMenu: false, today: dayjs().format('YYYY-MM-DD'), type: 'normal', @@ -95,10 +94,10 @@ export default { return modeMap[this.type] }, whenPatterns () { - if (!this.date) { return } - const date = dayjs(this.date) + if (!this.value.date) { return } + const date = dayjs(this.value.date) - const freq = this.recurrent.frequency + const freq = this.value.recurrent.frequency const weekDay = date.format('dddd') if (freq === '1w' || freq === '2w') { return this.$t(`event.recurrent_${freq}_days`, { days: weekDay }) @@ -219,15 +218,13 @@ export default { }, methods: { changeType (type) { - this.date = null - this.type = type || 'normal' + this.$emit('input', { type: type || 'normal', date: undefined }) }, selectFrequency (f) { - this.recurrent.frequency = f - this.type = 'recurrent' + this.$emit('input', { recurrent: { frequency: f }, date: null, type: 'recurrent' }) }, pick (value) { - if (this.type === 'normal' || this.type === 'recurrent' || this.date.length === 2) { + if (this.value.type === 'normal' || this.value.type === 'recurrent' || this.value.date.length === 2) { this.datePickerMenu = false } } diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index 205bb3a8..1b92a357 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -99,10 +99,11 @@ export default { data.event.place.address = event.place.address || '' data.date = {} if (event.multidate) { + const start = dayjs.unix(event.start_datetime).format('YYYY-MM-DD') + const end = dayjs.unix(event.end_datetime).format('YYYY-MM-DD') data.date = { type: 'multidate', - start: dayjs.unix(event.start_datetime).toDate(), - end: dayjs.unix(event.end_datetime).toDate() + date: [start, end] } } else if (event.recurrent) { data.date.type = 'recurrent' @@ -150,10 +151,10 @@ export default { } }, computed: { - ...mapState(['tags', 'places', 'events', 'settings']) + ...mapState(['tags', 'places', 'settings']) }, methods: { - ...mapActions(['addEvent', 'updateEvent', 'updateMeta', 'updateEvents']), + ...mapActions(['updateMeta']), eventImported (event) { this.event = Object.assign(this.event, event) }, @@ -179,6 +180,7 @@ export default { const formData = new FormData() if (this.date.type === 'multidate') { + console.error('sono in multidate!') start_datetime = dayjs(this.date.date[0]) .set('hour', start_hour).set('minute', start_minute) end_datetime = dayjs(this.date.date[1]) @@ -210,7 +212,7 @@ export default { formData.append('place_name', this.event.place.name) formData.append('place_address', this.event.place.address) formData.append('description', this.event.description) - formData.append('multidate', this.event.type === 'multidate') + formData.append('multidate', this.date.type === 'multidate') formData.append('start_datetime', start_datetime.unix()) formData.append('end_datetime', end_datetime.unix()) @@ -220,9 +222,9 @@ export default { if (this.event.tags) { this.event.tags.forEach(tag => formData.append('tags[]', tag.tag || tag)) } try { if (this.edit) { - await this.updateEvent(formData) + await this.$axios.$put('/event', formData) } else { - await this.addEvent(formData) + await this.$axios.$post('/event', formData) } this.updateMeta() this.$router.replace('/') From e87cbbad889e443b56b537e82d42211516ca85fd Mon Sep 17 00:00:00 2001 From: lesion Date: Fri, 13 Nov 2020 10:52:10 +0000 Subject: [PATCH 475/598] Translated using Weblate (German) Currently translated at 28.1% (63 of 224 strings) Translation: Gancio/Web Translate-URL: https://hosted.weblate.org/projects/gancio/web/de/ --- locales/de.json | 68 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/locales/de.json b/locales/de.json index 0967ef42..614195c6 100644 --- a/locales/de.json +++ b/locales/de.json @@ -1 +1,67 @@ -{} +{ + "common": { + "title": "Titel", + "user": "Nutzer:in", + "moderation": "Moderation", + "follow": "Folgen", + "feed_url_copied": "Öffne die kopierte Feed-URL in deinem RSS-Reader", + "feed": "RSS Feed", + "embed_help": "Kopiere den folgenden Code in deine Webseite und die Veranstaltung wird wie hier angezeigt", + "embed_title": "Bette diese Veranstaltung in deine Webseite ein", + "embed": "Einbetten", + "copied": "Kopiert", + "instances": "Instanzen", + "add_to_calendar": "Zu einem Kalender hinzufügen", + "send_via_mail": "E-Mail versenden", + "copy_link": "Link kopieren", + "set_password": "Passwort erstellen", + "displayname": "Anzeigename", + "activate_user": "Bestätigt", + "password_updated": "Passwort geändert.", + "me": "Du", + "disable": "ausschalten", + "enable": "einschalten", + "cancel": "Abbrechen", + "ok": "Ok", + "new_user": "Neue:r Nutzer:in", + "new_password": "Neues Passwort", + "recover_password": "Passwort wiederherstellen", + "copy": "Kopieren", + "logout_ok": "Abgemeldet", + "add": "Hinzufügen", + "edit_event": "Veranstaltung bearbeiten", + "name": "Name", + "share": "Teilen", + "logout": "Ausloggen", + "preview": "Vorschau", + "save": "Speichern", + "activate": "Aktivieren", + "remove_admin": "Admin entfernen", + "deactivate": "Deaktivieren", + "actions": "Aktionen", + "settings": "Einstellungen", + "places": "Orte", + "events": "Veranstaltungen", + "users": "Nutzer:innen", + "admin": "Admin", + "confirm": "Bestätigen", + "edit": "Bearbeiten", + "search": "Suchen", + "hide": "Verstecken", + "remove": "Entfernen", + "description": "Beschreibung", + "register": "Registrieren", + "password": "Passwort", + "email": "E-Mail", + "login": "Login", + "media": "Dateien", + "what": "Was", + "when": "Wann", + "address": "Adresse", + "where": "Wo", + "send": "Abschicken", + "export": "Exportieren", + "next": "Weiter", + "add_event": "Veranstaltung hinzufügen" + } +} From 0d036eb70750a4827d95966c250d9b6d2cea5658 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 17 Nov 2020 00:31:55 +0100 Subject: [PATCH 476/598] fix trusted instances --- components/Footer.vue | 16 ++++++++++++++++ components/admin/Federation.vue | 8 ++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/components/Footer.vue b/components/Footer.vue index 2b623f6c..8873532a 100644 --- a/components/Footer.vue +++ b/components/Footer.vue @@ -3,6 +3,22 @@ v-btn(color='primary' text href='https://gancio.org') Gancio {{settings.version}} v-btn(v-for='link in settings.footerLinks' :key='link.label' color='primary' text :href='link.href') {{link.label}} + + v-menu(v-if='settings.enable_trusted_instances && settings.trusted_instances && settings.trusted_instances.length' + offset-y bottom open-on-hover transition="slide-y-transition") + template(v-slot:activator="{ on, attrs }") + v-btn(v-bind='attrs' v-on='on' color='primary' text) {{$t('common.places')}} + v-list + v-list-item(v-for='instance in settings.trusted_instances' + :key='instance.name' + :href='instance.url' + two-line) + v-list-item-avatar + v-img(:src='`${instance.url}/favicon.ico`') + v-list-item-content + v-list-item-title {{instance.name}} + v-list-item-subtitle {{instance.label}} + //- v-btn(v-if='settings.enable_federation' text rel='me' @click.prevent='showFollowMe=true') follow me //- v-btn(nuxt to='/about' text) about //- v-btn(href='https://blog.gancio.org' text) blog diff --git a/components/admin/Federation.vue b/components/admin/Federation.vue index 061a2383..84fa007a 100644 --- a/components/admin/Federation.vue +++ b/components/admin/Federation.vue @@ -112,8 +112,11 @@ export default { methods: { ...mapActions(['setSetting']), async createTrustedInstance () { - if (!this.$refs.form.validate()) return + if (!this.$refs.form.validate()) { return } try { + if (!this.instance_url.startsWith('http')) { + this.instance_url = `https://${this.instance_url}` + } const instance = await axios.get(`${this.instance_url}/.well-known/nodeinfo/2.1`) this.setSetting({ key: 'trusted_instances', @@ -123,7 +126,8 @@ export default { label: instance.data.metadata.nodeLabel }) }) - this.instance_url = '' + this.$refs.form.reset() + this.dialogAddInstance = false } catch (e) { this.$root.$message(e, { color: 'error' }) } From 291c8360a8ea30e0ad2285515460ca036c9ff8e6 Mon Sep 17 00:00:00 2001 From: les Date: Tue, 17 Nov 2020 00:32:14 +0100 Subject: [PATCH 477/598] fix editor style / focus --- components/Editor.vue | 120 ++++++++++++++++++++++++++++++------------ 1 file changed, 85 insertions(+), 35 deletions(-) diff --git a/components/Editor.vue b/components/Editor.vue index 3f83f6b4..76623335 100644 --- a/components/Editor.vue +++ b/components/Editor.vue @@ -1,8 +1,9 @@ diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue index 6dd51e17..207d244c 100644 --- a/pages/add/_edit.vue +++ b/pages/add/_edit.vue @@ -34,16 +34,15 @@ //- When DateInput.col-12(v-model='date') - HourInput.col-12(v-model='time') //- Description Editor.col-12.mb-3( + :label="$t('event.description_description')" v-model='event.description' :placeholder="$t('event.description_description')" max-height='400px') //- MEDIA / FLYER / POSTER - v-file-input.col-6.mt-3( :label="$t('common.media')" :hint="$t('event.media_description')" @@ -84,7 +83,7 @@ export default { }, async asyncData ({ params, $axios, error, store }) { if (params.edit) { - const data = { time: {}, event: { place: {} } } + const data = { event: { place: {} } } data.id = params.edit data.edit = true let event @@ -97,25 +96,12 @@ export default { data.event.place.name = event.place.name data.event.place.address = event.place.address || '' - data.date = {} - if (event.multidate) { - const start = dayjs.unix(event.start_datetime).format('YYYY-MM-DD') - const end = dayjs.unix(event.end_datetime).format('YYYY-MM-DD') - data.date = { - type: 'multidate', - date: [start, end] - } - } else if (event.recurrent) { - data.date.type = 'recurrent' - data.date.recurrent = event.recurrent - } else { - data.date.type = 'normal' - data.date.date = dayjs.unix(event.start_datetime).format('YYYY-MM-DD') + data.date = { + recurrent: event.recurrent, + from: new Date(dayjs.unix(event.start_datetime)), + due: new Date(dayjs.unix(event.end_datetime)) } - data.time.start = dayjs.unix(event.start_datetime).format('HH:mm') - data.time.end = dayjs.unix(event.end_datetime).format('HH:mm') - data.event.title = event.title data.event.description = event.description data.event.id = event.id @@ -131,25 +117,27 @@ export default { valid: false, openImportDialog: false, event: { - type: 'normal', place: { name: '', address: '' }, title: '', description: '', tags: [], - image: null, - recurrent: { frequency: '1m', days: [], type: 'weekday_desc' } + image: null }, page: { month, year }, fileList: [], id: null, - date: { type: 'normal', recurrent: {} }, - time: { start: null, end: null }, + date: { from: 0, due: 0, recurrent: null }, edit: false, loading: false, mediaUrl: '', disableAddress: false } }, + head () { + return { + title: `${this.settings.title} - ${this.$t('common.add_event')}` + } + }, computed: { ...mapState(['tags', 'places', 'settings']) }, @@ -158,46 +146,16 @@ export default { eventImported (event) { this.event = Object.assign(this.event, event) }, - // recurrentDays () { - // if (this.event.type !== 'recurrent' || !this.date || !this.date.length) { return } - // const type = this.event.recurrent.type - // if (type === 'ordinal') { return map(this.date, d => dayjs(d).date()) } else if (type === 'weekday') { return map(this.date, d => dayjs(d).day() + 1) } - // }, - // }, cleanFile () { this.event.image = {} }, async done () { if (!this.$refs.form.validate()) { return } this.loading = true - let start_datetime, end_datetime - const [start_hour, start_minute] = this.time.start.split(':') - if (!this.time.end) { - this.time.end = (Number(start_hour) + 2) + ':' + start_minute - } - const [end_hour, end_minute] = this.time.end.split(':') const formData = new FormData() - if (this.date.type === 'multidate') { - start_datetime = dayjs(this.date.date[0]) - .hour(start_hour).minute(start_minute) - end_datetime = dayjs(this.date.date[1]) - .hour(end_hour).minute(end_minute) - } else if (this.date.type === 'normal') { - start_datetime = dayjs(this.date.date).hour(start_hour).minute(start_minute) - end_datetime = dayjs(this.date.date).hour(end_hour).minute(end_minute) - if (end_hour < start_hour) { - end_datetime = end_datetime.add(1, 'day') - } - } else if (this.date.type === 'recurrent') { - start_datetime = dayjs(this.date.date).set('hour', start_hour).set('minute', start_minute) - end_datetime = dayjs(this.date.date).set('hour', end_hour).set('minute', end_minute) - if (end_hour < start_hour) { - end_datetime = end_datetime.add(1, 'day') - } - formData.append('recurrent', JSON.stringify(this.date.recurrent)) - } + formData.append('recurrent', JSON.stringify(this.date.recurrent)) if (this.event.image) { formData.append('image', this.event.image) @@ -206,9 +164,9 @@ export default { formData.append('place_name', this.event.place.name) formData.append('place_address', this.event.place.address) formData.append('description', this.event.description) - formData.append('multidate', this.date.type === 'multidate') - formData.append('start_datetime', start_datetime.unix()) - formData.append('end_datetime', end_datetime.unix()) + // formData.append('multidate', this.date.type === 'multidate') + formData.append('start_datetime', dayjs(this.date.from).unix()) + formData.append('end_datetime', this.date.due && dayjs(this.date.due).unix()) if (this.edit) { formData.append('id', this.event.id) @@ -222,7 +180,6 @@ export default { } this.updateMeta() this.$router.replace('/') - this.loading = false this.$root.$message(this.$auth.loggedIn ? 'event.added' : 'event.added_anon', { color: 'success' }) } catch (e) { switch (e.request.status) { @@ -235,11 +192,6 @@ export default { this.loading = false } } - }, - head () { - return { - title: `${this.settings.title} - ${this.$t('common.add_event')}` - } } } From f7d0f408503749952fdbcfaa81a971d1d205500e Mon Sep 17 00:00:00 2001 From: les Date: Fri, 4 Dec 2020 17:28:11 +0100 Subject: [PATCH 496/598] reuse v-calendar --- pages/event/_id.vue | 12 ------------ plugins/v-calendar.js | 15 ++++++++------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/pages/event/_id.vue b/pages/event/_id.vue index a3cc3227..6e403934 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -56,18 +56,6 @@ v-container v-btn.ml-2(large icon v-on='on' color='primary' :href='`/api/event/${event.id}.ics`') v-icon mdi-calendar-export - //- v-list - v-list-item(link) - v-list-item-content.primary--text.text-uppercase( - v-clipboard:success='copyLink' - v-clipboard:copy='`${settings.baseurl}/event/${event.id}`') {{$t('common.copy_link')}} - - v-list-item(link) - v-list-item-content.primary--text.text-uppercase(@click='showEmbed=true' text color='primary') {{$t('common.embed')}} - - v-list-item(link :href='`/api/event/${event.id}.ics`') - v-list-item-content.primary--text.text-uppercase - //- v-btn(nuxt block link :href='`/api/event/${event.id}.ics`' text color='primary') {{$t('common.add_to_calendar')}} .p-description.text-h6(v-html='event.description') v-chip.p-category.ml-1(v-for='tag in event.tags' color='primary' diff --git a/plugins/v-calendar.js b/plugins/v-calendar.js index 29f0414e..3d4aef0d 100644 --- a/plugins/v-calendar.js +++ b/plugins/v-calendar.js @@ -1,7 +1,8 @@ -// import Vue from 'vue' -// import VCalendar from 'v-calendar' -// export default () => { -// Vue.use(VCalendar, { -// firstDayOfWeek: 2 -// }) -// } + import Vue from 'vue' + import VCalendar from 'v-calendar' + export default () => { + Vue.use(VCalendar, { + // why is that ?! + firstDayOfWeek: 2 + }) + } From 08292c350d39d4cc99044d1b35ff56d885ef44c3 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 4 Dec 2020 17:28:41 +0100 Subject: [PATCH 497/598] minor --- server/api/controller/event.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/api/controller/event.js b/server/api/controller/event.js index aadf30ae..199ef588 100644 --- a/server/api/controller/event.js +++ b/server/api/controller/event.js @@ -418,7 +418,6 @@ const eventController = { }, async _select ({ start, end, tags, places }) { - debug('_select start: %s, end: %s, tags: %s', dayjs.unix(start), end, tags) const where = { recurrent: null, // confirmed event only @@ -504,7 +503,7 @@ const eventController = { if (frequency[1] === 'w') { cursor = cursor.day(start_date.day()) if (cursor.isBefore(dayjs())) { - cursor = cursos.add(7, 'day') + cursor = cursor.add(7, 'day') } if (frequency[0] === 2) { cursor = cursor.add(7, 'day') From a44712c1f539453c849a9fbf3ccb4ab145be0e11 Mon Sep 17 00:00:00 2001 From: les Date: Fri, 4 Dec 2020 17:28:54 +0100 Subject: [PATCH 498/598] minor --- pages/index.vue | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/pages/index.vue b/pages/index.vue index 150c39a6..a1f0ebcd 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -4,22 +4,19 @@ //- Announcements Announcement(v-for='announcement in announcements' :key='`a_${announcement.id}`' :announcement='announcement') + //- Calendar and search bar v-row#calbarmb-2 .col-xl-5.col-lg-5.col-md-6.col-sm-12.col-xs-12 - v-date-picker( - @update:picker-date='monthChange' - @click:date='dayChange' - :locale='settings.locale' - :events='calendarEvents' - :value='date' - landscape) + //- this is needed as v-calendar does not support SSR + //- https://github.com/nathanreyes/v-calendar/issues/336 + client-only + Calendar(@dayclick='dayChange' @monthchange='monthChange' :events='events') .col - Search( - :filters='filters' - @update='updateFilters') + Search(:filters='filters' @update='updateFilters') v-chip(v-if='selectedDay' close @click:close='dayChange(selectedDay)') {{selectedDay}} + //- Events #events Event(v-for='event in events' :key='event.id' :event='event' @@ -33,10 +30,11 @@ import dayjs from 'dayjs' import Event from '@/components/Event' import Announcement from '@/components/Announcement' import Search from '@/components/Search' +import Calendar from '@/components/Calendar' export default { name: 'Index', - components: { Event, Search, Announcement }, + components: { Event, Search, Announcement, Calendar }, async asyncData ({ params, $api }) { const events = await $api.getEvents({ start: dayjs().unix() @@ -55,9 +53,6 @@ export default { }, computed: { ...mapState(['settings', 'announcements']), - calendarEvents () { - return this.events.map(e => dayjs.unix(e.start_datetime).format('YYYY-MM-DD')) - } }, methods: { ...mapActions(['setFilters']), @@ -90,9 +85,8 @@ export default { this.filters = filters this.updateEvents() }, - monthChange (monthYear) { + monthChange ({ year, month }) { this.selectedDay = null - const [year, month] = monthYear.split('-') // check if current month is selected if (month - 1 === dayjs().month()) { From 0726701b62360f21bcc0221af31b7e8335dd413b Mon Sep 17 00:00:00 2001 From: les Date: Fri, 4 Dec 2020 17:29:43 +0100 Subject: [PATCH 499/598] minor --- nuxt.config.js | 3 ++- package.json | 31 ++++++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/nuxt.config.js b/nuxt.config.js index 610b4b3a..7a428010 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -41,7 +41,8 @@ module.exports = { '@/plugins/vue-clipboard', // vuetify '@/plugins/axios', // axios baseurl configuration '@/plugins/validators', // inject validators - '@/plugins/api' // api helpers + '@/plugins/api', // api helpers + { src: '@/plugins/v-calendar', ssr: false } // v-calendar ], render: { diff --git a/package.json b/package.json index 401e0aaa..3b15c245 100644 --- a/package.json +++ b/package.json @@ -28,26 +28,26 @@ ], "dependencies": { "@nuxtjs/auth": "^4.9.1", - "@nuxtjs/axios": "^5.12.2", + "@nuxtjs/axios": "^5.12.3", "accept-language": "^3.0.18", "axios": "^0.21.0", "bcryptjs": "^2.4.3", "body-parser": "^1.18.3", - "config": "^3.3.2", + "config": "^3.3.3", "consola": "^2.15.0", "cookie-parser": "^1.4.5", "cors": "^2.8.5", - "cross-env": "^7.0.2", + "cross-env": "^7.0.3", "date-fns": "^2.16.1", "dayjs": "^1.9.6", "dompurify": "^2.2.2", - "email-templates": "^7.1.2", + "email-templates": "^8.0.2", "express": "^4.17.1", "express-oauth-server": "^2.0.0", "fs": "^0.0.1-security", "http-signature": "^1.3.5", "ical.js": "^1.4.0", - "ics": "^2.26.1", + "ics": "^2.26.2", "inquirer": "^7.3.3", "jsdom": "^16.4.0", "jsonwebtoken": "^8.5.1", @@ -59,7 +59,7 @@ "moment-timezone": "^0.5.32", "morgan": "^1.10.0", "multer": "^1.4.2", - "nuxt": "^2.14.7", + "nuxt": "^2.14.9", "nuxt-express-module": "^0.0.11", "pg": "^8.5.1", "sequelize": "^6.3.5", @@ -70,8 +70,9 @@ "tiptap-extensions": "^1.33.2", "to-ico": "^1.1.5", "url": "^0.11.0", + "v-calendar": "^2.1.1", "vue-clipboard2": "^0.3.1", - "vue-i18n": "^8.22.1", + "vue-i18n": "^8.22.2", "yargs": "^16.1.1" }, "devDependencies": { @@ -79,29 +80,29 @@ "@nuxtjs/eslint-config": "^5.0.0", "@nuxtjs/vuetify": "^1.11.2", "babel-eslint": "^10.1.0", - "eslint": "^7.13.0", + "eslint": "^7.14.0", "eslint-config-prettier": "^6.15.0", - "eslint-config-standard": "^16.0.1", + "eslint-config-standard": "^16.0.2", "eslint-loader": "^4.0.2", "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": ">=11.1.0", "eslint-plugin-nuxt": "^2.0.0", - "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-prettier": "^3.2.0", "eslint-plugin-promise": ">=4.0.1", - "eslint-plugin-standard": "^4.1.0", - "eslint-plugin-vue": "^7.1.0", + "eslint-plugin-standard": "^5.0.0", + "eslint-plugin-vue": "^7.2.0", "less-loader": "^7.1.0", "nodemon": "^2.0.6", - "prettier": "^2.1.2", + "prettier": "^2.2.1", "pug-plain-loader": "^1.0.0", "sass": "^1.29.0", "sass-loader": "^10.1.0", - "vue-cli-plugin-vuetify": "~2.0.7", + "vue-cli-plugin-vuetify": "~2.0.8", "vuetify-loader": "^1.3.0", "webpack-cli": "^4.2.0" }, "resolutions": { - "prosemirror-model": "1.11.2" + "prosemirror-model": "1.12.0" }, "bin": { "gancio": "server/cli.js" From 84d362ef1d41b3abeccf4c4b79c9ffebc0b47dff Mon Sep 17 00:00:00 2001 From: mv87 Date: Thu, 3 Dec 2020 23:00:17 +0000 Subject: [PATCH 500/598] Translated using Weblate (German) Currently translated at 59.8% (134 of 224 strings) Translation: Gancio/Web Translate-URL: https://hosted.weblate.org/projects/gancio/web/de/ --- locales/de.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/locales/de.json b/locales/de.json index ded76100..60aea5a0 100644 --- a/locales/de.json +++ b/locales/de.json @@ -81,7 +81,8 @@ "federation": "Föderation", "n_resources": "keine Ressource|eine Ressource|{n} Ressourcen", "resources": "Ressourcen", - "info": "Infos" + "info": "Infos", + "theme": "Thema" }, "admin": { "delete_footer_link_confirm": "Sicher, diesen Link zu entfernen?", @@ -146,7 +147,9 @@ "list_description": "Wenn Sie eine Website haben und eine Liste von Ereignissen anzeigen möchten, verwenden Sie den folgenden Code", "ical_description": "Computer und Smartphones sind üblicherweise mit einer Kalenderanwendung ausgestattet, mit der ein Fernkalender importiert werden kann.", "insert_your_address": "Geben Sie Ihre E-Mail-Adresse ein", - "email_description": "Sie können interessante Ereignisse per E-Mail erhalten." + "email_description": "Sie können interessante Ereignisse per E-Mail erhalten.", + "feed_description": "Um Updates auf deinem Computer oder Smartphone zu erhalten, ohne regelmäßig diese Seite zu öffnen, kannst du RSS-Feeds benutzen.

    \n\n

    Mit RSS-Feeds nutzt du eine spezielle App, um Updates von den Seiten, die dich interessieren, zu erhalten. Damit kannst du rasch vielen Seiten folgen, ohne einen\nAccount erstellen zu müssen und ohne sonstige Komplikationen.

    \n\n
  • Für Android-Geräte empfehlen wir Flym oder Feeder
  • \n
  • Auf iPhones / iPads kannst du Feed4U nutzen
  • \n
  • Auf Desktop-PCs oder Laptops empfehlen wir Feedbro, den du in Firefox oder Chrome installieren kannst.
  • \n
    \nIndem du diesen Link deinem RSS-Feed-Reader hinzufügst, wirst du auf dem Laufenden gehalten.", + "intro": "Anders als unsoziale Netzwerke, die alles unternehmen, um Nutzer und deren Daten bei sich zu (be)halten, glauben wir, dass Informationen und Leute gleichermaßen frei sein müssen. Deshalb kannst du dich über Veranstaltungen auf dem Laufenden halten, ohne zwangsläufig über diese Seite zu gehen." }, "recover": { "not_valid_code": "Etwas ist schief gelaufen." From 9854c7ad970faecd0a16228a9b59c7305838ac63 Mon Sep 17 00:00:00 2001 From: mv87 Date: Thu, 3 Dec 2020 22:51:24 +0000 Subject: [PATCH 501/598] Translated using Weblate (German) Currently translated at 100.0% (10 of 10 strings) Translation: Gancio/Email Translate-URL: https://hosted.weblate.org/projects/gancio/email/de/ --- locales/email/de.json | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/locales/email/de.json b/locales/email/de.json index 0967ef42..d9dffc37 100644 --- a/locales/email/de.json +++ b/locales/email/de.json @@ -1 +1,22 @@ -{} +{ + "admin_register": { + "content": "{{user.email}} hat eine Registrierung auf {{config.title}} angefordert:
    {{user.description}}

    Bitte bestätigen here.", + "subject": "Neue Registrierung" + }, + "recover": { + "content": "Hallo, du hast die Wiederherstellung deines Passworts angefordert {{config.title}}. Klicke hier, um zu bestätigen.", + "subject": "Passwortwiederherstellung" + }, + "user_confirm": { + "content": "Hallo, dein Account auf {{config.title}} wurde erstellt. Bestätige ihn und wähle ein Kennwort..", + "subject": "Du kannst jetzt damit beginnen, Events zu veröffentlichen" + }, + "confirm": { + "content": "Hallo, dein Account auf {{config.title}} wurde bestätigt. Anfragen kannst du an {{config.admin_email}} stellen.", + "subject": "Du kannst jetzt damit beginnen, Events zu veröffentlichen" + }, + "register": { + "content": "Wir haben die Registrierungsanfrage erhalten. Wir werden sie so bald wie möglich bestätigen.", + "subject": "Registrierungsanfrage erhalten" + } +} From 8d4524893c49b901a013a9ea62279ac8f27579d2 Mon Sep 17 00:00:00 2001 From: Lubaki Agenda Date: Wed, 9 Dec 2020 15:38:01 +0100 Subject: [PATCH 502/598] Replace eu.json --- locales/eu.json | 322 ++++++++++++++++++++++++------------------------ 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/locales/eu.json b/locales/eu.json index cbd2f043..2abb4dc2 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -1,222 +1,222 @@ { "common": { - "add_event": "Ekitaldi berria", - "next": "Jarraitzen du", - "export": "Esportatzen du", - "send": "Bidaltzen du", + "add_event": "Ekitaldia sortu", + "next": "Jarraitu", + "export": "Esportatu", + "send": "Bidali", "where": "Non", "address": "Helbidea", "when": "Noiz", - "what": "Gauza", + "what": "Zer", "media": "Media", - "login": "Sartzen", + "login": "Saioa hasi", "email": "Email", "password": "Pasahitza", - "register": "Erregistroa", + "register": "Izena eman", "description": "Deskribapena", - "remove": "Ezabatzea", - "hide": "Ezkutatzea", - "search": "Bilatzea", - "edit": "Editatzea", + "remove": "Ezabatu", + "hide": "Ezkutatu", + "search": "Bilatu", + "edit": "Aldatu", "info": "Informazioa", - "confirm": "Egiaztatzea", + "confirm": "Baieztatu", "admin": "Kudeatu", "users": "Erabiltzaileak", "events": "Ekitaldiak", "places": "Lekuak", - "settings": "Aukerak", - "actions": "Eraginak", - "deactivate": "Desaktibatzea", - "remove_admin": "Administratzailea Kanporatzea", - "activate": "Aktibatzea", - "save": "Gordetzea", - "preview": "Aurreko bista", - "logout": "Saioa ixtea", - "share": "Partekatzea", + "settings": "Ezarpenak", + "actions": "Ekintzak", + "deactivate": "Desaktibatu", + "remove_admin": "Administratzailea kanporatu", + "activate": "Aktibatu", + "save": "Gorde", + "preview": "Aurrebista", + "logout": "Saioa amaitu", + "share": "Partekatu", "name": "Izena", - "associate": "Elkartzea", - "edit_event": "Ekitaldia editatzea", + "associate": "Elkartu", + "edit_event": "Ekitaldia aldatu", "related": "Erlazionatuta", - "add": "Gehitzea", - "logout_ok": "Zuzenki itxitako saioa", - "copy": "Kopiatzea", - "recover_password": "Pasahitza berreskuratzea", + "add": "Gehitu", + "logout_ok": "Saioa ondo itxi da", + "copy": "Kopiatu", + "recover_password": "Pasahitza berreskuratu", "new_password": "Pasahitz berria", "new_user": "Erabiltzaile berria", - "ok": "Ok", + "ok": "Ados", "cancel": "Ezeztatzea", - "enable": "Prestatzea", - "disable": "Desprestatzea", + "enable": "Gaitu", + "disable": "Desgaitu", "me": "Zu", - "password_updated": "Eguneratutako pasahitza!", + "password_updated": "Pasahitza eguneratuta!", "activate_user": "Egiaztatuta", "displayname": "Erakutsitako izena", "federation": "Federazioa", - "set_password": "Pasahitza egiaztatzen du", - "copy_link": "Lotura Kopiatzea", - "send_via_mail": "Posta elektronikoa bidaltzea", - "add_to_calendar": "Egutegia gehitzea", - "instances": "Eskariak", + "set_password": "Pasahitza ezarri", + "copy_link": "Lotura kopiatu", + "send_via_mail": "Posta elektronikoa bidali", + "add_to_calendar": "Egutegira gehitu", + "instances": "Instantziak", "copied": "Kopiatuta", - "embed": "Sartzea", - "embed_title": "Argitara ezazu ekitaldi hau zure web-orrian", - "embed_help": "Hurrengo kodea zure web-orrian kopiatuz ekitaldia sartuko da aldea hemen ikus dezakezun bezala", - "feed": "Feed", - "feed_url_copied": "Kopiatuta feed-eko URL-a, zure feeds-irakurlearengako pegatuko", - "follow_me_title": "Gaurkotzeei jarraitzen die fediverso-an", - "follow": "Jarraitzea", - "n_resources": "errekurtsorik ez dago|errekurtsoa|{n} errekurtsoak", - "resources": "Errekurtsoak", - "moderation": "Neurritasuna", - "authorize": "Baimentzea", - "title": "Titulua", + "embed": "Txertatuta", + "embed_title": "Txertatu ekitaldi hau zure web-gunean", + "embed_help": "Hurrengo kodea zure web-orrian kopiatuz gero ekitaldia txertatuko da hemen ikusten den bezala", + "feed": "RSS Jarioa", + "feed_url_copied": "Erabili RSS jarioaren esteka zure RSS jario irakurgailuan", + "follow_me_title": "Fedibertsoko eguneraketak jarraitu", + "follow": "Jarraitu", + "n_resources": "baliabiderik ez|baliabide bakarra dago|{n} baliabide daude", + "resources": "Baliabideak", + "moderation": "Moderazioa", + "authorize": "Baimendu", + "title": "Izenburua", "user": "Erabiltzailea", - "filter": "Iragaztea", + "filter": "Iragazi", "event": "Ekitaldia", - "pause": "Geldiagotzea", - "start": "Hasiera", - "fediverse": "Fediversoa", - "skip": "Saltatzea", - "delete": "Ezabatzea", + "pause": "Gelditu", + "start": "Hasi", + "fediverse": "Fedibertsoa", + "skip": "Saltatu", + "delete": "Ezabatu", "announcements": "Iragarkiak", - "url": "URL-a Helbidea", + "url": "URL esteka", "place": "Lekua" }, "login": { - "description": "Sartuz ekitaldi berriak argitaratu ahal izango dituzu.", - "check_email": "Ikuska ezazu zure posta (ere spam edo mezu baztergarri)", - "not_registered": "Ez zaude izena erregistratuta?", - "forgot_password": "Pasahitza ahaztu zenuen?", - "error": "Sarreran zeharreko akatsak, zure datuak egiaztatzen ditu.", - "insert_email": "Sar ezazu zure posta elektronikoa", - "ok": "Guztia ondo" + "description": "Saioa hasiz gero, ekitaldi berriak sortu ahal izango dituzu", + "check_email": "Begiratu zure postontzi elektronikoan, baita mezu baztergarrietan", + "not_registered": "Ez duzu izena eman?", + "forgot_password": "Pasahitza ahaztu duzu?", + "error": "Ezin da saioa hasi, egiaztatu zure datuok.", + "insert_email": "Sartu zure helbide elektronikoa", + "ok": "Saioa hasi duzu!" }, "recover": { - "not_valid_code": "Mmmmm zerbait ez zen irten ondo..." + "not_valid_code": "Mmmmm zerbaitek huts egin du..." }, "export": { - "intro": "A diferencia de las plataformas del capitalismo, que hacen todo lo posible para mantener\n datos y usuarios dentro de ellas, creemos las informaciones, así como las personas,\n deben ser libres. Para esto, podés mantenerte actualizado sobre los eventos que te interesan como mejor te parezca, \n sin necesariamente tener que pasar por este sitio.", - "email_description": "Interesatzen zaizkizun ekitaldiak jaso ditzakezu posta elektronikoagatik.", - "insert_your_address": "Sar ezazu zure helbide elektronikoa", - "feed_description": "Para seguir las actualizaciones desde una computadora o teléfono inteligente sin la necesidad de abrir periódicamente el sitio, el método recomendado es usar los feeds RSS.

    \n\n

    Con rss feeds, utilizás una aplicación especial para recibir actualizaciones de los sitios que más le interesan, como por ejemplo este. Es una buena manera de seguir muchos sitios muy rápidamente, sin la necesidad de crear una cuenta u otras complicaciones.

    \n \n
  • Si tenés Android, te sugerimos Flym o Feeder
  • \n
  • Para iPhone/iPad podés usar Feed4U
  • \n
  • En el caso de una computadora aconsejamos Feedbro, se instala como plugin de Firefox o de Chrome y funciona con todos los principales sistemas.
  • \n
    \n Agregando este link a tu lector de feed, estarás siempre actualizado/a.", - "ical_description": "Konputagailuak eta telefono adimendunak egutegi bat emateko aplikazio batekin hornituta egon ohi dira. Gehienetan programa hauek egutegi urruna inportatzeko erabil daitezke.", - "list_description": "Webgune bat baduzu eta gertaeren zerrenda bat erakutsi nahi baduzu, ondorengo kodea erabil dezakezu" + "intro": "Kapitalismoaren plataformek edozer egingo dute erabiltzaileak eta haien datuak gordetzeko. Guk aldiz, informazioak, pertsonen antzera askeak izan behar dutela sinesten dugu. Horretarako gogoko dituzun ekitaldietaz info eguneratuak jaso ditzakezu webgune honetatik pasatzeko beharrik gabe.", + "email_description": "Interesatzen zaizkizun ekitaldiak jaso ditzakezu posta elektronikoan", + "insert_your_address": "Sartu zure helbide elektronikoa", + "feed_description": "Eguneraketak sakelekoan edo ordenagailuan jaso nahi badituzu webgune hau bisitatu gabe, RSS jarioa erabiltzea gomendatzen dizugu.

    \n

    RSS jarioarentzat aplikazio berezi bat erabiliko duzu gogoko dituzun weguneetatik berriak jasotzeko. Oso modu egokia da gune askotako berriak erraz eta azkar jasotzeko eta ez da konturik sortu behar!

    \n\n
  • Android baldin badaukazu Flym edo Feeder gomendatzen dizugu
  • \n
  • iPhone/iPad-erako eskuragarri daukazu Feed4U
  • \n
  • Ordenagailuaren kasuan Feedbro iradokitzen dugu, Firefoxeko edo Chromeko gehigarri gisa instalatzen da eta sistema gehienetan dabil.
  • \n
    \nHonako esteka jario irakurgailuan sartuta, eguneraketa guztiak jasoko dituzu.", + "ical_description": "Normalean ordenagailuak eta smartphoneak egutegiak inportatu eta kudeatzeko aplikazioekin etorri ohi dira", + "list_description": "Webgune bat baduzu eta ekitaldien zerrenda erakutsi nahi baduzu, ondorengo kodea erabili dezakezu" }, "register": { - "description": "Los movimientos sociales necesitan organizarse y autofinanciarse.
    Este es un regalo para ustedes, úsenlo solamente para eventos con fines no comerciales y obviamente antifascistas, antisexistas y antirracistas.\n
    Antes de que puedas publicar debemos aprobar la cuenta . Como imaginarás, detrás de este sitio hay personas de carne y hueso, por esto te pedimos escribir algo para hacernos saber que tipos de eventos te gustaría publicar.", + "description": "Herri mugimenduek autoantolaketaren bidean diru-iturrien beharrak dauzkatela badakigu.
    Honako hauxe oparitxoa da, hortaz erabili ezazue ekitaldi ez-komertzialak iragartzeko, eta esan gabe doa, ekitaldi antifaxistak, antisexistak eta antiarriztetarako :) . \n
    Argitaratzen hasi baino lehen zure kontu berriak onarpena jaso beharko du beraz, webgune honen atzean hezur-haragizko pertsonak gaudela jakinda , (momenutz euskal 'AI'-rik ez daukagu baina adi, agertuko direla) idatzi iezaguzu lerro batzuk argitaratu nahi dituzun ekitaldiei buruz", "error": "Hutsa: ", "complete": "Izen-ematea baieztatu behar dute.", - "first_user": "Sortutako administratzailea" + "first_user": "Administratzailea sortu da" }, "event": { - "anon": "Anonimoa", - "anon_description": "Ekitaldia sar dezakezu zu erregistratu edo saioa hasi gabe,\n baina kasu honetan norbaitek irakur dezan espazio honetarako egokia den ekitaldia dela,\n aukera hau utziz, egiaztatzeko arte itxaron behar izango duzu. Gainera, hura aldatzea ez da posiblea izango.

    \n Ez bada gustatzen, saioa has dezakezu edo zu, bestela,\n erregistratu jarraitzen du eta erantzuna ahalik eta azkarrenen jasoko duzu.", - "same_day": "ber eguna", - "what_description": "Izen ekitaldia", - "description_description": "Deskribapena, kopia dezakezu eta ondo eman", - "tag_description": "Tag...", - "media_description": "Panfletoa, aukerakoa, gehi dezakezu", - "added": "Gehitutako ekitaldia", - "added_anon": "Gehitutako ekitaldia, lehenbailehen egiaztatuko da.", - "where_description": "Non da ekitaldia? Lekua ez badago, idatz ezazu eta enter-a presionatzen du. ", - "confirmed": "Egiaztatutako ekitaldia", - "not_found": "Ez aurkitutako ekitaldia", - "remove_confirmation": "Ekitaldi hau ezabatu nahi izatea seguru zaude?", - "remove_recurrent_confirmation": "Ekitaldi errepikari hau ezabatu nahi izatea seguru zaude?\n\nAzken ekitaldiak mantenduko dira, baina ekitaldi berririk ez da sortuko.", + "anon": "Ezezaguna", + "anon_description": "Ekitaldia sortu dezakezu saioa hasi edo izena eman gabe,\nbaina kasu honetan norbaitek egiaztatu beharko du ekitaldia gune honetarako egokia dela eta itxaron beharko duzu. Gainera, behin egiaztatuta hura aldatzea ez da posiblea izango.

    \n Dena den, ahalik eta azkarren erantzuten saiatuko gara.", + "same_day": "egun berean", + "what_description": "Ekitaldiaren izena", + "description_description": "Ekitaldiaren azalpena", + "tag_description": "Etiketak (tag)...", + "media_description": "Eskuorria edo irudia gehitu dezakezu (aukerakoa)", + "added": "Ekitaldia sortu da", + "added_anon": "Ekitaldia sortu da, baina baieztatzear dago.", + "where_description": "Non da ekitaldia? Lekua ez bada zerrendan agertzen idatzi ezazu eta enter sakatu. ", + "confirmed": "Ekitaldia egiaztatu da", + "not_found": "Ezin da ekitaldia aurkitu", + "remove_confirmation": "Ziur zaude ekitaldi hau ezabatu nahi duzula?", + "remove_recurrent_confirmation": "Ziur zaude ekitaldi errepikari hau ezabatu nahi duzula??\n\nIragan diren ekitaldiak mantenduko dira, baina ez da ekitaldi berririk sortuko.", "recurrent": "Errepikaria", "show_recurrent": "Ekitaldi errepikariak", - "show_past": "azken ekitaldiak", - "recurrent_description": "Aukera ezazu maiztasuna eta hauta itzazu egunak", - "multidate_description": "Jaialdia ala egun bat baino gehiagotan? Aukeratzea noiz hasten duen eta noiz amaitzen duen.", + "show_past": "Erakutsi iraganeko ekitaldiak", + "recurrent_description": "Aukera ezazu maiztasuna eta hautatu egunak", + "multidate_description": "Egun bat baino gehiagoko jaialdia da? Aukeratu noiz hasten den eta noiz amaitzen den.", "multidate": "Egun gehiagotan", - "normal": "Normala", - "normal_description": "Eguna aukeratzen du.", - "recurrent_1w_days": "{days} egunez behin", - "recurrent_2w_days": "Bat {days} egunetako", - "recurrent_1m_days": "|Hilabete bakoitzaren {days}ean|Hilabete bakoitzaren {days} egunetan", - "recurrent_2m_days": "|{days}ean bi hilabetez behin|{days} egunetan bi hilabetez behin", - "recurrent_1m_ordinal": "{n} {days} hilabete bakoitzeko", - "recurrent_2m_ordinal": "|{n} {days} hilabete bat bakoitza bi|{n} {days} hilabete bat bakoitza bi", + "normal": "Egunekoa", + "normal_description": "Eguna aukeratu.", + "recurrent_1w_days": "{days}(e)ro", + "recurrent_2w_days": "Bi {days}(e)z behin", + "recurrent_1m_days": "|Hilabetero {days}etan|Hilabetero {days}etan", + "recurrent_2m_days": "|{days}etan bi hilabetez behin|{days}etan bi hilabetez behin", + "recurrent_1m_ordinal": "Hilabeteko {n}. {days}(e)ro", + "recurrent_2m_ordinal": "|Bi hilabetez behin {n}. {days}(e)an|Bi hilabetez behin {n}. {days}(e)an", "each_week": "Astero", "each_2w": "Bi astez behin", "each_month": "Hilero", - "due": "etan", - "from": "tik", - "image_too_big": "Imajina handiegia! 4 megabyte maximo", - "interact_with_me": "Jarrai iezadazu fediversoan", - "follow_me_description": " Hemen gainean argitaratutako|ezagutzera emanda {title},\n gertaeretan eguneratu egoteko askotariko modu artean, {account} kontuari jarrai diezaiokezu fediverse-tik, adibidez mastodon-etik pasatuz, eta beharbada baliabideak gehitu gertaera batera hortik

    \n Mastodon-az eta fediverso-az hitz egitea ez baduzu inoiz entzun artikulu hau irakur dezazula iradokitzen dizugu.

    Sar ezazu zure eskaria behean (adibidez mastodon.eus edo mastodon.jalgi.eus)" + "due": "Amaiera ordua", + "from": "Hasiera ordua", + "image_too_big": "Irudia handiegia omen da (4mb gehienez)", + "interact_with_me": "Elkar gaitezen fedibertsoan: ", + "follow_me_description": " {title}n argitaratutako ekitaldien berri izateko aukeren artean,\n fedibertsoko {account} kontuari jarraitzea daukazu. Horretarako Mastodon erabili dezakezu, eta bertatik baliabideak gehitu ekitaldi baten.

    \n Mastodon eta Fedibertsoa zer diren ez badakizu artikulu hau irakurtzea iradokitzen dizugu.

    Sartu zure instantzia behean (adibidez mastodon.eus edo mastodon.jalgi.eus)" }, "admin": { - "place_description": "Leku bat okerra izan dadila edo helbideaz alda dadila kasuaren, truke alda dezakezu.
    Kasu honetan leku horrekiko ekitaldi elkartu guztiak helbideaz aldatuko direla kontuan hartu behar da (barne azkenak!)", - "event_confirm_description": "Erabiltzaile anonimoek gehitutako ekitaldiak hemen egiazta ditzakezu", - "delete_user": "Ezabatzea", - "remove_admin": "Ken ezazu administrazioa", - "delete_user_confirm": "Erabiltzaile hau kendu seguru zaude?", - "user_remove_ok": "Kendutako erabiltzailea", - "user_create_ok": "Sortutako erabiltzailea", - "allow_registration_description": "Izen-emate irekiak onartzen dituzu?", - "allow_anon_event": "Gertaerak onartzen dituzu laster (baieztatu behar du)?", - "allow_recurrent_event": "Ahalbide itzazu gertaera errepikariak", - "recurrent_event_visible": "Erakuts itzazu gertaera errepikariak modu lehenetsian", + "place_description": "Lekuaren zehaztapenak aldatu ditzakezu, bai gaizki idatzita dagoelako, bai helbidez aldatu delako.
    Ondorioz, leku horrekin lotutako ekitaldi guztiak helbidez aldatuko direla kontuan hartu behar da (baita iraganekoak ere!)", + "event_confirm_description": "Erabiltzaile ezezagunek sortutako ekitaldiak hemen egiaztatu ditzakezu", + "delete_user": "Erabiltzailea ezabatu", + "remove_admin": "Administratzailea ezabatu", + "delete_user_confirm": "Ziur zaude erabiltzailea ezabatu nahi duzula?", + "user_remove_ok": "Erabiltzailea ezabatu da", + "user_create_ok": "Erabiltzailea sortu da", + "allow_registration_description": "Izen-emateak ahalbidetu nahi dituzu?", + "allow_anon_event": "Ezezagunek ekitaldiak sortzea ahalbidetu nahi duzu? (Beti ere baieztapenarekin) ", + "allow_recurrent_event": "Ekitaldi errepikariak ahalbidetu?", + "recurrent_event_visible": "Erakutsi ekitaldi errepikariak modu lehenetsian", "federation": "Federazioa / ActivityPub", - "enable_federation": "Ahalbide ezazu federazioa", - "enable_federation_help": "Adibide honi fediverse-tik jarraitzea posiblea izango da", + "enable_federation": "Federatzea gaitu", + "enable_federation_help": "Instantzia hau fedibertsoan jarraitzea gaituko duzu?", "select_instance_timezone": "Ordu-eremua", - "instance_timezone_description": "Gancio diseinatuta dago hiri bat adibidez leku espezifiko baten gertaerak biltzeko. Idatziz eta leku honen ordu-eremua hautatuz, aldi guztiak erakutsiko dituzte aukeratuta bitartean.", - "enable_resources": "Ahalbide itzazu baliabideak", - "enable_resources_help": "Baliabideak gertaerari fediverse-tik gehitzea baimentzen dizu", - "hide_boost_bookmark": "Eraginetako eta markagailuetako kopurua ezkutatzen du", - "hide_boost_bookmark_help": "Ezkutatzen ditu bultzadak eta etorri liburu-markak multzoa fediverse-tik erakusten duten ikono txikiak", - "block": "Etxadia", - "unblock": "Libra zaitez", - "user_add_help": "Posta elektroniko bat bidaliko diogu erabiltzaile berriari harpidetza baieztatzeko eta pasahitz bat aukeratzeko argibideekin", + "instance_timezone_description": "Gancio hiri baten moduko lekuen ekitaldiak biltzeko diseinatuta dago. Leku honen ordu-eremua hautatuz gero ekitaldi gutziek ordu-eremu horrekiko adieraziko dira..", + "enable_resources": "Baliabideak gaitu ", + "enable_resources_help": "Fedibertsotik ekitaldietan baliabideak gehitzea ahalbidetzen du", + "hide_boost_bookmark": "Bultzadak eta laster-markak ezkutatu", + "hide_boost_bookmark_help": "Fedibertsotik datozen bultzaden eta laster-marken ikonotxoak ezkutatzen ditu", + "block": "Blokeatu", + "unblock": "Desblokeatu", + "user_add_help": "Mezu elektroniko bat bidaliko diogu erabiltzaile berriari harpidetza baieztatzeko eta pasahitz bat aukeratzeko argibideekin", "resources": "Baliabideak", - "hide_resource": "Larru-baliabidea", - "show_resource": "Erakustaldi-baliabidea", - "delete_resource": "Ezaba ezazu baliabidea", - "delete_resource_confirm": "Baliabide hau ezabatu seguru zaude?", - "block_user": "Etxadi-erabiltzailea", - "user_blocked": "Oztopatutako erabiltzailea {user}", - "filter_instances": "Iragazki-adibideak", - "filter_users": "Iragazki-erabiltzaileak", - "instance_name": "Adibide-izena", - "favicon": "Logotipoa", - "user_block_confirm": "Erabiltzaile hau oztopatu seguru zaude?", - "delete_announcement_confirm": "Iragarkia kendu seguru zaude?", - "announcement_remove_ok": "Jakinarazten duzu kenduta", - "announcement_description": "Atal honetan geldituko diren iragarpenak sar ditzakezu etxeko orrian", - "instance_locale": "Ez-betetze-hizkuntza", - "instance_locale_description": "Orriak erakusteko erabilitako hizkuntza erabiltzaileak nahiago izandako hizkuntza da. Mezuak, hala ere, kasu batzuetan modu berean (adibidez ActivityPub-etik pasatuz ezagutzera ematen dugunean edo posta elektroniko batzuk bidaltzerakoan) jende guztiari erakutsi behar dizkiogu. Kasu hauetan goian hautatutako hizkuntzaa erabiliko dugu.", - "instance_place": "Adibide honen leku adierazgarria", - "title_description": "Badarabilte, posta elektronikoaren gai, janaldien eta ics-en esportazioko orriaren tituluan ", - "description_description": "Tituluaren ondoan burukadan agertzen da", - "instance_name_help": "Izateko ActivityPub-aren kontua", - "enable_trusted_instances": "Ahalbide itzazu adibide atseginak", - "trusted_instances_help": "Adibide-zerrenda atsegina erakutsiko dute burukadan", - "add_trusted_instance": "Gehi ezazu adibide atsegin bat", - "instance_place_help": "Gidatzeko etiketa beste adibideak", - "delete_trusted_instance_confirm": "Benetan item hau lagunaren adibideetako menutik ezabatu nahi duzu?" + "hide_resource": "Baliabidea ezkutatu", + "show_resource": "Baliabidea erakutsi", + "delete_resource": "Baliabidea ezabatu", + "delete_resource_confirm": "Ziur zaude baliabide hau ezabatu nahi duzula?", + "block_user": "Erabiltzailea blokeatu", + "user_blocked": "{user} erabiltzailea blokeatuta dago", + "filter_instances": "Instantziak iragazi", + "filter_users": "Erabiltzaileak iragazi", + "instance_name": "Instantziaren izena", + "favicon": "Iruditxoa", + "user_block_confirm": "Ziur zaude erabiltzailea blokeatu nahi duzula?", + "delete_announcement_confirm": "Ziur zaude iragarkia ezabatu nahi duzula?", + "announcement_remove_ok": "Iragarkia ezabatu da", + "announcement_description": "Atal honetan iragarkiak txertatu ditzakezu hasiera-orrian ager daitezen", + "instance_locale": "Instantziaren hizkuntza lehenetsia", + "instance_locale_description": "Orriak erakusteko erabilitako hizkuntza erabiltzaileak nahiago duen hizkuntza da. Hala ere, kasu batzuetan mezuak modu berean erakutsi behar ditugu guztiontzat (adibidez ActivityPub-etik argitaratzen dugunean edo posta elektroniko batzuk bidaltzerakoan). Kasu hauetan goian hautatutako hizkuntza erabiliko dugu.", + "instance_place": "Instantziaren kokalekua ", + "title_description": "Orriaren izenburuan, jario eta ics-en esportazioan eta mezu elektronikoen gaian erabiliko da ", + "description_description": "Orriburuan agertuko da, izenburuarekin batera", + "instance_name_help": "Instantziaren kontua ActivityPub-en ", + "enable_trusted_instances": "Kideko instantziak gaitu", + "trusted_instances_help": "Kideko instantzien zerrenda orri-buruan agertuko dira", + "add_trusted_instance": "Gehitu kideko instantzia bat", + "instance_place_help": "Beste instantzien zerrendetan agertuko den izena ", + "delete_trusted_instance_confirm": "Ziur zaude kideko instantzia hau zerrendatik ezabatu nahi duzula?" }, "auth": { - "not_confirmed": "Oraindik ez baieztatuta...", - "fail": "Auth-ek huts egin zuen!. Pasahitz segurua zara izan da zuzen?" + "not_confirmed": "Oraindik baieztatu gabe dago...", + "fail": "Saioa hasteak huts egin du! Ziur zaude datuok ondo daudela?" }, "settings": { - "update_confirm": "Zure aldaketa gorde nahi duzu?", - "change_password": "Alda ezazu zure pasahitza", - "password_updated": "Eguneratutako pasahitza", + "update_confirm": "Aldaketak gorde nahi duzu?", + "change_password": "Pasahitza aldatu", + "password_updated": "Pasahitza eguneratu da", "danger_section": "Atal arriskutsua", - "remove_account": "Ondorengo botoia zapalduz zure erabiltzailea ezabatuko dute. Ordez ezagutzera eman zenituen gertaerak ez.", - "remove_account_confirm": "Gutxi gorabehera zaude zure kontua iraunkorki ezabatu" + "remove_account": "Ondorengo botoia zapalduz gero zure erabiltzailea ezabatuko da. Argitaratutako ekitaldiak ordea, ez dira ezabatuko", + "remove_account_confirm": "Zure kontua behin betiko ezabatzear zaude" }, "error": { - "nick_taken": "Dagoeneko ezizen hau darabilte", - "email_taken": "Dagoeneko posta elektroniko hau darabilte" + "nick_taken": "Dagoeneko ezizen hau hartuta dago", + "email_taken": "Dagoeneko posta elektroniko hau hartuta dago" }, "confirm": { "title": "Erabiltzaile-baieztapena", "not_valid": "Mmmmm zerbaitek huts egiten du.", - "valid": "Zure kontua baieztatzen dute, sar zaitezke" + "valid": "Zure kontua baieztatua izan da, orain saioa hasi dezakezu" }, "ordinal": { "1": "lehen", @@ -226,12 +226,12 @@ "5": "bostgarrena", "-1": "azkena" }, - "about": "\n

    \n Gancio es un proyecto del underscore hacklab y es uno de los\n servicios de cisti.org.

    \n\n
    ¿Que es gancio?
    \n

    Gancio (se pronuncia \"gancho\") es una herramienta para compartir eventos orientado a las comunidades radicales.\n Dentro del gancio pueden encontrar y agregar eventos.\n Gancio, como todo cisti.org es una herramienta\n antisexista, antirracista, antifascista y anticapitalista, así que piensen en eso cuando\n van a publicar un evento.

    \n\n
    Ok, pero ¿que quiere decir gancio?
    \n

    \n Literalmente sería \"enganche\", pero en realidad viene de una forma de decir que se usa en en Turín (Italia). Ahí si alguien dice: \"ehi, ci diamo un gancio alle 8?\" (\"ehi, ¿nos damos un enganche a las 8?\") quiere decir \"ehí, ¿nos vemos a las 8?\". \"Darsi un gancio\" es juntarse a una hora X en un lugar Y.

    \n \n
      \n
    • ¿A qué hora es el gancio para ir a la marcha?
    • \n
    • No se, de todos modos no puedo ir, ya tengo un gancio para ir a una reunión.
    • \n
    \n
    \n\n
    Contactos
    \n

    \n ¿Escribiste una nueva interfaz para gancio? ¿Querés abrir un gancio en tu ciudad?\n ¿Hay algo que te gustaría mejorar? Para contribuir el código fuente es libre y disponible \n acá. Ayuda y sugerencias son siempre bienvenidos, podés comunicarte con nosotros \n enviando un mail a underscore arroba autistici.org

    ", + "about": "

    Descarga la agenda semanal en pdf lista para imprimir pinchando aquí.

    ¿Quiénes somos?

    Somos un grupo de personas que gestionamos la lubakiagenda digital y creamos y colgamos la agenda semanal en pdf y papel. No generamos contenido, solamente moderamos el contenido de la web y subimos las actividades de las que nos enteramos.

    ¿Qué es LubakiAgenda?

    Es la agenda social alternativa de Bilboalde*. Tiene su versión digital, que cada colectivo o espacio autogestionado puede actualizar con su propia programación, y una versión imprimible que se cuelga cada miércoles en la web y en los lugares más frecuentados de Bilbo.

    ¿Cuál es el objetivo de LubakiAgenda?

    Una parte de las actividades que se incluyen en la agenda son las organizadas por gaztetxes, ateneos, distribuidoras,… y por el amplio movimiento popular y juvenil de Bilbo y alrededores. Queremos que esta agenda sea el reflejo de lo que organiza este movimiento en su trabajo cotidiano, resaltando que no hacen falta ni instituciones ni subvenciones para mantener en marcha la cultura popular.

    Nuestro objetivo es dar difusión al movimiento popular desde una perspectiva anticapitalista, antifascista, antirracista, feminista e inclusiva.

    Por ello no se publicarán actividades que vayan en contra de nuestros principios ni por regla general, tampoco actividades comerciales o de agentes sociales que consideremos que ya tienen sus propios medios y fuerzas de difusión y organización (como instituciones, partidos políticos o sindicatos mayoritarios)

    ¿Cómo puedo participar?

    Si formas parte de un colectivo social, puedes colgar directamente las actividades que realicéis en el apartado superior derecho de la web (+ Nuevo evento) y solicitar que generemos una usuaria para tu colectivo. De este modo vuestra programación quedará colgada automáticamente sin necesidad de moderación.

    También nos puedes escribir a agenda@lubakiagenda.net y mandarnos la programación de tu colectivo o espacio y nosotras la subiremos.

    Es muy importante que si quieres que tu programación aparezca en la versión imprimible, nos hagas llegar la información antes del miércoles al mediodía de cada semana (si son actividades periódicas, no hace falta que nos mandes mail todas las semanas)

    Si no perteneces a ningún colectivo pero quieres colgar actividades, siempre puedes subirlas mediante el apartado superior derecho de la web (+ Nuevo evento), pero debes saber que el contenido subido será sujeto a moderación para evitar duplicados o actividades contrarias a nuestros principios.

    ¿Zer da 'Gancio'?

    Gancio, Underscore hacklabeko proiektua da eta cisti.org-eko zerbitzuetariko bat.

    Gancio ( \"gantzio\" ahoskatzen da) ekitaldiak zabaltzeko tresna da eta komunitate erradikalei zuzenduta dago. Bertan ekitaldiak aurkitu eta sortu daitezke. Gainera, Cisti.org osoak bezala, Ganciok izaera antisexista, antiarrazista, antifaxista eta antikapitalista dauka, beraz, izan hori buruan ekitaldia argitaratzera zoazenean.

    Ados, baina ¿zer arraio esan nahi du 'gancio' hitzak?

    Literalki \"kakoa\" litzateke, baina egia esan Turinen (Italia) erabiltzen den esaeratik dator, hau da, norbaitek esaten badu: \n \"- ehi, ci diamo un gancio alle 8?\" (\"aizu, ¿8etan kakoa emango?\") -zera esan nahi du: \n \"-aizu, ¿8retan elkartuko gara?\". \n\"Darsi un gancio\" hitzordu bat lotzea da, X orduan eta Y lekuan.

    • ¿Zein ordutan da gancio-a manira joateko?
    • Ez dakit ta, dena den, ezin naiz joan gancio-a baitaukat bilera baterako.

    \n
    Kontaktuak

    Gancio-ko interfaze berria garatu duzula? Gancio-a abiatu nahi duzula zure hirian? Hobetzeko zerbait bururatu zaizu? Ba, jakin iturri-kodea askea dela eta hemen dagoela eskuragarri. \nLaguntza eta iradokizunak beti direnez ongietorriak, gurekin kontaktuan jarri zaitezkete underscore@autistici.org-en. Ondo izan!

    *Bilboaldea Bilbo, Ezkerraldea, Meatzaldea, Hego Uribe, Uribe Kosta eta Txorierri

    ", "oauth": { - "authorization_request": "Eskaerak {app} ondorengo baimena behar du {instance_name}:", - "redirected_to": "Baieztapenaren ondoren birzuzenduko zaituzte helbidera {url}", + "authorization_request": "{app} aplikazioak baimena eskatu du {instance_name}-n ondorengo lanak egiteko:", + "redirected_to": "Baieztapenaren ondoren {url} helbidera berbideratua izango zara.", "scopes": { - "event:write": "Gehi itzazu eta edita itzazu zure gertaerak" + "event:write": "Zure ekitaldiak sortu eta aldatu" } } } From 539c0fa9333f2124e0db811c01c60e31741912c7 Mon Sep 17 00:00:00 2001 From: les Date: Mon, 14 Dec 2020 18:48:15 +0100 Subject: [PATCH 503/598] left/right keys goes to prev/next event --- pages/event/_id.vue | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pages/event/_id.vue b/pages/event/_id.vue index 6e403934..b25fede3 100644 --- a/pages/event/_id.vue +++ b/pages/event/_id.vue @@ -249,7 +249,21 @@ export default { ) } }, + mounted () { + window.addEventListener('keydown', this.keyDown) + }, + destroyed () { + window.removeEventListener('keydown', this.keyDown) + }, methods: { + keyDown (ev) { + if (ev.key === 'ArrowRight' && this.event.next) { + this.$router.push(`/event/${this.event.next}`) + } + if (ev.key === 'ArrowLeft' && this.event.prev) { + this.$router.push(`/event/${this.event.prev}`) + } + }, showResource (resource) { this.showResources = true this.selectedResource = resource From 3abb39f62bde2f68d641e5f52b540dc45d025220 Mon Sep 17 00:00:00 2001 From: les Date: Mon, 11 Jan 2021 00:17:56 +0100 Subject: [PATCH 504/598] keep migrating to vuetify --- assets/style.less | 1 + components/Calendar.vue | 7 +- components/Event.vue | 125 +- components/Nav.vue | 22 +- components/Search.vue | 18 +- locales/esm.js | 2 +- locales/index.js | 2 +- locales/it.json | 9 +- package.json | 34 +- pages/Admin.vue | 2 +- pages/add/DateInput.vue | 53 +- pages/add/ImportDialog.vue | 14 +- pages/add/_edit.vue | 1 - pages/event/_id.vue | 5 +- pages/event/embedEvent.vue | 11 +- pages/event/eventAdmin.vue | 5 +- pages/export.vue | 10 +- pages/index.vue | 65 +- plugins/api.js | 5 +- plugins/filters.js | 6 +- server/api/controller/event.js | 41 +- server/helpers.js | 58 +- server/taskManager.js | 3 +- yarn.lock | 2272 +++++++++++++++----------------- 24 files changed, 1382 insertions(+), 1389 deletions(-) diff --git a/assets/style.less b/assets/style.less index 2cc3e325..00dd8007 100644 --- a/assets/style.less +++ b/assets/style.less @@ -1,6 +1,7 @@ html, body { scrollbar-width: thin; scrollbar-color: orange; + overflow: auto !important; } li { diff --git a/components/Calendar.vue b/components/Calendar.vue index 886d9319..2049405f 100644 --- a/components/Calendar.vue +++ b/components/Calendar.vue @@ -3,7 +3,7 @@ v-calendar( title-position='left' :is-dark="settings['theme.is_dark']" - :columns="$screens({ default: 1, md: 2 })" + :columns="2" @update:from-page='updatePage' :locale='$i18n.locale' :attributes='attributes' @@ -21,7 +21,7 @@ import { take, get } from 'lodash' export default { name: 'Calendar', props: { - events: { type: Array, default: [] } + events: { type: Array, default: () => [] } }, data () { const month = dayjs().month() + 1 @@ -35,13 +35,14 @@ export default { // TODO: could be better attributes () { + return [] const colors = ['blue', 'orange', 'yellow', 'teal', 'indigo', 'green', 'red', 'purple', 'pink', 'gray'] const tags = take(this.tags, 10).map(t => t.tag) let attributes = [] attributes.push({ key: 'today', dates: new Date(), highlight: { color: 'green', fillMode: 'outline' } }) function getColor (event) { - const color = { class: 'vc-rounded-full', color: 'blue', fillMode: 'outline' } + const color = { class: 'vc-rounded-full', color: 'blue', fillMode: 'normal' } const tag = get(event, 'tags[0]') if (!tag) { return color } const idx = tags.indexOf(tag) diff --git a/components/Event.vue b/components/Event.vue index 27292fea..562fac1a 100644 --- a/components/Event.vue +++ b/components/Event.vue @@ -1,78 +1,83 @@ -