diff --git a/package-lock.json b/package-lock.json index 9981744652217d6fb750aea73a717b279797a75b..8966c047e184beb875625ece3e4010da442722d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,1409 +5,427 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.1" } }, "@babel/compat-data": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.1.tgz", - "integrity": "sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", + "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", "requires": { - "browserslist": "^4.8.2", + "browserslist": "^4.12.0", "invariant": "^2.2.4", "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, "@babel/core": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.4.tgz", - "integrity": "sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.4", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", - "convert-source-map": "^1.7.0", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", + "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.2.2", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.2.2", + "@babel/types": "^7.2.2", + "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", - "lodash": "^4.17.13", + "lodash": "^4.17.10", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "ms": "^2.1.1" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", "requires": { - "@babel/types": "^7.4.4", + "@babel/types": "^7.10.2", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-builder-react-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz", - "integrity": "sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", + "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", "requires": { - "@babel/types": "^7.8.3", - "esutils": "^2.0.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/types": "^7.10.1" } }, - "@babel/helper-call-delegate": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", - "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", + "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-module-imports": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-compilation-targets": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.3.tgz", - "integrity": "sha512-JLylPCsFjhLN+6uBSSh3iYdxKdeO9MNmoY96PE/99d8kyBFaXLORtAVhqN6iHa+wtPeqxKLghDOZry0+Aiw9Tw==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", "requires": { - "@babel/compat-data": "^7.8.1", - "browserslist": "^4.8.2", + "@babel/compat-data": "^7.10.1", + "browserslist": "^4.12.0", "invariant": "^2.2.4", - "levenary": "^1.1.0", + "levenary": "^1.1.1", "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz", - "integrity": "sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", - "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", "requires": { - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.6.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.10.1" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.10.1" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.10.1" } }, "@babel/helper-module-transforms": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz", - "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.10.1" } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==" }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", "requires": { "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-replace-supers": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz", - "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "^7.10.1" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" + }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/helpers": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz", - "integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", - "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", - "requires": { - "@babel/types": "^7.8.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/traverse": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", - "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", "requires": { + "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", - "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==" + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz", - "integrity": "sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-proposal-decorators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz", - "integrity": "sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz", + "integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.7.4", + "@babel/helper-create-class-features-plugin": "^7.3.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-decorators": "^7.7.4" + "@babel/plugin-syntax-decorators": "^7.2.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.7.4.tgz", - "integrity": "sha512-CG605v7lLpVgVldSY6kxsN9ui1DxFOyepBfuX2AzU2TNriMAYApoU55mrGw9Jr4TlrTzPCG10CL8YXyi+E/iPw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-numeric-separator": "^7.7.4" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", - "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", + "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", - "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-async-generators": { @@ -1418,12 +436,20 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, "@babel/plugin-syntax-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz", - "integrity": "sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", + "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-dynamic-import": { @@ -1435,11 +461,11 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", - "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", + "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-json-strings": { @@ -1451,11 +477,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", - "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -1467,11 +493,11 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -1499,356 +525,194 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-syntax-typescript": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", - "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", + "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.1", "lodash": "^4.17.13" } }, "@babel/plugin-transform-classes": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz", - "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", - "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz", - "integrity": "sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz", + "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.7.4" + "@babel/plugin-syntax-flow": "^7.2.0" } }, "@babel/plugin-transform-for-of": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz", - "integrity": "sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", - "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==" - }, - "@babel/template": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", - "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", - "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", - "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", - "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", - "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-named-capturing-groups-regex": { @@ -1860,409 +724,347 @@ } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz", - "integrity": "sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", "requires": { - "@babel/helper-call-delegate": "^7.8.3", - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.8.3.tgz", - "integrity": "sha512-glrzN2U+egwRfkNFtL34xIBYTxbbUF2qJTP8HD3qETBBqzAWSeNB821X0GjU06+dNpq/UyCIjI72FmGE5NNkQQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.1.tgz", + "integrity": "sha512-V4os6bkWt/jbrzfyVcZn2ZpuHZkvj3vyBU0U/dtS8SZuMS7Rfx5oknTrtfyXJ2/QZk8gX7Yls5Z921ItNpE30Q==", "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", - "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.1.tgz", + "integrity": "sha512-rBjKcVwjk26H3VX8pavMxGf33LNlbocMHdSeldIEswtQ/hrjyTG8fKKILW1cSkODyRovckN/uZlGb2+sAV9JUQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz", - "integrity": "sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", + "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.1", + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz", + "integrity": "sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg==", "requires": { - "@babel/helper-builder-react-jsx": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3" + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.8.3.tgz", - "integrity": "sha512-01OT7s5oa0XTLf2I8XGsL8+KqV9lx3EZV+jxn/L2LQ97CGKila2YMroTkCEIE0HV/FF7CMSRsIAybopdN9NTdg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz", + "integrity": "sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.8.3.tgz", - "integrity": "sha512-PLMgdMGuVDtRS/SzjNEQYUT8f4z1xb2BAT54vM1X5efkVuYBf5WyGUMbpmARcfq3NaglIwz08UVQK4HHHbC6ag==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz", + "integrity": "sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.1.tgz", + "integrity": "sha512-mfhoiai083AkeewsBHUpaS/FM1dmUENHBMpS/tugSJ7VXqXO5dCN1Gkint2YvM1Cdv1uhmAKt1ZOuAjceKmlLA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", - "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-runtime": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz", - "integrity": "sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz", + "integrity": "sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==", "requires": { - "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "resolve": "^1.8.1", "semver": "^5.5.1" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz", - "integrity": "sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-typescript": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz", - "integrity": "sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.1.tgz", + "integrity": "sha512-v+QWKlmCnsaimLeqq9vyCsVRMViZG1k2SZTlcZvB+TqyH570Zsij8nvVUZzOASCRiQFUxkLrn9Wg/kH0zgy5OQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-typescript": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-typescript": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" } }, "@babel/preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz", - "integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==", - "requires": { - "@babel/compat-data": "^7.8.0", - "@babel/helper-compilation-targets": "^7.8.3", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.8.3", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.8.3", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", + "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "requires": { + "@babel/compat-data": "^7.10.1", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-proposal-async-generator-functions": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-json-strings": "^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.8.3", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.8.3", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.8.3", - "@babel/plugin-transform-modules-commonjs": "^7.8.3", - "@babel/plugin-transform-modules-systemjs": "^7.8.3", - "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.1", + "@babel/plugin-transform-computed-properties": "^7.10.1", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.1", + "@babel/plugin-transform-modules-umd": "^7.10.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.3", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.3", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.3", - "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/types": "^7.8.3", - "browserslist": "^4.8.2", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.1", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.1", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.2", + "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", - "levenary": "^1.1.0", + "levenary": "^1.1.1", "semver": "^5.5.0" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, "@babel/preset-react": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.8.3.tgz", - "integrity": "sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.1.tgz", + "integrity": "sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q==", "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-react-display-name": "^7.8.3", - "@babel/plugin-transform-react-jsx": "^7.8.3", - "@babel/plugin-transform-react-jsx-self": "^7.8.3", - "@babel/plugin-transform-react-jsx-source": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-transform-react-display-name": "^7.10.1", + "@babel/plugin-transform-react-jsx": "^7.10.1", + "@babel/plugin-transform-react-jsx-development": "^7.10.1", + "@babel/plugin-transform-react-jsx-self": "^7.10.1", + "@babel/plugin-transform-react-jsx-source": "^7.10.1", + "@babel/plugin-transform-react-pure-annotations": "^7.10.1" } }, "@babel/preset-typescript": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.7.4.tgz", - "integrity": "sha512-rqrjxfdiHPsnuPur0jKrIIGQCIgoTWMTjlbWE69G4QJ6TIOVnnRnIJhUxNTL/VwDmEAVX08Tq3B1nirer5341w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz", + "integrity": "sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.7.4" + "@babel/plugin-transform-typescript": "^7.1.0" } }, "@babel/runtime": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz", - "integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.3.tgz", - "integrity": "sha512-lrIU4aVbmlM/wQPzhEvzvNJskKyYptuXb0fGC0lTQTupTOYtR2Vqbu6/jf8vTr4M8Wt1nIzxVrSvPI5qESa/xA==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.2.tgz", + "integrity": "sha512-+a2M/u7r15o3dV1NEizr9bRi+KUVnrs/qYxF0Z06DAPx/4VCWaz1WA7EcbE+uqGgt39lp5akWGmHsTseIkHkHg==", + "dev": true, "requires": { "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" } }, "@babel/traverse": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", - "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.4", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.4.5", - "@babel/types": "^7.4.4", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.11" + "lodash": "^4.17.13" }, "dependencies": { "debug": { @@ -2272,339 +1074,189 @@ "requires": { "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", "to-fast-properties": "^2.0.0" } }, - "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" }, - "@csstools/normalize.css": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", - "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" - }, - "@emotion/hash": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.4.tgz", - "integrity": "sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A==" - }, - "@emotion/is-prop-valid": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz", - "integrity": "sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ==", + "@emotion/cache": { + "version": "10.0.29", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", + "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", "requires": { - "@emotion/memoize": "0.7.4" + "@emotion/sheet": "0.9.4", + "@emotion/stylis": "0.8.5", + "@emotion/utils": "0.11.3", + "@emotion/weak-memoize": "0.2.5" } }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - }, - "@hapi/hoek": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.0.tgz", - "integrity": "sha512-7XYT10CZfPsH7j9F1Jmg1+d0ezOux2oM2GfArAzLwWe4mE2Dr3hVjsAL6+TFY49RRJlCdJDMw3nJsLFroTc8Kw==" - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "@emotion/core": { + "version": "10.0.28", + "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz", + "integrity": "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==", "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" + "@babel/runtime": "^7.5.5", + "@emotion/cache": "^10.0.27", + "@emotion/css": "^10.0.27", + "@emotion/serialize": "^0.11.15", + "@emotion/sheet": "0.9.4", + "@emotion/utils": "0.11.3" } }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "@emotion/css": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", + "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", "requires": { - "@hapi/hoek": "^8.3.0" + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3", + "babel-plugin-emotion": "^10.0.27" } }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } + "@emotion/memoize": "0.7.4" } }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "@emotion/serialize": { + "version": "0.11.16", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", + "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/unitless": "0.7.5", + "@emotion/utils": "0.11.3", + "csstype": "^2.5.7" } }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } + "@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "@emotion/styled": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", + "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "@emotion/styled-base": "^10.0.27", + "babel-plugin-emotion": "^10.0.27" } }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "@emotion/styled-base": { + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", + "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" } }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } + "@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, "@material-ui/core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.9.0.tgz", - "integrity": "sha512-zrrr8mPU5DDBYaVil4uJYauW41PjSn5otn7cqGsmWOY0t90fypr9nNgM7rRJaPz2AP6oRSDx1kBQt2igf5uelg==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.10.2.tgz", + "integrity": "sha512-Uf4iDLi9sW6HKbVQDyDZDr1nMR4RUAE7w/RIIJZGNVZResC0xwmpLRZMtaUdSO43N0R0yJehfxTi4Z461Cd49A==", "requires": { "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.9.0", - "@material-ui/system": "^4.7.1", - "@material-ui/types": "^5.0.0", - "@material-ui/utils": "^4.7.1", + "@material-ui/styles": "^4.10.0", + "@material-ui/system": "^4.9.14", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.10.2", "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.2", - "convert-css-length": "^2.0.1", - "hoist-non-react-statics": "^3.2.1", - "normalize-scroll-left": "^0.2.0", - "popper.js": "^1.14.1", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", "prop-types": "^15.7.2", "react-is": "^16.8.0", - "react-transition-group": "^4.3.0" + "react-transition-group": "^4.4.0" } }, "@material-ui/icons": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.5.1.tgz", - "integrity": "sha512-YZ/BgJbXX4a0gOuKWb30mBaHaoXRqPanlePam83JQPZ/y4kl+3aW0Wv9tlR70hB5EGAkEJGW5m4ktJwMgxQAeA==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.9.1.tgz", + "integrity": "sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==", "requires": { "@babel/runtime": "^7.4.4" } }, "@material-ui/lab": { - "version": "4.0.0-alpha.40", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.40.tgz", - "integrity": "sha512-VwXCNFJKfctu9Ot9XP5u2SSzXpm2Fn7F/o08bUfrJDkMCuRc8MCGVnNhT+guZRZa35rR97uWKc3SGQ/LAv8yEg==", + "version": "4.0.0-alpha.56", + "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.56.tgz", + "integrity": "sha512-xPlkK+z/6y/24ka4gVJgwPfoCF4RCh8dXb1BNE7MtF9bXEBLN/lBxNTK8VAa0qm3V2oinA6xtUIdcRh0aeRtVw==", "requires": { "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.7.1", + "@material-ui/utils": "^4.10.2", "clsx": "^1.0.4", "prop-types": "^15.7.2", "react-is": "^16.8.0" } }, "@material-ui/styles": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.9.0.tgz", - "integrity": "sha512-nJHum4RqYBPWsjL/9JET8Z02FZ9gSizlg/7LWVFpIthNzpK6OQ5OSRR4T4x9/p+wK3t1qNn3b1uI4XpnZaPxOA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.10.0.tgz", + "integrity": "sha512-XPwiVTpd3rlnbfrgtEJ1eJJdFCXZkHxy8TrdieaTvwxNYj42VnnCyFzxYeNW9Lhj4V1oD8YtQ6S5Gie7bZDf7Q==", "requires": { "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.7.4", - "@material-ui/types": "^5.0.0", - "@material-ui/utils": "^4.7.1", - "clsx": "^1.0.2", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "^5.1.0", + "@material-ui/utils": "^4.9.6", + "clsx": "^1.0.4", "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.2.1", + "hoist-non-react-statics": "^3.3.2", "jss": "^10.0.3", "jss-plugin-camel-case": "^10.0.3", "jss-plugin-default-unit": "^10.0.3", @@ -2617,24 +1269,25 @@ } }, "@material-ui/system": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.7.1.tgz", - "integrity": "sha512-zH02p+FOimXLSKOW/OT2laYkl9bB3dD1AvnZqsHYoseUaq0aVrpbl2BGjQi+vJ5lg8w73uYlt9zOWzb3+1UdMQ==", + "version": "4.9.14", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.14.tgz", + "integrity": "sha512-oQbaqfSnNlEkXEziDcJDDIy8pbvwUmZXWNqlmIwDqr/ZdCK8FuV3f4nxikUh7hvClKV2gnQ9djh5CZFTHkZj3w==", "requires": { "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.7.1", + "@material-ui/utils": "^4.9.6", + "csstype": "^2.5.2", "prop-types": "^15.7.2" } }, "@material-ui/types": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.0.0.tgz", - "integrity": "sha512-UeH2BuKkwDndtMSS0qgx1kCzSMw+ydtj0xx/XbFtxNSTlXydKwzs5gVW5ZKsFlAkwoOOQ9TIsyoCC8hq18tOwg==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" }, "@material-ui/utils": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.7.1.tgz", - "integrity": "sha512-+ux0SlLdlehvzCk2zdQ3KiS3/ylWvuo/JwAGhvb8dFVvwR21K28z0PU9OQW2PGogrMEdvX3miEI5tGxTwwWiwQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.10.2.tgz", + "integrity": "sha512-eg29v74P7W5r6a4tWWDAAfZldXIzfyO1am2fIsC39hdUUHm/33k6pGOKPbgDjg/U/4ifmgAePy/1OjkKN6rFRw==", "requires": { "@babel/runtime": "^7.4.4", "prop-types": "^15.7.2", @@ -2718,6 +1371,51 @@ "@svgr/plugin-jsx": "^4.3.3", "camelcase": "^5.3.1", "cosmiconfig": "^5.2.1" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "@svgr/hast-util-to-babel-ast": { @@ -2737,6 +1435,44 @@ "@svgr/babel-preset": "^4.3.3", "@svgr/hast-util-to-babel-ast": "^4.3.2", "svg-parser": "^2.0.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", + "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.2", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helpers": "^7.10.1", + "@babel/parser": "^7.10.2", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "@svgr/plugin-svgo": { @@ -2747,370 +1483,325 @@ "cosmiconfig": "^5.2.1", "merge-deep": "^3.0.2", "svgo": "^1.2.2" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "@svgr/webpack": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", - "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.1.0.tgz", + "integrity": "sha512-d09ehQWqLMywP/PT/5JvXwPskPK9QCXUjiSkAHehreB381qExXf5JFCBWhfEyNonRbkIneCeYM99w+Ud48YIQQ==", "requires": { - "@babel/core": "^7.4.5", + "@babel/core": "^7.1.6", "@babel/plugin-transform-react-constant-elements": "^7.0.0", - "@babel/preset-env": "^7.4.5", + "@babel/preset-env": "^7.1.6", "@babel/preset-react": "^7.0.0", - "@svgr/core": "^4.3.3", - "@svgr/plugin-jsx": "^4.3.3", - "@svgr/plugin-svgo": "^4.3.1", - "loader-utils": "^1.2.3" + "@svgr/core": "^4.1.0", + "@svgr/plugin-jsx": "^4.1.0", + "@svgr/plugin-svgo": "^4.0.3", + "loader-utils": "^1.1.0" } }, - "@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "@syncfusion/ej2-base": { + "version": "18.2.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-base/-/ej2-base-18.2.44.tgz", + "integrity": "sha512-q1aHQr9DXpCQh1iqWsYcIg2eGzsQZXBCu6XvFzMIXp6aWFu6fmW/2WYceg+F5B3cVfo1xCivthdrhlHzxiicGg==", "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@syncfusion/ej2-icons": "~18.2.44" } }, - "@types/babel__generator": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", - "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "@syncfusion/ej2-buttons": { + "version": "18.2.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-buttons/-/ej2-buttons-18.2.44.tgz", + "integrity": "sha512-mKhZ8DJEiRHyGdfQgti72Ul0UmTxVgPYzBnpB80/iif67tWsxLnqVJ53CWgxkXJq0fm6fAneIFSXztMffN2fmw==", "requires": { - "@babel/types": "^7.0.0" + "@syncfusion/ej2-base": "~18.2.44" } }, - "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "@syncfusion/ej2-icons": { + "version": "18.2.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-icons/-/ej2-icons-18.2.44.tgz", + "integrity": "sha512-4jOb0RtpTU+s+IXbaQxxcWhFpXXn9aYyakGmrF7A6smbpndM7do28mDybJMFIns/IoRsQokOnrDhqqAIaoDRVQ==" + }, + "@syncfusion/ej2-inputs": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-inputs/-/ej2-inputs-18.2.45.tgz", + "integrity": "sha512-1lyunOQFT77PXB2gZuJjmgRfyQqFcsTBmj9fGA5PIm5dwipsq4fy6IKOhTMcGCO64q7NZieNXcWOWdSws0lqAQ==", "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@syncfusion/ej2-base": "~18.2.44", + "@syncfusion/ej2-buttons": "~18.2.44", + "@syncfusion/ej2-popups": "~18.2.44", + "@syncfusion/ej2-splitbuttons": "~18.2.44" } }, - "@types/babel__traverse": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", - "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", + "@syncfusion/ej2-popups": { + "version": "18.2.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-popups/-/ej2-popups-18.2.44.tgz", + "integrity": "sha512-+1riSvOH+nhoQtRbgX3Yl2W50Ql5YceiaucyQXNV/WKC9JqHuamRj3PINzd11HjAubvkAMOoYLQQ7B7wP4UmaA==", "requires": { - "@babel/types": "^7.3.0" + "@syncfusion/ej2-base": "~18.2.44", + "@syncfusion/ej2-buttons": "~18.2.44" } }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@syncfusion/ej2-react-base": { + "version": "18.2.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-react-base/-/ej2-react-base-18.2.44.tgz", + "integrity": "sha512-lvIdLzDd2f3V9CEpHBV0FLnJVbb0Nucu7qbdOKQ4dQDRCO0QfM3dqyuC6Wd20R0cyaNGyjucXIpqcueLPtqSvA==", "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "@syncfusion/ej2-base": "~18.2.44" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==" - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "@syncfusion/ej2-react-inputs": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-react-inputs/-/ej2-react-inputs-18.2.45.tgz", + "integrity": "sha512-lH5e/YNASvqBcXt4ix8YVDv/lWBwM9F7tKiwPXckKnfNX01s2iZg+u+Dw+W3Cj7KIulpg60CHQkFoPtCm2uVkQ==", "requires": { - "@types/istanbul-lib-coverage": "*" + "@syncfusion/ej2-base": "~18.2.44", + "@syncfusion/ej2-inputs": "18.2.45", + "@syncfusion/ej2-react-base": "~18.2.44" } }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "@syncfusion/ej2-splitbuttons": { + "version": "18.2.44", + "resolved": "https://registry.npmjs.org/@syncfusion/ej2-splitbuttons/-/ej2-splitbuttons-18.2.44.tgz", + "integrity": "sha512-zR/q7OTow5CtV3ZJ2mTHdOhkYr6TeWTg3I4I47lee+6H9EFrryURmi3iyhVHaLQEG/RHW7o53kr9d7qqQwyFyQ==", "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "@syncfusion/ej2-base": "~18.2.44", + "@syncfusion/ej2-popups": "~18.2.44" } }, - "@types/json-schema": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", - "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "@types/node": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.5.0.tgz", - "integrity": "sha512-Onhn+z72D2O2Pb2ql2xukJ55rglumsVo1H6Fmyi8mlU9SvKdBk/pUSUAiBY/d9bAOF7VVWajX3sths/+g6ZiAQ==" - }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@types/prop-types": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz", - "integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==" + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==" + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, "@types/react": { - "version": "16.8.23", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.23.tgz", - "integrity": "sha512-abkEOIeljniUN9qB5onp++g0EY38h7atnDHxwKUFz1r3VH1+yG1OKi2sNPTyObL40goBmfKFpdii2lEzwLX1cA==", + "version": "16.9.36", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.36.tgz", + "integrity": "sha512-mGgUb/Rk/vGx4NCvquRuSH0GHBQKb1OqpGS9cT9lFxlTLHZgkksgI60TuIxubmn7JuCb+sENHhQciqa0npm0AQ==", "requires": { "@types/prop-types": "*", "csstype": "^2.2.0" } }, "@types/react-transition-group": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.3.tgz", - "integrity": "sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", + "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", "requires": { "@types/react": "*" } }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" - }, - "@types/yargs": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.7.tgz", - "integrity": "sha512-Sg9kNeJz+V+W+0fugcVhHC+mNHnydDR1RJrW5Qn2jVrDQARF8wfPVqIqwEzZp+bneuEBIm2ClsJ1/je42ZBzSg==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.18.0.tgz", - "integrity": "sha512-kuO8WQjV+RCZvAXVRJfXWiJ8iYEtfHlKgcqqqXg9uUkIolEHuUaMmm8/lcO4xwCOtaw6mY0gStn2Lg4/eUXXYQ==", - "requires": { - "@typescript-eslint/experimental-utils": "2.18.0", - "eslint-utils": "^1.4.3", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.18.0.tgz", - "integrity": "sha512-J6MopKPHuJYmQUkANLip7g9I82ZLe1naCbxZZW3O2sIxTiq/9YYoOELEKY7oPg0hJ0V/AQ225h2z0Yp+RRMXhw==", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.18.0", - "eslint-scope": "^5.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.18.0.tgz", - "integrity": "sha512-SJJPxFMEYEWkM6pGfcnjLU+NJIPo+Ko1QrCBL+i0+zV30ggLD90huEmMMhKLHBpESWy9lVEeWlQibweNQzyc+A==", - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.18.0", - "@typescript-eslint/typescript-estree": "2.18.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.18.0.tgz", - "integrity": "sha512-gVHylf7FDb8VSi2ypFuEL3hOtoC4HkZZ5dOjXvVjoyKdRrvXAOPSzpNRnKMfaUUEiSLP8UF9j9X9EDLxC0lfZg==", - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^6.3.0", - "tsutils": "^3.17.1" - } + "@types/tapable": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.2.tgz", + "integrity": "sha512-42zEJkBpNfMEAvWR5WlwtTH22oDzcMjFsL9gDGExwF8X8WvAiw7Vwop7hPw03QT8TKfec83LwbHj6SvpqM4ELQ==" }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==" }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==" }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==" }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.7.11" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==" }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==" }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==" }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", "requires": { - "@xtuc/long": "4.2.2" + "@xtuc/long": "4.2.1" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==" }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" } }, "@xtuc/ieee754": { @@ -3119,9 +1810,9 @@ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==" }, "abab": { "version": "2.0.3", @@ -3138,9 +1829,24 @@ } }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "requires": { + "acorn": "^5.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + } + } }, "acorn-globals": { "version": "4.3.4", @@ -3149,19 +1855,12 @@ "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" - } } }, "acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" }, "acorn-walk": { "version": "6.2.0", @@ -3169,42 +1868,23 @@ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" }, "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "adjust-sourcemap-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", - "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", - "requires": { - "assert": "1.4.1", - "camelcase": "5.0.0", - "loader-utils": "1.2.3", - "object-path": "0.11.4", - "regex-parser": "2.2.10" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - } - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "ajax-request": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/ajax-request/-/ajax-request-1.2.3.tgz", + "integrity": "sha1-mfy+wdbSeS+F+pSVNTMr0U9fN5A=", "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "file-system": "^2.1.1", + "utils-extend": "^1.0.7" } }, "ajv": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", - "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3233,12 +1913,9 @@ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" }, "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", - "requires": { - "type-fest": "^0.8.1" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "ansi-html": { "version": "0.0.7", @@ -3246,9 +1923,9 @@ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "3.2.1", @@ -3265,100 +1942,374 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "asn1": { + "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { @@ -3373,14 +2324,37 @@ "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } } }, "assert-plus": { @@ -3404,11 +2378,11 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.14" } }, "async-each": { @@ -3432,33 +2406,46 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.7.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", - "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", "requires": { - "browserslist": "^4.8.3", - "caniuse-lite": "^1.0.30001020", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.26", - "postcss-value-parser": "^4.0.2" + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -3468,9 +2455,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "axios": { "version": "0.19.2", @@ -3478,39 +2465,12 @@ "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { "follow-redirects": "1.5.10" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "axobject-query": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.1.tgz", - "integrity": "sha512-lF98xa/yvy6j3fBHAgQXIYl+J4eZadOSqsPojemUqClzNbBV38wWGpUbQbVEyf4eUF5yF7eHmGgGA2JiHyjeqw==", - "requires": { - "@babel/runtime": "^7.7.4", - "@babel/runtime-corejs3": "^7.7.4" - } + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", + "integrity": "sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ==" }, "babel-code-frame": { "version": "6.26.0", @@ -3522,11 +2482,6 @@ "js-tokens": "^3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -3549,14 +2504,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -3564,17 +2511,22 @@ } } }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" + }, "babel-eslint": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", - "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", + "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==", "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" } }, "babel-extract-comments": { @@ -3585,135 +2537,120 @@ "babylon": "^6.18.0" } }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" } } }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", + "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", "requires": { "find-cache-dir": "^2.0.0", "loader-utils": "^1.0.2", "mkdirp": "^0.5.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } + "util.promisify": "^1.0.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "requires": { "object.assign": "^4.1.0" } }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "babel-plugin-emotion": { + "version": "10.0.33", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz", + "integrity": "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" + "@babel/helper-module-imports": "^7.0.0", + "@emotion/hash": "0.8.0", + "@emotion/memoize": "0.7.4", + "@emotion/serialize": "^0.11.16", + "babel-plugin-macros": "^2.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "find-root": "^1.1.0", + "source-map": "^0.5.7" } }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "requires": { - "@types/babel__traverse": "^7.0.6" + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" } }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=" + }, "babel-plugin-macros": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.7.1.tgz", - "integrity": "sha512-HNM284amlKSQ6FddI4jLXD+XTqF0cTYOe5uemOIZxHJHnamC+OhFQ57rMF9sgnYhkJQptVl9U1SKVZsV9/GLQQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", "requires": { "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } } }, "babel-plugin-named-asset-import": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz", - "integrity": "sha512-sGhfINU+AuMw9oFAdIn/nD5sem3pn/WgxAfDZ//Q3CnF+5uaho7C7shh2rKLk6sKE/XkfmyibghocwKdVjLIKg==" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", + "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" }, "babel-plugin-styled-components": { "version": "1.10.7", @@ -3751,191 +2688,300 @@ "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" }, "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" } }, "babel-preset-react-app": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.0.tgz", - "integrity": "sha512-0qMOv/pCcCQWxX1eNyKD9GlzZTdzZIK/Pq3O6TGe65tZSJTSplw1pFlaPujm0GjBj4g3GeCQbP08vvzlH7OGHg==", - "requires": { - "@babel/core": "7.7.4", - "@babel/plugin-proposal-class-properties": "7.7.4", - "@babel/plugin-proposal-decorators": "7.7.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.7.4", - "@babel/plugin-proposal-numeric-separator": "7.7.4", - "@babel/plugin-proposal-object-rest-spread": "7.7.4", - "@babel/plugin-proposal-optional-chaining": "7.7.4", - "@babel/plugin-syntax-dynamic-import": "7.7.4", - "@babel/plugin-transform-destructuring": "7.7.4", - "@babel/plugin-transform-flow-strip-types": "7.7.4", - "@babel/plugin-transform-react-display-name": "7.7.4", - "@babel/plugin-transform-runtime": "7.7.4", - "@babel/preset-env": "7.7.4", - "@babel/preset-react": "7.7.4", - "@babel/preset-typescript": "7.7.4", - "@babel/runtime": "7.7.4", - "babel-plugin-dynamic-import-node": "2.3.0", - "babel-plugin-macros": "2.7.1", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-7.0.2.tgz", + "integrity": "sha512-mwCk/u2wuiO8qQqblN5PlDa44taY0acq7hw6W+a70W522P7a9mIcdggL1fe5/LgAT7tqCq46q9wwhqaMoYKslQ==", + "requires": { + "@babel/core": "7.2.2", + "@babel/plugin-proposal-class-properties": "7.3.0", + "@babel/plugin-proposal-decorators": "7.3.0", + "@babel/plugin-proposal-object-rest-spread": "7.3.2", + "@babel/plugin-syntax-dynamic-import": "7.2.0", + "@babel/plugin-transform-classes": "7.2.2", + "@babel/plugin-transform-destructuring": "7.3.2", + "@babel/plugin-transform-flow-strip-types": "7.2.3", + "@babel/plugin-transform-react-constant-elements": "7.2.0", + "@babel/plugin-transform-react-display-name": "7.2.0", + "@babel/plugin-transform-runtime": "7.2.0", + "@babel/preset-env": "7.3.1", + "@babel/preset-react": "7.0.0", + "@babel/preset-typescript": "7.1.0", + "@babel/runtime": "7.3.1", + "babel-loader": "8.0.5", + "babel-plugin-dynamic-import-node": "2.2.0", + "babel-plugin-macros": "2.5.0", "babel-plugin-transform-react-remove-prop-types": "0.4.24" }, "dependencies": { - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz", + "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==", "requires": { - "@babel/types": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz", - "integrity": "sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz", + "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.7.4" + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz", - "integrity": "sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A==", + "@babel/plugin-transform-classes": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", + "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.1.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.7.4" + "@babel/helper-replace-supers": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "globals": "^11.1.0" } }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", - "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", + "@babel/plugin-transform-destructuring": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz", + "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", - "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", + "@babel/plugin-transform-react-constant-elements": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz", + "integrity": "sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ==", "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz", - "integrity": "sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", + "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/preset-env": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.4.tgz", - "integrity": "sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", + "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", "requires": { - "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.4", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.4", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.4", - "@babel/plugin-transform-modules-commonjs": "^7.7.4", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.4", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.4", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.2.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.2.0", + "@babel/plugin-transform-classes": "^7.2.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.2.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "semver": "^5.3.0" } }, "@babel/preset-react": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.7.4.tgz", - "integrity": "sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", + "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.7.4", - "@babel/plugin-transform-react-jsx": "^7.7.4", - "@babel/plugin-transform-react-jsx-self": "^7.7.4", - "@babel/plugin-transform-react-jsx-source": "^7.7.4" + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" } }, "@babel/runtime": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.4.tgz", - "integrity": "sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", + "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.12.0" } }, - "@babel/types": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", - "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", + "babel-plugin-dynamic-import-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz", + "integrity": "sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA==", "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "object.assign": "^4.1.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "babel-plugin-macros": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.0.tgz", + "integrity": "sha512-BWw0lD0kVZAXRD3Od1kMrdmfudqzDzYv2qrN3l2ISR1HVp1EgLKfbOrYV9xmY5k3qx3RIu5uPAUZZZHpo0o5Iw==", + "requires": { + "cosmiconfig": "^5.0.5", + "resolve": "^1.8.1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" } } }, @@ -3960,6 +3006,67 @@ } } }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + } + } + }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", @@ -4025,6 +3132,15 @@ } } }, + "base64-img": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/base64-img/-/base64-img-1.0.4.tgz", + "integrity": "sha1-PiLVXWx0okVT2EDSsbwSp9sHjTU=", + "requires": { + "ajax-request": "^1.2.0", + "file-system": "^2.1.0" + } + }, "base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", @@ -4043,6 +3159,17 @@ "tweetnacl": "^0.14.3" } }, + "bfj": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz", + "integrity": "sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ==", + "requires": { + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "hoopy": "^0.1.2", + "tryer": "^1.0.0" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -4053,24 +3180,15 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==" }, "body-parser": { "version": "1.19.0", @@ -4102,11 +3220,6 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -4142,30 +3255,13 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "brorand": { @@ -4174,9 +3270,9 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "browser-resolve": { "version": "1.11.3", @@ -4234,20 +3330,29 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, "browserify-zlib": { @@ -4259,13 +3364,14 @@ } }, "browserslist": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.5.tgz", - "integrity": "sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", "requires": { - "caniuse-lite": "^1.0.30001022", - "electron-to-chromium": "^1.3.338", - "node-releases": "^1.1.46" + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" } }, "bser": { @@ -4284,13 +3390,6 @@ "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } } }, "buffer-from": { @@ -4323,13 +3422,6 @@ "walker": "1.x", "winston": "*", "wrench": "1.3.x" - }, - "dependencies": { - "uglify-js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", - "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=" - } } }, "builtin-status-codes": { @@ -4343,37 +3435,30 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", "requires": { - "chownr": "^1.1.2", + "bluebird": "^3.5.5", + "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", + "graceful-fs": "^4.1.15", "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", + "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" }, "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" } } }, @@ -4404,6 +3489,13 @@ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + } } }, "caller-path": { @@ -4415,9 +3507,9 @@ } }, "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camel-case": { "version": "3.0.0", @@ -4450,16 +3542,16 @@ } }, "caniuse-lite": { - "version": "1.0.30001023", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz", - "integrity": "sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA==" + "version": "1.0.30001083", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001083.tgz", + "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==" }, "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", "requires": { - "rsvp": "^4.8.4" + "rsvp": "^3.3.3" } }, "case-sensitive-paths-webpack-plugin": { @@ -4473,9 +3565,9 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4487,6 +3579,11 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "check-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", + "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==" + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -4506,561 +3603,54 @@ "upath": "^1.1.1" }, "dependencies": { - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true - }, - "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz", - "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "optional": true - } + "nan": "^2.12.1" } }, "glob-parent": { @@ -5082,6 +3672,27 @@ } } }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5090,9 +3701,9 @@ } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "chrome-trace-event": { "version": "1.0.2", @@ -5103,9 +3714,9 @@ } }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" }, "cipher-base": { "version": "1.0.4", @@ -5116,6 +3727,11 @@ "safe-buffer": "^5.0.1" } }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -5143,9 +3759,9 @@ "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" }, "clean-css": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.2.tgz", - "integrity": "sha512-yKycArwReQXbOD/3pmsPmt6p7oUBww8MisDabL2pCUWkbVONvCJoBdCjgY4ZVQmKX5juz/JB9oDcP6XzGUpjwQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "requires": { "source-map": "~0.6.0" }, @@ -5157,52 +3773,40 @@ } } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "ansi-regex": "^3.0.0" } } } @@ -5220,9 +3824,9 @@ } }, "clsx": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.0.4.tgz", - "integrity": "sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" }, "co": { "version": "4.6.0", @@ -5254,9 +3858,9 @@ } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -5301,17 +3905,6 @@ "requires": { "color": "3.0.x", "text-hex": "1.0.x" - }, - "dependencies": { - "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - } } }, "combined-stream": { @@ -5342,14 +3935,6 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, - "compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", - "requires": { - "arity-n": "^1.0.4" - } - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5380,10 +3965,10 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -5401,6 +3986,35 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "confusing-browser-globals": { @@ -5434,6 +4048,13 @@ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, "content-type": { @@ -5441,17 +4062,19 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "convert-css-length": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.1.tgz", - "integrity": "sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg==" - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, "cookie": { @@ -5483,16 +4106,16 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.8.5", "semver": "7.0.0" }, "dependencies": { @@ -5504,9 +4127,10 @@ } }, "core-js-pure": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", - "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==" + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5514,14 +4138,15 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" } }, "create-ecdh": { @@ -5531,6 +4156,13 @@ "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "create-hash": { @@ -5568,13 +4200,6 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, "crypto-browserify": { @@ -5595,32 +4220,39 @@ "randomfill": "^1.0.3" } }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" + "postcss": "^7.0.5" }, "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "requires": { - "postcss": "^7.0.5" - } - }, "css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -5638,6 +4270,31 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "css-has-pseudo": { @@ -5654,6 +4311,16 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -5663,38 +4330,39 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, "css-loader": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.2.0.tgz", - "integrity": "sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", + "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.17", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.0", - "schema-utils": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==" - } + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" } }, "css-prefers-color-scheme": { @@ -5703,6 +4371,31 @@ "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "requires": { "postcss": "^7.0.5" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "css-select": { @@ -5721,6 +4414,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, "css-to-react-native": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", @@ -5747,24 +4450,19 @@ } } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" - }, "css-vendor": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.7.tgz", - "integrity": "sha512-VS9Rjt79+p7M0WkPqcAza4Yq1ZHrsHrwf7hPL/bjQB+c1lwmAI+1FXxYTYt818D/50fFVflw0XKleiBN5RITkg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", "requires": { - "@babel/runtime": "^7.6.2", + "@babel/runtime": "^7.8.3", "is-in-browser": "^1.0.2" } }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==" }, "cssdb": { "version": "4.4.0", @@ -5790,6 +4488,74 @@ "cssnano-preset-default": "^4.0.7", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-preset-default": { @@ -5827,6 +4593,31 @@ "postcss-reduce-transforms": "^4.0.2", "postcss-svgo": "^4.0.2", "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-get-arguments": { @@ -5845,6 +4636,31 @@ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-same-parent": { @@ -5853,17 +4669,38 @@ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" }, "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "requires": { - "css-tree": "1.0.0-alpha.37" - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, "cssstyle": { "version": "1.4.0", @@ -5874,24 +4711,15 @@ } }, "csstype": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.6.tgz", - "integrity": "sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg==" + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==" }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "damerau-levenshtein": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", @@ -5928,11 +4756,11 @@ } }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "ms": "^2.1.1" + "ms": "2.0.0" } }, "decamelize": { @@ -5964,12 +4792,41 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", "requires": { - "execa": "^1.0.0", + "execa": "^0.10.0", "ip-regex": "^2.1.0" + }, + "dependencies": { + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + } + } + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "requires": { + "strip-bom": "^2.0.0" } }, "define-properties": { @@ -6023,17 +4880,16 @@ } }, "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "requires": { - "@types/glob": "^7.1.1", "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" }, "dependencies": { "globby": { @@ -6055,15 +4911,10 @@ } } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, @@ -6091,6 +4942,14 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "^2.0.0" + } + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -6117,11 +4976,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -6135,10 +4989,10 @@ "kuler": "1.0.x" } }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" }, "diffie-hellman": { "version": "5.0.3", @@ -6148,6 +5002,13 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "dir-glob": { @@ -6157,6 +5018,21 @@ "requires": { "arrify": "^1.0.1", "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } } }, "dns-equal": { @@ -6198,19 +5074,12 @@ } }, "dom-helpers": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.3.tgz", - "integrity": "sha512-nZD1OtwfWGRBWlpANxacBEZrEuLa16o1nh7YopFWeoF68Zt8GGEmzHu6Xv4F3XaFIC+YXtTLrzgqKxFgLEe4jw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz", + "integrity": "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==", "requires": { - "@babel/runtime": "^7.6.3", + "@babel/runtime": "^7.8.7", "csstype": "^2.6.7" - }, - "dependencies": { - "csstype": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.8.tgz", - "integrity": "sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA==" - } } }, "dom-serializer": { @@ -6265,22 +5134,22 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz", + "integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg==" }, "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" }, "duplexer": { "version": "0.1.1", @@ -6296,6 +5165,35 @@ "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "ecc-jsbn": { @@ -6313,9 +5211,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.340", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.340.tgz", - "integrity": "sha512-hRFBAglhcj5iVYH+o8QU0+XId1WGoc0VGowJB1cuJAt3exHGrivZvWeAO5BRgBZqwZtwxjm8a5MQeGoT/Su3ww==" + "version": "1.3.473", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.473.tgz", + "integrity": "sha512-smevlzzMNz3vMz6OLeeCq5HRWEj2AcgccNPYnAx4Usx0IOciq9DU36RJcICcS09hXoY7t7deRfVYKD14IrGb9A==" }, "elliptic": { "version": "6.5.2", @@ -6329,17 +5227,24 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, "enabled": { "version": "1.0.2", @@ -6354,6 +5259,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6363,9 +5276,9 @@ } }, "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", + "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", @@ -6380,18 +5293,45 @@ "errno": "^0.1.3", "readable-stream": "^2.0.1" } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } } } }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" }, "env-variable": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", - "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", + "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==" }, "errno": { "version": "0.1.7", @@ -6407,31 +5347,31 @@ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + } } }, "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - } + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -6444,35 +5384,6 @@ "is-symbol": "^1.0.2" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -6484,9 +5395,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz", - "integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz", + "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==", "requires": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -6504,101 +5415,110 @@ } }, "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz", + "integrity": "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==", "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", + "ajv": "^6.5.3", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.0", "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^2.0.0", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "glob": "^7.1.2", + "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "inquirer": "^6.1.0", + "js-yaml": "^3.12.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.14", + "lodash": "^4.17.5", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" }, "dependencies": { - "doctrine": { + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "esutils": "^2.0.2" + "ms": "^2.1.1" } }, - "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "requires": { - "type-fest": "^0.8.1" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "resolve-from": { + "strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } } } }, "eslint-config-prettier": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", - "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", "dev": true, "requires": { "get-stdin": "^6.0.0" } }, "eslint-config-react-app": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz", - "integrity": "sha512-hBaxisHC6HXRVvxX+/t1n8mOdmCVIKgkXsf2WoUkJi7upHJTwYTsdCmx01QPOjKNT34QMQQ9sL0tVBlbiMFjxA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-3.0.8.tgz", + "integrity": "sha512-Ovi6Bva67OjXrom9Y/SLJRkrGqKhMAL0XCH8BizPhjEVEhYczl2ZKiNZI2CuqO5/CJwAfMwRXAVGY0KToWr1aA==", "requires": { - "confusing-browser-globals": "^1.0.9" + "confusing-browser-globals": "^1.0.6" } }, "eslint-import-resolver-node": { @@ -6617,38 +5537,25 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "resolve": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", - "requires": { - "path-parse": "^1.0.6" - } } } }, "eslint-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.2.tgz", - "integrity": "sha512-S5VnD+UpVY1PyYRqeBd/4pgsmkvSokbHqTXAQMpvCyRr3XN2tvSLo9spm2nEpqQqh9dezw3os/0zWihLeOg2Rw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.1.1.tgz", + "integrity": "sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ==", "requires": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^1.3.1", - "schema-utils": "^2.2.0" + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" } }, "eslint-module-utils": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", - "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "requires": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -6662,49 +5569,6 @@ "ms": "2.0.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -6716,29 +5580,28 @@ } }, "eslint-plugin-flowtype": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", - "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", + "version": "2.50.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.1.tgz", + "integrity": "sha512-9kRxF9hfM/O6WGZcZPszOVPd2W0TLHBtceulLTsGfwMPtiCCLnCW0ssRiOOiXyqrCA20pm1iXdXm7gQeN306zQ==", "requires": { - "lodash": "^4.17.15" + "lodash": "^4.17.10" } }, "eslint-plugin-import": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", - "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", "requires": { - "array-includes": "^3.0.3", "contains-path": "^0.1.0", - "debug": "^2.6.9", + "debug": "^2.6.8", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", "read-pkg-up": "^2.0.0", - "resolve": "^1.11.0" + "resolve": "^1.6.0" }, "dependencies": { "debug": { @@ -6758,19 +5621,6 @@ "isarray": "^1.0.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -6782,41 +5632,6 @@ "strip-bom": "^3.0.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -6833,11 +5648,6 @@ "pify": "^2.0.0" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -6856,45 +5666,49 @@ "find-up": "^2.0.0", "read-pkg": "^2.0.0" } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" } } }, "eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz", + "integrity": "sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw==", "requires": { - "@babel/runtime": "^7.4.5", "aria-query": "^3.0.0", "array-includes": "^3.0.3", "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", + "axobject-query": "^2.0.1", "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", + "emoji-regex": "^6.5.1", "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1" + "jsx-ast-utils": "^2.0.1" }, "dependencies": { "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==" } } }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz", - "integrity": "sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz", + "integrity": "sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==", "dev": true, "requires": { "array-includes": "^3.1.1", @@ -6905,100 +5719,18 @@ "object.fromentries": "^2.0.2", "object.values": "^1.1.1", "prop-types": "^15.7.2", - "resolve": "^1.14.2" + "resolve": "^1.15.1", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" }, "dependencies": { - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", - "dev": true, - "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "resolve": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" + "@babel/runtime-corejs3": "^7.8.3" } } } @@ -7006,12 +5738,13 @@ "eslint-plugin-react-hooks": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "dev": true }, "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -7026,18 +5759,18 @@ } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==" }, "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" } }, "esprima": { @@ -7046,11 +5779,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==" + } } }, "esrecurse": { @@ -7067,9 +5807,9 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -7077,9 +5817,9 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" }, "events": { "version": "3.1.0", @@ -7104,9 +5844,12 @@ } }, "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "requires": { + "merge": "^1.2.0" + } }, "execa": { "version": "1.0.0", @@ -7128,61 +5871,32 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "^2.1.0" } }, "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", + "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", "requires": { - "@jest/types": "^24.9.0", "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" + "jest-diff": "^23.6.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" } }, "express": { @@ -7235,11 +5949,6 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -7249,21 +5958,11 @@ "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -7302,67 +6001,11 @@ } }, "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } + "is-extglob": "^1.0.0" } }, "extsprintf": { @@ -7371,9 +6014,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.2.0", @@ -7394,6 +6037,188 @@ "micromatch": "^3.1.10" }, "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -7412,38 +6237,125 @@ } } } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "requires": { - "bser": "2.1.1" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "requires": { + "bser": "2.1.1" } }, "fecha": { @@ -7452,40 +6364,66 @@ "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" }, "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", + "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "file-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/file-match/-/file-match-1.0.2.tgz", + "integrity": "sha1-ycrSZdLIrfOoFHWw30dYWQafrvc=", "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" + "utils-extend": "^1.0.6" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true + "file-system": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/file-system/-/file-system-2.2.2.tgz", + "integrity": "sha1-fWWDPjojR9zZVqgTxncVPtPt2Yc=", + "requires": { + "file-match": "^1.0.1", + "utils-extend": "^1.0.4" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } }, "filesize": { "version": "3.6.1", @@ -7493,22 +6431,23 @@ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "requires": { - "is-extendable": "^0.1.0" + "isarray": "1.0.0" } } } @@ -7534,11 +6473,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -7552,28 +6486,49 @@ "pkg-dir": "^3.0.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "^3.0.0" + "locate-path": "^2.0.0" } }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "fine-uploader": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz", + "integrity": "sha1-DYeNoc0nU/gGg6wJHfXa/5/7jEQ=" + }, + "fine-uploader-wrappers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fine-uploader-wrappers/-/fine-uploader-wrappers-1.0.1.tgz", + "integrity": "sha1-BEqUMgdr0CrBQEhm7G4Zf8Zi/L8=", "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "object-assign": "4.1.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=" + } } }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } }, "flatten": { "version": "1.0.3", @@ -7587,26 +6542,45 @@ "requires": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", - "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", - "requires": { - "debug": "^3.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "ms": "^2.1.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" } } } }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -7626,9 +6600,9 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "fork-ts-checker-webpack-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.0.tgz", - "integrity": "sha512-6OkRfjuNMNqb14f01xokcWcKV5Ekknc2FvziNpcTYru+kxIYFA2MtuuBI19MHThZnjSBhoi35Dcq+I0oUkFjmQ==", + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.0.0-alpha.6.tgz", + "integrity": "sha512-s/V+58nLrUjuXyzYk8AL11XG8bxIirTbafDLMn26sL59HQx8QvvsRTqOkhq4MV0coIkog1jZuH/E9Abm8zFZ2g==", "requires": { "babel-code-frame": "^6.22.0", "chalk": "^2.4.1", @@ -7636,258 +6610,1065 @@ "micromatch": "^3.1.10", "minimatch": "^3.0.4", "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "tapable": "^1.0.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "assert-plus": "^1.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "is-glob": "^4.0.1" + "map-cache": "^0.2.2" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" }, "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" }, "dependencies": { - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, - "gud": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "optional": true, "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gzip-size": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", + "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==", + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-js": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.4.tgz", + "integrity": "sha512-8RZBJq5smLOa7KslsNsVcSH+KOXf1uDU8yqLeNuVKwmT0T3FA0ZoXlinQfRad7SDcbZZRZE4ov+2v71EnxNyCA==", + "optional": true, + "requires": { + "commander": "~2.20.3" + } + } + } }, "har-schema": { "version": "2.0.0", @@ -7922,13 +7703,6 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } } }, "has-flag": { @@ -7937,9 +7711,9 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-value": { "version": "1.0.0", @@ -7960,6 +7734,24 @@ "kind-of": "^4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -7971,12 +7763,13 @@ } }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, "hash.js": { @@ -8021,6 +7814,11 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -8029,10 +7827,24 @@ "react-is": "^16.7.0" } }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" + }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" }, "hpack.js": { "version": "2.1.6", @@ -8043,6 +7855,35 @@ "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "hsl-regex": { @@ -8069,14 +7910,9 @@ } }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" - }, - "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" }, "html-minifier": { "version": "3.5.21", @@ -8096,19 +7932,41 @@ "version": "2.17.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + } + } } } }, "html-webpack-plugin": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz", - "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==", + "version": "4.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-alpha.2.tgz", + "integrity": "sha512-tyvhjVpuGqD7QYHi1l1drMQTg5i+qRxpQEGbdnYFREgOKy7aFDf/ocQ/V1fuEDlQx7jV2zMap3Hj2nE9i5eGXw==", "requires": { - "html-minifier": "^3.5.20", + "@types/tapable": "1.0.2", + "html-minifier": "^3.2.3", "loader-utils": "^1.1.0", - "lodash": "^4.17.11", - "pretty-error": "^2.1.1", - "tapable": "^1.1.0", + "lodash": "^4.17.10", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", "util.promisify": "1.0.0" }, "dependencies": { @@ -8140,62 +7998,325 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, - "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } } } }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" - }, - "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -8224,12 +8345,17 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "requires": { - "postcss": "^7.0.14" + "postcss": "^6.0.1" } }, "identity-obj-proxy": { @@ -8255,6 +8381,14 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, + "image-to-base64": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/image-to-base64/-/image-to-base64-2.1.0.tgz", + "integrity": "sha512-Qlm5F5EJUkxMEY0uPVwbfEkirv4WowHGRj9LBPYU3bAuFucwhvIJiH9g3aJZ91A89jVq9GzmayiNvE2sEjQ9YQ==", + "requires": { + "node-fetch": "^1.7.3" + } + }, "immer": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", @@ -8269,12 +8403,12 @@ } }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "import-from": { @@ -8283,15 +8417,32 @@ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "requires": { - "pkg-dir": "^3.0.0", + "pkg-dir": "^2.0.0", "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "requires": { + "find-up": "^2.1.0" + } + } } }, "imurmurhash": { @@ -8299,21 +8450,11 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -8324,9 +8465,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -8334,44 +8475,58 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "requires": { - "ansi-escapes": "^4.2.1", + "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", + "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-regex": "^4.1.0" } } } }, "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" } }, "invariant": { @@ -8398,9 +8553,9 @@ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-absolute-url": { "version": "2.1.0", @@ -8421,9 +8576,9 @@ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" }, "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-binary-path": { "version": "1.0.1", @@ -8446,16 +8601,16 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "requires": { - "ci-info": "^2.0.0" + "ci-info": "^1.5.0" } }, "is-color-stop": { @@ -8480,9 +8635,9 @@ } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-descriptor": { "version": "0.1.6", @@ -8506,32 +8661,50 @@ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "^1.0.0" } }, "is-in-browser": { @@ -8540,44 +8713,39 @@ "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { "kind-of": "^3.0.2" } }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" }, "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "requires": { - "is-path-inside": "^2.1.0" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { - "path-is-inside": "^1.0.2" + "path-is-inside": "^1.0.1" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -8586,17 +8754,22 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "is-regexp": { @@ -8610,9 +8783,9 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.0.0.tgz", + "integrity": "sha512-F/pJIk8QD6OX5DNhRB7hWamLsUilmkDGho48KbgZ6xg/lmAZXHxzXQ91jzB3yRSw5kdQGGGc4yz8HYhTYIMWPg==" }, "is-stream": { "version": "1.1.0", @@ -8626,1117 +8799,613 @@ }, "is-svg": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-what": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.5.1.tgz", - "integrity": "sha512-NHeqazf97ZVerGNEDmYG4+J4UY3uDQOjaJNMIMXw2i/tFfMconSgSK8Z27Y4VWMbM96E9ylroUSnD7jXRjzBwA==" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "requires": { - "html-escaper": "^2.0.0" - } - }, - "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } - } - }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "requires": { - "detect-newline": "^2.1.0" + "html-comment-regex": "^1.1.0" } }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "has-symbols": "^1.0.1" } }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - } + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "jest-environment-jsdom-fourteen": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-0.1.0.tgz", - "integrity": "sha512-4vtoRMg7jAstitRzL4nbw83VmGH8Rs13wrND3Ud2o1fczDhMUF32iIrNKwYGgeOPUdfvZU4oy8Bbv+ni1fgVCA==", - "requires": { - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0", - "jsdom": "^14.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } + "is-what": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.8.0.tgz", + "integrity": "sha512-UKeBoQfV8bjlM4pmx1FLDHdxslW/1mTksEs8ReVsilPmUv5cORd4+2/wFcviI3cUjrLybxCjzc8DnodAzJ/Wrg==" }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "optional": true - }, - "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", - "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz", - "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "optional": true - } + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "requires": { + "punycode": "2.x.x" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + }, + "dependencies": { + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==" + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", + "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", + "requires": { + "import-local": "^1.0.0", + "jest-cli": "^23.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "jest-cli": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", + "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.6.0", + "jest-environment-jsdom": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.6.0", + "jest-runner": "^23.6.0", + "jest-runtime": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "prompts": "^0.1.9", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^11.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", + "requires": { + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", + "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.6.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.6.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" } } }, + "jest-diff": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", + "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", + "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.6.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" + }, + "jest-haste-map": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", + "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + } + }, "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", + "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", + "requires": { + "babel-traverse": "^6.0.0", "chalk": "^2.0.1", "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" + "expect": "^23.6.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.6.0", + "jest-each": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.6.0" } }, "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", + "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "pretty-format": "^23.6.0" } }, "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", + "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", "requires": { "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" } }, "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", + "@babel/code-frame": "^7.0.0-beta.35", "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", + "micromatch": "^2.3.11", + "slash": "^1.0.0", "stack-utils": "^1.0.1" } }, "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "requires": { - "@jest/types": "^24.9.0" - } + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=" }, "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.0.2.tgz", + "integrity": "sha512-H2DvUlwdMedNGv4FOliPDnxani6ATWy70xe2eckGJgkLoMaWzRPqpSlc5ShqX0Ltk5OhRQvPQY2LLZPOpgcc7g==" }, "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=" }, "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", + "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", "requires": { - "@jest/types": "^24.9.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "realpath-native": "^1.0.0" } }, "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", + "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.6.0" } }, "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", + "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "requires": { "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.6.0", + "jest-jasmine2": "^23.6.0", + "jest-leak-detector": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.6.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } } } }, "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", + "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } } }, "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=" }, "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", + "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", + "babel-types": "^6.0.0", "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", + "jest-diff": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.6.0", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" + "pretty-format": "^23.6.0", + "semver": "^5.5.0" } }, "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "requires": { + "callsites": "^2.0.0", "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", "mkdirp": "^0.5.1", - "slash": "^2.0.0", + "slash": "^1.0.0", "source-map": "^0.6.0" }, "dependencies": { "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, "source-map": { "version": "0.6.1", @@ -9746,86 +9415,82 @@ } }, "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", + "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + } } }, "jest-watch-typeahead": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", - "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.2.1.tgz", + "integrity": "sha512-xdhEtKSj0gmnkDQbPTIHvcMmXNUDzYpHLEJ5TFqlaI+schi2NI96xhWiZk9QoesAS7oBmKwWWsHazTrYl2ORgg==", "requires": { - "ansi-escapes": "^4.2.1", + "ansi-escapes": "^3.0.0", "chalk": "^2.4.1", - "jest-regex-util": "^24.9.0", - "jest-watcher": "^24.3.0", - "slash": "^3.0.0", - "string-length": "^3.1.0", + "jest-watcher": "^23.1.0", + "slash": "^2.0.0", + "string-length": "^2.0.0", "strip-ansi": "^5.0.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" }, - "string-length": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", - "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" + "ansi-regex": "^4.1.0" } } } }, "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", - "jest-util": "^24.9.0", "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } } }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } + "merge-stream": "^1.0.1" + } + }, + "joi": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-11.4.0.tgz", + "integrity": "sha512-O7Uw+w/zEWgbL6OcHbyACKSj0PkQeUgmehdoXVSxt92QFCq4+1390Rwh5moI2K/OgC7D8RHRZqHZxT2husMJHA==", + "requires": { + "hoek": "4.x.x", + "isemail": "3.x.x", + "topo": "2.x.x" } }, "js-levenshtein": { @@ -9839,13 +9504,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", + "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=" }, "jsbn": { "version": "0.1.1", @@ -9886,9 +9547,9 @@ }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" } } }, @@ -9941,11 +9602,11 @@ "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "jsonfile": { @@ -9973,9 +9634,9 @@ } }, "jss": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.0.4.tgz", - "integrity": "sha512-GqHmeDK83qbqMAVjxyPfN1qJVTKZne533a9bdCrllZukUM8npG/k+JumEPI86IIB5ifaZAHG2HAsUziyxOiooQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.3.0.tgz", + "integrity": "sha512-B5sTRW9B6uHaUVzSo9YiMEOEp3UX8lWevU0Fsv+xtRnsShmgCfIYX44bTH8bPJe6LQKqEXku3ulKuHLbxBS97Q==", "requires": { "@babel/runtime": "^7.3.1", "csstype": "^2.6.5", @@ -9984,77 +9645,78 @@ } }, "jss-plugin-camel-case": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.4.tgz", - "integrity": "sha512-+wnqxJsyfUnOn0LxVg3GgZBSjfBCrjxwx7LFxwVTUih0ceGaXKZoieheNOaTo5EM4w8bt1nbb8XonpQCj67C6A==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.3.0.tgz", + "integrity": "sha512-tadWRi/SLWqLK3EUZEdDNJL71F3ST93Zrl9JYMjV0QDqKPAl0Liue81q7m/nFUpnSTXczbKDy4wq8rI8o7WFqA==", "requires": { "@babel/runtime": "^7.3.1", "hyphenate-style-name": "^1.0.3", - "jss": "10.0.4" + "jss": "^10.3.0" } }, "jss-plugin-default-unit": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.4.tgz", - "integrity": "sha512-T0mhL/Ogp/quvod/jAHEqKvptLDxq7Cj3a+7zRuqK8HxUYkftptN89wJElZC3rshhNKiogkEYhCWenpJdFvTBg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.3.0.tgz", + "integrity": "sha512-tT5KkIXAsZOSS9WDSe8m8lEHIjoEOj4Pr0WrG0WZZsMXZ1mVLFCSsD2jdWarQWDaRNyMj/I4d7czRRObhOxSuw==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.4" + "jss": "^10.3.0" } }, "jss-plugin-global": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.4.tgz", - "integrity": "sha512-N8n9/GHENZce+sqE4UYiZiJtI+t+erT/BypHOrNYAfIoNEj7OYsOEKfIo2P0GpLB3QyDAYf5eo9XNdZ8veEkUA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.3.0.tgz", + "integrity": "sha512-etYTG/y3qIR/vxZnKY+J3wXwObyBDNhBiB3l/EW9/pE3WHE//BZdK8LFvQcrCO48sZW1Z6paHo6klxUPP7WbzA==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.4" + "jss": "^10.3.0" } }, "jss-plugin-nested": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.4.tgz", - "integrity": "sha512-QM21BKVt8LDeoRfowvAMh/s+/89VYrreIIE6ch4pvw0oAXDWw1iorUPlqLZ7uCO3UL0uFtQhJq3QMLN6Lr1v0A==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.3.0.tgz", + "integrity": "sha512-qWiEkoXNEkkZ+FZrWmUGpf+zBsnEOmKXhkjNX85/ZfWhH9dfGxUCKuJFuOWFM+rjQfxV4csfesq4hY0jk8Qt0w==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.4", + "jss": "^10.3.0", "tiny-warning": "^1.0.2" } }, "jss-plugin-props-sort": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.4.tgz", - "integrity": "sha512-WoETdOCjGskuin/OMt2uEdDPLZF3vfQuHXF+XUHGJrq0BAapoyGQDcv37SeReDlkRAbVXkEZPsIMvYrgHSHFiA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.3.0.tgz", + "integrity": "sha512-boetORqL/lfd7BWeFD3K+IyPqyIC+l3CRrdZr+NPq7Noqp+xyg/0MR7QisgzpxCEulk+j2CRcEUoZsvgPC4nTg==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.4" + "jss": "^10.3.0" } }, "jss-plugin-rule-value-function": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.4.tgz", - "integrity": "sha512-0hrzOSWRF5ABJGaHrlnHbYZjU877Ofzfh2id3uLtBvemGQLHI+ldoL8/+6iPSRa7M8z8Ngfg2vfYhKjUA5gA0g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.3.0.tgz", + "integrity": "sha512-7WiMrKIHH3rwxTuJki9+7nY11r1UXqaUZRhHvqTD4/ZE+SVhvtD5Tx21ivNxotwUSleucA/8boX+NF21oXzr5Q==", "requires": { "@babel/runtime": "^7.3.1", - "jss": "10.0.4" + "jss": "^10.3.0", + "tiny-warning": "^1.0.2" } }, "jss-plugin-vendor-prefixer": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.4.tgz", - "integrity": "sha512-4JgEbcrdeMda1qvxTm1CnxFJAWVV++VLpP46HNTrfH7VhVlvUpihnUNs2gAlKuRT/XSBuiWeLAkrTqF4NVrPig==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.3.0.tgz", + "integrity": "sha512-sZQbrcZyP5V0ADjCLwUA1spVWoaZvM7XZ+2fSeieZFBj31cRsnV7X70FFDerMHeiHAXKWzYek+67nMDjhrZAVQ==", "requires": { "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.7", - "jss": "10.0.4" + "css-vendor": "^2.0.8", + "jss": "^10.3.0" } }, "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", "requires": { - "array-includes": "^3.0.3", + "array-includes": "^3.1.1", "object.assign": "^4.1.0" } }, @@ -10067,13 +9729,6 @@ "moo-server": "1.3.x", "promised-io": "*", "walker": "1.x" - }, - "dependencies": { - "js-yaml": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", - "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=" - } } }, "killable": { @@ -10090,9 +9745,9 @@ } }, "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", + "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==" }, "kuler": { "version": "1.0.1", @@ -10157,23 +9812,34 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + } } }, "loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", - "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", "requires": { "find-cache-dir": "^0.1.1", - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" }, "dependencies": { "find-cache-dir": { @@ -10219,12 +9885,12 @@ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -10239,11 +9905,11 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "^3.0.0", + "p-locate": "^2.0.0", "path-exists": "^3.0.0" } }, @@ -10257,6 +9923,11 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -10267,6 +9938,11 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" + }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", @@ -10299,12 +9975,19 @@ "fecha": "^2.3.3", "ms": "^2.1.1", "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==" + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" }, "loose-envify": { "version": "1.4.0", @@ -10325,13 +10008,6 @@ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { "yallist": "^3.0.2" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } } }, "make-dir": { @@ -10347,11 +10023,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -10363,11 +10034,6 @@ "tmpl": "1.0.x" } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -10394,6 +10060,11 @@ "resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz", "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -10422,6 +10093,13 @@ "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + } } }, "memoize-one": { @@ -10436,8 +10114,42 @@ "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" + }, "merge-anything": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz", @@ -10462,50 +10174,70 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "miller-rabin": { @@ -10515,62 +10247,55 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" }, "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "mini-create-react-context": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz", - "integrity": "sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", + "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", "requires": { - "@babel/runtime": "^7.4.0", - "gud": "^1.0.0", - "tiny-warning": "^1.0.2" + "@babel/runtime": "^7.5.5", + "tiny-warning": "^1.0.3" } }, "mini-css-extract-plugin": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", - "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", + "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", "requires": { "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", "schema-utils": "^1.0.0", "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } } }, "minimalistic-assert": { @@ -10592,41 +10317,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", - "requires": { - "minipass": "^3.0.0" - } + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mississippi": { "version": "3.0.0", @@ -10681,20 +10374,18 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, + "moment": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", + "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" + }, "moo-server": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", @@ -10714,9 +10405,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multicast-dns": { "version": "6.2.3", @@ -10733,14 +10424,14 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" }, "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", "optional": true }, "nanomatch": { @@ -10761,6 +10452,16 @@ "to-regex": "^3.0.1" }, "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -10783,11 +10484,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -10801,6 +10497,15 @@ "lower-case": "^1.1.1" } }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, "node-forge": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", @@ -10846,21 +10551,37 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" - }, "node-notifier": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", @@ -10871,22 +10592,12 @@ "semver": "^5.5.0", "shellwords": "^0.1.1", "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, "node-releases": { - "version": "1.1.47", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz", - "integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==", - "requires": { - "semver": "^6.3.0" - } + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==" }, "normalize-package-data": { "version": "2.5.0", @@ -10897,13 +10608,6 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, "normalize-path": { @@ -10919,21 +10623,10 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, - "normalize-scroll-left": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz", - "integrity": "sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA==" - }, "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" }, "npm-run-path": { "version": "2.0.2", @@ -11007,20 +10700,19 @@ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -11041,62 +10733,14 @@ } }, "object.entries": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.17.5", "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "requires": { - "has": "^1.0.3" - } - } } }, "object.fromentries": { @@ -11108,54 +10752,6 @@ "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "requires": { - "has": "^1.0.3" - } - } } }, "object.getownpropertydescriptors": { @@ -11167,6 +10763,15 @@ "es-abstract": "^1.17.0-next.1" } }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -11218,42 +10823,27 @@ "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", - "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "is-wsl": "^2.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==" - } + "mimic-fn": "^1.0.0" } }, "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", "requires": { "is-wsl": "^1.1.0" } }, "optimize-css-assets-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==", "requires": { - "cssnano": "^4.1.10", + "cssnano": "^4.1.0", "last-call-webpack-plugin": "^3.0.0" } }, @@ -11283,6 +10873,11 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -11303,14 +10898,6 @@ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "requires": { - "p-reduce": "^1.0.0" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -11322,51 +10909,35 @@ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^1.1.0" } }, "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "requires": { - "retry": "^0.12.0" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parallel-transform": { "version": "1.2.0", @@ -11376,6 +10947,35 @@ "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "param-case": { @@ -11392,13 +10992,6 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "requires": { "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } } }, "parse-asn1": { @@ -11414,13 +11007,26 @@ "safe-buffer": "^5.1.1" } }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "requires": { + "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" } }, "parse5": { @@ -11479,20 +11085,24 @@ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "requires": { "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } } }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -11506,10 +11116,16 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "optional": true + }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", @@ -11524,92 +11140,89 @@ "pinkie": "^2.0.0" } }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "requires": { "find-up": "^3.0.0" - } - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "requires": { - "find-up": "^2.1.0" }, "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" } } }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" }, "pnp-webpack-plugin": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz", - "integrity": "sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.2.1.tgz", + "integrity": "sha512-W6GctK7K2qQiVR+gYSv/Gyt6jwwIH4vwdviFqx+Y2jAtVf5eZyYIDf5Ac2NCDMBiX5yWscBLZElPTsyA1UtVVA==", "requires": { - "ts-pnp": "^1.1.2" + "ts-pnp": "^1.0.0" } }, "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", "requires": { "async": "^2.6.2", "debug": "^3.1.1", @@ -11623,6 +11236,11 @@ "requires": { "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -11632,33 +11250,39 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", - "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "requires": { - "chalk": "^2.4.2", + "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "supports-color": "^5.4.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" } }, "source-map": { @@ -11676,47 +11300,42 @@ } } }, - "postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "postcss-browser-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", - "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", - "requires": { - "postcss": "^7" - } - }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" }, "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "has-flag": "^3.0.0" } } } @@ -11728,6 +11347,31 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-color-gray": { @@ -11738,6 +11382,31 @@ "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-color-hex-alpha": { @@ -11747,6 +11416,31 @@ "requires": { "postcss": "^7.0.14", "postcss-values-parser": "^2.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-color-mod-function": { @@ -11757,6 +11451,31 @@ "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-color-rebeccapurple": { @@ -11766,6 +11485,31 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-colormin": { @@ -11778,6 +11522,31 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-convert-values": { @@ -11787,6 +11556,31 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-custom-media": { @@ -11795,6 +11589,31 @@ "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "requires": { "postcss": "^7.0.14" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-custom-properties": { @@ -11804,6 +11623,31 @@ "requires": { "postcss": "^7.0.17", "postcss-values-parser": "^2.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-custom-selectors": { @@ -11820,6 +11664,16 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -11829,6 +11683,19 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11846,6 +11713,16 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -11855,6 +11732,19 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11864,6 +11754,31 @@ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-duplicates": { @@ -11872,6 +11787,31 @@ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-empty": { @@ -11880,6 +11820,31 @@ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-overridden": { @@ -11888,6 +11853,31 @@ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-double-position-gradients": { @@ -11897,6 +11887,31 @@ "requires": { "postcss": "^7.0.5", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-env-function": { @@ -11906,6 +11921,31 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-flexbugs-fixes": { @@ -11914,6 +11954,31 @@ "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-focus-visible": { @@ -11922,6 +11987,31 @@ "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-focus-within": { @@ -11930,6 +12020,31 @@ "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-font-variant": { @@ -11938,6 +12053,31 @@ "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-gap-properties": { @@ -11946,6 +12086,31 @@ "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-image-set-function": { @@ -11955,6 +12120,31 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-initial": { @@ -11964,6 +12154,31 @@ "requires": { "lodash.template": "^4.5.0", "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-lab-function": { @@ -11974,6 +12189,31 @@ "@csstools/convert-colors": "^1.4.0", "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-load-config": { @@ -11983,6 +12223,51 @@ "requires": { "cosmiconfig": "^5.0.0", "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "postcss-loader": { @@ -11996,32 +12281,95 @@ "schema-utils": "^1.0.0" }, "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" } } } }, - "postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "requires": { - "postcss": "^7.0.2" - } - }, "postcss-media-minmax": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-merge-longhand": { @@ -12033,6 +12381,31 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-merge-rules": { @@ -12048,15 +12421,38 @@ "vendors": "^1.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -12067,6 +12463,31 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-minify-gradients": { @@ -12078,6 +12499,31 @@ "is-color-stop": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-minify-params": { @@ -12091,6 +12537,31 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-minify-selectors": { @@ -12104,60 +12575,74 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", "requires": { - "postcss": "^7.0.5" + "postcss": "^6.0.1" } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==" - } + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" } }, "postcss-modules-scope": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", - "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" } }, "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" } }, "postcss-nesting": { @@ -12166,18 +12651,31 @@ "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "requires": { "postcss": "^7.0.2" - } - }, - "postcss-normalize": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", - "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", - "requires": { - "@csstools/normalize.css": "^10.1.0", - "browserslist": "^4.6.2", - "postcss": "^7.0.17", - "postcss-browser-comments": "^3.0.0", - "sanitize.css": "^10.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-charset": { @@ -12186,6 +12684,31 @@ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-display-values": { @@ -12196,6 +12719,31 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-positions": { @@ -12207,6 +12755,31 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-repeat-style": { @@ -12218,6 +12791,31 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-string": { @@ -12228,6 +12826,31 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-timing-functions": { @@ -12238,6 +12861,31 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-unicode": { @@ -12248,6 +12896,31 @@ "browserslist": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-url": { @@ -12261,10 +12934,28 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -12275,6 +12966,31 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-ordered-values": { @@ -12285,6 +13001,31 @@ "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-overflow-shorthand": { @@ -12293,6 +13034,31 @@ "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-page-break": { @@ -12301,6 +13067,31 @@ "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-place": { @@ -12310,29 +13101,54 @@ "requires": { "postcss": "^7.0.2", "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.5.0.tgz", + "integrity": "sha512-RdsIrYJd9p9AouQoJ8dFP5ksBJEIegA4q4WzJDih8nevz3cZyIP/q1Eaw3pTVpUAu3n7Y32YmvAW3X07mSRGkw==", "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", + "autoprefixer": "^9.4.2", + "browserslist": "^4.3.5", + "caniuse-lite": "^1.0.30000918", "css-blank-pseudo": "^0.1.4", "css-has-pseudo": "^0.10.0", "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", + "cssdb": "^4.3.0", + "postcss": "^7.0.6", + "postcss-attribute-case-insensitive": "^4.0.0", "postcss-color-functional-notation": "^2.0.1", "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-hex-alpha": "^5.0.2", "postcss-color-mod-function": "^3.0.3", "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", + "postcss-custom-media": "^7.0.7", + "postcss-custom-properties": "^8.0.9", "postcss-custom-selectors": "^5.1.2", "postcss-dir-pseudo-class": "^5.0.0", "postcss-double-position-gradients": "^1.0.0", @@ -12354,6 +13170,31 @@ "postcss-replace-overflow-wrap": "^3.0.0", "postcss-selector-matches": "^4.0.0", "postcss-selector-not": "^4.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-pseudo-class-any-link": { @@ -12370,6 +13211,16 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", @@ -12379,6 +13230,19 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -12391,6 +13255,31 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-reduce-transforms": { @@ -12402,6 +13291,31 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-replace-overflow-wrap": { @@ -12410,6 +13324,31 @@ "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-safe-parser": { @@ -12418,6 +13357,31 @@ "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-selector-matches": { @@ -12427,6 +13391,31 @@ "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-selector-not": { @@ -12436,6 +13425,31 @@ "requires": { "balanced-match": "^1.0.0", "postcss": "^7.0.2" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-selector-parser": { @@ -12457,6 +13471,31 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-unique-selectors": { @@ -12467,6 +13506,31 @@ "alphanum-sort": "^1.0.0", "postcss": "^7.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-value-parser": { @@ -12489,10 +13553,10 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { "version": "1.18.2", @@ -12510,9 +13574,9 @@ } }, "pretty-bytes": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", - "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, "pretty-error": { "version": "2.1.1", @@ -12524,20 +13588,18 @@ } }, "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" } } }, @@ -12552,9 +13614,9 @@ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", @@ -12562,9 +13624,9 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", - "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.2.tgz", + "integrity": "sha512-EIyzM39FpVOMbqgzEHhxdrEhtOSDOtjMZQ0M6iVfCE+kWNgCkAyOdnuCWqfmflylftfadU6FkiMgHZA2kUzwRw==", "requires": { "asap": "~2.0.6" } @@ -12575,17 +13637,17 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "promised-io": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", - "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.6.tgz", + "integrity": "sha512-bNwZusuNIW4m0SPR8jooSyndD35ggirHlxVl/UhIaZD/F0OBv9ebfc6tNmbpZts3QXHggkjIBH8lvtnzhtcz0A==" }, "prompts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz", - "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.3" + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" } }, "prop-types": { @@ -12599,12 +13661,12 @@ } }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -12613,9 +13675,9 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "public-encrypt": { "version": "4.0.3", @@ -12628,6 +13690,13 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "pump": { @@ -12675,15 +13744,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -12707,6 +13767,28 @@ "performance-now": "^2.1.0" } }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -12748,9 +13830,9 @@ } }, "react": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz", - "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -12758,204 +13840,247 @@ } }, "react-app-polyfill": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.5.tgz", - "integrity": "sha512-RcbV6+msbvZJZUIK/LX3UafPtoaDSJgUWu4sqBxHKTVmBsnlU2QWCKJRBRmgjxu+ivW/GPINbPWRM4Ppa6Lbgw==", - "requires": { - "core-js": "^3.4.1", - "object-assign": "^4.1.1", - "promise": "^8.0.3", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.3", - "whatwg-fetch": "^3.0.0" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-0.2.2.tgz", + "integrity": "sha512-mAYn96B/nB6kWG87Ry70F4D4rsycU43VYTj3ZCbKP+SLJXwC0x6YCbwcICh3uW8/C9s1VgP197yx+w7SCWeDdQ==", + "requires": { + "core-js": "2.6.4", + "object-assign": "4.1.1", + "promise": "8.0.2", + "raf": "3.4.1", + "whatwg-fetch": "3.0.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.4.tgz", + "integrity": "sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A==" + } } }, "react-dev-utils": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.0.0.tgz", - "integrity": "sha512-8OKSJvl8ccXJDNf0YGw377L9v1OnT16skD/EuZWm0M/yr255etP4x4kuUCT1EfFfJ7Rhc4ZTpPTfPrvgiXa50Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-8.0.0.tgz", + "integrity": "sha512-TK8cj7eghvxfe7bfBluLGpI/upo4EXC+G74hYmPucAG8C2XcbT+vKnlWPwLnABb75Zk+mR6D556Da+yvDjljrw==", "requires": { - "@babel/code-frame": "7.5.5", - "address": "1.1.2", - "browserslist": "4.7.3", + "@babel/code-frame": "7.0.0", + "address": "1.0.3", + "browserslist": "4.4.1", "chalk": "2.4.2", "cross-spawn": "6.0.5", "detect-port-alt": "1.1.6", "escape-string-regexp": "1.0.5", "filesize": "3.6.1", "find-up": "3.0.0", - "fork-ts-checker-webpack-plugin": "3.1.0", + "fork-ts-checker-webpack-plugin": "1.0.0-alpha.6", "global-modules": "2.0.0", "globby": "8.0.2", - "gzip-size": "5.1.1", + "gzip-size": "5.0.0", "immer": "1.10.0", - "inquirer": "6.5.0", - "is-root": "2.1.0", + "inquirer": "6.2.1", + "is-root": "2.0.0", "loader-utils": "1.2.3", - "open": "^7.0.0", + "opn": "5.4.0", "pkg-up": "2.0.0", - "react-error-overlay": "^6.0.4", + "react-error-overlay": "^5.1.4", "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "5.2.0", + "shell-quote": "1.6.1", + "sockjs-client": "1.3.0", + "strip-ansi": "5.0.0", "text-table": "0.2.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "requires": { "@babel/highlight": "^7.0.0" } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "browserslist": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.3.tgz", - "integrity": "sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ==", - "requires": { - "caniuse-lite": "^1.0.30001010", - "electron-to-chromium": "^1.3.306", - "node-releases": "^1.1.40" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", + "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "caniuse-lite": "^1.0.30000929", + "electron-to-chromium": "^1.3.103", + "node-releases": "^1.1.3" } }, - "cli-cursor": { + "emojis-list": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "^2.0.0" - } + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "escape-string-regexp": "^1.0.5" + "locate-path": "^3.0.0" } }, "inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^3.0.3", + "external-editor": "^3.0.0", "figures": "^2.0.0", - "lodash": "^4.17.12", + "lodash": "^4.17.10", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "rxjs": "^6.1.0", "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^5.0.0", "through": "^2.3.6" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "mimic-fn": "^1.0.0" + "p-try": "^2.0.0" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "p-limit": "^2.0.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "ansi-regex": "^4.0.0" } } } }, "react-dom": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.12.0.tgz", - "integrity": "sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.18.0" + "scheduler": "^0.19.1" + } + }, + "react-dropdown": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/react-dropdown/-/react-dropdown-1.7.0.tgz", + "integrity": "sha512-zFZ73pgLA32hArpE4j/7DtOEhOMg240XG5QvbAb0/VinGekkHDVIakMyAFUKC5jDz8jqXEltgriqFW9R5iCtPQ==", + "requires": { + "classnames": "^2.2.3" + } + }, + "react-easy-crop": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-2.1.2.tgz", + "integrity": "sha512-LHXQFyJVXGMgmjSzX1KMeX1uE/dI26O2608DsrlCDwRKOkaS7Kb6pQjeS30efGfzrRkUD5Qff+ANxhaPO+pVNg==", + "requires": { + "@emotion/core": "^10.0.27", + "@emotion/styled": "^10.0.27", + "tslib": "1.11.2" } }, "react-easy-swipe": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/react-easy-swipe/-/react-easy-swipe-0.0.16.tgz", - "integrity": "sha1-Wj2Umo+XXQW+kqgYJUMV0TGKgeo=", + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/react-easy-swipe/-/react-easy-swipe-0.0.18.tgz", + "integrity": "sha512-IddCZANbT0qVbGFEihfWOkZb/rFpeA3VV87SNOOqPzmSZ93G0nDSyHD28zuGhYJilwEP33MqYv/dwo+zaZha3Q==", "requires": { "prop-types": "^15.5.8" } }, "react-error-overlay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.4.tgz", - "integrity": "sha512-ueZzLmHltszTshDMwyfELDq8zOA803wQ1ZuzCccXa1m57k1PxSHfflPD5W9YIiTXLs0JTLzoj6o1LuM5N6zzNA==" + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.6.tgz", + "integrity": "sha512-X1Y+0jR47ImDVr54Ab6V9eGk0Hnu7fVWGeHQSOXHf/C2pF9c6uy3gef8QUeuUiWlNb0i08InPSE5a/KJzNzw1Q==" + }, + "react-fine-uploader": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-fine-uploader/-/react-fine-uploader-1.1.1.tgz", + "integrity": "sha512-aUOZO3Wr8OynK2LyF2QMPHSe6gWSonNyk/hgo6olBRim92T/sa07pcy/sR2ljucrv9IaJC61Qb8ZGGfcs/I82A==", + "requires": { + "fine-uploader-wrappers": "^1.0.1", + "object-assign": "4.1.1", + "react-transition-group": "2.x" + }, + "dependencies": { + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + } + } }, "react-google-login": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/react-google-login/-/react-google-login-5.0.7.tgz", - "integrity": "sha512-e/OU8PcvtVetD73hZ9/g4k4K3GrOHb0bTXU1i2xZBzSCCfDY/QW6M7oQpwvPwyZ3C3clz0YWUFJkxX65PSdgQg==", + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/react-google-login/-/react-google-login-5.1.20.tgz", + "integrity": "sha512-/5vDx8Hy7Wo1fO1VC/0e5D6/ZGWgIgvcscI8mYZUQ653QOFf0c4GhTnKkebX5uE7m5rAB/2bzzZIUlIesGqWig==", "requires": { "@types/react": "*", "prop-types": "^15.6.0" @@ -12970,17 +14095,41 @@ } }, "react-icons": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-3.8.0.tgz", - "integrity": "sha512-rA/8GRKjPulft8BSBSMsHkE1AGPqJ7LjNsyk0BE7XjG70Iz62zOled2SJk7LDo8x9z86a3xOstDlKlMZ4pAy7A==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-3.10.0.tgz", + "integrity": "sha512-WsQ5n1JToG9VixWilSo1bHv842Cj5aZqTGiS3Ud47myF6aK7S/IUY2+dHcBdmkQcCFRuHsJ9OMUI0kTDfjyZXQ==", "requires": { "camelcase": "^5.0.0" } }, + "react-image-crop": { + "version": "8.6.4", + "resolved": "https://registry.npmjs.org/react-image-crop/-/react-image-crop-8.6.4.tgz", + "integrity": "sha512-5buyhUg9slzW+QGvN2dbpGSI1VqPxxmfEwe19TZXUB7LjW5+ljZOnrTSsteIzeBqmz6ngVucc8l+OrwgcDOSNg==", + "requires": { + "clsx": "^1.0.4", + "core-js": "^3.4.2", + "prop-types": "^15.7.2" + } + }, + "react-input-mask": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-input-mask/-/react-input-mask-2.0.4.tgz", + "integrity": "sha512-1hwzMr/aO9tXfiroiVCx5EtKohKwLk/NT8QlJXHQ4N+yJJFyUuMT+zfTpLBwX/lK3PkuMlievIffncpMZ3HGRQ==", + "requires": { + "invariant": "^2.2.4", + "warning": "^4.0.2" + } + }, "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-recaptcha": { "version": "2.3.10", @@ -12988,25 +14137,25 @@ "integrity": "sha512-IyanbozsYCuHvTYDuskZTIEcRAMG/sdvAu5b29iQWoC8Kd3Zk9WGCv2oNxh6RfGHvSvgHAyaLjmC6ei/yMsJ7g==" }, "react-responsive-carousel": { - "version": "3.1.51", - "resolved": "https://registry.npmjs.org/react-responsive-carousel/-/react-responsive-carousel-3.1.51.tgz", - "integrity": "sha512-hb74s8Cj9g3ppNxQeDwsIekTp2EOFO2MdmYXKIqjFS3oMHQE9Fg1lKn4j5tiIhAQAKQlNgy6hfqeS2aIO/Sicg==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/react-responsive-carousel/-/react-responsive-carousel-3.2.7.tgz", + "integrity": "sha512-uqGCnoZukU+U1relhTNe8eVX/hMT5ELh1uxHCOxR6cH+A67eG2aX68e1pJnohWqXqPj/u+Pupt1q5j8LGhDabA==", "requires": { "classnames": "^2.2.5", "prop-types": "^15.5.8", - "react-easy-swipe": "^0.0.16" + "react-easy-swipe": "^0.0.18" } }, "react-router": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.1.2.tgz", - "integrity": "sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", + "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", "requires": { "@babel/runtime": "^7.1.2", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.3.0", + "mini-create-react-context": "^0.4.0", "path-to-regexp": "^1.7.0", "prop-types": "^15.6.2", "react-is": "^16.6.0", @@ -13015,93 +14164,93 @@ } }, "react-router-dom": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.1.2.tgz", - "integrity": "sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", + "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", "requires": { "@babel/runtime": "^7.1.2", "history": "^4.9.0", "loose-envify": "^1.3.1", "prop-types": "^15.6.2", - "react-router": "5.1.2", + "react-router": "5.2.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" } }, "react-scripts": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.3.0.tgz", - "integrity": "sha512-hzPc6bxCc9GnsspWqk494c2Gpd0dRbk/C8q76BNQIENi9GMwoxFljOEcZoZcpFpJgQ45alxFR6QaLt+51qie7g==", - "requires": { - "@babel/core": "7.7.4", - "@svgr/webpack": "4.3.3", - "@typescript-eslint/eslint-plugin": "^2.8.0", - "@typescript-eslint/parser": "^2.8.0", - "babel-eslint": "10.0.3", - "babel-jest": "^24.9.0", - "babel-loader": "8.0.6", - "babel-plugin-named-asset-import": "^0.3.5", - "babel-preset-react-app": "^9.1.0", - "camelcase": "^5.3.1", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-2.1.8.tgz", + "integrity": "sha512-mDC8fYWCyuB9VROti8OCPdHE79UEchVVZmuS/yaIs47VkvZpgZqUvzghYBswZRchqnW0aARNY8xXrzoFRhhK7A==", + "requires": { + "@babel/core": "7.2.2", + "@svgr/webpack": "4.1.0", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "9.0.0", + "babel-jest": "23.6.0", + "babel-loader": "8.0.5", + "babel-plugin-named-asset-import": "^0.3.1", + "babel-preset-react-app": "^7.0.2", + "bfj": "6.1.1", "case-sensitive-paths-webpack-plugin": "2.2.0", - "css-loader": "3.2.0", - "dotenv": "8.2.0", - "dotenv-expand": "5.1.0", - "eslint": "^6.6.0", - "eslint-config-react-app": "^5.1.0", - "eslint-loader": "3.0.2", - "eslint-plugin-flowtype": "3.13.0", - "eslint-plugin-import": "2.18.2", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-react": "7.16.0", - "eslint-plugin-react-hooks": "^1.6.1", - "file-loader": "4.3.0", - "fs-extra": "^8.1.0", - "fsevents": "2.1.2", - "html-webpack-plugin": "4.0.0-beta.5", + "css-loader": "1.0.0", + "dotenv": "6.0.0", + "dotenv-expand": "4.2.0", + "eslint": "5.12.0", + "eslint-config-react-app": "^3.0.8", + "eslint-loader": "2.1.1", + "eslint-plugin-flowtype": "2.50.1", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-jsx-a11y": "6.1.2", + "eslint-plugin-react": "7.12.4", + "file-loader": "2.0.0", + "fs-extra": "7.0.1", + "fsevents": "1.2.4", + "html-webpack-plugin": "4.0.0-alpha.2", "identity-obj-proxy": "3.0.0", - "jest": "24.9.0", - "jest-environment-jsdom-fourteen": "0.1.0", - "jest-resolve": "24.9.0", - "jest-watch-typeahead": "0.4.2", - "mini-css-extract-plugin": "0.8.0", - "optimize-css-assets-webpack-plugin": "5.0.3", - "pnp-webpack-plugin": "1.5.0", + "jest": "23.6.0", + "jest-pnp-resolver": "1.0.2", + "jest-resolve": "23.6.0", + "jest-watch-typeahead": "^0.2.1", + "mini-css-extract-plugin": "0.5.0", + "optimize-css-assets-webpack-plugin": "5.0.1", + "pnp-webpack-plugin": "1.2.1", "postcss-flexbugs-fixes": "4.1.0", "postcss-loader": "3.0.0", - "postcss-normalize": "8.0.1", - "postcss-preset-env": "6.7.0", + "postcss-preset-env": "6.5.0", "postcss-safe-parser": "4.0.1", - "react-app-polyfill": "^1.0.5", - "react-dev-utils": "^10.0.0", - "resolve": "1.12.2", - "resolve-url-loader": "3.1.1", - "sass-loader": "8.0.0", - "semver": "6.3.0", - "style-loader": "1.0.0", - "terser-webpack-plugin": "2.2.1", - "ts-pnp": "1.1.5", - "url-loader": "2.3.0", - "webpack": "4.41.2", - "webpack-dev-server": "3.9.0", - "webpack-manifest-plugin": "2.2.0", - "workbox-webpack-plugin": "4.3.1" + "react-app-polyfill": "^0.2.2", + "react-dev-utils": "^8.0.0", + "resolve": "1.10.0", + "sass-loader": "7.1.0", + "style-loader": "0.23.1", + "terser-webpack-plugin": "1.2.2", + "url-loader": "1.1.2", + "webpack": "4.28.3", + "webpack-dev-server": "3.1.14", + "webpack-manifest-plugin": "2.0.4", + "workbox-webpack-plugin": "3.6.3" }, "dependencies": { "eslint-plugin-react": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", - "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz", + "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==", "requires": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1", - "object.entries": "^1.1.0", + "jsx-ast-utils": "^2.0.1", "object.fromentries": "^2.0.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.2", - "resolve": "^1.12.0" + "prop-types": "^15.6.2", + "resolve": "^1.9.0" + } + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "requires": { + "path-parse": "^1.0.6" } } } @@ -13117,9 +14266,9 @@ } }, "react-transition-group": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.3.0.tgz", - "integrity": "sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", "requires": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -13128,55 +14277,355 @@ } }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "requires": { - "load-json-file": "^4.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } } }, "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + } } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" }, "dependencies": { - "isarray": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, "realpath-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", @@ -13194,29 +14643,38 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "private": "^0.1.6" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -13228,11 +14686,6 @@ "safe-regex": "^1.1.0" } }, - "regex-parser": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", - "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" - }, "regexp.prototype.flags": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", @@ -13243,32 +14696,32 @@ } }, "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "regjsparser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", - "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "requires": { "jsesc": "~0.5.0" }, @@ -13302,11 +14755,6 @@ "utila": "^0.4.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", @@ -13331,14 +14779,6 @@ "dom-serializer": "0", "domelementtype": "1" } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } } } }, @@ -13352,10 +14792,18 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -13364,7 +14812,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -13374,25 +14822,9 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } } }, "request-promise-core": { @@ -13419,9 +14851,9 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "requires-port": { "version": "1.0.0", @@ -13429,9 +14861,9 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.2.tgz", - "integrity": "sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -13442,12 +14874,19 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + } } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "resolve-pathname": { "version": "3.0.0", @@ -13459,74 +14898,12 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, - "resolve-url-loader": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", - "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", - "requires": { - "adjust-sourcemap-loader": "2.0.0", - "camelcase": "5.3.1", - "compose-function": "3.0.3", - "convert-source-map": "1.7.0", - "es6-iterator": "2.0.3", - "loader-utils": "1.2.3", - "postcss": "7.0.21", - "rework": "1.0.1", - "rework-visit": "1.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "^5.1.0", + "onetime": "^2.0.0", "signal-exit": "^3.0.2" } }, @@ -13535,32 +14912,6 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - }, - "rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", - "requires": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" - } - } - }, - "rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" - }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -13589,17 +14940,14 @@ } }, "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "run-queue": { "version": "1.0.3", @@ -13610,17 +14958,17 @@ } }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "requires": { "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safe-regex": { "version": "1.1.0", @@ -13636,46 +14984,304 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", "requires": { - "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", "micromatch": "^3.1.4", "minimist": "^1.1.1", - "walker": "~1.0.5" + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } } }, - "sanitize.css": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", - "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" - }, "sass-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", - "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.1.0", - "semver": "^6.3.0" + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" }, "dependencies": { "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", "requires": { + "for-own": "^1.0.0", "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" } }, "kind-of": { @@ -13683,12 +15289,26 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", "requires": { - "kind-of": "^6.0.2" + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } } } } @@ -13698,30 +15318,23 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "requires": { - "xmlchars": "^2.1.1" - } - }, "scheduler": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", - "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "schema-utils": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", - "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, "select-hose": { @@ -13738,9 +15351,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "send": { "version": "0.17.1", @@ -13781,13 +15394,18 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==" }, "serve-index": { "version": "1.9.1", @@ -13822,10 +15440,10 @@ "statuses": ">= 1.4.0 < 2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "setprototypeof": { "version": "1.1.0", @@ -13930,19 +15548,35 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-swizzle": { "version": "0.2.2", @@ -13950,24 +15584,17 @@ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "requires": { "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } } }, "sisteransi": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz", - "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==" }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { "version": "2.1.0", @@ -13977,13 +15604,6 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - } } }, "snapdragon": { @@ -14024,11 +15644,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -14098,12 +15713,22 @@ "requires": { "faye-websocket": "^0.10.0", "uuid": "^3.0.1" + }, + "dependencies": { + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + } } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", "requires": { "debug": "^3.2.5", "eventsource": "^1.0.7", @@ -14121,24 +15746,13 @@ "ms": "^2.1.1" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -14162,19 +15776,11 @@ } }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "source-map": "^0.5.6" } }, "source-map-url": { @@ -14183,23 +15789,23 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -14211,15 +15817,30 @@ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "requires": { "debug": "^4.1.0", "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "spdy-transport": { @@ -14235,15 +15856,18 @@ "wbuf": "^1.7.3" }, "dependencies": { - "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -14277,12 +15901,11 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" + "figgy-pudding": "^3.5.1" } }, "stable": { @@ -14336,6 +15959,35 @@ "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-each": { @@ -14357,6 +16009,35 @@ "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-shift": { @@ -14364,11 +16045,6 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -14394,49 +16070,67 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^3.0.0" } } } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, "stringify-object": { @@ -14447,27 +16141,30 @@ "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + } } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } + "ansi-regex": "^2.0.0" } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } }, "strip-comments": { "version": "1.0.2", @@ -14484,17 +16181,17 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "style-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", - "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.1" + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" } }, "styled-components": { @@ -14527,15 +16224,38 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -14558,9 +16278,9 @@ } }, "svg-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.3.tgz", - "integrity": "sha512-fnCWiifNhK8i2Z7b9R5tbNahpxrRdAaQbnoxKlT2KrSCj9Kq/yBSgulCRgBJRhy1dPnSY5slg5ehPUnzpEcHlg==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" }, "svgo": { "version": "1.3.2", @@ -14580,6 +16300,17 @@ "stable": "^0.1.8", "unquote": "~1.1.1", "util.promisify": "~1.0.0" + }, + "dependencies": { + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "symbol-tree": { @@ -14598,15 +16329,10 @@ "string-width": "^3.0.0" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "string-width": { "version": "3.1.0", @@ -14617,102 +16343,63 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "terser": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", - "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "terser-webpack-plugin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.2.1.tgz", - "integrity": "sha512-jwdauV5Al7zopR6OAYvIIRcxXCSvLjZjr7uZE8l2tIWb/ryrGN48sJftqGf5k9z09tWhajx53ldp0XPI080YnA==", - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.0.0", - "jest-worker": "^24.9.0", - "schema-utils": "^2.5.0", - "serialize-javascript": "^2.1.0", - "source-map": "^0.6.1", - "terser": "^4.3.9", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "find-up": "^4.0.0" + "ansi-regex": "^4.1.0" } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", + "integrity": "sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg==", + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -14721,14 +16408,15 @@ } }, "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, "text-hex": { @@ -14758,6 +16446,35 @@ "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "thunky": { @@ -14784,9 +16501,9 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, "tiny-invariant": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.0.6.tgz", - "integrity": "sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" }, "tiny-warning": { "version": "1.0.3", @@ -14842,6 +16559,16 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + } + } } }, "toidentifier": { @@ -14849,6 +16576,14 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "requires": { + "hoek": "4.x.x" + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -14876,23 +16611,20 @@ "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, "ts-pnp": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.5.tgz", - "integrity": "sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "requires": { - "tslib": "^1.8.1" - } + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.2.tgz", + "integrity": "sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg==" }, "tty-browserify": { "version": "0.0.0", @@ -14912,11 +16644,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -14925,11 +16652,6 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -14945,30 +16667,14 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==" + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==" }, "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", + "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=" }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", @@ -14985,14 +16691,14 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "union-value": { "version": "1.0.1", @@ -15079,11 +16785,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" } } }, @@ -15127,13 +16828,13 @@ } }, "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" } }, "url-parse": { @@ -15151,17 +16852,17 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "requires": { - "inherits": "2.0.1" + "inherits": "2.0.3" }, "dependencies": { "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, @@ -15179,13 +16880,6 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - } } }, "utila": { @@ -15193,6 +16887,11 @@ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" }, + "utils-extend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/utils-extend/-/utils-extend-1.0.8.tgz", + "integrity": "sha1-zP17ZFQPjpDuIe7Fd2nQZRyril8=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -15203,11 +16902,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==" - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -15248,21 +16942,11 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" + "browser-process-hrtime": "^1.0.0" } }, "walker": { @@ -15273,14 +16957,156 @@ "makeerror": "1.0.x" } }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + } + }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.0", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "optional": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" } }, "wbuf": { @@ -15297,308 +17123,427 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", + "version": "4.28.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.3.tgz", + "integrity": "sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg==", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", + "eslint-scope": "^4.0.0", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" }, "dependencies": { "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" - }, - "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "schema-utils": { + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "kind-of": "^6.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "figgy-pudding": "^3.5.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" } } } }, "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", "webpack-log": "^2.0.0" } }, "webpack-dev-server": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", - "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "0.19.1", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", "import-local": "^2.0.0", - "internal-ip": "^4.3.0", + "internal-ip": "^3.0.1", "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.4", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", + "selfsigned": "^1.9.1", + "semver": "^5.6.0", + "serve-index": "^1.7.2", "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", + "webpack-dev-middleware": "3.4.0", "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "12.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "cliui": { + "camelcase": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - }, - "is-fullwidth-code-point": { + "decamelize": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "xregexp": "4.0.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "locate-path": "^3.0.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "requires": { - "ansi-regex": "^2.0.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "has-flag": "^3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + "p-try": "^2.0.0" } }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "async-limiter": "~1.0.0" + "p-limit": "^2.0.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", "requires": { "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "decamelize": "^2.0.0", "find-up": "^3.0.0", "get-caller-file": "^1.0.1", "os-locale": "^3.0.0", @@ -15608,16 +17553,15 @@ "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "yargs-parser": "^10.1.0" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^4.1.0" } } } @@ -15632,26 +17576,13 @@ } }, "webpack-manifest-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", - "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz", + "integrity": "sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg==", "requires": { "fs-extra": "^7.0.0", "lodash": ">=3.5 <5", - "object.entries": "^1.1.0", "tapable": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } } }, "webpack-sources": { @@ -15671,19 +17602,19 @@ } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", + "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, "whatwg-encoding": { "version": "1.0.5", @@ -15740,18 +17671,6 @@ "stack-trace": "0.0.x", "triple-beam": "^1.3.0", "winston-transport": "^4.3.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, "winston-transport": { @@ -15761,6 +17680,35 @@ "requires": { "readable-stream": "^2.3.6", "triple-beam": "^1.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "word-wrap": { @@ -15768,50 +17716,54 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-3.6.3.tgz", + "integrity": "sha512-ypLo0B6dces4gSpaslmDg5wuoUWrHHVJfFWwl1udvSylLdXvnrfhFfriCS42SNEe5lsZtcNZF27W/SMzBlva7Q==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, - "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "workbox-broadcast-cache-update": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-broadcast-cache-update/-/workbox-broadcast-cache-update-3.6.3.tgz", + "integrity": "sha512-pJl4lbClQcvp0SyTiEw0zLSsVYE1RDlCPtpKnpMjxFtu8lCFTAEuVyzxp9w7GF4/b3P4h5nyQ+q7V9mIR7YzGg==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-3.6.3.tgz", + "integrity": "sha512-w0clZ/pVjL8VXy6GfthefxpEXs0T8uiRuopZSFVQ8ovfbH6c6kUpEh6DcYwm/Y6dyWPiCucdyAZotgjz+nRz8g==", "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", - "common-tags": "^1.8.0", + "babel-runtime": "^6.26.0", + "common-tags": "^1.4.0", "fs-extra": "^4.0.2", - "glob": "^7.1.3", + "glob": "^7.1.2", + "joi": "^11.1.1", "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", - "stringify-object": "^3.3.0", + "pretty-bytes": "^4.0.2", + "stringify-object": "^3.2.2", "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" + "workbox-background-sync": "^3.6.3", + "workbox-broadcast-cache-update": "^3.6.3", + "workbox-cache-expiration": "^3.6.3", + "workbox-cacheable-response": "^3.6.3", + "workbox-core": "^3.6.3", + "workbox-google-analytics": "^3.6.3", + "workbox-navigation-preload": "^3.6.3", + "workbox-precaching": "^3.6.3", + "workbox-range-requests": "^3.6.3", + "workbox-routing": "^3.6.3", + "workbox-strategies": "^3.6.3", + "workbox-streams": "^3.6.3", + "workbox-sw": "^3.6.3" }, "dependencies": { "fs-extra": { @@ -15826,107 +17778,99 @@ } } }, - "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "workbox-cache-expiration": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-cache-expiration/-/workbox-cache-expiration-3.6.3.tgz", + "integrity": "sha512-+ECNph/6doYx89oopO/UolYdDmQtGUgo8KCgluwBF/RieyA1ZOFKfrSiNjztxOrGJoyBB7raTIOlEEwZ1LaHoA==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, - "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - }, - "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "workbox-cacheable-response": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-3.6.3.tgz", + "integrity": "sha512-QpmbGA9SLcA7fklBLm06C4zFg577Dt8u3QgLM0eMnnbaVv3rhm4vbmDpBkyTqvgK/Ly8MBDQzlXDtUCswQwqqg==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, + "workbox-core": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-3.6.3.tgz", + "integrity": "sha512-cx9cx0nscPkIWs8Pt98HGrS9/aORuUcSkWjG25GqNWdvD/pSe7/5Oh3BKs0fC+rUshCiyLbxW54q0hA+GqZeSQ==" + }, "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-3.6.3.tgz", + "integrity": "sha512-RQBUo/6SXtIaQTRFj4RQZ9e1gAl7D8oS5S+Hi173Kk70/BgJjzPwXpC5A249Jv5YfkCOLMQCeF9A27BiD0b0ig==", "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" + "workbox-background-sync": "^3.6.3", + "workbox-core": "^3.6.3", + "workbox-routing": "^3.6.3", + "workbox-strategies": "^3.6.3" } }, "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-3.6.3.tgz", + "integrity": "sha512-dd26xTX16DUu0i+MhqZK/jQXgfIitu0yATM4jhRXEmpMqQ4MxEeNvl2CgjDMOHBnCVMax+CFZQWwxMx/X/PqCw==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-3.6.3.tgz", + "integrity": "sha512-aBqT66BuMFviPTW6IpccZZHzpA8xzvZU2OM1AdhmSlYDXOJyb1+Z6blVD7z2Q8VNtV1UVwQIdImIX+hH3C3PIw==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-3.6.3.tgz", + "integrity": "sha512-R+yLWQy7D9aRF9yJ3QzwYnGFnGDhMUij4jVBUVtkl67oaVoP1ymZ81AfCmfZro2kpPRI+vmNMfxxW531cqdx8A==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-3.6.3.tgz", + "integrity": "sha512-bX20i95OKXXQovXhFOViOK63HYmXvsIwZXKWbSpVeKToxMrp0G/6LZXnhg82ijj/S5yhKNRf9LeGDzaqxzAwMQ==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-3.6.3.tgz", + "integrity": "sha512-Pg5eulqeKet2y8j73Yw6xTgLdElktcWExGkzDVCGqfV9JCvnGuEpz5eVsCIK70+k4oJcBCin9qEg3g3CwEIH3g==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-3.6.3.tgz", + "integrity": "sha512-rqDuS4duj+3aZUYI1LsrD2t9hHOjwPqnUIfrXSOxSVjVn83W2MisDF2Bj+dFUZv4GalL9xqErcFW++9gH+Z27w==", "requires": { - "workbox-core": "^4.3.1" + "workbox-core": "^3.6.3" } }, "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-3.6.3.tgz", + "integrity": "sha512-IQOUi+RLhvYCiv80RP23KBW/NTtIvzvjex28B8NW1jOm+iV4VIu3VXKXTA6er5/wjjuhmtB28qEAUqADLAyOSg==" }, "workbox-webpack-plugin": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", - "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-3.6.3.tgz", + "integrity": "sha512-RwmKjc7HFHUFHoOlKoZUq9349u0QN3F8W5tZZU0vc1qsBZDINWXRiIBCAKvo/Njgay5sWz7z4I2adnyTo97qIQ==", "requires": { - "@babel/runtime": "^7.0.0", + "babel-runtime": "^6.26.0", "json-stable-stringify": "^1.0.1", - "workbox-build": "^4.3.1" - } - }, - "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", - "requires": { - "workbox-core": "^4.3.1" + "workbox-build": "^3.6.3" } }, "worker-farm": { @@ -15937,42 +17881,31 @@ "errno": "~0.1.7" } }, - "worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "requires": { - "microevent.ts": "~0.1.1" - } - }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -15988,17 +17921,17 @@ "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=" }, "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "requires": { "mkdirp": "^0.5.1" } }, "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -16018,10 +17951,10 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==" }, "xtend": { "version": "4.0.2", @@ -16029,69 +17962,52 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yaml": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", - "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", - "requires": { - "@babel/runtime": "^7.6.3" - } + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", + "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } } } } diff --git a/package.json b/package.json index 6786c2893aa0962597f90ef982a379bfcae57109..717525b3312961c92fe54772ca13bb3d873f9a20 100644 --- a/package.json +++ b/package.json @@ -7,19 +7,29 @@ "@material-ui/icons": "^4.5.1", "@material-ui/lab": "^4.0.0-alpha.40", "@material-ui/styles": "^4.9.0", + "@syncfusion/ej2-react-inputs": "^18.2.45", "axios": "^0.19.2", + "base64-img": "^1.0.4", "binary-extensions": "^2.0.0", "build": "^0.1.4", + "fine-uploader": "^5.16.2", + "image-to-base64": "^2.0.1", "material-design-icons": "^3.0.1", + "moment": "^2.24.0", "react": "^16.12.0", "react-dom": "^16.12.0", + "react-dropdown": "^1.7.0", + "react-easy-crop": "^2.1.0", + "react-fine-uploader": "^1.1.1", "react-google-login": "^5.0.7", "react-grid-system": "^4.4.11", "react-icons": "^3.8.0", + "react-image-crop": "^8.6.2", + "react-input-mask": "^2.0.4", "react-recaptcha": "^2.3.10", "react-responsive-carousel": "^3.1.51", "react-router-dom": "^5.1.2", - "react-scripts": "^3.3.0", + "react-scripts": "^2.1.8", "react-star-ratings": "^2.3.0", "styled-components": "^4.4.1", "typescript": "^3.7.5" @@ -31,8 +41,16 @@ "eslint-plugin-react-hooks": "^1.6.1", "prettier": "1.18.2" }, + "watch": { + "build": { + "patterns": [ + "src" + ], + "extensions": "js,jsx" + } + }, "scripts": { - "start": "react-scripts start", + "start": "PORT=4000 react-scripts start watch", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" diff --git a/public/index.html b/public/index.html index 2e5c176d60246ce9ed6113d86e2f173f94db9d2a..a990c797fd83682f7876e6c3270c4c4e947ef868 100755 --- a/public/index.html +++ b/public/index.html @@ -1,30 +1,3 @@ -<!-- Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre -Departamento de Informatica - Universidade Federal do Parana -This file is part of Plataforma Integrada MEC. -Plataforma Integrada MEC is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Plataforma Integrada MEC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>. --> - -<!DOCTYPE html> -<html lang="pt-br"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>Portal MEC</title> - </head> - <body > - <noscript>You need to enable JavaScript to run this app.</noscript> - <div id="root"/> - </body> -</html> +<!-- Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre Departamento de Informatica - Universidade Federal do Parana This file is part of Plataforma Integrada MEC. Plataforma Integrada MEC is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Plataforma Integrada MEC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>. --> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8" /> <!-- google sign-in --> <meta name="google-signin-client_id" content="288460085642-k4veg4fo8kddvjer8b055n9da5qtgha7.apps.googleusercontent.com"> <script src="https://apis.google.com/js/platform.js" async defer></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Portal MEC</title> </head> <body > <noscript>You need to enable JavaScript to run this app.</noscript> <div id="root"/> </body> </html> diff --git a/src/App.js b/src/App.js index 96fcaca9a3e0c03ec95e1414350360d6a649f3ea..0ba68eb4fd680a349c32f2d38e0bcf5c2aaaa006 100644 --- a/src/App.js +++ b/src/App.js @@ -24,15 +24,27 @@ import EcFooter from './Components/EcFooter'; import GNUAGPLfooter from './Components/AGPLFooter'; import UserPage from './Pages/UserPage'; import UserTerms from './Pages/UserTerms'; - +import Contact from './Pages/Contact'; import Teste from './Pages/Teste'; - +import AboutPage from './Pages/AboutPage'; +import HelpCenter from './Pages/HelpCenter'; +import TabResoursePub from './Pages/TabsHelp/TabResoursePub'; +import TabResourseFind from './Pages/TabsHelp/TabResourseFind'; +import TabNetPart from './Pages/TabsHelp/TabNetPart'; +import TabManageAc from './Pages/TabsHelp/TabManageAc'; +import PasswordRecoveryPage from './Pages/PasswordRecoveryPage.js' +import PageProfessor from './Pages/PageProfessor.js' import ResourcePage from './Pages/ResourcePage'; import {BrowserRouter, Switch, Route} from 'react-router-dom'; import { Store } from './Store' import TermsPage from './Pages/TermsPage.js' import PublicationPermissionsPage from './Pages/PublicationPermissionsPage.js' - +import TabPlataformaMEC from './Pages/TabsHelp/TabPlataformaMEC'; +import ItemStore from './Pages/ItemStore.js' +import EditProfilePage from './Pages/EditProfilePage.js' +import PublicUserPage from './Pages/PublicUserPage.js' +import UploadPage from './Pages/UploadPage.js' +import EditLearningObjectPage from './Pages/EditLearningObjectPage.js' export default function App(){ // eslint-disable-next-line @@ -65,24 +77,35 @@ export default function App(){ },[window.innerWidth,window.innerHeight]) return( - <BrowserRouter> + <BrowserRouter basename="/react"> <Header /> <div style={{backgroundImage: "linear-gradient(to right,#ff7f00,#e81f4f,#673ab7,#00bcd4)", height:"5px"}}></div> + <link href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto&display=swap" rel="stylesheet"/> <Switch> <Route path="/" exact={true} component={Home}/> <Route path="/busca" component={Search} /> - <Route path="/perfil-atualizacoes" component={UserPage} /> - <Route path="/recurso" component={ResourcePage}/> - + <Route path="/perfil" component={UserPage} /> + <Route path="/editarperfil" component={EditProfilePage} /> + <Route path="/recurso/:recursoId" component={ResourcePage}/> <Route path="/termos-publicar-recurso" component={TermsPage}/> <Route path="/permission" component={PublicationPermissionsPage}/> {/*<Route path="termos-de-uso#publicacoes-de-usuario" component={}*/} - - + <Route path="/ajuda" component={HelpCenter}/> + <Route path="/contato" component={Contact}/> <Route path="/termos" component={UserTerms}/> <Route path="/teste" component={Teste}/> - - + <Route path="/sobre" component={AboutPage}/> + <Route path="/publicando-recurso" component={TabResoursePub}/> + <Route path="/encontrando-recurso" component={TabResourseFind}/> + <Route path="/participando-da-rede" component={TabNetPart}/> + <Route path="/gerenciando-conta" component={TabManageAc}/> + <Route path="/plataforma-mec" component={TabPlataformaMEC}/> + <Route path="/recuperar-senha" component={PasswordRecoveryPage}/> + <Route path="/usuario-publico/:userId" component={PublicUserPage}/> + <Route path="/editar-recurso/:recursoId" component={EditLearningObjectPage}/> + <Route path='/professor' component={PageProfessor}/> + <Route path="/upload" component={UploadPage}/> + <Route path='/loja' component={ItemStore} /> </Switch> <EcFooter/> <GNUAGPLfooter/> diff --git a/src/Components/AboutCarousel.js b/src/Components/AboutCarousel.js new file mode 100644 index 0000000000000000000000000000000000000000..9bbe6db737ecc07c76646e603bcceb42694ec6ec --- /dev/null +++ b/src/Components/AboutCarousel.js @@ -0,0 +1,131 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + + +import React, { Component } from 'react'; +import ReactDOM from 'react-dom'; +import "react-responsive-carousel/lib/styles/carousel.min.css"; +import { Carousel } from 'react-responsive-carousel'; +import styled from 'styled-components'; + + +import Img1 from '../img/carousel/Icone_Grande (1).png' +import Img2 from '../img/carousel/Icone_Grande (2).png' +import Img3 from '../img/carousel/Icone_Grande (3).png' +import Img4 from '../img/carousel/Icone_Grande (4).png' +import Img5 from '../img/carousel/Icone_Grande (5).png' + +const CarouselAbout = styled(Carousel)` + + .carousel.carousel-slider .control-arrow { + font-size: 18px !important; + bottom: 40% !important; + } + + .carousel .thumb{ + border-radius: 50%; + width:62px; + filter: grayscale(1); + } + + .carousel .thumb.selected, .carousel .thumb:hover { + border: 2px solid #a4a4a4 !important; + filter:grayscale(0); + } + + + div { + color: #666 !important; + text-align: center !important; + + img { + height: 52px; + width: 52px !important; + display: block; + margin: auto; + + } + span { + font-size: 26px; + font-weight: 400; + margin-bottom: 10px; + } + p { + font-size: 15px; + line-height: 1.42857143; + text-align: center; + display: block; + margin: auto; + padding-inline: 235px + } + } +` + + + +function AboutCarousel(props) { + + return ( + <CarouselAbout showThumbs= {true} + showStatus= {false} + showIndicators = {false} + interval={8000} + transitionTime={1000} + autoPlay + infiniteLoop + + > + <div> + <img src={Img1} alt="Slide 1"/> + <span>Buscar e Baixar Recursos</span> + <p>São mais de 20 mil recursos educacionais à sua disposição. São recursos de portais parceiros do MEC e de professores que, como você, atuam na Educação Básica!</p> + </div> + <div> + <img src={Img2} alt="Slide 2"/> + <span>Guardar Recursos em Coleções</span> + <p>Guarde e organize em coleções aqueles recursos que você considera ser interessantes para elaborar a sua aula. Aproveite e indique aos colegas pelas redes sociais ou e-mail.</p> + </div> + <div> + <img src={Img3} alt="Slide 3"/> + + <span>Compartilhar suas Experiências</span> + <p>Você pode relatar suas experiências sobre o uso de recursos no seu cotidiano escolar. Aproveite esse espaço para sugerir e conhecer novos usos para um mesmo recurso.</p> + + </div> + <div> + <img src={Img4} alt="Slide 4"/> + + <span>Publicar o seu Recurso</span> + <p>Colabore e ajude a fortalecer a plataforma publicando um recurso educacional desenvolvido por você ou pelo coletivo da escola do qual faz parte. Compartilhe seu conhecimento e dê visibilidade ao seu recurso, torne-o público enriquecendo o conhecimento partilhado!</p> + + + </div> + <div> + <img src={Img5} alt="Slide 5"/> + + <span>Encontrar Materiais de Formação</span> + <p>A plataforma disponibiliza um conjunto de materiais de formação desenvolvidos pelo Ministério da Educação com diversidade de temas e recursos educacionais.</p> + + + </div> + </CarouselAbout> + + ); +} + +export default AboutCarousel; diff --git a/src/Components/AchievementDescriptionCard.js b/src/Components/AchievementDescriptionCard.js new file mode 100644 index 0000000000000000000000000000000000000000..3af102fe901acb8f237a4ba1d1637caaf30c97fd --- /dev/null +++ b/src/Components/AchievementDescriptionCard.js @@ -0,0 +1,40 @@ +import React from 'react' +import styled from 'styled-components' +import { Container } from 'react-grid-system' +import Paper from '@material-ui/core/Paper'; +import { Grid } from '@material-ui/core' +import RequirementDialog from './RequirementsDialog.js'; + +export default function AchievementDescriptionCard(props) { + return ( + <Paper elevation={3}> + <Grid container direction="row" justify="space-around" alignItems="center"> + <Grid item xs={3}> + <AchievementImg src={props.src}/> + </Grid> + <Grid item xs={7}> + <AchievementTitle>{props.title}</AchievementTitle> + <AchievementDescription>{props.description}</AchievementDescription> + <RequirementDialog + title={props.title} + description={props.description} + requirements={props.requirements} + /> + </Grid> + </Grid> + </Paper> + ); +} + +const AchievementImg = styled.img` + border-radius: 100px; + width: 100px; + height: 100px; + margin: 30px; +` + +const AchievementTitle = styled.h2` +` + +const AchievementDescription = styled.p` +` diff --git a/src/Components/Activities/Definitions.js b/src/Components/Activities/Definitions.js new file mode 100644 index 0000000000000000000000000000000000000000..8ff971c8ee208612b34a6b567f489c4a965013bc --- /dev/null +++ b/src/Components/Activities/Definitions.js @@ -0,0 +1,88 @@ +import React from 'react' +export const ObjectColor = { + 'Recurso' : 'recurso-color', + 'Coleção' : 'colecao-color', + 'Curadoria' : 'curadoria-color' +} + +export const Tag = { + 'Collection' : 'Coleção', + 'LearningObject' : 'Recurso', + 'User' : 'Usuário', + 'CuratorAssignment' : 'Curadoria' +} + +export const GetActivityProperties = (activity) => { + const properties = Possible_Activities[activity] + return properties +} + +export const Possible_Activities = { + 'collection_item.destroy': { + icon: 'create', + text: ' apagou uma coleção ' + }, + 'collection_item.create': { + icon: 'create', + text: ' guardou o recurso ', + text2: 'na coleção' + }, + 'collection_item.update': { + icon: 'speaker_notes', + text: ' editou um recurso a sua coleção ' + }, + 'collection.update': { + icon: 'speaker_notes', + text: ' editou a coleção ' + }, + 'collection.create': { + icon: 'create', + text: ' criou a coleção ' + }, + 'complaint.create': { + icon: 'report', + text: ` criou uma denúncia sobre ` //text: ` criou uma denúncia sobre ${DINAMYC_SUBJECT[myActivity.recipient_type]} ` + }, + 'collection.destroy': { + icon: 'delete', + text: ' excluiu ' + }, + 'learning_object.destroy': { + icon: 'delete', + text: ' apagou o recurso ' + }, + 'learning_object.publish': { + icon: 'speaker_notes', + text: ' publicou o recurso educacional ' + }, + 'like.destroy': { + icon: 'create', + text: ' favoritou' + }, + 'like.create': { + icon: 'favorite', + text: ' curtiu ' + }, + 'review.create':{ + icon: 'star', + text: ' avaliou ' + }, + 'download.create': { + icon: 'get_app', + text: 'baixou' + }, + 'curator_assignment.create': { + icon: 'create', + text: 'você foi atribuido para avaliar o recurso' + }, + 'submission.accepted':{ + icon: 'cloud_upload', + text: 'o seu recurso', + text2: 'foi revisado e já está disponivel na Plataforma' + }, + 'submission.rejected':{ + icon: 'thumb_down', + text: 'o seu recurso', + text2: 'foi revisado e removido da Plataforma por não está de acordo com os termos' + } +}; diff --git a/src/Components/ActivityListItem.js b/src/Components/ActivityListItem.js new file mode 100644 index 0000000000000000000000000000000000000000..24a00b77a9afb3cc534a52925e70a622b06a4ff7 --- /dev/null +++ b/src/Components/ActivityListItem.js @@ -0,0 +1,217 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import styled from 'styled-components' +import ListItem from '@material-ui/core/ListItem'; +import ListItemAvatar from '@material-ui/core/ListItemAvatar'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction'; +import ListItemText from '@material-ui/core/ListItemText'; +import Avatar from '@material-ui/core/Avatar'; +import noAvatar from "../img/default_profile.png"; +import {GetActivityProperties, Tag, Possible_Activities, ObjectColor} from './Activities/Definitions.js' +//icons +import FavoriteIcon from '@material-ui/icons/Favorite'; +import CreateIcon from '@material-ui/icons/Create'; +import GetAppIcon from '@material-ui/icons/GetApp'; +import StarIcon from '@material-ui/icons/Star'; +import SpeakerNotesIcon from '@material-ui/icons/SpeakerNotes'; +import ReportIcon from '@material-ui/icons/Report'; +import CloudUploadIcon from '@material-ui/icons/CloudUpload'; +import ThumbDownIcon from '@material-ui/icons/ThumbDown'; +import DeleteIcon from '@material-ui/icons/Delete'; + +const GetObjectColor = (tag) => { + return ObjectColor[tag] +} + +const getNotificationIcon = (iconType) => { + switch(iconType) { + case 'create': + return <CreateIcon className="icon"/>; + case 'favorite': + return <FavoriteIcon className="icon"/>; + case 'get_app': + return <GetAppIcon className="icon"/>; + case 'star': + return <StarIcon className="icon"/>; + case 'report': + return <ReportIcon className="icon"/>; + case 'cloud_upload': + return <CloudUploadIcon className="icon"/>; + case 'delete': + return <DeleteIcon className="icon"/>; + case 'thumb_down': + return <ThumbDownIcon className="icon"/>; + default : + return <SpeakerNotesIcon className="icon"/>; + } +} + +const getTimeDifference = (timestamp) => { + //returns time difference between now and the moment the notification was created + var moment = require('moment') + + const now = moment() + const then = moment(timestamp, moment.ISO_8601) + + let duration = moment.duration(now.diff(then)) + {/*console.log('duration: ', duration)*/} + let timeDiff; + if (duration._data.years > 0) { + timeDiff = duration._data.years + (duration._data.years > 1 ? ' anos' : ' ano') + } + else if (duration._data.months > 0) { + timeDiff = duration._data.months + (duration._data.months > 1? ' meses' : ' mês') + } + else if(duration._data.days > 0) { + timeDiff = duration._data.days + (duration._data.days > 1 ? ' dias' : ' dia') + } + else if(duration._data.hours > 0) { + timeDiff = duration._data.hours + (duration._data.hours > 1 ? ' horas' : ' hora') + } + else if(duration._data.minutes > 0) { + timeDiff = duration._data.minutes + (duration._data.minutes > 1 ? ' minutos' : ' minuto') + } + + return timeDiff; +} + +export default function ActivityListItem (props) { + const [activity, setActivity] = React.useState({ + tag : '', + icon : '', + text : '', + text2 : '', + }) + + useEffect( () => { + const newTag = Tag[(props.actionType === 'CuratorAssignment' ? props.actionType : props.objectType)] + const {icon, text, text2 } = GetActivityProperties(props.activity) + {/*console.log('icon, text, text2: ', icon, text, text2)*/} + + setActivity({...activity, + tag : newTag, + icon : icon, + text : text, + text2 : text2 + }) + }, [] ) + + return ( + <StyledListItem> + { + !props.onMenuBar && + <> + + <ListItemAvatar> + <Avatar alt='user avatar' src={props.avatar ? props.avatar : noAvatar}/> + </ListItemAvatar> + getNotificationIcon(activity.icon) + + </> + } + <ListItemText + primary = { + <div> + <span className = {'tag-object' + ' ' + GetObjectColor(activity.tag)}> + {activity.tag} + </span> + <span className="time-ago-span"> · há {getTimeDifference(props.createdAt)}</span> + </div> + } + secondary = { + <div> + <span> + <a href={props.ownerHref} className="owner-name-a" >{props.ownerName}</a> {activity.text} <a href={props.recipientHref} className="recipient-name-a">{props.recipientName}</a> {activity.text2} + </span> + </div> + } + /> + </StyledListItem> + ) + +} + +const StyledListItem = styled(ListItem)` + padding : 20px 60px !important ; + border-bottom : 1px solid #eee; + display : flex; + justify-content : flex-start; + align-items : center; + min-heigth : 40px; + + a { + text-decoration : none !important; + } + + .time-ago-span { + font-size : 12px; + font-family : 'Lato', medium; + color : #787380; + } + + .owner-name-a { + color : #00bcd4; + } + + .recipient-name-a { + cursor : pointer; + color : #337ab7; + } + + .icon { + padding-right : 10px; + color : #666; + } + + .tag-object { + font-family: Roboto; + font-style: normal; + font-weight: 700; + font-size: 12px; + line-height: normal; + text-align: center; + letter-spacing: .06em; + text-transform: uppercase; + color: #fff; + height: -webkit-fit-content; + height: -moz-fit-content; + height: fit-content; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + border-radius: 10px; + padding: 2px 4px; + } + + .recurso-color { + background-color : orange; + } + + .colecao-color { + background-color : blue; + } + + .curadoria-color { + background-color : red; + } + + +` diff --git a/src/Components/Alert.js b/src/Components/Alert.js new file mode 100644 index 0000000000000000000000000000000000000000..747b819931a0cf64cd14804dd23203bd3932be5c --- /dev/null +++ b/src/Components/Alert.js @@ -0,0 +1,24 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import MuiAlert from '@material-ui/lab/Alert'; + +export default function Alert(props) { + return <MuiAlert elevation={6} variant="filled" {...props} />; +} diff --git a/src/Components/AreasSubPages.js b/src/Components/AreasSubPages.js index bbd12897bf3de1689c3f32f1ae4b7048e81defb6..f911ec1d0d1058885610be48f29f8b8387635106 100644 --- a/src/Components/AreasSubPages.js +++ b/src/Components/AreasSubPages.js @@ -16,80 +16,109 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {Component} from 'react'; -import axios from 'axios'; -import {apiUrl} from '../env'; -import './carousel.css'; -import {Col,Row, Container, Hidden, Visible} from 'react-grid-system'; -import ResourceCard from './ResourceCard'; -import MaterialCard from './MaterialCard'; -import CollectionCard from './CollectionCard'; +import React, { Component } from "react"; +import axios from "axios"; +import { apiUrl } from "../env"; +import "./carousel.css"; +import { Col, Row, Container, Hidden, Visible } from "react-grid-system"; +import ResourceCard from "./ResourceCard"; +import MaterialCard from "./MaterialCard"; +import CollectionCard from "./CollectionCard"; import "react-responsive-carousel/lib/styles/carousel.min.css"; -import { Carousel } from 'react-responsive-carousel'; +import { Carousel } from "react-responsive-carousel"; import recursos from "../img/ilustra_recursos_digitais.png"; import materiais from "../img/ilustra_materiais.png"; import colecoes from "../img/ilustra_colecoes.png"; -const areaStyle={ +import Grid from '@material-ui/core/Grid'; +import ResourceCardFunction from './ResourceCardFunction.js' +import CollectionCardFunction from './CollectionCardFunction.js' + +const areaStyle = { paddingTop: "5px", fontSize: "16px", - textAlign:"left", + textAlign: "left", backgroundColor: "inherit", - width: "700px", + width: "1000px", + margin: "auto", padding: "20px", - minHeight: "150px" -} + minHeight: "190px" +}; -class ReqResources extends Component{ - constructor(props){ +class ReqResources extends Component { + constructor(props) { super(props); this.state = { - resources: [], + resources: [] }; } - componentDidMount(){ - axios.get(`${apiUrl}/learning_objects?limit=12&sort=["published_at", "desc"]`) - .then(res=> { - this.setState({resources: res.data}); - console.log(res.data); - }); + componentDidMount() { + axios + .get(`${apiUrl}/learning_objects?limit=12&sort=["published_at", "desc"]`) + .then(res => { + this.setState({ resources: res.data }); + console.log(res.data); + }); } - render(){ - var row1 = this.state.resources.slice(0, 4); - var row2 = this.state.resources.slice(4, 8); - var row3 = this.state.resources.slice(8, 13); - return( + render() { + var row1 = this.state.resources.slice(0, 4); + var row2 = this.state.resources.slice(4, 8); + var row3 = this.state.resources.slice(8, 13); + return ( <Carousel showThumbs={false} infiniteLoop={true} showStatus={false}> <Row style={{paddingBottom: "5px"}}> {row1.map(card => <Col md={3} sm={6} key={card.id}> - <ResourceCard name={card.name} - rating={card.score} - type={card.object_type} - description={card.description} - thumbnail={card.thumbnail} - author={card.author} - avatar={card.publisher.avatar} + <ResourceCardFunction + avatar = {card.publisher.avatar} + id={card.id} + thumbnail = {card.thumbnail} + type = {card.object_type ? card.object_type : "Outros"} + title={card.name} + published={card.state === "published" ? true : false} + likeCount={card.likes_count} + liked={card.liked} + rating={card.review_average} + author={card.author} + tags={card.educational_stages} + href={'/recurso/' + card.id} + downloadableLink={card.default_attachment_location} /></Col>)} </Row> <Row> {row2.map(card => <Col md={3} sm={6} key={card.id}> - <ResourceCard name={card.name} - rating={card.score} - type={card.object_type} - description={card.description} - thumbnail={card.thumbnail} - author={card.author} - avatar={card.publisher.avatar} - /></Col>)} + <ResourceCardFunction + avatar = {card.publisher.avatar} + id={card.id} + thumbnail = {card.thumbnail} + type = {card.object_type ? card.object_type : "Outros"} + title={card.name} + published={card.state === "published" ? true : false} + likeCount={card.likes_count} + liked={card.liked} + rating={card.review_average} + author={card.author} + tags={card.educational_stages} + href={'/recurso/' + card.id} + downloadableLink={card.default_attachment_location} + + /></Col>)} </Row> <Row> {row3.map(card => <Col md={3} sm={6} key={card.id}> - <ResourceCard name={card.name} - rating={card.score} - type={card.object_type} - description={card.description} - thumbnail={card.thumbnail} - author={card.author} - avatar={card.publisher.avatar} + <ResourceCardFunction + avatar = {card.publisher.avatar} + id={card.id} + thumbnail = {card.thumbnail} + type = {card.object_type ? card.object_type : "Outros"} + title={card.name} + published={card.state === "published" ? true : false} + likeCount={card.likes_count} + liked={card.liked} + rating={card.review_average} + author={card.author} + tags={card.educational_stages} + href={'/recurso/' + card.id} + downloadableLink={card.default_attachment_location} + /></Col>)} </Row> </Carousel> @@ -97,50 +126,52 @@ class ReqResources extends Component{ } } -class ReqCollections extends Component{ - constructor(props){ +class ReqCollections extends Component { + constructor(props) { super(props); - this.state ={ - collections: [], + this.state = { + collections: [] }; } - componentDidMount(){ - axios.get(`${apiUrl}/collections?limit=12&sort=["updated_at", "desc"]`) - .then(res=>{this.setState({collections: res.data}); - console.log(res.data); - }); + componentDidMount() { + axios + .get(`${apiUrl}/collections?limit=12&sort=["updated_at", "desc"]`) + .then(res => { + this.setState({ collections: res.data }); + console.log(res.data); + }); } - render(){ - var row1 = this.state.collections.slice(0, 4); - var row2 = this.state.collections.slice(4, 8); - var row3 = this.state.collections.slice(8, 13); - return( + render() { + var row1 = this.state.collections.slice(0, 4); + var row2 = this.state.collections.slice(4, 8); + var row3 = this.state.collections.slice(8, 13); + return ( <Carousel showThumbs={false} infiniteLoop={true} showStatus={false}> <Row style={{paddingBottom: "5px"}}> {row1.map(card => <Col md={3} sm={6} key={card.id}> - <CollectionCard name={card.name} + <CollectionCardFunction name={card.name} rating={card.score} author={card.owner.name} description={card.description} - thumbnail={card.items_thumbnails} + thumbnails={card.items_thumbnails} avatar={card.owner.avatar}/></Col>)} </Row> <Row> {row2.map(card => <Col md={3} sm={6} key={card.id}> - <CollectionCard name={card.name} + <CollectionCardFunction name={card.name} rating={card.score} author={card.owner.name} description={card.description} - thumbnail={card.items_thumbnails} + thumbnails={card.items_thumbnails} avatar={card.owner.avatar}/></Col>)} </Row> <Row> {row3.map(card => <Col md={3} sm={6} key={card.id}> - <CollectionCard name={card.name} + <CollectionCardFunction name={card.name} rating={card.score} author={card.owner.name} description={card.description} - thumbnail={card.items_thumbnails} + thumbnails={card.items_thumbnails} avatar={card.owner.avatar}/></Col>)} </Row> </Carousel> @@ -148,29 +179,50 @@ class ReqCollections extends Component{ } } -class SubPages extends Component{ - areaRender(){ - switch(this.props.banner){ - case "Recursos": - return( - <React.Fragment> - <div style={{backgroundColor: "#ff7f00"}}> +class SubPages extends Component { + areaRender() { + switch (this.props.banner) { + case "Recursos": + return ( + <React.Fragment> + <div style={{ backgroundColor: "#ff7f00" }}> <Container style={areaStyle}> - <img src={recursos} alt="aba recursos" height="100" style={{float: "left"}}/> - <p>Nesta área, você tem acesso a Recursos Educacionais Digitais, isto é, - a vÃdeos, animações e a outros recursos destinados à educação. São Recursos - de portais parceiros do MEC e de professores que, como você, atuam na - Educação Básica!</p> + <Grid container style={{ display: "flex" }} spacing={5}> + <Grid item xs={3}> + <img + src={recursos} + alt="aba recursos" + height="155" + style={{ float: "right" }} + /> + </Grid> + <Grid item xs={9}> + <p style={{ textAlign: "justify", color: "#fff" }}> + Nesta área, você tem acesso a Recursos Educacionais + Digitais, isto é, a vÃdeos, animações e a outros recursos + destinados à educação. São Recursos de portais parceiros + do MEC e de professores que, como você, atuam na Educação + Básica! + </p> + </Grid> + </Grid> </Container> </div> - <Container style={{padding:"20px"}}> - <p style={{paddingBottom:"5px", borderBottom: "1px solid #ff7f00", color: "#ff7f00"}}> - Recursos mais recentes </p> + <Container style={{ padding: "20px" }}> + <p + style={{ + paddingBottom: "5px", + borderBottom: "1px solid #ff7f00", + color: "#ff7f00" + }} + > + Recursos mais recentes{" "} + </p> <Hidden sm xs> - <ReqResources/> + <ReqResources /> </Hidden> <Visible sm xs> - <ReqResources/> + <ReqResources /> </Visible> </Container> </React.Fragment> @@ -180,7 +232,8 @@ class SubPages extends Component{ <React.Fragment> <div style={{backgroundColor: "#e81f4f"}}> <Container style={areaStyle}> - <img src={materiais} alt="aba materiais" height="100" style={{float: "left"}}/> + + <img src={materiais} alt="aba materiais" height="165" style={{float: "right"}}/> <p>Nesta área, você acessa livremente materiais completos de formação, como cursos já oferecidos pelo MEC e seus parceiros. São conteúdos elaborados por equipes multidisciplinares e de autoria de pesquisadores @@ -191,8 +244,13 @@ class SubPages extends Component{ <p style={{paddingBottom:"5px", borderBottom: "1px solid #e81f4f", color: "#e81f4f"}}> Materiais mais recentes </p> - <Carousel style={{padding: "20px"}}showThumbs={false} infiniteLoop={true} showStatus={false}> - <Row> + <Carousel + style={{ padding: "20px" }} + showThumbs={false} + infiniteLoop={true} + showStatus={false} + > + <Row> <Col md={3}> <MaterialCard name="oioi" /> </Col> @@ -205,40 +263,57 @@ class SubPages extends Component{ <Col md={3}> <MaterialCard name="oioi" /> </Col> - </Row> - </Carousel> - </Container> - </React.Fragment> - ); - case "Colecoes": - return ( - <React.Fragment> - <div style={{backgroundColor: "#673ab7"}}> + </Row> + </Carousel> + </Container> + </React.Fragment> + ); + case "Colecoes": + return ( + <React.Fragment> + <div style={{ backgroundColor: "#673ab7" }}> <Container style={areaStyle}> - <img src={colecoes} alt="aba coleções" height="100" style={{float: "left"}}/> - <p>Nesta área, você tem acesso à s coleções criadas e organizadas - pelos usuários da plataforma. É mais uma possibilidade de buscar - recursos educacionais para sua aula!</p> + <Grid container spacing={5}> + <Grid item xs={3}> + <img + src={colecoes} + alt="aba coleções" + width="180" + style={{ float: "right" }} + /> + </Grid> + <Grid item xs={9}> + <p style={{ textAlign: "justify", color: "#fff" }}> + Nesta área, você tem acesso à s coleções criadas e + organizadas pelos usuários da plataforma. É mais uma + possibilidade de buscar recursos educacionais para sua + aula! + </p> + </Grid> + </Grid> </Container> </div> - <Container style={{padding:"20px"}}> - <p style={{paddingBottom:"5px", borderBottom: "1px solid #673ab7", color: "#673ab7"}}> - Coleções mais recentes </p> - <ReqCollections/> + <Container style={{ padding: "20px" }}> + <p + style={{ + paddingBottom: "5px", + borderBottom: "1px solid #673ab7", + color: "#673ab7" + }} + > + Coleções mais recentes{" "} + </p> + <ReqCollections /> </Container> - </React.Fragment> - ); - default: - return null + </React.Fragment> + ); + default: + return null; } } - render(){ - return( - <div> - {this.areaRender()} - </div> - ); -} + render() { + return <div>{this.areaRender()}</div>; + } } export default SubPages; diff --git a/src/Components/ButtonAvaliarRecurso.js b/src/Components/ButtonAvaliarRecurso.js new file mode 100644 index 0000000000000000000000000000000000000000..3e41d4fa84953a557ca68378dd2d6cd683f9670c --- /dev/null +++ b/src/Components/ButtonAvaliarRecurso.js @@ -0,0 +1,26 @@ +import React, {useState} from 'react' +import { Button } from '@material-ui/core'; +import styled from 'styled-components' +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; + +export default function ButtonAvaliarRecurso (props) { + + return ( + <StyledButton onClick={props.callback}> + <ExpandMoreIcon/> AVALIAR RECURSO + </StyledButton> + ) +} + +const StyledButton = styled(Button)` + &:hover { + background-color : #ed6f00 !important; + } + background-color : #ff7f00 !important; + color : #fff !important; + font-weight : 600 !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + .MuiSvgIcon-root { + vertical-align : middle !important; + } +` diff --git a/src/Components/ButtonGuardarColecao.js b/src/Components/ButtonGuardarColecao.js new file mode 100644 index 0000000000000000000000000000000000000000..65ae71a2ab7c2de703e21e81679c32f7c4454481 --- /dev/null +++ b/src/Components/ButtonGuardarColecao.js @@ -0,0 +1,46 @@ +import React, {useState, useContext} from 'react' +import {Store} from '../Store.js' +import Button from '@material-ui/core/Button'; +import styled from 'styled-components' +import CreateNewFolderIcon from '@material-ui/icons/CreateNewFolder'; +import GuardarModal from './GuardarModal' + +export default function ButtonGuardarColecao (props) { + const {state} = useContext(Store) + const [saveToCol, toggleSave] = useState(false) + const handleGuardar = () => { + if(state.currentUser.id === '') { + console.log('abrir login modal'); + } + else { + toggleSave(true); + } + } + + return ( + <> + <GuardarModal open={saveToCol} handleClose={() => {toggleSave(false)}} + thumb={props.thumb} title={props.title} recursoId={props.learningObjectId} + /> + <StyledButton onClick={handleGuardar}> + <CreateNewFolderIcon/> GUARDAR + </StyledButton> + </> + ) +} + +const StyledButton = styled(Button)` + color : #666 !important; + background-color : transparent !important; + font-size : 14px important; + font-weight : 500 !important; + + .MuiSvgIcon-root { + font-size : 24px; + color : inherit; + } + + &:hover { + color: rgb(107, 35, 142) !important; + } +` diff --git a/src/Components/CardOptions.js b/src/Components/CardOptions.js index ac458a6a467c84d600c892e1e4c8f795f2038ed3..4c10b4239ef6950f63020e83d6f3631c81fb3e96 100644 --- a/src/Components/CardOptions.js +++ b/src/Components/CardOptions.js @@ -27,6 +27,7 @@ import DownloadIcon from '@material-ui/icons/CloudDownload'; import ShareIcon from '@material-ui/icons/Share'; import AddIcon from '@material-ui/icons/CreateNewFolder'; import ReportIcon from '@material-ui/icons/Error'; + export default function SimpleMenu() { const [anchorEl, setAnchorEl] = React.useState(null); @@ -40,8 +41,8 @@ export default function SimpleMenu() { return ( <div style={{fontSize: "12px"}}> - <Button aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick}> - OPÇÕES <MoreVertIcon/> + <Button aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> + OPÇÕES <MoreVertIcon style={{color : "inherit"}}/> </Button> <Menu id="simple-menu" @@ -51,30 +52,25 @@ export default function SimpleMenu() { onClose={handleClose} > <MenuItem onClick={handleClose}> - <ListItemIcon> - <OpenIcon /> - </ListItemIcon> - Abrir</MenuItem> + <ListItemIcon><OpenIcon /></ListItemIcon>Abrir + </MenuItem> + <MenuItem onClick={handleClose}> - <ListItemIcon> - <DownloadIcon /> - </ListItemIcon> - Baixar</MenuItem> + <ListItemIcon><DownloadIcon /></ListItemIcon>Baixar + </MenuItem> + <MenuItem onClick={handleClose}> - <ListItemIcon> - <ShareIcon /> - </ListItemIcon> - Compartilhar</MenuItem> + <ListItemIcon><ShareIcon /></ListItemIcon>Compartilhar + </MenuItem> + <MenuItem onClick={handleClose}> - <ListItemIcon> - <AddIcon /> - </ListItemIcon> - Guardar</MenuItem> + <ListItemIcon><AddIcon /></ListItemIcon>Guardar + </MenuItem> + <MenuItem onClick={handleClose}> - <ListItemIcon> - <ReportIcon /> - </ListItemIcon> - Reportar</MenuItem> + <ListItemIcon><ReportIcon /></ListItemIcon>Reportar + </MenuItem> + </Menu> </div> ); diff --git a/src/Components/Carousel.js b/src/Components/Carousel.js index 27c394f4ce6a8deb60f90fdc37cd594560659c7a..3e8e9029c2ffba6e2c068378b7f3c73f8277e030 100644 --- a/src/Components/Carousel.js +++ b/src/Components/Carousel.js @@ -426,7 +426,13 @@ const CarouselStyled = styled(Carousel)` display: inline-block; border-top: 8px solid transparent; border-bottom: 8px solid transparent; - content: ''; + content: ' '; + } + .carousel .control-arrow { + background: transparent !important; + } + .m4d-icons { + size: 50px } @@ -648,7 +654,7 @@ class TermsCarousel extends Component { </Grid> </Grid> <div class="rodape col-md-12"> - <p>Dúvidas? Leia a Ãntegra dos <span ng-click="hide()">Termos de Uso</span> ou fale conosco por meio do <span ui-sref="contato">formulário de contato</span>.</p> + <p>Dúvidas? Leia a Ãntegra dos <span ng-click="hide()">Termos de Uso</span> ou fale conosco por meio do <a style={{color: "#fff"}} href="contato">formulário de contato</a>.</p> </div> </div> </div> diff --git a/src/Components/Checkbox.js b/src/Components/Checkbox.js index 9e497b4cc68267ba337fb8d3c89b72fbcf22ecf5..3e0be625c424542d75bd13680417450a409f410d 100644 --- a/src/Components/Checkbox.js +++ b/src/Components/Checkbox.js @@ -25,10 +25,9 @@ const StyledFormControlLabel = styled(FormControlLabel)` .label { font-size : 12px !important; } -` - -const StyledCheckbox = styled(Checkbox)` - color : #00bcd4 !important; + .MuiCheckbox-colorSecondary.Mui-checked { + color : #00bcd4 !important; + } ` export default function LabeledCheckbox(props) { @@ -36,8 +35,7 @@ export default function LabeledCheckbox(props) { return ( <StyledFormControlLabel control={ - <StyledCheckbox - disabled = {props.disabledCheckbox} + <Checkbox value = {props.checked} onChange = {props.handleChange} /> diff --git a/src/Components/CloseModalButton.js b/src/Components/CloseModalButton.js new file mode 100644 index 0000000000000000000000000000000000000000..00e8b3c34553c1ced9ba1b6e397fd5f404ef571d --- /dev/null +++ b/src/Components/CloseModalButton.js @@ -0,0 +1,22 @@ +import React from 'react'; +import { Button } from '@material-ui/core'; +import styled from 'styled-components' +import CloseIcon from '@material-ui/icons/Close'; + +export default function CloseModalButton (props) { + return ( + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> + ) +} + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : 4px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` diff --git a/src/Components/ColCardOwnerOptions.js b/src/Components/ColCardOwnerOptions.js new file mode 100644 index 0000000000000000000000000000000000000000..76b5b750be97631f4262bc89408dac4524116fdb --- /dev/null +++ b/src/Components/ColCardOwnerOptions.js @@ -0,0 +1,94 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react'; +import Button from '@material-ui/core/Button'; +import Menu from '@material-ui/core/Menu'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import MenuItem from '@material-ui/core/MenuItem'; +import OpenIcon from '@material-ui/icons/OpenInNew'; +import CreateIcon from '@material-ui/icons/Create'; +import DeleteForeverIcon from '@material-ui/icons/DeleteForever'; +import {Link} from 'react-router-dom' +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import styled from 'styled-components' +import ModalExcluirColecao from './ModalExcluirColecao.js' + +export default function ColCardOwnerOptions (props) { + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + + const [modalExcluirOpen, toggleModalExcluir] = useState(false) + const openModalExcluir = () => {toggleModalExcluir(true)} + + return ( + <> + <ModalExcluirColecao id={props.id} + open={modalExcluirOpen} handleClose={() => {toggleModalExcluir(false)}} + /> + + <div style={{fontSize: "12px"}}> + <Button aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> + OPÇÕES <MoreVertIcon style={{color : "inherit"}}/> + </Button> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <StyledMenuItem> + <Link to={"/colecao-do-usuario/" + props.id}> + <ListItemIcon><OpenIcon /></ListItemIcon>Abrir + </Link> + </StyledMenuItem> + + <StyledMenuItem onClick={() => {console.log('TODO: MODAL EDITAR COLECAO')}}> + <ListItemIcon><CreateIcon /></ListItemIcon>Editar + </StyledMenuItem> + + <StyledMenuItem onClick={openModalExcluir}> + <ListItemIcon><DeleteForeverIcon /></ListItemIcon>Excluir + </StyledMenuItem> + + + </Menu> + </div> + </> + ) +} + +export const StyledMenuItem = styled(MenuItem)` + color : #666 !important; + + .MuiSvgIcon-root { + vertical-align : middle !important; + } + a { + text-decoration : none !important; + color : #666 !important; + } +` diff --git a/src/Components/ColCardPublicOptions.js b/src/Components/ColCardPublicOptions.js new file mode 100644 index 0000000000000000000000000000000000000000..2ba27fd6551072f69d9218be353c78d2e84413eb --- /dev/null +++ b/src/Components/ColCardPublicOptions.js @@ -0,0 +1,102 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react'; +import Button from '@material-ui/core/Button'; +import Menu from '@material-ui/core/Menu'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import MenuItem from '@material-ui/core/MenuItem'; +import OpenIcon from '@material-ui/icons/OpenInNew'; +import {Link} from 'react-router-dom' +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import styled from 'styled-components' +import ErrorIcon from '@material-ui/icons/Error'; +import ReportModal from './ReportModal.js' +import {getAxiosConfig} from '../Components/HelperFunctions/getAxiosConfig' +import axios from 'axios' +import {apiUrl} from '../env'; + +export default function ColCardPublicOptions (props) { + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + + const [reportModalOpen, toggleReportModal] = useState(false) + const handleReportModal = (value) => {toggleReportModal(value)} + + const handleUnfollow = () => { + let config = getAxiosConfig() + let payload = {} + + axios.put( (`${apiUrl}/collections/` + props.id + '/follow'),payload, config).then( + (response) => {console.log(response.data)}, (error) => {console.log(error)}) + } + + return ( + <> + <ReportModal open={reportModalOpen} handleClose={() => handleReportModal(false)} + form="colecao" complainableId={props.id} + complainableType={"Collection"} + /> + <div style={{fontSize: "12px"}}> + <Button aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> + <MoreVertIcon style={{color : "inherit"}}/> + </Button> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <StyledMenuItem> + <Link to={"/colecao-do-usuario/" + props.id}> + <ListItemIcon><OpenIcon /></ListItemIcon>Abrir + </Link> + </StyledMenuItem> + + <StyledMenuItem onClick={handleUnfollow}> + <ListItemIcon><ErrorIcon /></ListItemIcon>Deixar de Seguir + </StyledMenuItem> + + <StyledMenuItem onClick={() => {handleReportModal(true)}}> + <ListItemIcon><ErrorIcon /></ListItemIcon>Reportar + </StyledMenuItem> + </Menu> + </div> + </> + ) +} + +export const StyledMenuItem = styled(MenuItem)` + color : #666 !important; + + .MuiSvgIcon-root { + vertical-align : middle !important; + } + a { + text-decoration : none !important; + color : #666 !important; + } +` diff --git a/src/Components/ColaborarModal.js b/src/Components/ColaborarModal.js index 29d6dc499501ed400765614c4c1d7d310b5f761c..cc2e2950c326e7c898f65ea3b8f6d8a40a26a761 100644 --- a/src/Components/ColaborarModal.js +++ b/src/Components/ColaborarModal.js @@ -1,4 +1,4 @@ -import React, {useContext} from 'react'; +import React, {useContext, useState} from 'react'; import Modal from '@material-ui/core/Modal'; import Fade from '@material-ui/core/Fade'; import styled from 'styled-components' @@ -9,7 +9,7 @@ import CloseIcon from '@material-ui/icons/Close'; import LabeledCheckbox from "../Components/Checkbox.js" const StyledDivContainer = styled.div` - background-color : rgb(255,255,255);; + background-color : rgb(255,255,255); border-radius : 4px; border-shadow : #000; color : rgb(102,102,102); @@ -25,7 +25,7 @@ const StyledDivHeader = styled.div` text-align : center; display : flex; justify-content : space-between; - padding : 10px 58px 0 58px; + padding : 10px 26px 0 26px; color : #666; font-size : 40px; font-weight : 400; @@ -34,7 +34,7 @@ const StyledDivHeader = styled.div` ` const StyledDivDialogContent = styled.div` - padding : 20px 30px; + padding : 20px 0; ` const StyledButtonsDiv = styled.div` @@ -45,6 +45,7 @@ const StyledButtonsDiv = styled.div` const StyledButton = styled(Button)` background-color : #00acc1 !important; + width : 45% ` const StyledH2 = styled.h2` @@ -77,14 +78,16 @@ const Styledspan = styled.span` export default function ColaborarModal (props) { const {state, dispatch} = useContext(Store) + const [checkbox, controlCheckbox] = useState(false) + const handleCheckbox = () => controlCheckbox(!checkbox) return ( <StyledModal aria-labelledby="transition-modal-title" aria-describedby="transition-modal-description" open={props.open} - animation={true} - centered={true} + + centered="true" onClose={props.handleClose} closeAfterTransition BackdropComponent={Backdrop} @@ -95,6 +98,7 @@ export default function ColaborarModal (props) { <Fade in={props.open}> <StyledDivContainer> <StyledDivHeader> + <span style={{width:"32px"}}/> <StyledH2> Você é professor(a), da educação básica, e gostaria de colaborar com a Plataforma? </StyledH2> @@ -111,7 +115,7 @@ export default function ColaborarModal (props) { }} > <div style={{maxWidth:"350px", marginRight:"0", marginLeft:"auto", color:"#666"}}> - <p style={{textAlign:"start", fontSize:"15px", margin:"0 0 10"}}> + <p style={{textAlign:"justify", fontSize:"15px", margin:"0 0 10"}}> Ao ser identificado como professor(a), você poderá <span style={{color:"#00bcd4"}}> publicar e compartilhar recursos educacionais digitais </span> na plataforma com toda a comunidade escolar do paÃs. @@ -126,7 +130,7 @@ export default function ColaborarModal (props) { </StyledButtonsDiv> </div> <div style={{display:"flex", alignItems:"flex-start"}}> - <LabeledCheckbox label={<Styledspan>Não perguntar novamente</Styledspan>} /> + <LabeledCheckbox label={<Styledspan>Não perguntar novamente!</Styledspan>} checked={checkbox} handleChange={handleCheckbox}/> </div> </StyledDivContentInformation> </StyledDivDialogContent> diff --git a/src/Components/CollectionCardFunction.js b/src/Components/CollectionCardFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..424c0de04b6d1bb4082a7fc098d6cf3b07834a87 --- /dev/null +++ b/src/Components/CollectionCardFunction.js @@ -0,0 +1,417 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useContext} from 'react'; +import {Store} from '../Store.js' +import Card from '@material-ui/core/Card'; +import {apiDomain, apiUrl} from '../env'; +import Options from './CardOptions' +import noAvatar from "../img/default_profile.png"; +import { makeStyles } from '@material-ui/core/styles'; +import Button from '@material-ui/core/Button'; +import styled from 'styled-components' +import Slide from '@material-ui/core/Slide'; +import Grid from '@material-ui/core/Grid'; +import {StyledCard, CardDiv, CardReaDiv, Footer, LikeCounter, ButtonNoWidth, EnviadoPor, TagContainer} from './ResourceCardFunction.js' +import CardContent from '@material-ui/core/CardContent'; +import Rating from '@material-ui/lab/Rating'; +import StarBorderIcon from '@material-ui/icons/StarBorder'; +import FolderIcon from '@material-ui/icons/Folder'; +import FavoriteIcon from '@material-ui/icons/Favorite'; +import AddIcon from '@material-ui/icons/Add'; +import CheckIcon from '@material-ui/icons/Check'; +import LockIcon from '@material-ui/icons/Lock'; +import ColCardOwnerOptions from './ColCardOwnerOptions.js' +import ColCardPublicOptions from './ColCardPublicOptions' + +export default function CollectionCardFunction (props) { + const {state} = useContext(Store) + + const [userAvatar, setUserAvatar] = useState(props.avatar ? (`${apiDomain}` + props.avatar) : noAvatar) + + const [followingHover, handleFollowingHover] = useState(false) + const toggleFollowingHover = (value) => {handleFollowingHover(value)} + + const [slideIn, setSlide] = useState(false) + const controlSlide = () => {setSlide(!slideIn)} + + const RenderFollowButton = () => { + return ( + <FollowButton onClick={() => {console.log("fazer")}}> + <AddIcon/><span>SEGUIR</span> + </FollowButton> + ) + } + + const RenderFollowingButton = () => { + return ( + <FollowingButton onMouseOver={() => toggleFollowingHover(true)} + onMouseLeave={() => toggleFollowingHover(false)} onClick={() => {console.log('fazer')}}> + { + followingHover ? + ( + [ + <span>DEIXAR DE SEGUIR</span> + ] + ) + : + ( + [ + <React.Fragment> + <CheckIcon/><span>SEGUINDO</span> + </React.Fragment> + ] + ) + } + </FollowingButton> + ) + } + + const SlideAnimationContent = () => { + return ( + <SlideContentDiv> + <div style={{display:"flex", flex:"1"}}>{/*marginBottom:10px*/} + <SlideAvatarDiv> + <img className="img" src={userAvatar} alt="user avatar"/> + </SlideAvatarDiv> + <EnviadoPor> + Enviado por: + <br/> + <p>{props.author}</p> + </EnviadoPor> + </div> + { + props.tags && + <TagContainer> + <Grid container spacing={1} justify='safe' style={{height : "inherit"}}> + { + props.tags.map( (tag) => + <Grid item key={tag.id}> + <span key={tag.id}>{tag.name}</span> + </Grid> + ) + } + </Grid> + </TagContainer> + } + </SlideContentDiv> + ) + } + + return ( + <StyledCard> + <CardDiv> + <CardReaDiv> + <Header onMouseEnter={controlSlide} onMouseLeave={controlSlide}> + {/*slide animation and content*/} + <Slide direction="right" in={slideIn} timeout={300}> + <a href="" className="text"> + {SlideAnimationContent()} + </a> + </Slide> + <Slide direction="left" in={!slideIn} timeout={700}> + <a href=""> {/*add links to collection later*/} + + <UserInfo> + <AvatarDiv> + <img src={userAvatar} alt="user avatar"/> + </AvatarDiv> + <UserAndTitle> + <span>{props.author}</span> + <span className={"col-name"}>{props.name}</span> + </UserAndTitle> + </UserInfo> + + + <StyledGrid container direction="row"> + { + props.thumbnails.map( (thumb) => + <Grid item xs={props.thumbnails <= 4 && props.thumbnails > 0 ? 12/props.thumbnails.length : 6}> + <div style={{backgroundImage : `url(${ `${apiDomain}` + thumb})`, height : "100%", width : "100%", backgroundSize : "cover", backgroundPosition : "center"}}/> + </Grid> + ) + } + </StyledGrid> + </a> + </Slide> + </Header> + + <Description> {/*renders rating, number of learning objects and likes count*/} + { + props.authorID !== state.currentUser.id && + <Rating + name="customized-empty" + value={props.rating*10} + precision={0.5} + style={{color:"#666"}} + emptyIcon={<StarBorderIcon fontSize="inherit" />} + /> + } + + <Footer> + <Type> + <FolderIcon /> + <span style={{fontWeight:"bold"}}>{props.thumbnails.length} </span> + <span>{props.thumbnails.length != 1 ? "Recursos" : "Recurso"}</span> + </Type> + <LikeCounter> + <span>{props.likeCount}</span> + <ButtonNoWidth> + <FavoriteIcon style={{color : props.liked ? "red" : "#666" }}/> + </ButtonNoWidth> + </LikeCounter> + </Footer> + </Description> + + </CardReaDiv> + + { + props.authorID === state.currentUser.id ? + ( + <CardReaFooter style={{justifyContent : "space-between"}}> {/*renders following/unfollow and follow button*/} + <Grid container> + <Grid item xs={6} style={{display : "flex", justifyContent : "center"}}> + { + props.privacy === 'private' && + <LockIcon style={{color : "#666"}}/> + } + </Grid> + <Grid item xs={6} style={{display : "flex", justifyContent : "flex-end"}}> + <ColCardOwnerOptions + id={props.id} + /> + </Grid> + </Grid> + </CardReaFooter> + ) + : + ( + <CardReaFooter> {/*renders following/unfollow and follow button*/} + { + props.followed ? + ( + [ + RenderFollowingButton() + ] + ) + : + ( + [ + RenderFollowButton() + ] + ) + } + <ColCardPublicOptions + id={props.id} + /> + </CardReaFooter> + ) + } + + </CardDiv> + </StyledCard> + ) +} + +const SlideAvatarDiv = styled.div` + vertical-align : middle; + border : 0; + + img { + height : 40px; + width : 40px; + border : 0; + vertical-align : middle; + border-radius : 50%; + } +` + +const SlideContentDiv = styled.div` + background-color : #7e57c2; + padding : 10px; + width : 100%; + height : 100%; + position : absolute; + display : flex; + flex-direction : column; +` + +const UserAndTitle = styled.div` + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 30px 10px 10px 10px; + margin-top: -25px; + background-color: rgba(0,0,0,.5); + color: #fff; + + .col-name { + padding-top: 5px; + font-size: 17px; + font-weight: 500; + text-overflow: ellipsis; + overflow: hidden; + text-align: center; + width: 100%; + } +` + +const AvatarDiv = styled.div` + z-index : 5; + overflow : hidden; + + img { + border-radius : 50%; + height : 70px; + width : 70px; + border : 2px solid #fff; + background-color : #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.45); + } +` + +const UserInfo = styled.div` + position : absolute; + display : flex; + flex-direction : column; + width : 100%; + height : 100%; + justify-content : flex-end; + align-items : center; + +` + +const CardReaFooter = styled.div` + height : 60px; + display : flex; + justify-content : center; + align-items : center; + border-top : 1px solid #e5e5e5; + + .MuiSvgIcon-root { + font-family: 'Material Icons'; + color : inherit; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + } +` + +const Type = styled.div` + line-height : 1; + font-size : .85em; + + .MuiSvgIcon-root { + font-size : 21px; + color : #673ab7; + vertical-align : middle; + padding-right : .4em; + } +` + +const StyledGrid = styled(Grid)` + .MuiGrid-item { + height : 136px; + width 130px; + background : #f9f9f9; + border : 1px solid #f4f4f4; + border-color : #f4f4f4; + } +` + +const Header = styled.div` + display : flex; + height : 230px; + position : relative; + overflow : hidden; +` + +const Description = styled.div` + display : flex; + height : 60px + background-color : #fff; + flex-direction : column; + justify-content: space-between; + padding : 15px; +` +const FollowButton = styled(Button)` + border : 2px solid #503096 !important; + border-radius : 5px !important; + margin : 10px !important; + color :#503096 !important; + min-width : 150px !important; + min-height : 36px !important; + text-align : center !important; + vertical-align : middle !important; + background : transparent !important; + text-transform : uppercase !important; + font-family : inherit !important; + overflow : hidden !important; + font-weight : normal !important; + text-decoration : none !important; + letter-spacing: .01em !important; + white-space : nowrap !important; + font-weight: 500; + + &:hover { + background-color : rgba(158,158,158,0.2) !important; + + } + +` +const FollowingButton = styled(Button)` + border : 2px solid #503096 !important; + border-radius : 5px !important; + margin : 10px !important; + color :#fff !important; + min-width : 150px !important; + min-height : 36px !important; + text-align : center !important; + vertical-align : middle !important; + background-color : #503096 !important; + text-transform : uppercase !important; + font-family : inherit !important; + overflow : hidden !important; + font-weight : normal !important; + text-decoration : none !important; + letter-spacing: .01em !important; + white-space : nowrap !important; + font-weight: 500; + + &:hover { + background-color : rgba(158,158,158,0.2) !important; + color : #503096 !important; + box-shadow : none !important; + } + +` diff --git a/src/Components/Comment.js b/src/Components/Comment.js new file mode 100644 index 0000000000000000000000000000000000000000..5c797282aeccccb928ede08e34d1c0e207830e3e --- /dev/null +++ b/src/Components/Comment.js @@ -0,0 +1,329 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useContext, useEffect} from 'react' +import {Store} from '../Store.js' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; +import { Button } from '@material-ui/core'; +import {Link} from 'react-router-dom' +import {apiDomain} from '../env'; +import noAvatar from "../img/default_profile.png"; +import Rating from '@material-ui/lab/Rating'; +import StarBorderIcon from '@material-ui/icons/StarBorder'; +import EditIcon from '@material-ui/icons/Edit'; +import TextField from "@material-ui/core/TextField"; +import axios from 'axios' +import {apiUrl} from '../env'; +import Menu from '@material-ui/core/Menu'; +import MenuItem from '@material-ui/core/MenuItem'; +import ModalExcluir from './ModalExcluirComentario.js' + +export default function Comment (props) { + + /* + Required props: + rerenderCallback = callback function to trigger re-render on parent component + reviewRatings = required to update comment even though the user cannot update their rating score... + objectID = collection/learning object id + reviewID = self-explanatory I hope + authorID = author id; links to public user page + authorAvatar = either a string denoting the author's avatar file location or null + rating = star rating + name = title (?) + authorName = author username + description = the user comment itself + createdAt + recurso : boolean; determines whether to display orange or purple font + */ + var moment = require('moment') + + const {state} = useContext(Store) + const [displayedComment, setDisplayedComment] = useState(props.description) + const [editando, setEditando] = useState(false) + const [anchorEl, setAnchorEl] = React.useState(null); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + const [modalOpen, toggleModal] = useState(false) + + const [comment, setComment] = useState({ + error : false, + value : props.description + }) + const handleChange = (e) => { + const userInput = e.target.value + const flag = (userInput.length === 0 ? true : false); + setComment({...comment, error : flag, value : userInput}) + } + + const updateComment = () => { + const finalComment = comment + if (!finalComment.error) { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + let payload = { + "review" : { + "name":null, + "description":finalComment.value, + "pros":null, + "cons":null, + "review_ratings_attributes" : props.reviewRatings + } + } + + axios.put( (`${apiUrl}/learning_objects/` + props.objectID + '/reviews/' + props.reviewID),payload, config + ).then((response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + setDisplayedComment(finalComment.value) + setEditando(false) + props.handleSnackbar(2) + }, (error) => {console.log(error)}) + } + } + + const deleteComment = () => { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + axios.delete( (`${apiUrl}/learning_objects/` + props.objectID + '/reviews/' + props.reviewID), config).then((response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + props.rerenderCallback(); props.handleSnackbar(3)}, (error) => {console.log(error)}) + + toggleModal(false) + + } + + return ( + <React.Fragment> + <ModalExcluir + open={modalOpen} handleClose={() => {toggleModal(false)}} + handleConfirm={deleteComment} + /> + <Grid container style={{paddingLeft : "20px"}}> + + <Grid item xs={1}> + { + props.authorID && + <AvatarDiv> + <Link to={'/usuario-publico/' + props.authorID}> + <img src={props.authorAvatar ? apiDomain + props.authorAvatar : noAvatar} alt="author avatar"/> + </Link> + </AvatarDiv> + } + </Grid> + + <Grid item xs={10}> + <Comentario> + <div className="star-rating-container"> + <Rating + name="read-only" + value={props.rating} + readOnly + size="small" + style={{color:"#666"}} + emptyIcon={<StarBorderIcon fontSize="inherit" style={{color : "#a5a5a5"}} />} + /> + </div> + + { + props.name && + <strong>{props.name}</strong> + } + + + <div> + { + editando ? + ( + <React.Fragment> + <div style={{marginTop : "5%", padding : "2px"}}> + <StyledTextField + colecao={!props.recurso} + id = "input-comentario" + label = {"Editar Comentário"} + margin = "normal" + value = {comment.value} + multiline={true} + rows="5" + onChange = {(e) => {handleChange(e)}} + style={{width:"100%"}} + /> + </div> + <div style={{float : "right"}}> + <StyledButton + style={props.recurso ? {backgroundColor : "#ff7f00"} : {backgroundColor : "#673ab7"}} + onClick={() => {setEditando(false)}} + > + Fechar + </StyledButton> + <StyledButton + style={props.recurso ? {backgroundColor : "#ff7f00"} : {backgroundColor : "#673ab7"}} + onClick={() => updateComment()} + > + Salvar + </StyledButton> + </div> + </React.Fragment> + ) + : + ( + <React.Fragment> + <p> + { + props.authorID && + <Link + to={'/usuario-publico/' + props.authorID} + style={{ + fontWeight : "bolder", + color : props.recurso ? "#ff7f00" : "#673ab7" + }} + > + {props.authorName} + </Link> + } + : {displayedComment} + </p> + { + props.authorID !== state.currentUser.id && + <span className="date"> + {moment(props.createdAt).format("DD/MM/YYYY")} + </span> + } + </React.Fragment> + ) + } + </div> + + </Comentario> + </Grid> + + { + props.authorID === state.currentUser.id && + <Grid item xs={1}> + <StyledDiv> + <Button onClick={handleClick}><EditIcon/></Button> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <MenuItem onClick={() => {setEditando(true); handleClose()}}>Editar</MenuItem> + <MenuItem onClick={() => {toggleModal(true);handleClose()}}>Excluir</MenuItem> + </Menu> + </StyledDiv> + </Grid> + } + </Grid> + </React.Fragment> + ) +} + +const StyledTextField = styled(TextField)` + label.Mui-focused { + color : ${props => props.colecao ? "rgb(103,58,183)" : "rgb(255,127,0)"}; + } + + .MuiInput-underline::after { + border-bottom: ${props => props.colecao ? "2px solid rgb(103,58,183)" : "2px solid rgb(255,127,0)"}; + } + +` + +const StyledDiv = styled.div` + text-align : center; + .MuiButton-root { + @media screen and (max-width: 990px) { + padding-right : 35px !important; + } + } +` +const StyledButton = styled(Button)` + color : rgba(255,255,255,0.87) !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + margin : 6px 8px !important; + font-weight : 600 !important; +` + +const Comentario = styled.div` + @media screen and (max-width: 990px) { + padding-left : 55px !important; + } + font-size : 14px; + + .star-rating-container { + width : 100px; + } + + p { + margin : 0 0 10px; + padding-left : 2px + } + + a { + text-decoration : none !important; + } + + .date { + color : #ababab; + font-size : 12px; + font-weight : lighter; + padding-left : 3px; + } +` + +const AvatarDiv = styled.div` + text-align : center; + float : left; + position : relative; + width : 65px; + height : 65px; + a { + text-decoration : none !important; + } + + img { + width : 100% !important; + height : 100% !important; + border-radius : 100% + vertical-align : middle; + } +` diff --git a/src/Components/ContactButtons/FollowButton.js b/src/Components/ContactButtons/FollowButton.js new file mode 100644 index 0000000000000000000000000000000000000000..09362df143e866e793127eec5d6394c62acbdbf9 --- /dev/null +++ b/src/Components/ContactButtons/FollowButton.js @@ -0,0 +1,141 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import PersonAddIcon from '@material-ui/icons/PersonAdd'; +import styled from 'styled-components' +import Button from '@material-ui/core/Button'; +import axios from 'axios' +import {apiUrl} from '../../env'; +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig' + +export default function FollowButton (props) { + + const handleFollow = (followerID) => { + const id = followerID + console.log('id: ', id) + + let payload = {} + const header = getAxiosConfig() + + axios.put((`${apiUrl}/users/` + id + '/follow'), payload, header).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + props.toggleFollowed() + }, + (error) => { + console.log(error) + } + ) + + } + + return ( + <StyledButton onClick={() => handleFollow(props.followerID)}> + <PersonAddIcon style={{fontSize : "24px", + display : "inline-block", + verticalAlign : "middle", + color : "#00bcd4"}}/> + SEGUIR + </StyledButton> + ) +} + +export function NoIcon (props) { + + const handleFollow = (followerID) => { + const id = followerID + console.log('id: ', id) + + if (id != undefined) { + let payload = {} + const header = getAxiosConfig() + + axios.put((`${apiUrl}/users/` + id + '/follow'), payload, header).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + }, + (error) => { + console.log(error) + } + ) + } + } + + return ( + <NoIconButton onClick={() => handleFollow(props.followableID)}>seguir</NoIconButton> + ) +} + +const NoIconButton = styled(Button)` + .MuiButton-label { + color : #00bcd4 !important; + } + background-color : #fff !important; + border : solid 1px rgba(0,188,212,.85) !important; + font-size : 14px !important; + border-radius : 3px !important; + height : 36px !important; + min-width : 88px !important; + vertical-align : middle !important; + text-color : #00bcd4 !important; + align-items : center !important; + text-align : center !important; + padding : 0 6px !important; + margin : 6px 8px !important; +` + +const StyledButton = styled(Button)` + background-color : #fff !important; + border : 1px solid #00bcd4 !important; + color : #00bcd4 !important; + font-size : 14px !important; + display : inline-block !important; + position : relative !important; + cursor : pointer !important; + height : 36px !important; + min-width : 88px !important; + line-height : 36px !important; + vertical-align : middle !important; + -webkit-box-align : center !important; + -webkit-align-items : center !important; + -ms-grid-row-align : center !important; + align-items : center !important; + text-align : center !important; + border-radius : 3px !important; + -webkit-user-select : none !important; + -moz-user-select : none !important; + -ms-user-select : none !important; + user-select : none !important; + padding : 0 6px !important; + margin : 6px 8px !important; + white-space : nowrap !important; + text-transform : uppercase !important; + font-weight : 500 !important; + font-style : inherit !important; + font-variant : inherit !important; + font-family : inherit !important; + text-decoration : none !important; + overflow : hidden !important; +` diff --git a/src/Components/ContactButtons/FollowersCountButton.js b/src/Components/ContactButtons/FollowersCountButton.js new file mode 100644 index 0000000000000000000000000000000000000000..43dfbfb8ea0b7c21f92b0f778a8b3b05b0e87eea --- /dev/null +++ b/src/Components/ContactButtons/FollowersCountButton.js @@ -0,0 +1,37 @@ +import React from 'react' +import styled from 'styled-components' +import Button from '@material-ui/core/Button'; + +export default function FollowersCountButton (props) { + + const FollowerButtonSpan = () => { + const followCount = props.followCount + let retVal = followCount + (followCount !== 1 ? " seguidores" : " seguidor") + return retVal + } + + return ( + <FollowersButton> + {FollowerButtonSpan()} + </FollowersButton> + ) +} + + +const FollowersButton = styled(Button)` + right : 0 !important; + text-transform : none !important; + color : #666 !important; + font-size : 13px !important; + font-weight : 400 !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + margin: 6px 8px !important; + padding : 0 6px !important; + min-width : 88px !important; + min-height : 36px !important; + vertical-align : middle !important; + text-align : center !important; + border : 0 !important; + border-radius : 3px !important; + background-color : rgb(250,250,250) !important; +` diff --git a/src/Components/ContactButtons/FollowingButton.js b/src/Components/ContactButtons/FollowingButton.js new file mode 100644 index 0000000000000000000000000000000000000000..6fa7464a760885e617f37a1028aafc496b2b2610 --- /dev/null +++ b/src/Components/ContactButtons/FollowingButton.js @@ -0,0 +1,138 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import styled from 'styled-components' +import Button from '@material-ui/core/Button'; +import FollowingIcon from '../../img/how_to_reg-24px.png' +import ModalConfirmarUnfollow from '../ModalConfirmarUnfollow.js' +import axios from 'axios' +import {apiUrl} from '../../env'; +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig' + +export default function FollowingButton (props) { + + const [modalOpen, toggleModal] = useState(false) + const [unfollowID, setUnfollowID] = useState(-1) + + const [followingHover, handleFollowingHover] = useState(false) + const toggleFollowingHover = (value) => {handleFollowingHover(value)} + + const handleUnfollowPartOne = (followedID) => { + setUnfollowID(followedID) + toggleModal(true) + } + + const handleUnfollowPartTwo = () => { + const id = unfollowID + console.log('id: ', id) + + let payload = {} + const header = getAxiosConfig() + + axios.put((`${apiUrl}/users/` + id + '/follow'), payload, header).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + props.toggleFollowed() + toggleModal(false) + }, + (error) => { + console.log(error) + } + ) + } + + return ( + <React.Fragment> + <ModalConfirmarUnfollow open={modalOpen} + handleClose={() => {toggleModal(false)}} + handleConfirm = {handleUnfollowPartTwo} + /> + <StyledButton + onMouseOver={() => toggleFollowingHover(true)} + onMouseLeave={() => toggleFollowingHover(false)} + onClick={() => handleUnfollowPartOne(props.followedID)} + > + { + followingHover? + ( + [ + <span>DEIXAR DE SEGUIR</span> + ] + ) + : ( + [ + <> + <img src={FollowingIcon} alt='Ãcone seguindo'/><span>Seguindo</span> + </> + ] + ) + } + </StyledButton> + </React.Fragment> + ) +} + + +export const StyledButton = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + display : inline-block !important; + position : relative !important; + cursor : pointer !important; + min-height : 36px !important; + min-width : 88px !important; + line-height : 36px !important; + vertical-align : middle !important; + -webkit-box-align : center !important; + -webkit-align-items : center !important; + -ms-grid-row-align : center !important; + align-items : center !important; + text-align : center !important; + border-radius : 3px !important; + -webkit-user-select : none !important; + -moz-user-select : none !important; + -ms-user-select : none !important; + user-select : none !important; + border : 0 !important; + padding : 0 6px !important; + margin : 6px 8px !important; + white-space : nowrap !important; + text-transform : uppercase !important; + font-weight : 500 !important; + font-size : 14px !important; + font-style : inherit !important; + font-variant : inherit !important; + font-family : inherit !important; + text-decoration : none !important; + overflow : hidden !important; + &:hover { + background-color : #fff !important; + color : #00bcd4 !important; + border : 1px solid #00bcd4 !important; + } + img { + height : 24px; + display : inline-block; + vertical-align : middle; + color : #fff !important; + } +` diff --git a/src/Components/ContactCard.js b/src/Components/ContactCard.js new file mode 100644 index 0000000000000000000000000000000000000000..83ce16ab91084f1761c0395ba4a9d16f66b232b6 --- /dev/null +++ b/src/Components/ContactCard.js @@ -0,0 +1,188 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect, useContext} from 'react'; +import {Container} from 'react-grid-system'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import CardActionArea from '@material-ui/core/CardActionArea'; +import CardActions from '@material-ui/core/CardActions'; +import {apiDomain} from '../env'; +import { Store } from '../Store.js'; +import noAvatar from "../img/default_profile.png"; +import { makeStyles } from '@material-ui/core/styles'; +import CardMedia from '@material-ui/core/CardMedia'; +import Button from '@material-ui/core/Button'; +import Typography from '@material-ui/core/Typography'; +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl} from '../env'; +import Options from './ContactCardOptions.js' +import FollowButton from './ContactButtons/FollowButton.js' +import FollowingButton from './ContactButtons/FollowingButton.js' +import FollowersCountButton from './ContactButtons/FollowersCountButton.js' +import {Link} from 'react-router-dom'; + +const useStyles = makeStyles({ + root: { + maxWidth: 345, + borderRadius : 0 + }, +}); + +export default function ImgMediaCard(props) { + const classes = useStyles(); + const {state} = useContext(Store) + + const [followedBoolean, setFollowedBoolean] = useState(props.followed) + const toggleFollowed = () => {setFollowedBoolean(!followedBoolean)} + return ( + <StyledCard> + <CardDiv> + <CardAreaDiv> + {/*Top part of contat card (background image, number of followers and avatar)*/} + <Header> + <StyledCardMedia image={props.cover}> + <div style = {{display : "flex", backgroundColor : "inherit", float : "right"}}> + <Link to={props.href}> + <FollowersCountButton followCount={props.follow_count}/> + </Link> + <AvatarDiv> + <img src={props.avatar ? props.avatar : noAvatar} alt='user avatar' + style={{height : "100%", width : "100%", borderRadius : "50%"}}/> + </AvatarDiv> + </div> + </StyledCardMedia> + </Header> + + {/*Rest of the card content. Button to be rendered depends on whether the contact is followed by the user*/} + <CardContent> + <UserInfo> + <Link to={props.href}> + <p className="p1"> + {props.name} + </p> + </Link> + + <Link to={props.href}> + <span style={{fontSize : "14px", fontWeight : "normal"}}> + <b>{props.numCollections}</b> {props.numCollections != 1? "Coleções" : "Coleção"} | <b>{props.numLearningObjects}</b> {props.numLearningObjects != 1? "Recursos" : "Recurso"} + </span> + </Link> + + <div style={{display : "flex", justifyContent : "center"}}> + { + followedBoolean ? + ( + [ + <FollowingButton followedID={props.followerID} toggleFollowed={toggleFollowed}/> + ] + ) + : + ( + [ + <FollowButton followerID={props.followerID} toggleFollowed={toggleFollowed}/> + ] + ) + } + <Options followableID={props.followerID} followed={followedBoolean}/> + </div> + </UserInfo> + </CardContent> + </CardAreaDiv> + </CardDiv> + </StyledCard> + ); +} + +/*Controls top part of Card*/ +const Header = styled.div` + display : flex; + height : 152px; + position : relative; +` + +/* Had to create these classes so I could avoid using card action Area -------*/ +export const CardAreaDiv = styled.div` + display : flex; + flex-direction : column; + height : 360px; + width : 272.5px; + margin : 0 auto; +` +export const CardDiv = styled.div` + background-color : #fff; + text-align : start; + font-family : 'Roboto', sans serif; + color : #666; +` +/*----------------------------------------------------------------------------*/ + + + +/*Override Material UI styling -----------------------------------------------*/ +const StyledCardMedia = styled(CardMedia) ` + height : 100%; + width : 100%; + background-size : cover; + background-position : center; + +` +const StyledCard = styled(Card)` + width : 272.5px; + max-height : 380px; + margin-top : 10px; + margin-bottom : 10px; + max-width : 345px; + border-radius : 0; + box-shadow : 0 0 5px 0 rgba(0,0,0,.25) !important; +` +/*----------------------------------------------------------------------------*/ + + +const UserInfo = styled.div` + text-align : center; + margin-top : 50px; + color : #666; + + a { + text-decoration : none !important; + color : #666; + } + + .p1 { + font-size : 17px; + margin : 0 0 10px; + overflow : hidden; + text-overflow : ellipsis; + white-space : nowrap; + } +` + +/*Rounded div to be used with avatar pic*/ +const AvatarDiv = styled.div` + border-radius : 100%; + left : 50%; + position : absolute; + -webkit-transform : translateX(-50%); + transform : translateX(-50%); + top : 65px; + height : 126px; + width : 126px; + border : 2px solid #fff; +` diff --git a/src/Components/ContactCardOptions.js b/src/Components/ContactCardOptions.js new file mode 100644 index 0000000000000000000000000000000000000000..7cccf882fd8c034fd113d80dee2f2ecc7528b0e1 --- /dev/null +++ b/src/Components/ContactCardOptions.js @@ -0,0 +1,161 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import {Store} from '../Store.js' +import styled from 'styled-components' +import Button from '@material-ui/core/Button'; +import Menu from '@material-ui/core/Menu'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import MenuItem from '@material-ui/core/MenuItem'; +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import OpenIcon from '@material-ui/icons/OpenInNew'; +import ReportIcon from '@material-ui/icons/Error'; +import PersonAddIcon from '@material-ui/icons/PersonAdd'; +import axios from 'axios' +import {apiUrl} from '../env'; +import {getAxiosConfig} from './HelperFunctions/getAxiosConfig' +import ReportModal from './ReportModal.js' +import {Link} from 'react-router-dom' + +export default function SimpleMenu(props) { + const {state} = useContext(Store) + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + const handleFollow = (followerID) => { + const id = followerID + console.log('id: ', id) + + let payload = {} + const header = getAxiosConfig() + axios.put((`${apiUrl}/users/` + id + '/follow'), payload, header).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + }, + (error) => { + console.log(error) + } + ) + } + + const [reportModal, toggleReportModal] = useState(false) + const handleModal = (value) => { + toggleReportModal(value) + {/*if (state.currentUser.id) { + toggleReportModal(!reportModal) + } + else { + toggleLoginModal(true) + }*/} + } + + return ( + <> + { + reportModal && + <ReportModal open={reportModal} handleClose={() => handleModal(false)} + form="user" complainableId={props.followableID} + complainableType={"User"} + {...props}/> + } + <div style={{fontSize: "12px", display : "flex", flexDirection : "column", justifyContent : "center"}}> + <ButtonNoWidth aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> + <MoreVertIcon style={{color : "#666"}}/> + </ButtonNoWidth> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <StyledMenuItem onClick={handleClose}> + <Link to={"/usuario-publico/" + props.followableID}> + <ListItemIcon><OpenIcon /></ListItemIcon>Abrir + </Link> + </StyledMenuItem> + + { + props.followed ? + ( + <StyledMenuItem onClick={() => {handleFollow(props.followableID);handleClose()}}> + <ListItemIcon><ReportIcon /></ListItemIcon>Deixar de Seguir + </StyledMenuItem> + ) + : + ( + <StyledMenuItem onClick={() => {handleFollow(props.followableID);handleClose()}}> + <ListItemIcon><PersonAddIcon /></ListItemIcon>Seguir + </StyledMenuItem> + ) + } + + + <StyledMenuItem onClick={() => {handleModal(true); handleClose()}}> + <ListItemIcon><ReportIcon /></ListItemIcon>Reportar + </StyledMenuItem> + </Menu> + </div> + </> + ); +} + +const ButtonNoWidth = styled(Button)` + width : 24px !important; + min-width : 24px !important; + max-height : 24px !important; + padding : 0 !important; + background-color : #fff !important; + color : #a5a5a5 !important; + border : 0 !important; + + .MuiButton-root { + width : 24px !important; + min-width : 12px !important; + } + + .MuiSvgIcon-root { + padding-right : 0 !important; + vertical-align : middle; + } + + .MuiButton-label { + padding-left : 4px !important; + } + ` + +const StyledMenuItem = styled(MenuItem)` + color : #666 !important; + .MuiSvgIcon-root { + vertical-align : middle !important; + } + a { + text-decoration : none !important; + color : #666 !important; + } +` diff --git a/src/Components/ContactForm.js b/src/Components/ContactForm.js new file mode 100644 index 0000000000000000000000000000000000000000..e5cc2981d7e31e78fc002e5bf9943672b0a1e15c --- /dev/null +++ b/src/Components/ContactForm.js @@ -0,0 +1,265 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; +import FormInput from "../Components/FormInput.js" +import axios from 'axios' +import {apiUrl} from '../env'; + + + + +const Button = styled.button` + + background-color: #00acc1; + color:#fff; + font-family: Roboto,sans-serif; + font-size: 14px; + font-weight: 500; + height: 36px; + border-radius: 3px; + padding-left: 16px; + padding-right: 16px; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); + outline: none; + position: relative; + cursor: pointer; + min-height: 36px; + min-width: 88px; + line-height: 36px; + vertical-align: middle; + align-items: center; + text-align: center; + border-radius: 3px; + box-sizing: border-box; + user-select: none; + border: 0; + padding: 0 6px; + padding-right: 6px; + padding-left: 6px; + margin: 6px 8px; + + white-space: nowrap; + text-transform: uppercase; + font-weight: 500; + font-size: 14px; + font-style: inherit; + font-variant: inherit; + font-family: inherit; + text-decoration: none; + overflow: hidden; + transition: box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1); + + +` + + + + function validateNome (nome) { + let flag = false + if(nome.length === 0) { + flag = true + } + + return flag + } + + + function validateMensagem (mensagem) { + let flag = false + if(mensagem.length === 0) { + flag = true + } + + return flag + } + + function validateEmail (email) { + let flag = false + if (email.split("").filter(x => x === "@").length !== 1 || email.length < 7) { + flag = true + } + return flag + } + + function Formulario (props){ + + const [nome, handleNome] = useState( + { + dict : { + key:false, + value:"" + } + }) + const [email, handleEmail] = useState( + { + dict : { + key:false, + value:"" + } + }) + const [mensagem, handleMensagem] = useState( + { + dict : { + key: false, + value:"" + } + }) + + + const preencheNome = (e) => { + const aux2 = e.target.value + const flag = validateNome(aux2) + handleNome({...nome, dict : { + key : flag, + value : e.target.value + }}) + console.log(nome) + } + + const preencheEmail = (e) => { + const aux = e.target.value + const flag = validateEmail(aux) + handleEmail({...email, dict : { + key : flag, + value : e.target.value + }}) + console.log(email) + } + + const preencheMensagem = (e) => { + const msg = e.target.value + console.log(msg) + let flag = validateMensagem(msg) + handleMensagem({...mensagem, dict : { + key : flag, + value : msg + }}) + console.log(mensagem) + } + + const limpaTudo = () => { + + handleNome({ + dict : { + key: false, + value:"" + }} + ); + + handleEmail({ + dict : { + key: false, + value:"" + }} + ) + + handleMensagem({ + dict : { + key: false, + value:"" + }} + ) + + } + + + + const onSubmit = (e) => { + //on submit we should prevent the page from refreshing + e.preventDefault(); //though this is arguable + console.log(!(nome.dict.key && email.dict.key && mensagem.dict.key )) + // Se não houver erro em nunhum dos campos E nenhum dos campos for vazio: a página faz o contato com o backend e os campos ficam em branco no formulário + if (!(nome.dict.key || email.dict.key || mensagem.dict.key )) { + + axios.post(`${apiUrl}/contacts`, + { + contact : { + name: nome.dict.value, + email: email.dict.value, + message: mensagem.dict.value + } + + } + ).then() + + + + limpaTudo(); + + } + + + + } + + + + + return( + + + + <form onSubmit={e => onSubmit(e)}> + <FormInput + inputType={"text"} + name={"nome"} + value={nome.dict.value} + placeholder={"Nome *"} + error = {nome.dict.key} + help = {nome.dict.key ? "insira seu nome para o contato " : ""} + handleChange={e => preencheNome(e)} + /> + <br/> + <FormInput + inputType={"text"} + name={"email"} + value={email.dict.value} + placeholder={"E-mail *"} + error = {email.dict.key} + help = {email.dict.key ? "Formato de e-mail incorreto ou vazio, tente : usuario@provedor.com" : ""} + handleChange={e => preencheEmail(e)} + /> + <br/> + <br/> + <FormInput + inputType={"text"} + name={"mensagem"} + value={mensagem.dict.value} + placeholder={"Mensagem *"} + multi = {true} + rows = "5" + rowsMax = "6" + error = {mensagem.dict.key} + help = {mensagem.dict.key ? "Faltou escrever sua mensagem de sugestão, crÃtica ou dúvida." : "Escreva sua mensagem no campo acima."} + handleChange={e => preencheMensagem(e)} + /> + <br/> + <br/> + <div style={{display: "flex", justifyContent: "center"}}> + <Button onClick={e => onSubmit(e)} >ENVIAR MENSAGEM</Button> + </div> + </form> + + + + ); +} + +export default Formulario; diff --git a/src/Components/CriarColecaoForm.js b/src/Components/CriarColecaoForm.js new file mode 100644 index 0000000000000000000000000000000000000000..83560d9173fa7db7b68174553865c12e4fd6ae8c --- /dev/null +++ b/src/Components/CriarColecaoForm.js @@ -0,0 +1,216 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useContext} from 'react' +import {Store} from '../Store.js' +import { Button } from '@material-ui/core'; +import styled from 'styled-components' +import Radio from '@material-ui/core/Radio'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import FormControl from '@material-ui/core/FormControl'; +import TextField from '@material-ui/core/TextField'; +import axios from 'axios' +import {apiUrl} from '../env'; + +export default function CriarColecaoForm (props) { + const {state} = useContext(Store) + + const [value, setValue] = React.useState(-1); + + /*values are set according to backend complaint id*/ + const [options] = React.useState([ + {value : "pública", text :'Pública (Sua coleção estará disponÃvel para todos)'}, + {value : "privada", text : 'Privada (Somente você poderá visualizar esta coleção)'} + ]) + + const handleChange = (event) => { + setValue(event.target.value); + }; + + const [colName, setColName] = React.useState({ + key : false, + value : "", + }) + + const handleColName = (e) => { + const userInput = e.target.value + + const flag = userInput.length == 0 ? true : false + + setColName({...colName, + key : flag, + value : userInput + }) + } + + const formSubmit = (e) => { + e.preventDefault() + + {/*if user didn't select either one, default to privada*/} + const finalRadioValue = value === 'pública' ? 'public' : 'private' + const finalColName = colName + + console.log(finalRadioValue, finalColName.value) + if(!(finalColName.key)) { + let payload = { + "collection" : { + "name" : finalColName.value, + "owner_id" : state.currentUser.id, + "owner_type" : "User", + "privacy" : finalRadioValue + } + } + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid') + } + } + + axios.post( (`${apiUrl}/collections/`), payload, config + ).then( + (response) => { + console.log(response) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + props.finalize(response.data.id) + }, (error) =>{console.log(error)}) + } + } + + return ( + <form onSubmit={(e) => {formSubmit(e)}} style={{textAlign : "left"}}> + + <StyledTextField + id = {"col-name"} + label={"Nome da coleção"} + type = {"text"} + value = {colName.value} + onChange = {e => handleColName(e)} + error = {colName.key} + + helperText = {colName.key ? <span>O nome é importante para identificar a sua coleção na plataforma.<br/>Ex: Matemática Ensino Médio </span> : ""} + required = {true} + style={{width:"100%"}} + /> + + <span style={{fontSize : "12px", color : "#b3b3b3"}}>Esta coleção é:</span> + + <StyledFormControl component="fieldset"> + <RadioGroup value={value} onChange={handleChange}> + { + options.map(option => + <FormControlLabel key={option.value} value={option.value} control={<Radio color="#673ab7"/>} label={option.text} /> + ) + } + </RadioGroup> + </StyledFormControl> + + <ButtonsDiv> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonEnviar type="submit">CRIAR COLEÇÃO</ButtonEnviar> + </ButtonsDiv> + </form> + ); +} + +export const ButtonsDiv = styled.div` + display : flex; + flex-direction : row; + justify-content : center; + align-items : center; +` + +export const ButtonCancelar = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + height : 36px !important; + padding-left : 16px !important; + padding-right : 16px !important; + font-weight : 500 !important; + border-radius : 3px !important; + color :#666 !important; + background-color: transparent; + min-width : 88px !important; + height : 36px !important; +` + +export const ButtonEnviar = styled(Button)` + background-color : #673ab7 !important; + color : #fff !important; + font-size: 14px !important; + font-weight: 500 !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important; + outline : none !important; + min-width : 88px !important; + vertical-align : middle !important; + margin : 6px 8px !important; + text-decoration : none !important; + + .MuiButton-label { + padding-right : 16px; + padding-left : 16px; + } +` +export const StyledTextField = styled(TextField)` + margin : 18px 0 !important; + + .MuiFormHelperText-root { + text-align : right; + } + + label.Mui-focused { + color : #673ab7; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 2px solid #673ab7; + } +` + +export const StyledFormControl = styled(FormControl)` + display : block !important; + + .MuiFormControlLabel-root { + color : #666; + } + .MuiIconButton-label { + color : #666; + } + .PrivateRadioButtonIcon-checked { + color : orange; + } + + .MuiTypography-body1 { + font-size : 14px; + } +` diff --git a/src/Components/CriarColecaoModal.js b/src/Components/CriarColecaoModal.js new file mode 100644 index 0000000000000000000000000000000000000000..9b04f2dd04da1c6e3a71a5cb26a0839da1470ce4 --- /dev/null +++ b/src/Components/CriarColecaoModal.js @@ -0,0 +1,133 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import CriarColecaoForm from './CriarColecaoForm.js' +import CloseIcon from '@material-ui/icons/Close'; + +function CloseModalButton (props) { + return ( + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> + ) +} + +export default function CriarColecaoModal (props) { + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container> + <Header> + <span style={{width:"32px"}}/> + <h2>Criar Coleção</h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + <Content style={{paddingTop : "0"}}> + <CriarColecaoForm handleClose={props.handleClose} finalize={props.handleClose}/> + </Content> + </Container> + </Fade> + </StyledModal> + ) +} + +const Content = styled.div` + padding : 20px 30px; + overflow-y: visible; + +` + +const Header = styled.div` + display : flex; + flex-direction : row; + padding : 10px 26px 0 26px; + align-items : center; + justify-content : space-between; + height : 64px; + + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + background-color : white; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + + @media screen and (min-width : 96px) { + width : 500px; + } + + @media screen and (max-width : 699px) { + width : 100%; + height : 100%; + } +` diff --git a/src/Components/Cropper.js b/src/Components/Cropper.js new file mode 100644 index 0000000000000000000000000000000000000000..28f09d420519098dec292a9818e7af032d595d80 --- /dev/null +++ b/src/Components/Cropper.js @@ -0,0 +1,139 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import ReactDOM from 'react-dom'; +import React, { PureComponent } from 'react'; +import ReactCrop from 'react-image-crop'; +import 'react-image-crop/dist/ReactCrop.css'; + + +export default class Cropper extends PureComponent { + state = { + src: this.props.src, + crop:this.props.crop + }; + + + // If you setState the crop in here you should return false. + onImageLoaded = image => { + this.imageRef = image; + }; + + onCropComplete = crop => { + this.makeClientCrop(crop); + }; + + onCropChange = (crop, percentCrop) => { + // You could also use percentCrop: + // this.setState({ crop: percentCrop }); + this.setState({ crop }); + }; + + async makeClientCrop(crop) { + if (this.imageRef && crop.width && crop.height) { + const croppedImageUrl = await this.getCroppedImg( + this.imageRef, + crop, + 'newFile.jpeg' + ); + + + } + } + + + + getCroppedImg(image, crop, fileName) { + const canvas = document.createElement('canvas'); + const scaleX = image.naturalWidth / image.width; + const scaleY = image.naturalHeight / image.height; + canvas.width = crop.width; + canvas.height = crop.height; + const ctx = canvas.getContext('2d'); + + ctx.drawImage( + image, + crop.x * scaleX, + crop.y * scaleY, + crop.width * scaleX, + crop.height * scaleY, + 0, + 0, + crop.width, + crop.height + ); + const reader = new FileReader(); + canvas.toBlob(blob => { + reader.readAsDataURL(blob) + reader.onloadend = () => { + {/*this.dataURLtoFile(reader.result, 'cropped.jpg')*/} + this.props.update(reader.result) + } + }) + + } + + render() { + const { crop, croppedImageUrl, src } = this.state; + + return ( + <> + {src && ( + <ReactCrop + src={src} + crop={crop} + circularCrop={this.props.circularCrop} + onImageLoaded={this.onImageLoaded} + onComplete={this.onCropComplete} + onChange={this.onCropChange} + style={{maxHeight : "300px", maxWidth : "100%"}} + /> + )} + {/*croppedImageUrl && ( + <img alt="Crop" style={{ maxWidth: '100%', maxHeight : "100%"}} src={croppedImageUrl} /> + )*/} + </> + ); + } +} + + + + +/*License for this component: +MIT License + +Copyright (c) 2020 ricardo.ch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.*/ diff --git a/src/Components/ExpansionPanels.js b/src/Components/ExpansionPanels.js index 415e8a0e0fdb9f77f8078a02051552a12fffba78..0ebb3e702040cd66f89e51dcf01f40b62f81c848 100644 --- a/src/Components/ExpansionPanels.js +++ b/src/Components/ExpansionPanels.js @@ -80,7 +80,7 @@ export default function SimpleExpansionPanel() { <div > <ExpansionPanelTeste> <ExpansionPanelSummaryColorido - expandIcon=<ExpandMoreIcon/> + expandIcon={<ExpandMoreIcon/>} aria-controls="panel1a-content" id="panel1a-header" > diff --git a/src/Components/Firulas.js b/src/Components/Firulas.js new file mode 100644 index 0000000000000000000000000000000000000000..526ff7abdc28b1de5666ba4e573060edb5413902 --- /dev/null +++ b/src/Components/Firulas.js @@ -0,0 +1,55 @@ +import React, {useState} from 'react' +import axios from 'axios' +import {apiUrl} from '../env'; +import styled from 'styled-components' +import Rating from '@material-ui/lab/Rating'; +import StarBorderIcon from '@material-ui/icons/StarBorder'; +import {LikeCounter, ButtonNoWidth} from '../Components/ResourceCardFunction.js' +import FavoriteIcon from '@material-ui/icons/Favorite'; + +export default function Firulas (props) { + const [liked, setLiked] = useState(props.liked) + + const handleLike = () => { + let payload = {} + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + + axios.put( (`${apiUrl}/learning_objects/` + props.recursoId + '/like'),payload, config + ).then( (response) => {setLiked(!liked)}, (error) => {console.log(error)}) + } + + return ( + <ConteinerFirulas> + <Rating + name="customized-empty" + value={props.rating*10} + precision={0.5} + readOnly + style={{color:"#666", marginRight : "20px"}} + emptyIcon={<StarBorderIcon fontSize="inherit" />} + /> + <LikeCounter style={{marginLeft : "-3px", display : "flex", alignItems : "center"}}> + <span>{props.likesCount}</span> + + <ButtonNoWidth onClick={handleLike}> + <FavoriteIcon style={{color : liked ? "red" : "#666" }}/> + </ButtonNoWidth> + + </LikeCounter> + </ConteinerFirulas> + ) +} + +const ConteinerFirulas = styled.div` + margin-bottom : 30px; + display : inline-flex; + padding-bottom : 10px; +` diff --git a/src/Components/FormInput.js b/src/Components/FormInput.js index 2a5a600c3df0615fc212f9de9870c4e2bed65bf9..c107ab51e881fe96da688cac2df8a6562a993c0f 100644 --- a/src/Components/FormInput.js +++ b/src/Components/FormInput.js @@ -16,16 +16,10 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React from 'react'; -import {makeStyles} from '@material-ui/styles'; -import styled from 'styled-components' -import TextField from '@material-ui/core/TextField'; - -const FormContainerStyled = styled.form` - display: flex; - flex-wrap : wrap; - padding : 2px; -` +import React from "react"; +import { makeStyles } from "@material-ui/styles"; +import styled from "styled-components"; +import TextField from "@material-ui/core/TextField"; const StyledTextField = styled(TextField)` max-width: 100%; @@ -34,32 +28,41 @@ const StyledTextField = styled(TextField)` color : inherit; width : 100% !important; full-width : 100% !important; + + label.Mui-focused { + color : #00bcd4; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 2px solid #00bcd4; + } ` const useStyles = makeStyles(theme => ({ container: { - display: 'flex', - flexWrap: 'wrap', - padding: '2px', + display: "flex", + flexWrap: "wrap", + padding: "2px" }, textField: { - - maxWidth: '100%', - fontSize : '15px', - fontWeight : 'lighter', - color : 'inherit', - width : '100%', - }, + maxWidth: "100%", + fontSize: "15px", + fontWeight: "lighter", + color: "inherit", + width: "100%" + } })); export default function FormInput(props) { const classes = useStyles(); return ( - <FormContainerStyled noValidate autoComplete="off"> <StyledTextField - id="standard-basic" label={props.placeholder} margin="normal" id = {props.name} @@ -67,10 +70,16 @@ export default function FormInput(props) { type = {props.inputType} value = {props.value} onChange = {props.handleChange} + helperText = {props.help} + rows = {props.rows} + error = {props.error} + rowsMax = {props.rowsMax} InputProps={{className: classes.input}} + required = {props.required} + helperText ={props.help} style={{width:"100%"}} + mask={props.mask} + multiline={props.multi} /> - - </FormContainerStyled> ); } diff --git a/src/Components/FormValidationFunction.js b/src/Components/FormValidationFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..c7a8407c5de125cbe34c97d559d6614296e5bfe9 --- /dev/null +++ b/src/Components/FormValidationFunction.js @@ -0,0 +1,45 @@ +import React from 'react' + +//fieldName : form field name +//userInput : user input for a given field +//confirmation : optional password confirmation argument +export default function ValidateUserInput (fieldName, userInput, confirmation) { + let flag = false + + switch(fieldName) { + case('username'): + if (userInput.length < 1) { + flag = true + } + break; + case('email'): + if(userInput.length < 7 || !(userInput.match(/^([\w.%+-]+)@([\w-]+\.)+([\w]{2,})$/i))) { + flag = true + } + break; + case('password'): + if (userInput.length < 8) { + flag = true + } + break; + case('confirmation'): + if (userInput !== confirmation) { + flag = true + } + break; + case('message'): + if(userInput.length === 0) { + flag = true + } + break; + case('aboutMe'): + if(userInput.length > 160) { + flag = true + } + break; + default: + break; + } + + return flag +} diff --git a/src/Components/GreyButton.js b/src/Components/GreyButton.js new file mode 100644 index 0000000000000000000000000000000000000000..a2d687d5e50382fb1a39ec7bcf6bd5d3d314b47d --- /dev/null +++ b/src/Components/GreyButton.js @@ -0,0 +1,56 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import { Button } from '@material-ui/core'; +import styled from 'styled-components' + +export default function GreyButton (props) { + return ( + <StyledButton onClick={props.callback}> + {props.text} + </StyledButton> + ) +} + +const StyledButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + max-height : 36px !important; + + background-color : transparent !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + + .button-text { + cursor : pointer; + line-height : 36px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600 !important; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + padding : 6px 16px !important; + } +` diff --git a/src/Components/GuardarModal.js b/src/Components/GuardarModal.js new file mode 100644 index 0000000000000000000000000000000000000000..e43a63fc3a122cf882407e8f59d6c3676fc35955 --- /dev/null +++ b/src/Components/GuardarModal.js @@ -0,0 +1,403 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import SignUpContainer from './SignUpContainerFunction.js' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiUrl, apiDomain} from '../env'; +import CloseIcon from '@material-ui/icons/Close'; +import Grid from '@material-ui/core/Grid'; +import PublicIcon from '@material-ui/icons/Public'; +import LockIcon from '@material-ui/icons/Lock'; +import LoadingSpinner from './LoadingSpinner.js' +import CriarColecaoForm from './CriarColecaoForm.js' +import SnackbarComponent from './SnackbarComponent' + +function CloseModalButton (props) { + return ( + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> + ) +} + +function getConfig () { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid') + } + } + return config +} + +export default function ReportModal (props) { + const {state} = useContext(Store) + const [collsArr, setcolls] = useState([]) + const [loading, toggleLoading] = useState(true) + const [creatingCol, setCreating] = useState(false) + + const getCols = () => { + if (collsArr.length === 0) { + const id = state.currentUser.id + const config = getConfig() + + axios.get( (`${apiUrl}/users/` + id + '/collections'), config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + setcolls(response.data) + toggleLoading(false) + }, (error) => {console.log('error')}) + } + } + + const postToCol = (colId) => { + const config = getConfig() + const payload = { + "collection" : { + "items" : [ {"id":props.recursoId, "type":"LearningObject"} ] + } + } + + axios.post( (`${apiUrl}/collections/` + colId + '/items'), payload, config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + toggleSnackbar(true) + setCreating(false) + props.handleClose() + }, (error) => {console.log(error)}) + } + + const [snackbarOpen, toggleSnackbar] = useState(false) + + return ( + <React.Fragment> + <SnackbarComponent snackbarOpen={snackbarOpen} severity={"info"} handleClose={() => {toggleSnackbar(false)}} text={"O Recurso foi guardado na coleção!"} + /> + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + onRendered={() => {getCols()}} + > + <Fade in={props.open}> + <Container> + <Header> + <span style={{width:"32px"}}/> + <h2>Guardar recurso</h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + <Content style={{paddingTop : "0"}}> + <ResourceInfo> + <img src={apiDomain + props.thumb} alt="thumbnail recurso"/> + <div className="text"> + <h3>{props.title}</h3> + </div> + </ResourceInfo> + { + loading ? + ( + <LoadingSpinner text="Carregando coleções"/> + ) + : + ( + <ChooseColContainer> + { + creatingCol ? + ( + <CriarColecaoForm + handleClose={() => setCreating(false)} + finalize = {postToCol} + /> + ) + : + ( + state.currentUser.collectionsCount === 0 ? + ( + <> + <div classname="no-cols"> + <h2>Você não possui coleções ainda.</h2> + </div> + </> + ) + : + ( + <> + <ChooseCol> + <h2>Escolha uma Coleção: </h2> + <div className="cols-list"> + { + collsArr.map(collection => + <div className="row" key={collection.id}> + <div style={{display : "flex", flexDirection : "row", justifyContent : "space-between", alignItems : "center"}}> + { + collection.privacy === "public" ? + <PublicIcon className="icon"/> + : <LockIcon className="icon"/> + } + <h5>{collection.name}</h5> + </div> + <GuardarBotao onClick={() => {postToCol(collection.id)}}>GUARDAR</GuardarBotao> + </div> + ) + } + </div> + </ChooseCol> + <div style={{display : "flex", justifyContent : "center"}}> + <CriarColButton onClick={() => {setCreating(true)}}>CRIAR COLEÇÃO</CriarColButton> + </div> + </> + ) + + ) + } + </ChooseColContainer> + ) + } + </Content> + </Container> + </Fade> + </StyledModal> + </React.Fragment> + ) +} + +const GuardarBotao = styled(Button)` + &:hover { + background-color : #503096 !important; + } + max-height : 36px !important; + background-color : #673ab7 !important; + color : #fff !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + padding-left : 32px !important; + padding-right : 32px !important; +` + +const ChooseCol = styled.div` + display : flex; + flex-direction : column; + h2 { + margin-top : 20px; + margin-bottom : 10px; + font-size : 24px; + font-weight : 500; + } + + .icon { + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + font-size : 24px !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + } + + .cols-list { + overflow-x : hidden; + overflow-y : auto; + + .row { + display : flex; + flex-direction : row; + padding : 10px; + border-radius : 5px; + max-height : 60px; + align-items : center; + align-content : center; + max-width : 100%; + justify-content : space-between; + + h5 { + padding : 0 20px; + margin : 0; + font-size : 14px; + font-weight : 600; + } + } + } +` + +const CriarColButton = styled(Button)` + width : 200px !important; + margin-top : 16px !important; + background-color : #673ab7 !important; + margin-left : auto !important; + margin-right : auto !important; + color : #fff !important; + font-weight : 600 !important; + box-shadow : !important; + padding-left : 0 2px 5px 0 rgba(0,0,0,.26) 16px !important; + padding-right : 16px !important; +` + +const ChooseColContainer = styled.div` + display : flex; + flex-direction : column; + color : #666; + + .no-cols { + align-self : center; + margin-top : 20px; + margin-bottom : 30px; + font-size : 24px; + font-weight : 500; + } +` + +const ResourceInfo = styled.div` + margin-top : 0; + background-color : #f4f4f4; + overflow : hidden; + border-radius : 5px; + display : flex; + flex-direction : row; + align-items : center; + align-content : center; + max-wdith : 100%; + justify-content : space-between; + + .text { + max-height : 100%; + max-width : 66.66%; + display : flex; + flex-direction : column; + text-align : center; + + h3 { + font-size : 20px; + font-weight : 500; + padding : 10px; + } + } + + img { + object-fit : cover; + height : 115px; + max-width : 165px; + background-color : #e5e5e5; + float : left; + padding : 0; + + @media screen and (min-width : 600px) { + margin-right : 20px; + margin-bottom : 0; + } + @media screen and (max-width : 768px) { + width : 100%; + } + } + +` + +const Content = styled.div` + padding : 20px 30px; + overflow-y : scroll; + +` + +const Header = styled.div` + display : flex; + flex-direction : row; + padding : 10px 26px 0 26px; + align-items : center; + justify-content : space-between; + height : 64px; + + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + background-color : white; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + + @media screen and (min-width : 700px) { + max-width : 600px; + max-height : 600px; + } + + @media screen and (max-width : 699px) { + width : 100%; + height : 100%; + } +` diff --git a/src/Components/Header.js b/src/Components/Header.js index 623b91e17f4f2d69f68badcef2e427b4aaeec4d8..7da2d87ff8f320342adf75d9494d096874239dbc 100644 --- a/src/Components/Header.js +++ b/src/Components/Header.js @@ -16,25 +16,100 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, { useContext, useState } from 'react' - +import React, { useContext, useState, useEffect } from 'react' +import axios from 'axios' +import {apiUrl} from '../env' import AcessibilityBar from './AcessibilityBar' import MenuBar from './MenuBar' import SearchBar from './SearchBar' import SignUpModal from './SignUpModal' -import LoginModal from './LoginModal' +import LoginModal from './LoginModal.js' import { Store } from '../Store'; import ColaborarModal from './ColaborarModal.js' - +import Snackbar from '@material-ui/core/Snackbar'; +import MuiAlert from '@material-ui/lab/Alert'; +import {useLocation} from 'react-router-dom' //const StyledButton = styled(Button)` // background : #ffa54c !important; // boxShadow :none; //` +function Alert(props) { + return <MuiAlert elevation={6} variant="filled" {...props} />; +} + export default function Header(props){ const { state, dispatch } = useContext(Store) const [signUpOpen, setSignUp] = useState(false) const [loginOpen, setLogin] = useState(false) + const [successfulLoginOpen, handleSuccessfulLogin] = useState(false) + const [modalColaborar, setModalColaborar] = useState(false) + + let loc = useLocation() + + useEffect(() => { + console.log(loc) + let query = new URLSearchParams(loc.search) + + //POR PARAMETRO + console.log(query.getAll("auth_token")) + if(query.get("auth_token") != undefined) { + let config = { + headers : { + "access-token" : query.get("auth_token"), + "client" : query.get("client_id"), + "uid" : query.get("uid"), + "expiry" : query.get("expiry"), + "token-type" : 'Bearer' + } + } + axios.get(`${apiUrl}/auth/validate_token/`, config).then( + (response) => { + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + dispatch ({ + type: "USER_LOGGED_IN", + userLoggedIn: !state.userIsLoggedIn, + login: { + askTeacherQuestion : response.data.data.ask_teacher_question, + id : response.data.data.id, + username : response.data.data.name, + email : response.data.data.email, + accessToken : response.headers['access-token'], + clientToken : response.headers.client, + userAvatar : response.data.data.avatar_file_name, + userCover : response.data.data.cover_file_name, + uid : response.data.data.uid, + followCount : response.data.data.follows_count, + collectionsCount : response.data.data.collections_count, + submitter_request : response.data.data.submitter_request, + roles : response.data.data.roles + } + } + ) + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + sessionStorage.setItem('@portalmec/clientToken', response.headers.client) + sessionStorage.setItem('@portalmec/id', response.data.data.id) + sessionStorage.setItem('@portalmec/username', response.data.data.name) + sessionStorage.setItem('@portalmec/uid', response.data.data.uid) + + }, + (err) => { + console.log(err) + } + ) + } + }, [loc]) + + const toggleSnackbar = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + handleSuccessfulLogin(false); + } const handleSignUp = () => { setSignUp(!signUpOpen) @@ -54,13 +129,19 @@ export default function Header(props){ return( <> <AcessibilityBar/> + <Snackbar open={successfulLoginOpen} autoHideDuration={1000} onClose={toggleSnackbar} + anchorOrigin = {{ vertical:'top', horizontal:'center' }} + > + <Alert severity="success" style={{backgroundColor:"#00acc1"}}>Você está conectado(a)!</Alert> + </Snackbar> <MenuBar openSearchBar={handleClickSearch} openSignUp = {handleSignUp} openLogin = {handleLogin}/> { state.searchOpen && <SearchBar/> } <SignUpModal open={signUpOpen} handleClose={handleSignUp} openLogin={handleLogin}/> - <LoginModal open={loginOpen} handleClose={handleLogin} openSignUp={handleSignUp}/> - {/*<ColaborarModal open={state.modalColaborarPlataformaOpen} handleClose={handleKyloren} />*/} + <LoginModal open={loginOpen} handleClose={() => setLogin(false)} openSignUp={handleSignUp} + openSnackbar={() => {handleSuccessfulLogin(true)}}/> + <ColaborarModal open={modalColaborar} handleClose={() => {setModalColaborar(!modalColaborar)}} /> </> ) diff --git a/src/Components/HelpCenter/Cards/CardEncontrando.js b/src/Components/HelpCenter/Cards/CardEncontrando.js new file mode 100644 index 0000000000000000000000000000000000000000..f1c2db1bc0ab81db242f04baf4facc0bc40425b2 --- /dev/null +++ b/src/Components/HelpCenter/Cards/CardEncontrando.js @@ -0,0 +1,156 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; +import EncontrandoRecurso from "../../../img/ajuda/Encontrando_recursos.png"; + +import { Link } from "react-router-dom"; + +export default function CardEncontrando(props) { + return ( + <CardAjuda> + <div className="card"> + <img src={EncontrandoRecurso} alt="" /> + <h3>Encontrando Recursos</h3> + <hr /> + <Link + to={{ + pathname: "encontrando-recurso", + state: { value: "0" } + }} + > + Como fazer uma busca? + </Link> + <br /> + <Link + to={{ + pathname: "encontrando-recurso", + state: { value: "1" } + }} + > + Como filtrar os resultados? + </Link> + <a></a> + <br /> + <Link + to={{ + pathname: "encontrando-recurso", + state: { value: "2" } + }} + > + Como os recursos são ranqueados? + </Link> + <br /> + </div> + <div className="card-rodape"> + <Link + to={{ + pathname: "encontrando-recurso", + state: { value: "0" } + }} + > + VER MAIS + </Link> + </div> + </CardAjuda> + ); +} + +const CardAjuda = styled.div` + + height: 360px; + margin-bottom: 20px; + + + .card { + height: 280px; + padding: 40px 15px; + text-align: center; + font-size: 14px; + background-color:#fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h3 { + font-size: 23px; + font-weight: 400; + color: #666; + margin-top: 20px; + margin-bottom: 10px; + line-height: 1.1; + } + + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + color: #a5a5a5; + } + + a { + font-size: 15px; + color: #666; + text-decoration: none; + text-align: center; + :hover { + color: #000; + } + + } + + img { + height: 62px ; + width: 62px ; + } + + } + + .card-rodape { + box-sizing: border-box; + + a { + border-radius: 0; + width: 100%; + font-size: 13px; + font-weight: 700; + color: #fff; + transition: .2s ease; + border: none; + height: 40px; + line-height: 40px; + background-color: #00bcd4; + touch-action: manipulation; + cursor: pointer; + text-decoration: none; + display: inline-block; + margin-bottom: 0; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + } + } + +} + +`; diff --git a/src/Components/HelpCenter/Cards/CardGerenciando.js b/src/Components/HelpCenter/Cards/CardGerenciando.js new file mode 100644 index 0000000000000000000000000000000000000000..3cc9506ab3f75de0f0ee1d8298fa714e6a07f6c4 --- /dev/null +++ b/src/Components/HelpCenter/Cards/CardGerenciando.js @@ -0,0 +1,173 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; +import GerenciandoConta from "../../../img/ajuda/Gerenciando_a_conta.png"; + +import { Link } from "react-router-dom"; + +export default function CardGerenciando(props) { + return ( + <CardAjuda> + <div className="card"> + <img src={GerenciandoConta} alt="" /> + <h3>Gerenciando Conta</h3> + <hr /> + <Link + to={{ + pathname: "gerenciando-conta", + state: { value: "0" } + }} + > + Por que me cadastrar? + </Link> + <br /> + <Link + to={{ + pathname: "gerenciando-conta", + state: { value: "1" } + }} + > + Como fazer meu cadastro? + </Link> + <br /> + <Link + to={{ + pathname: "gerenciando-conta", + state: { value: "2" } + }} + > + Como alterar minha senha? + </Link> + <br /> + <Link + to={{ + pathname: "gerenciando-conta", + state: { value: "3" } + }} + > + Como acessar a conta? + </Link> + <br /> + <Link + to={{ + pathname: "gerenciando-conta", + state: { value: "4" } + }} + > + Esqueci minha senha. O que fazer? + </Link> + <br /> + </div> + <div className="card-rodape"> + <Link + to={{ + pathname: "gerenciando-conta", + state: { value: "0" } + }} + > + VER MAIS + </Link> + </div> + </CardAjuda> + ); +} + +const CardAjuda = styled.div` + + height: 360px; + margin-bottom: 20px; + + + .card { + height: 280px; + padding: 40px 15px; + text-align: center; + font-size: 14px; + background-color:#fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h3 { + font-size: 23px; + font-weight: 400; + color: #666; + margin-top: 20px; + margin-bottom: 10px; + line-height: 1.1; + } + + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + color: #a5a5a5; + } + + a { + font-size: 15px; + color: #666; + text-decoration: none; + text-align: center; + :hover { + color: #000; + } + + } + + img { + height: 62px ; + width: 62px ; + } + + } + + .card-rodape { + box-sizing: border-box; + + a { + border-radius: 0; + width: 100%; + font-size: 13px; + font-weight: 700; + color: #fff; + transition: .2s ease; + border: none; + height: 40px; + line-height: 40px; + background-color: #00bcd4; + touch-action: manipulation; + cursor: pointer; + text-decoration: none; + display: inline-block; + margin-bottom: 0; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + } + } + +} + +`; diff --git a/src/Components/HelpCenter/Cards/CardParticipando.js b/src/Components/HelpCenter/Cards/CardParticipando.js new file mode 100644 index 0000000000000000000000000000000000000000..9dfdbf1a8c0553adc760fc14bf3fd27dcd76f1d0 --- /dev/null +++ b/src/Components/HelpCenter/Cards/CardParticipando.js @@ -0,0 +1,146 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; +import ParticipandoRede from "../../../img/ajuda/Participando_da_rede.png"; + +import { Link } from "react-router-dom"; + +export default function CardParticipando(props) { + return ( + <CardAjuda> + <div className="card"> + <img src={ParticipandoRede} alt="" /> + <h3>Participando da Rede</h3> + <hr /> + <Link + to={{ + pathname: "participando-da-rede", + state: { value: "0" } + }} + > + Comentanto os recursos + </Link> + <br /> + <Link + to={{ + pathname: "participando-da-rede", + state: { value: "1" } + }} + > + Como relatar uma experiência ou avaliar um recurso? + </Link> + <br /> + </div> + <div className="card-rodape"> + <Link + to={{ + pathname: "participando-da-rede", + state: { value: "0" } + }} + > + VER MAIS + </Link> + </div> + </CardAjuda> + ); +} + +const CardAjuda = styled.div` + + height: 360px; + margin-bottom: 20px; + + + .card { + height: 280px; + padding: 40px 15px; + text-align: center; + font-size: 14px; + background-color:#fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h3 { + font-size: 23px; + font-weight: 400; + color: #666; + margin-top: 20px; + margin-bottom: 10px; + line-height: 1.1; + } + + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + color: #a5a5a5; + } + + a { + font-size: 15px; + color: #666; + text-decoration: none; + text-align: center; + :hover { + color: #000; + } + + } + + img { + height: 62px ; + width: 62px ; + } + + } + + .card-rodape { + box-sizing: border-box; + + a { + border-radius: 0; + width: 100%; + font-size: 13px; + font-weight: 700; + color: #fff; + transition: .2s ease; + border: none; + height: 40px; + line-height: 40px; + background-color: #00bcd4; + touch-action: manipulation; + cursor: pointer; + text-decoration: none; + display: inline-block; + margin-bottom: 0; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + } + } + +} + +`; diff --git a/src/Components/HelpCenter/Cards/CardPublicando.js b/src/Components/HelpCenter/Cards/CardPublicando.js new file mode 100644 index 0000000000000000000000000000000000000000..673c7d153a5ae2fe6e75f0fd21b3739d17a5cba3 --- /dev/null +++ b/src/Components/HelpCenter/Cards/CardPublicando.js @@ -0,0 +1,154 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; +import PublicandoRecursos from "../../../img/ajuda/Publicando_recursos.png"; +import { Link } from "react-router-dom"; + +export default function CardPublicando(props) { + return ( + <CardAjuda> + <div className="card"> + <img src={PublicandoRecursos} alt="" /> + <h3>Publicando Recursos</h3> + <hr /> + <Link + to={{ + pathname: "publicando-recurso", + state: { value: "0" } + }} + > + Por que enviar um recurso? + </Link> + <br /> + <Link + to={{ + pathname: "publicando-recurso", + state: { value: "1" } + }} + > + Como publicar um recurso? + </Link> + <br /> + <Link + to={{ + pathname: "publicando-recurso", + state: { value: "2" } + }} + > + Quais tipos de recurso e formatos a plataforma aceita? + </Link> + <br /> + </div> + <div className="card-rodape"> + <Link + to={{ + pathname: "publicando-recurso", + state: { value: "0" } + }} + > + VER MAIS + </Link> + </div> + </CardAjuda> + ); +} + +const CardAjuda = styled.div` + +height: 360px; +margin-bottom: 20px; + + +.card { + height: 280px; + padding: 40px 15px; + text-align: center; + font-size: 14px; + background-color:#fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h3 { + font-size: 23px; + font-weight: 400; + color: #666; + margin-top: 20px; + margin-bottom: 10px; + line-height: 1.1; + } + + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + color: #a5a5a5; + } + + a { + font-size: 15px; + color: #666; + text-decoration: none; + text-align: center; + :hover { + color: #000; + } + + } + + img { + height: 62px ; + width: 62px ; + } + +} + +.card-rodape { + box-sizing: border-box; + + a { + border-radius: 0; + width: 100%; + font-size: 13px; + font-weight: 700; + color: #fff; + transition: .2s ease; + border: none; + height: 40px; + line-height: 40px; + background-color: #00bcd4; + touch-action: manipulation; + cursor: pointer; + text-decoration: none; + display: inline-block; + margin-bottom: 0; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + } +} + +} + +`; diff --git a/src/Components/HelpCenter/TabsManageAc/Forget.js b/src/Components/HelpCenter/TabsManageAc/Forget.js new file mode 100644 index 0000000000000000000000000000000000000000..a96de5c6059f10c439737d49474bba54de34a043 --- /dev/null +++ b/src/Components/HelpCenter/TabsManageAc/Forget.js @@ -0,0 +1,101 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + +import LoginImg from '../../../img/ajuda/login_img.jpg' +import RecuperarSenhaImg from '../../../img/ajuda/recuperarsenha_img.jpg' + + + + +export default function Forget(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p>Para redefinir a senha da sua conta, siga essas instruções:</p> + + <ol> + <li> + Acesse a <a href="/" target="_blank">Página Inicial</a> e clique em + “Entrar†no canto superior direito da página. + </li> + <li>Clique em “Esqueceu a senha? Clique Aqui!â€.</li> + <img className="primeira" src={LoginImg} alt="primeira imagem"/> + <li>Preencha com o seu endereço de e-mail e clique em “Buscarâ€.</li> + <img className="segunda" src={RecuperarSenhaImg} alt="segunda imagem"/> + <li>Você receberá um e-mail no endereço informado, contendo as instruções para redefinir sua senha.</li> + </ol> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + .primeira { + + height: 300px; + margin-right: 40px; + vertical-align: middle; + } + .segunda { + height: 150px; + margin-right: 40px; + vertical-align: middle; + + } + } + li { + font-size: 14px; + } + + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsManageAc/HowToAccess.js b/src/Components/HelpCenter/TabsManageAc/HowToAccess.js new file mode 100644 index 0000000000000000000000000000000000000000..f367cd4228e377798c981272934f44c90a36f470 --- /dev/null +++ b/src/Components/HelpCenter/TabsManageAc/HowToAccess.js @@ -0,0 +1,84 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + +export default function HowtoAccess(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p>Para acessar a sua conta:</p> + <ol> + <li>Acesse a <a href="/" target="_blank">Página Inicial</a>.</li> + + <li>Clique em “Entrar†no canto superior direito.</li> + + <li>Preencha os campos solicitados.</li> + + <li>Clique em “Entrarâ€.</li> + </ol> + + + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsManageAc/HowToChange.js b/src/Components/HelpCenter/TabsManageAc/HowToChange.js new file mode 100644 index 0000000000000000000000000000000000000000..456d434ee41d3cfa05da84ce94c6473a91dff7ae --- /dev/null +++ b/src/Components/HelpCenter/TabsManageAc/HowToChange.js @@ -0,0 +1,85 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + +export default function HowToDo(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> Para alterar sua senha você precisa estar conectado na Plataforma e então, seguir esses passos: </p> + <ol> + <li>Na <a href="/" target="_blank">Página Inicial</a>, clique no menu “Minha área†localizado no canto superior direito da página.</li> + + <li>Clique na opção “Configurações†que aparecerá no submenu.</li> + + <li>Clique no link “Gerenciar contaâ€, no menu lateral, localizado no canto superior esquerdo</li> + + <li>Na opção “Alterar senhaâ€, preencha os campos com sua senha atual e depois com a nova senha que deseja.</li> + <li>Clique na opção "Alterar senha" logo abaixo.</li> + </ol> + + <p>Pronto! No próximo acesso, você já pode usar sua nova senha!</p> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsManageAc/HowToDo.js b/src/Components/HelpCenter/TabsManageAc/HowToDo.js new file mode 100644 index 0000000000000000000000000000000000000000..084e78f39c2813df5ad1ff970a268c18e868856f --- /dev/null +++ b/src/Components/HelpCenter/TabsManageAc/HowToDo.js @@ -0,0 +1,85 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + +export default function HowTodo(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> Para fazer o cadastro é rapidinho: </p> + <ol> + <li>Acesse a <a href="/" target="_blank">Página Inicial</a> da Plataforma.</li> + + <li>Clique em “Cadastre-se†no canto superior direito da página.</li> + + <li> Preencha os campos solicitados.</li> + + <li>Clique em “Cadastrarâ€.</li> + </ol> + + <p>Pronto! Você será conectado automaticamente.</p> + <p>Nas próximas vezes que acessar a Plataforma, clique em “Entrar†e faça o login com seus dados de cadastro.</p> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsManageAc/Why.js b/src/Components/HelpCenter/TabsManageAc/Why.js new file mode 100644 index 0000000000000000000000000000000000000000..a18088dc0a76b4e072037c50abca8d249f182340 --- /dev/null +++ b/src/Components/HelpCenter/TabsManageAc/Why.js @@ -0,0 +1,70 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + + +export default function Why(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Quais vantagens eu terei após criar um perfil na Plataforma? + </p> + <p> + Ao se cadastrar, você terá mais opções de interação na plataforma, como + criar suas próprias coleções de recursos, seguir usuários e coleções de + outros usuários. Além disso, poderá contribuir com a rede de usuários + fazendo relatos de experiências sobre o uso dos recursos, avaliando com + estrelas, favoritando e reportando violações de recursos (quando necessário). + </p> + + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + + + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsNetPart/How.js b/src/Components/HelpCenter/TabsNetPart/How.js new file mode 100644 index 0000000000000000000000000000000000000000..8317ce5f7997c4096b520ab8eafb4ca573077851 --- /dev/null +++ b/src/Components/HelpCenter/TabsNetPart/How.js @@ -0,0 +1,82 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + + +export default function How(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Ao abrir um recurso, você pode avaliá-lo e descrever como foi sua experiência: + </p> + <ol> + <li>Abra o recurso desejado.</li> + <li>No fim da página haverá uma área de Relatos de Experiência.</li> + <li>Preencha as informações no quadro “Conte sua experiênciaâ€.</li> + <li>Clique em “Enviarâ€.</li> + + </ol> + <p> + Obs: as estrelinhas indicam se o recurso foi útil para você. Então quanto + mais estrelinhas, melhor será a avaliação do recurso. + </p> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + + + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsNetPart/What.js b/src/Components/HelpCenter/TabsNetPart/What.js new file mode 100644 index 0000000000000000000000000000000000000000..5970321c16779868a1a1a2f37344b2826d941e72 --- /dev/null +++ b/src/Components/HelpCenter/TabsNetPart/What.js @@ -0,0 +1,83 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + + +export default function What(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Aqui na Plataforma, incentivamos os usuários a comentarem os recursos + contando como foi sua experiência de uso. Veja sugestões de pontos a serem abordados no seu comentário: + </p> + <ul> + <li> + Relatar como utilizou o recurso durante a aula, para que outros + professores possam se basear e adaptar para o seu próprio objetivo pedagógico. + </li> + <li>Relatar a recepção dos alunos em relação ao recurso.</li> + <li>Apontar os pontos a serem melhorados no recurso para que o autor tenha a oportunidade de ajustar.</li> + <li>Apontar os pontos positivos do recurso para que o autor ganhe o devido reconhecimento e prestÃgio!</li> + + </ul> + + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + + + ul { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsPlataformaMEC/How.js b/src/Components/HelpCenter/TabsPlataformaMEC/How.js new file mode 100644 index 0000000000000000000000000000000000000000..930476c1bb6525271e503dc7d40e508b15836d51 --- /dev/null +++ b/src/Components/HelpCenter/TabsPlataformaMEC/How.js @@ -0,0 +1,81 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; + +export default function How(props) { + return ( + <Card> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" + rel="stylesheet" + /> + <div style={{ marginBottom: "9px" }}> + <span>{props.title}</span> + </div> + <div style={{ width: "640px", height: "360px" }}> + <iframe + width="640" + height="360" + src="https://www.youtube.com/embed/CRW5h2pHugM" + frameborder="0" + allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" + allowfullscreen + ></iframe> + </div> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ul { + padding-left: 0 !important; + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + list-style-type: none; + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } +`; diff --git a/src/Components/HelpCenter/TabsPlataformaMEC/Software.js b/src/Components/HelpCenter/TabsPlataformaMEC/Software.js new file mode 100644 index 0000000000000000000000000000000000000000..9da4c8bddb9a5659b3755d965572926698d3aea7 --- /dev/null +++ b/src/Components/HelpCenter/TabsPlataformaMEC/Software.js @@ -0,0 +1,171 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; + +const softwares = [ + { + recursos: "Google Chrome", + texto: "Navegador web.", + link: "https://ninite.com/chrome/" + }, + { + recursos: "Java", + texto: + "Necessário para a execução de sites que utilizem sua linguagem de programação java.", + link: + "http://javadl.oracle.com/webapps/download/AutoDL?BundleId=225355_090f390dda5b47b9b721c7dfaa008135NINITE: https://ninite.com/java8/" + }, + { + recursos: "Adobe Flash Player", + texto: + "plugin que reproduz multimÃdia na internet de forma mais eficiente.", + link: + "https://get.adobe.com/br/flashplayer/download/?installer=FP_27_for_Opera_and_Chromium_-_PPAPI&os=Windows%207&browser_type=KHTML&browser_dist=Chrome&dualoffer=false&mdualoffer=true&stype=6703&d=McAfee_Security_Scan_Plus&d=McAfee_Safe_Connect" + }, + { + recursos: "Adobe Air", + texto: + "Plugin para execução de códigos para aplicações nativas e jogos para computadores desktop com Windows e Mac OS bem como dispositivos iOS e Android.", + link: "https://ninite.com/air/" + }, + { + recursos: "Net Framework", + texto: + "O .NET Framework é um ambiente de execução de tempo de execução que gerencia os aplicativos destinados ao .NET Framework.", + link: "https://ninite.com/.net4.7/" + }, + { + recursos: "Acrobat Reader DC", + texto: "Abrir documento no formato PDF", + link: "https://ninite.com/foxit/" + }, + { + recursos: "Video LAN", + texto: "REPRODUTOR DE VÃDEO.", + link: "http://download.winzip.com/gl/nkln/winzip21_downwz.exe" + }, + { + recursos: "Winzip", + texto: "WinZip: abrir arquivos compactados.", + link: "http://download.winzip.com/gl/nkln/winzip21_downwz.exe" + }, + { + recursos: "K-Lite Codec", + texto: + "Software que ajuda na reprodução de arquivos multimÃdia no computador.", + link: "https://ninite.com/libreoffice/" + }, + { + recursos: "Libre Office", + texto: + "Software gratuito para visualização e edição de documentos, planilhas e apresentações.", + link: "https://ninite.com/libreoffice/" + }, + { + recursos: "Swiff Player", + texto: "reprodutor de mÃdia do formato swf", + link: "https://www.w3schools.com/html/" + } +]; + +export default function Software(props) { + return ( + <Card> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" + rel="stylesheet" + /> + <div style={{ marginBottom: "9px" }}> + <span>{props.title}</span> + </div> + <p> + Todo e qualquer recurso digital precisa de um programa ou aplicativo + para ser visualizado. Por exemplo, grande parte dos recursos são + arquivos compactados que servem para ocupar menos espaço de + armazenamento, recebendo a extensão .zip ou .rar, para utilizá-lo, você + precisa ter instalado um descompactador de arquivos, como o{" "} + <a href="http://download.winzip.com/gl/nkln/winzip21_downwz.exe"> + Winzip + </a>{" "} + ou <a href="https://ninite.com/winrar/">Winrar</a>. + </p> + <p> + Alguns destes programas são bem comuns, e provavelmente, você já deve + ter instalado em seu computador, como processador de texto para formato + .docx, o Microsoft Word (para Sistema Operacional Windows) ou + LibreOffice (nas distribuições Linux). Porém, existem outros programas + que não são tão comuns assim, mas que são fáceis de instalar em seu + computador. A seguir, vamos apresentar umas informações que podem guiar + a utilização dos recursos em suas aulas. + </p> + <p> + Você precisa ficar atento as siglas que terminação do recurso que dizem + de qual formato ele é. DaÃ, qual programa pode ser utilizado para abrir + o Recursos Educacionais Digitais em seu computador? Fizemos uma lista de + softwares que você poderá precisar de acordo com o tipo de recurso: + </p> + <ul> + {softwares.map(item => ( + <li> + <a href={item.link}>{item.recursos}</a> - {item.texto} <br /> + <br />{" "} + </li> + ))} + </ul> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ul { + padding-left: 0 !important; + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + list-style-type: none; + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } +`; diff --git a/src/Components/HelpCenter/TabsPlataformaMEC/Types.js b/src/Components/HelpCenter/TabsPlataformaMEC/Types.js new file mode 100644 index 0000000000000000000000000000000000000000..1d30662b8f79b6741a0708cd906fb57c38d3547e --- /dev/null +++ b/src/Components/HelpCenter/TabsPlataformaMEC/Types.js @@ -0,0 +1,86 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; + +const tipos = [ + { recursos: "- áudios;" }, + { recursos: "- imagens;" }, + { recursos: "- mapas;" }, + { recursos: "- softwares educacionais" }, + { recursos: "- textos;" }, + { recursos: "- vÃdeos" } +]; + +export default function Types(props) { + return ( + <Card> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" + rel="stylesheet" + /> + <div style={{ marginBottom: "9px" }}> + <span>{props.title}</span> + </div> + <p> + A plataforma integra os Recursos Educacionais Digitais dos principais + portais abertos. Conheça alguns deles: + </p> + <ul> + {tipos.map(item => ( + <li>{item.recursos}</li> + ))} + </ul> + <p> + E ainda, nesta plataforma são organizados pelos diferentes componentes + curriculares (matemática, artes, etc.) e etapas de ensino (Ensino Médio, + Fundamental, Anos Iniciais, etc.) onde podem ser aplicados. + </p> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + ul { + padding-left: 0 !important; + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + list-style-type: none; + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } +`; diff --git a/src/Components/HelpCenter/TabsPlataformaMEC/Understand.js b/src/Components/HelpCenter/TabsPlataformaMEC/Understand.js new file mode 100644 index 0000000000000000000000000000000000000000..4696bce01ce19794d4adf4f827f263e65f2bc488 --- /dev/null +++ b/src/Components/HelpCenter/TabsPlataformaMEC/Understand.js @@ -0,0 +1,76 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; + +export default function Understand(props) { + return ( + <Card> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" + rel="stylesheet" + /> + <div style={{ marginBottom: "9px" }}> + <span>{props.title}</span> + </div> + <p> + <strong>Ãrea de Recursos Educacionais Digitais</strong> + <br /> + Recursos que, no mÃnimo, têm uma licença de uso mais flexÃvel. Uma + licença que permite que o recurso possa ser utilizado, alterado e + manipulado sem restrições. Adicionalmente, um recurso aberto pode + utilizar um formato aberto, um formato de arquivo que permite a fácil + edição por terceiros. Nenhum controle (como cadastro e senha) deve + existir para acesso a recursos abertos. + </p> + <p> + <strong>Ãrea de Materiais de Formação</strong> + <br /> + Nesta área, você acessa livremente materiais completos de formação, como + cursos já oferecidos pelo MEC e seus parceiros. São conteúdos elaborados + por equipes multidisciplinares e de autoria de pesquisadores e + educadores renomados nas áreas. + </p> + <p> + <strong>Ãrea de Coleções de Usuários</strong> + <br /> + Nesta área, você tem acesso à s coleções criadas e organizadas pelos + usuários da plataforma. É mais uma possibilidade de buscar recursos + educacionais para sua aula! + </p> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } +`; diff --git a/src/Components/HelpCenter/TabsPlataformaMEC/What.js b/src/Components/HelpCenter/TabsPlataformaMEC/What.js new file mode 100644 index 0000000000000000000000000000000000000000..8bab746bc3418efd516b158125a50a366cabfa0d --- /dev/null +++ b/src/Components/HelpCenter/TabsPlataformaMEC/What.js @@ -0,0 +1,117 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; + +export default function What(props) { + return ( + <Card> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" + rel="stylesheet" + /> + <div style={{ marginBottom: "9px" }}> + <span>{props.title}</span> + </div> + <p> + Bem-vindo(a) à Plataforma MEC, uma iniciativa do Ministério da Educação! + </p> + <p> + A Plataforma MEC é parte do processo de implementação do Compromisso 6 + do 3º Plano de Ação da Parceria Governo Aberto (OGP-Brasil), que tem por + objetivo “incorporar na polÃtica educacional o potencial da cultura + digital, de modo a fomentar a autonomia para uso, reuso e adaptação de + recursos educacionais digitais, valorizando a pluralidade e a + diversidade da educação brasileiraâ€. O documento completo pode ser + consultado{" "} + <a href="http://www.governoaberto.cgu.gov.br/noticias/2017/3o-plano-de-acao-nacional-na-parceria-para-governo-aberto"> + aqui + </a> + . + </p> + <p> + <strong>Abertos</strong> + <br /> + Recursos que, no mÃnimo, têm uma licença de uso mais flexÃvel. Uma + licença que permite que o recurso possa ser utilizado, alterado e + manipulado sem restrições. Adicionalmente, um recurso aberto pode + utilizar um formato aberto, um formato de arquivo que permite a fácil + edição por terceiros. Nenhum controle (como cadastro e senha) deve + existir para acesso a recursos abertos. + </p> + <p> + <strong>Grátis</strong> + <br /> + Recursos para os quais os usuários não têm que fazer qualquer desembolso + monetário, mas que exibem certas restrições: usualmente não podem ser + baixados ou alterados. E, muitas vezes, como os recursos fechados, é + necessário cadastro ou troca de informações pessoais para seu uso. + </p> + <p> + <strong>Fechados</strong> + <br /> + Recursos que criam restrições ao seu acesso, uso ou reuso. Como exemplo, + podemos mencionar recursos que só são acessÃveis mediante cadastro, que + são pagos, ou que têm licenças restritivas (como “todos os direitos + reservadosâ€, o sÃmbolo ©). + </p> + + <p> + O Plano Nacional de Educação (2014-2024) enfatiza, nas metas 5 e 7, a + importância dos recursos educacionais abertos para fomentar a qualidade + da educação básica. + </p> + <p> + A Resolução CNE/CES nº 1, de 11 de março de 2016, também enfatiza a + importância dos recursos educacionais abertos para as instituições de + educação superior e para as atividades de educação a distância, + promovendo “a criação, disponibilização, uso e gestão de tecnologias e + recursos educacionais abertos, por meio de licenças livres, que + facilitem o uso, a revisão, a tradução, a adaptação, a recombinação, a + distribuição e o compartilhamento gratuito pelo cidadão, resguardados os + direitos autorais pertinentes.†+ </p> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + p { + margin: 0 0 10px; + font-size: 15px; + } +`; diff --git a/src/Components/HelpCenter/TabsPlataformaMEC/Which.js b/src/Components/HelpCenter/TabsPlataformaMEC/Which.js new file mode 100644 index 0000000000000000000000000000000000000000..b1fe77ed63697519fb011663dbcce423708ef1c7 --- /dev/null +++ b/src/Components/HelpCenter/TabsPlataformaMEC/Which.js @@ -0,0 +1,79 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; + +const parcas = [ + { parceiro: "- Portal do Profesor" }, + { parceiro: "- DomÃnio Público;" }, + { parceiro: "- Banco internacional de objetos educacionais;" }, + { parceiro: "- TV Escola;" } +]; + +export default function Which(props) { + return ( + <Card> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" + rel="stylesheet" + /> + <div style={{ marginBottom: "9px" }}> + <span>{props.title}</span> + </div> + <p> + A plataforma integra os Recursos Educacionais Digitais dos principais + portais abertos. Conheça alguns deles: + </p> + <ul> + {parcas.map(item => ( + <li>{item.parceiro}</li> + ))} + </ul> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + ul { + padding-left: 0 !important; + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + list-style-type: none; + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } +`; diff --git a/src/Components/HelpCenter/TabsResourseFind/HowToDo.js b/src/Components/HelpCenter/TabsResourseFind/HowToDo.js new file mode 100644 index 0000000000000000000000000000000000000000..087f162553f7f9a559d5c04dc2b9ec801e8cee40 --- /dev/null +++ b/src/Components/HelpCenter/TabsResourseFind/HowToDo.js @@ -0,0 +1,94 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + +import Busca from '../../../img/ajuda/busca_img.jpg' + + + + +export default function HowToDo(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Siga os passos a seguir: + </p> + <ol> + <li>Acesse a <a href="/" target="_blank">Página Inicial</a>.</li> + + <li> + Digite o que você procura na caixa de busca localizada no centro da + página. Por exemplo: “vÃdeo aquecimento global†ou “aritméticaâ€. + </li> + + </ol> + <img src={Busca} alt="Busca imagem"/> + <p> + No resultado serão apresentados os cartões de recursos relacionados à sua busca. + </p> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + img { + height: auto; + width: 100%; + } + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsResourseFind/HowToFilter.js b/src/Components/HelpCenter/TabsResourseFind/HowToFilter.js new file mode 100644 index 0000000000000000000000000000000000000000..78e362ff725494ad3209f4d6d2ffece03add983c --- /dev/null +++ b/src/Components/HelpCenter/TabsResourseFind/HowToFilter.js @@ -0,0 +1,73 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + +import Filtros from '../../../img/ajuda/filtros_img.jpg' + + + + +export default function HowToFilter(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Após efetuar sua busca, você pode filtrar os resultados de acordo com o + que procura, com a opção “Filtros†localizada no lado esquerdo da página. + </p> + + <img src={Filtros} alt="Busca imagem"/> + <p> + Você pode filtrar pelos componentes curriculares, tipos de recurso, etapas de ensino e palavra-chave. + </p> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + img { + height: 200px; + margin-right: 40px; + vertical-align: middle; + } + + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsResourseFind/HowToRank.js b/src/Components/HelpCenter/TabsResourseFind/HowToRank.js new file mode 100644 index 0000000000000000000000000000000000000000..0891ec5324efe7565f4460770b41bc7c9a0fc991 --- /dev/null +++ b/src/Components/HelpCenter/TabsResourseFind/HowToRank.js @@ -0,0 +1,65 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + + +export default function HowToRank(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + O ranqueamento dos recursos está relacionado com as avaliações, estrelas, + comentários, curtidas e até mesmo com as informações sobre o seu recurso. + Ou seja, quanto mais interações positivas um recurso tiver, mais significativo + ele será para a plataforma e seus usuários. Isso quer dizer que os recursos + melhores ranqueados ganham mais destaque nos resultados de busca! + </p> + + + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsResoursePub/How.js b/src/Components/HelpCenter/TabsResoursePub/How.js new file mode 100644 index 0000000000000000000000000000000000000000..fbf097e1a37e4d83d797e789c2edf682b03abf70 --- /dev/null +++ b/src/Components/HelpCenter/TabsResoursePub/How.js @@ -0,0 +1,98 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + +export default function How(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Você possui um material pedagógico interessante e gostaria de compartilhar + com outros professores? Aproveite o espaço da Plataforma MEC para publicar + esse Recurso! Para isso, siga os passos a seguir: + </p> + <ol> + <li>Acesse a <a href="/" target="_blank">Página Inicial</a> da Plataforma.</li> + + <li>Clique no botão “Publicar Recurso†localizado no topo da página.</li> + + <li> + No quadro pontilhado em azul (enviar recurso), no canto esquerdo da + página, você pode escolher o arquivo do seu computador, arrastá-lo ao + quadro ou até mesmo enviar o link de um recurso no botão “enviar link†+ logo abaixo. + </li> + + <li>Em seguida, preencha as informações sobre o recurso no formulário ao lado.</li> + </ol> + + <p> + Dica: para que outros usuários encontre o seu recurso é muito importante + que você preencha o formulário com a maior quantidade de detalhes possÃvel! + </p> + <li>No final do formulário é só clicar no botão “Salvar e Avançar†para prosseguir ao próximo passo.</li> + <li>Ao concluir todas as etapas, você receberá uma mensagem de confirmação do envio do seu Recurso!</li> + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ol { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsResoursePub/Which.js b/src/Components/HelpCenter/TabsResoursePub/Which.js new file mode 100644 index 0000000000000000000000000000000000000000..514e5211564eca79b8289a192c5c6098c470eabd --- /dev/null +++ b/src/Components/HelpCenter/TabsResoursePub/Which.js @@ -0,0 +1,91 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + +export default function Which(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Veja abaixo a lista dos Tipos de Recursos e alguns exemplos de Formatos de + Arquivos que são aceitos para publicação na Plataforma MEC: + </p> + <ul> + <li>Imagem - JPG, GIF e PNG</li> + <li>Mapa - JPG, GIF e PNG</li> + <li>Animação/Simulador - SWF</li> + <li>Texto - PDF, TXT, DOC e DOCX (Word)</li> + <li>Ãudio - MP3 e WAV</li> + <li>VÃdeo - WMV</li> + <li>Apresentação - PPT e PPTX (PowerPoint)</li> + <li>Infográfico - JPG, GIF e PNG</li> + <li>Software Educacional - EXE</li> + <li>Outros - ZIP e RAR (Compactadores) XLS e XLSX (Excel)</li> + + </ul> + + + + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + a { + color: #00bcd4; + text-decoration: none; + :hover { + text-decoration: underline; + } + } + + ul { + margin-top: 0; + margin-bottom: 10px; + line-height: 1.42857143; + } + + li { + font-size: 14px; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelpCenter/TabsResoursePub/Why.js b/src/Components/HelpCenter/TabsResoursePub/Why.js new file mode 100644 index 0000000000000000000000000000000000000000..c0e703c02e30124913f408254fd112162f90ff23 --- /dev/null +++ b/src/Components/HelpCenter/TabsResoursePub/Why.js @@ -0,0 +1,76 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; + + + + +export default function Why(props) { + return( + <Card> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&display=swap" rel="stylesheet"/> + <div style={{marginBottom: "9px"}}> + <span>{props.title}</span> + </div> + <p> + Ao enviar um recurso você estará ajudando a fortalecer a distribuição + de recursos educacionais digitais para o ensino básico brasileiro e + contribuindo na valorização da pluralidade e da diversidade da educação + brasileira. + </p> + + <p> + A Plataforma MEC é um meio seguro e um site de referência para a + publicação e disseminação de Recursos Educacionais Digitais. Aproveite + esse espaço para compartilhar com professores de todo o Brasil recursos + criados por você ou aquele recurso de outro autor que você usou em aula + e seus alunos gostaram! + </p> + <p> + A partir do momento que seu recurso estiver publicado na Plataforma, os + usuários poderão interagir com seu recurso e você receberá as + notificações dos comentários, avaliações e curtidas. Cada uma dessas + interações contam para que seu recurso ganhe uma posição de destaque + na Plataforma. + </p> + <p>Participe dessa rede de colaboração de fomento da qualidade da educação básica!</p> + </Card> + ); +} + +const Card = styled.div` + margin-bottom: 5px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + color: #666; + span { + font-size: 14px; + font-weight: bold; + } + + p { + margin: 0 0 10px; + font-size: 15px; + } + + + +` \ No newline at end of file diff --git a/src/Components/HelperFunctions/checkAccessLevel.js b/src/Components/HelperFunctions/checkAccessLevel.js new file mode 100644 index 0000000000000000000000000000000000000000..5cc5ea4b77468376236fcb72af66df18f4ebb80c --- /dev/null +++ b/src/Components/HelperFunctions/checkAccessLevel.js @@ -0,0 +1,14 @@ +import React, {useContext} from 'react' +import {Store} from '../../Store.js' + +export function checkAccessLevel (levelToCheck) { + const {state} = useContext(Store) + + if (state.currentUser.id != '') { + return(checkUserRole(levelToCheck)) + } + + const checkUserRole = (userRole) => { + return(state.currentUser.roles.filter((role) => role.name === userRole).length > 0) + } +} diff --git a/src/Components/HelperFunctions/getAxiosConfig.js b/src/Components/HelperFunctions/getAxiosConfig.js new file mode 100644 index 0000000000000000000000000000000000000000..99aef6a0221b4ca3c670ab966156b7d87178143d --- /dev/null +++ b/src/Components/HelperFunctions/getAxiosConfig.js @@ -0,0 +1,15 @@ +import React from 'react' + +export const getAxiosConfig = () => { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + } + } + config.headers["Access-Token"] = sessionStorage.getItem('@portalmec/accessToken'); + config.headers.Client = sessionStorage.getItem('@portalmec/clientToken') + config.headers.Uid = sessionStorage.getItem('@portalmec/uid') + + return config +} diff --git a/src/Components/HelperFunctions/getDefaultThumbnail.js b/src/Components/HelperFunctions/getDefaultThumbnail.js new file mode 100644 index 0000000000000000000000000000000000000000..7bdaa5f274f409de0649a0fc6657ab49ca96e330 --- /dev/null +++ b/src/Components/HelperFunctions/getDefaultThumbnail.js @@ -0,0 +1,63 @@ +import React from 'react' +import Animacao from '../../img/laranja/ANIMACAO_SIMULACAO.jpg' +import AplicativoMovel from '../../img/laranja/APP.jpg' +import Apresentacao from '../../img/laranja/APRESENTACAO.jpg' +import Audio from '../../img/laranja/AUDIO.jpg' +import Empty from '../../img/laranja/EMPTY.jpg' +import Imagem from '../../img/laranja/IMAGEM.jpg' +import Infografico from '../../img/laranja/INFOGRAFICO.jpg' +import Jogo from '../../img/laranja/JOGO.jpg' +import LivroDigital from '../../img/laranja/LIVRO_DIGITAL.jpg' +import Mapa from '../../img/laranja/MAPA.jpg' +import Outros from '../../img/laranja/OUTROS.jpg' +import SoftwareEducacional from '../../img/laranja/SOFTWARE.jpg' +import Texto from '../../img/laranja/TEXTO.jpg' +import Video from '../../img/laranja/VIDEO.jpg' + +export const getDefaultThumbnail = (objType) => { + switch (objType.toLowerCase()) { + case "imagem": + return Imagem; + break; + case "mapa": + return Mapa; + break; + case "software educacional" : + return SoftwareEducacional; + break; + case "aplicativo móvel": + return AplicativoMovel; + break; + case "apresentação": + return Apresentacao; + break; + case "áudio": + return Audio; + break; + case "infográfico": + return Infografico; + break; + case "jogo": + return Jogo; + break; + case "livro digital" : + return LivroDigital; + break; + case "texto": + return Texto; + break; + case "vÃdeo": + return Video; + break; + case "animação": + return Animacao; + break; + case null: + return Empty; + break; + default: + return Outros; + break; + + } +} diff --git a/src/Components/IllegalContentModal.js b/src/Components/IllegalContentModal.js index f623587ac501efc859c5edc5b87d42b6c714ac34..01ccf37bca84035048722dc7e1175c0c4b03a3f9 100644 --- a/src/Components/IllegalContentModal.js +++ b/src/Components/IllegalContentModal.js @@ -100,8 +100,8 @@ export default function IllegalContentModal (props) { aria-labelledby="transition-modal-title" aria-describedby="transition-modal-description" open={props.open} - animation={true} - centered={true} + + centered="true" onClose={props.handleClose} closeAfterTransition BackdropComponent={Backdrop} @@ -112,7 +112,7 @@ export default function IllegalContentModal (props) { <Fade in={props.open}> <StyledDivContainer > <StyledDivContent> - <StyledH2>{state.loginInfo.username}!</StyledH2> + <StyledH2>{state.currentUser.username}!</StyledH2> <div> <StyledParagraph>Seu recurso não está de acordo com os termos</StyledParagraph> </div> diff --git a/src/Components/ItemCard.js b/src/Components/ItemCard.js new file mode 100644 index 0000000000000000000000000000000000000000..21f87f4f9e0bc70f04145db5ff832961e1f383cf --- /dev/null +++ b/src/Components/ItemCard.js @@ -0,0 +1,57 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext} from 'react'; +import styled from 'styled-components'; +import Grid from '@material-ui/core/Grid'; +import Card from '@material-ui/core/Card'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; +import gem from '../img/gamification/gem.svg'; +import ItemCardAction from './ItemCardAction.js'; + +const ItemImage = styled.img` + border-radius: 150; + max-width: 100%; +` + +const ItemName = styled.h3` + font-size: 0.8em; + font-weight: lighter; + color: #666666; +` + +const ItemDescription = styled.p` + font-size: 0.5em; + color: #666666; +` + + +export default function ItemCard (props) { + return ( + <Grid item xs={9} sm={2}> + <Card style={{textAlign: 'center'}}> + <CardContent> + <ItemImage src={props.src}/> + <ItemName>{props.name}</ItemName> + <ItemDescription>{props.description}</ItemDescription> + <ItemCardAction operation={props.action}/> + </CardContent> + </Card> + </Grid> + ) +} diff --git a/src/Components/ItemCardAction.js b/src/Components/ItemCardAction.js new file mode 100644 index 0000000000000000000000000000000000000000..c5e9f41d67a65b1f1a1c81a037504baaae581219 --- /dev/null +++ b/src/Components/ItemCardAction.js @@ -0,0 +1,177 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext} from 'react'; +import styled from 'styled-components'; +import Card from '@material-ui/core/Card'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; +import Snackbar from '@material-ui/core/Snackbar'; +import MuiAlert from '@material-ui/lab/Alert'; +import Button from '@material-ui/core/Button'; +import gem from '../img/gamification/gem.svg'; +import SnackbarContent from '@material-ui/core/SnackbarContent'; +import Dialog from '@material-ui/core/Dialog'; +import DialogActions from '@material-ui/core/DialogActions'; +import DialogContent from '@material-ui/core/DialogContent'; +import DialogContentText from '@material-ui/core/DialogContentText'; +import DialogTitle from '@material-ui/core/DialogTitle'; +import axios from 'axios' +import {apiUrl} from '../env'; + +function Alert(props) { + return <MuiAlert elevation={6} variant="filled" {...props} />; +} + +const actionStyle = (operation) => { + var stl = { + fontSize: '0.5em', + paddingTop: '1em', + marginBottom: 0, + fontWeight: 'bold', + cursor: 'pointer' + } + stl.color = operation != 'buy' ? '#02a5c3' : '#666666'; + return stl; +} + +const GemImg = styled.img` + height: 23px; + position: relative; + top: 8px; + padding-right: 5px; +` + +const GemSpan = styled.span` + color: red; +` + +export default function ItemCardAction (props) { + const [success, setSuccess] = useState(false); + const [failure, setFailure] = useState(false); + const [message, setMessage] = useState(""); + const [info, setInfo] = useState(false); + const [item_id, setItemID] = useState(0); + const [last_operation, setLastOperation] = useState(); + const [open_dialog, setOpenDialog] = useState(false); + const nonPurchaseMessage = <span>Item {last_operation == 'equip' ? 'retirado' : 'equipado'}. <a onClick={revertLastOperation}>Desfazer</a></span>; + + + const handleClose = (snackbar) => { + if (snackbar == 'success') + setSuccess(false); + else if (snackbar == 'info') + setInfo(false); + else + setFailure(false); + } + + const revertLastOperation = () => { + manageItemAndShowSnackbar(last_operation == 'equip' ? 'unequip' : 'equip', + setInfo, + nonPurchaseMessage, + 'Erro'); + } + + const manageItemAndShowSnackbar = (operation, setSnackbar, successMessage, failureMessage) => { + axios.patch(apiUrl + '/users/' + operation + '_item?id=' + item_id).then( + response => { + if (response.status == 200) { + setSnackbar(true); + setMessage(successMessage); + } else { + setFailure(true); + setMessage(failureMessage); + } + } + ); + setLastOperation(operation == 'purchase' ? last_operation : (operation == 'equip' ? 'unequip' : 'equip')); + } + + const handleClickBuyItem = () => { + setOpenDialog(false); + manageItemAndShowSnackbar('purchase', setSuccess, <span>Item comprado.</span>, + <span>Compra falhou. Tente novamente</span>); + } + + const handleDialogClose = () => { + setOpenDialog(false); + } + + const handleClick = () => { + // this will become an axios get + if (props.operation == 'unequip') + manageItemAndShowSnackbar('unequip', setInfo, nonPurchaseMessage, 'Erro'); + else if (props.operation == 'equip') + manageItemAndShowSnackbar('equip', setInfo, nonPurchaseMessage, 'Erro'); + else if (props.operation == 'buy') { + setOpenDialog(true); + } + } + + return ( + <div> + <Snackbar open={info} autoHideDuration={6000} onClose={() => handleClose('info')}> + <Alert onClose={handleClose} severity="info"> + {message} + </Alert> + </Snackbar> + <Snackbar open={success} autoHideDuration={6000} onClose={() => handleClose('success')}> + <Alert onClose={handleClose} severity="success"> + {message} + </Alert> + </Snackbar> + <Snackbar open={failure} autoHideDuration={6000} onClose={() => handleClose('failure')}> + <Alert onClose={handleClose} severity="error"> + {message} + </Alert> + </Snackbar> + <span style={actionStyle(props.operation)} onClick={handleClick}> + {props.operation == 'buy' ? <GemImg src={gem}/> : <span/>} + {props.operation == 'buy' ? "COMPRAR" : + props.operation == 'equip' ? "USAR" : "TIRAR"} + </span> + <Dialog + open={open_dialog} + onClose={handleClose} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description" + > + <DialogTitle id="alert-dialog-title">{"Deseja realmente comprar este item?"}</DialogTitle> + <DialogContent> + <DialogContentText id="alert-dialog-description"> + <strong>Esta compra não envolve nenhum dinheiro real.</strong> + + <br/><br/>O item que você deseja comprar, <strong>NOME DO ITEM</strong>, custa + <GemImg src={gem}/><GemSpan>PREÇO</GemSpan> gemas. Você possui + <GemImg src={gem}/><GemSpan><strong>GEMAS</strong></GemSpan> gemas. + + <br/><br/>Comprar este item lhe deixará com <GemImg src={gem}/><GemSpan><strong>TANTAS</strong></GemSpan> gemas. + </DialogContentText> + </DialogContent> + <DialogActions> + <Button onClick={handleDialogClose} color="primary"> + Cancelar + </Button> + <Button onClick={handleClickBuyItem} color="primary" autoFocus> + Comprar + </Button> + </DialogActions> + </Dialog> + </div> + ) +} diff --git a/src/Components/ItemCarousel.js b/src/Components/ItemCarousel.js new file mode 100644 index 0000000000000000000000000000000000000000..a3e03e8e4fbcbf3a6a442a433896bb1191334030 --- /dev/null +++ b/src/Components/ItemCarousel.js @@ -0,0 +1,71 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext} from 'react'; +import styled from 'styled-components'; +import Grid from '@material-ui/core/Grid'; +import Card from '@material-ui/core/Card'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; +import ItemCard from './ItemCard.js'; +import ArrowBackIcon from '@material-ui/icons/ArrowBack'; +import ArrowForwardIcon from '@material-ui/icons/ArrowForward'; +import IconButton from '@material-ui/core/IconButton'; + +//url/user_items/index?q={"item_type": umdaqueles, "op": "none", "unlock_rule": "purchase"} +export default function ItemCarousel (props) { + const [left, setLeft] = useState(0); + const [right, setRight] = useState(5); + + const goLeft = () => { + setRight(right == 0 ? props.items.length-1 : right-1); + setLeft(left == 0 ? props.items.length-1 : left-1); + } + + const goRight = () => { + setRight(right == props.items.length-1 ? 0 : right+1); + setLeft(left == props.items.length-1 ? 0 : left+1); + } + + return ( + <Grid + item container + direction="row" + justify="center" + alignItems="center" + xs={12} + spacing={3} + > + <IconButton onClick={goLeft}> + <ArrowBackIcon/> + </IconButton> + {(left > right ? + props.items.slice(left, props.items.length).concat(props.items.slice(0, right)) + : props.items.slice(left, right) + ).map((i) => { + return <ItemCard + src={i.src} + action={i.action} + name={i.name} + description={i.description}/> + })} + <IconButton onClick={goRight}> + <ArrowForwardIcon/> + </IconButton> + </Grid> + ) +} diff --git a/src/Components/LevelDescriptionCard.js b/src/Components/LevelDescriptionCard.js new file mode 100644 index 0000000000000000000000000000000000000000..90e43b78d1343e2e5fa971349e87bc7b175b54e4 --- /dev/null +++ b/src/Components/LevelDescriptionCard.js @@ -0,0 +1,77 @@ +import React, { Component, useState, useEffect } from 'react'; + +import {Container} from 'react-grid-system'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; + +import styled from 'styled-components' +import ShinyProgressBar from './ShinyProgressBar.js' +import { Grid } from '@material-ui/core' + +import axios from 'axios'; +import { apiUrl } from '../env'; + +export default function LevelDescriptionCard(props) { + + return ( + <LevelDescDiv> + <Grid container direction="row" justify="space-between" alignItems="center"> + <Grid item xs={6} md={4}> + <CurrentLevelNumber> + NÃvel {props.level} + </CurrentLevelNumber> + <CurrentLevelXP> + XP {props.xp} + </CurrentLevelXP> + </Grid> + <Grid item xs={6} md={4} alignContent='flex-end'> + <CurrentCoins> + {props.coins} COINS + </CurrentCoins> + <NextLevelXP> + {props.xp_to_next_lvl} XP PARA O NÃVEL {props.level+1} + </NextLevelXP> + </Grid> + <ShinyProgressBar percentage={props.bar_size} /> + </Grid> + </LevelDescDiv> + ); +} + +const NextLevelXP = styled.p` + text-align: right; + font-size: large; + font-weight: 500; + color: #575757; + margin-right: 30px; +` + +const CurrentCoins = styled.p` + text-align: right; + font-size: x-large; + font-weight: 500; + color: #575757; + margin-right: 30px; +` + +const CurrentLevelInfo = styled.div` + background-color: red; +` +const CurrentLevelNumber = styled.h1` + font-weight: 500; + font-size: 40px; + color: #646464; + margin-left: 30px; +` + +const CurrentLevelXP = styled.h2` + font-size: x-large; + font-weight: 500; + color: #00A5B9; + margin-left: 30px; +` + +const LevelDescDiv = styled.div` + margin: 20px; + padding: 20px; +` diff --git a/src/Components/LoadingSpinner.js b/src/Components/LoadingSpinner.js new file mode 100644 index 0000000000000000000000000000000000000000..ffeec90992457ab00d31c18dff77e14ba0d40b61 --- /dev/null +++ b/src/Components/LoadingSpinner.js @@ -0,0 +1,11 @@ +import React from 'react'; +import LoadingGif from '../img/loading_busca.gif' + + const LoadingSpinner = (props) => ( + <div style={{display:"flex", flexDirection:"column", alignItems:"center", justifyContent:"center"}}> + <img src={LoadingGif} /> + <span style={{textTransform:"uppercase"}}>{props.text}</span> + </div> + ); + + export default LoadingSpinner; diff --git a/src/Components/LoginContainer.js b/src/Components/LoginContainer.js index c148704c53c34f48bec95f21d711922e16c79820..aaf89d2182dfb74eedb1da3228ea950ae5880e76 100644 --- a/src/Components/LoginContainer.js +++ b/src/Components/LoginContainer.js @@ -24,6 +24,7 @@ import styled from 'styled-components' import {device} from './device.js' import LabeledCheckbox from './Checkbox.js' import FormInput from "./FormInput.js" +import GoogleLogo from "../img/logo_google.svg" //arrumar isso const responseGoogle = (response) => { @@ -35,9 +36,9 @@ class LoginContainer extends Component { super(props); this.state = { - email : "", - senha : "", - checkboxChecked : true + email : localStorage.getItem("@portalmec/email") || "", + senha : localStorage.getItem("@portalmec/senha") ||"", + checkboxChecked : false }; this.handleChecked = this.handleChecked.bind(this) } @@ -54,8 +55,9 @@ class LoginContainer extends Component { onSubmit = (e) => { e.preventDefault(); + const login = this.state - this.props.handleLoginInfo(this.state); + this.props.handleLoginInfo(login); this.setState({ email: "", @@ -64,8 +66,11 @@ class LoginContainer extends Component { } handleChecked = (e) => { + const value = !this.state.checkboxChecked + console.log(this.state.checkboxChecked) + console.log(value) this.setState({ - checkboxChecked : !this.state.checkboxChecked + checkboxChecked :value }) } @@ -73,15 +78,16 @@ class LoginContainer extends Component { return ( <ContainerStyled > <DialogHeaderStyled> + <span style={{width:"32px"}}/> <H2Styled> Entrar - <StyledCloseModalButton onClick={this.props.handleClose}> - <CloseIcon/> - </StyledCloseModalButton> </H2Styled> + <StyledCloseModalButton onClick={this.props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> </DialogHeaderStyled> - <div style={{paddingTop: "20px"}}> - <div style={{marginTop:"0"}}> + <DialogContentDiv> + <SocialConnectDiv> <StyledGoogleLoginButton clientId="658977310896-knrl3gka66fldh83dao2rhgbblmd4un9.apps.googleusercontent.com" @@ -89,50 +95,54 @@ class LoginContainer extends Component { onFailure={responseGoogle} cookiePolicy={'single_host_origin'} > - <span style={{textTransform:"none", fontSize:"13px"}}>Usando o Google</span> + <span style={{textTransform:"none", fontSize:"13px", color : "#666"}}>Usando o Google</span> </StyledGoogleLoginButton> - </div> - </div> - - <H3Styled> - <RightSideStrikedH3/> - <span style={{verticalAlign:"middle"}}>ou</span> - <LeftSideStrikedH3/> - </H3Styled> - - <form ref="form" onSubmit={this.onSubmit}> - <FormInput - inputType={"text"} - name={"email"} - value={this.state.email} - placeholder={"E-mail *"} - handleChange={e => this.handleChange(e)} - /> - <br/> - <FormInput - inputType={"password"} - name={"senha"} - value={this.state.senha} - placeholder={"Senha *"} - handleChange={e => this.handleChange(e)} - /> - <br/> - - <RememberRecover> - <LabeledCheckbox label={<StyledSpan>Lembrar-me</StyledSpan>} onchange={this.handleChecked}/> - <span style={{paddingTop:"15px"}}>Esqueceu a senha?<a href="recuperar-senha" style={{textAlign: "right", color:"#4cd0e1"}}>Clique aqui!</a></span> - </RememberRecover> - - <ConfirmContainerStyled> - <StyledLoginButton onClick={e => this.onSubmit(e)} variant="contained"> - <span style={{borderRadius:"3px", boxSizing:"border-box", fontFamily:"Roboto, sans serif", fontWeight:"500", color:"#fff"}}>ENTRAR</span> - </StyledLoginButton> - </ConfirmContainerStyled> - </form> - - <DialogFooterStyled> - <span style={{textAlign:"center", fontSize: "14px", color:"rgb(102, 102, 102)"}}>Ainda não tem cadastro? <StyledAnchor href="" onClick={e => this.switchModal(e)}>CADASTRE-SE</StyledAnchor></span> - </DialogFooterStyled> + </SocialConnectDiv> + + <H3Div> + <H3Styled> + <RightSideStrikedH3/> + <span style={{verticalAlign:"middle"}}>ou</span> + <LeftSideStrikedH3/> + </H3Styled> + </H3Div> + + <form onSubmit={this.onSubmit}> + <FormInput + inputType={"text"} + name={"email"} + value={this.state.email} + placeholder={"E-mail"} + handleChange={e => this.handleChange(e)} + required={true} + /> + <br/> + <FormInput + inputType={"password"} + name={"senha"} + value={this.state.senha} + placeholder={"Senha"} + handleChange={e => this.handleChange(e)} + required={true} + /> + <br/> + + <RememberRecover> + <LabeledCheckbox label={<StyledLabel><StyledSpan>Lembrar-me</StyledSpan></StyledLabel>} handleChange={this.handleChecked} /> + <UserForgotTheirPasswordSpan>Esqueceu a senha? <a href="recuperar-senha" style={{textAlign: "right", color:"#4cd0e1"}}>Clique aqui!</a></UserForgotTheirPasswordSpan> + </RememberRecover> + + <ConfirmContainerStyled> + <StyledLoginButton type="submit" variant="contained"> + <span style={{borderRadius:"3px", boxSizing:"border-box", fontFamily:"Roboto, sans serif", fontWeight:"500", color:"#fff"}}>ENTRAR</span> + </StyledLoginButton> + </ConfirmContainerStyled> + </form> + + <DialogFooterStyled> + <span style={{textAlign:"center", fontSize: "14px", color:"rgb(102, 102, 102)"}}>Ainda não tem cadastro? <StyledAnchor href="" onClick={e => this.switchModal(e)}>CADASTRE-SE</StyledAnchor></span> + </DialogFooterStyled> + </DialogContentDiv> </ContainerStyled> ) } @@ -144,24 +154,68 @@ const ContainerStyled = styled.div` box-sizing : border-box; background-color : white; max-width : none; + display : flex; + flex-direction : column; + min-width : 440px; + min-height : 550px; align : center; - padding-left : 25px; - padding-right:25px; - padding-bottom:10px; + padding : 10px; border-radius: 4px; + line-height : 20px; + font-size : 14px; @media ${device.mobileM} { width : 100%; height : 100%; } ` -const DialogHeaderStyled = styled.div` +export const DialogHeaderStyled = styled.div` text-align : center; - display : inline-flex; + display : flex; + flex-direction : row; justify-content : space-between; padding : 10px 26px 0 26px; height : 64px; ` +const H2Styled = styled.h2` + align-self : center; + color : #666; + font-size : 26px; + font-weight : 100; + font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif !important; + justify-content: space-between; + text-align: center; + letter-spacing: .005em; +` + +export const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` +export const DialogContentDiv = styled.div` + padding : 20px 30px; + overflow : visible !important; +` + +export const SocialConnectDiv = styled.div` + margin-top : 0; + display : flex; + flex-direction : row; +` +export const StyledGoogleLoginButton = styled(GoogleLogin)` + background-color : #fff !important; + color : #666 !important; + border : 1px solid rgb(66, 133, 244); + box-shadow: 0 0 0 1px #4285f4 !important; + :hover { + background-color: #f4f4f4 !important; + } +` const DialogFooterStyled = styled.div` box-sizing : border-box; @@ -174,17 +228,6 @@ const DialogFooterStyled = styled.div` line-height : 1.42857143 ` -const H2Styled = styled.h2` - align-self : center; - color : #666; - font-size : 26px; - font-weight : 100; - font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif !important; - justify-content: space-between; - padding: 10px 26px 0 26px; - text-align: center; - letter-spacing: .005em; -` const RightSideStrikedH3 = styled.div` display : inline-block; @@ -203,13 +246,10 @@ const LeftSideStrikedH3 = styled.div` margin-left : 5px; width : 45%; ` -const StyledGoogleLoginButton = styled(GoogleLogin)` - background-color: fff; - border : 1px solid rgb(66, 133, 244); - box-shadow: 0 0 0 1px #4285f4 !important; - :hover { - background-color: #f4f4f4 !important; - } + +export const H3Div = styled.div` + margin-top : 0; + margin-bottom : 10px; ` const H3Styled = styled.h3` @@ -224,24 +264,14 @@ const StyledAnchor = styled.a` color : #00bcd4; text-decoration : none; ` -const StyledCloseModalButton = styled(Button)` - display : inline-block; - position : relative; - float : right !important; - margin-right : -8px; - background : transparent; - min-width: 0 !important; - width : 40px; -` const ConfirmContainerStyled = styled.div` display : flex; margin-top : 10px; align-items : center; justify-content : center; - box-sizing : border-box; ` const StyledLoginButton = styled(Button)` - background-color: #00bcd4 !important; + background-color : #00bcd4 !important; box-shadow : none !important; outline: none !important; border : 0 !important; @@ -259,15 +289,32 @@ const StyledLoginButton = styled(Button)` } ` + const RememberRecover = styled.div` display : flex; justify-content : space-between; font-size: 12px; font-weight : 400; - margin-bottom: 16px; ` + +const StyledLabel = styled.div` + box-sizing : border-box; + position : relative; + vertical-align : middle !important; + color : #666; + +` + +const UserForgotTheirPasswordSpan = styled.span` + margin-top : 1em; + font-size : 12px; + font-weight : 400; + text-align : right; + color : #666; +` + const StyledSpan = styled.span` - font-size: 12px; - font-weight: 400; - padding-top: 2px; + font-size : 12px; + font-weight : 400; + padding-top : 2px; ` diff --git a/src/Components/LoginContainerFunction.js b/src/Components/LoginContainerFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..099b74479af302dd6471d53ef074e5c875e762cc --- /dev/null +++ b/src/Components/LoginContainerFunction.js @@ -0,0 +1,348 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState} from "react"; +import GoogleLogin from 'react-google-login' +import { Button } from '@material-ui/core'; +//import FacebookLogin from 'react-facebook-login'; +import CloseIcon from '@material-ui/icons/Close'; +import styled from 'styled-components' +import {device} from './device.js' +import LabeledCheckbox from './Checkbox.js' +import FormInput from "./FormInput.js" +import GoogleLogo from "../img/logo_google.svg" +import ValidateUserInput from '../Components/FormValidationFunction.js' +import {Link} from 'react-router-dom' +import {apiUrl} from '../env'; + +async function handleGoogleAttempt () { + console.log("handleGoogleAttempt") + let request_url = ( + `${apiUrl}/omniauth/google_oauth2?auth_origin_url=` + window.location.href + '&omniauth_window_type=sameWindow&resource_class=User' + ) + window.location.replace(request_url) +} + +export default function LoginContainer (props) { + const [formEmail, setEmail] = useState( + { + key : false, + value : localStorage.getItem("@portalmec/uid") || "", + } + ) + + const [formSenha, setSenha] = useState( + { + key : false, + value : localStorage.getItem("@portalmec/senha") ||"" + } + ) + + const [checkboxControl, setCheckbox] = useState(false) + + const switchModal = (e) => { + e.preventDefault() + props.handleClose() + props.openSignUp() + } + + const handleChange = (e, type) => { + const userInput = e.target.value + const flag = ValidateUserInput(type, userInput) + + if(type === 'email') { + setEmail({...formEmail, + key : flag, + value : userInput + }) + {/*console.log(formEmail)*/} + } + else if(type === 'password') { + setSenha({...formSenha, + key : flag, + value : userInput + }) + {/*console.log(formSenha)*/} + } + } + + const limpaCamposForm = () => { + setEmail({...formEmail, + key : false, + value : '' + }); + + setSenha({...formSenha, + key : false, + value : '' + }) + } + + const onSubmit = (e) => { + e.preventDefault() + const login = {email : formEmail.value, senha : formSenha.value, checkbox : checkboxControl} + + if (!(formEmail.key || formSenha.key)) { + props.handleLoginInfo(login) + limpaCamposForm() + } + + } + + //arrumar isso + const handleGoogleResponse = (response) => { + console.log(response); + } + + return ( + <div> + <ContainerStyled > + <DialogHeaderStyled> + <span style={{width:"32px"}}/> + <H2Styled> Entrar + </H2Styled> + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> + </DialogHeaderStyled> + + <DialogContentDiv> + <SocialConnectDiv> + <Button onClick={handleGoogleAttempt}>login com google</Button> + </SocialConnectDiv> + + <H3Div> + <H3Styled> + <RightSideStrikedH3/> + <span style={{verticalAlign:"middle"}}>ou</span> + <LeftSideStrikedH3/> + </H3Styled> + </H3Div> + + <form onSubmit={e => onSubmit(e)}> + <FormInput + inputType={"text"} + name={"email"} + value={formEmail.value} + placeholder={"E-mail"} + handleChange={e => handleChange(e, 'email')} + required={true} + error = {formEmail.key} + help = {formEmail.key ? ( formEmail.value.length == 0 ? "Faltou preencher seu e-mail." : <span>Insira um endereço de e-mail válido.<br/>Por exemplo: seunome@gmail.com, seunome@hotmail.com</span>) : ""} + /> + <br/> + <FormInput + inputType={"password"} + name={"senha"} + value={formSenha.value} + placeholder={"Senha"} + handleChange={e => handleChange(e, 'password')} + required={true} + error = {formSenha.key} + help = {formSenha.key ? (formSenha.value.length == 0 ? "Faltou digitar sua senha." : "A senha precisa ter no mÃnimo 8 caracteres.") : ""} + /> + <br/> + + <RememberRecover> + <LabeledCheckbox label={<StyledLabel><StyledSpan>Lembrar-me</StyledSpan></StyledLabel>} handleChange={() => setCheckbox(!checkboxControl)}/> + <UserForgotTheirPasswordSpan>Esqueceu a senha? <Link to={"recuperar-senha"} style={{textAlign: "right", color:"#4cd0e1"}} onClick={props.handleClose}>Clique aqui!</Link></UserForgotTheirPasswordSpan> + </RememberRecover> + + <ConfirmContainerStyled> + <StyledLoginButton type="submit" variant="contained"> + <span style={{borderRadius:"3px", boxSizing:"border-box", fontFamily:"Roboto, sans serif", fontWeight:"500", color:"#fff"}}>ENTRAR</span> + </StyledLoginButton> + </ConfirmContainerStyled> + </form> + + <DialogFooterStyled> + <span style={{textAlign:"center", fontSize: "14px", color:"rgb(102, 102, 102)"}}>Ainda não tem cadastro? <StyledAnchor href="" onClick={e => switchModal(e)}>CADASTRE-SE</StyledAnchor></span> + </DialogFooterStyled> + </DialogContentDiv> + </ContainerStyled> + </div> + ) +} + + + const ContainerStyled = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + display : flex; + flex-direction : column; + min-width : 440px; + + align : center; + padding : 10px; + border-radius: 4px; + line-height : 20px; + font-size : 14px; + @media ${device.mobileM} { + width : 100%; + height : 100%; + } + ` + + export const DialogHeaderStyled = styled.div` + text-align : center; + display : flex; + flex-direction : row; + justify-content : space-between; + padding : 10px 26px 0 26px; + height : 64px; + ` + const H2Styled = styled.h2` + align-self : center; + color : #666; + font-size : 26px; + font-weight : 100; + font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif !important; + justify-content: space-between; + text-align: center; + letter-spacing: .005em; + ` + + export const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; + ` + export const DialogContentDiv = styled.div` + padding : 20px 30px; + overflow : visible !important; + ` + + export const SocialConnectDiv = styled.div` + margin-top : 0; + display : flex; + flex-direction : row; + ` + export const StyledGoogleLoginButton = styled(GoogleLogin)` + background-color : #fff !important; + color : #666 !important; + border : 1px solid rgb(66, 133, 244); + box-shadow: 0 0 0 1px #4285f4 !important; + :hover { + background-color: #f4f4f4 !important; + } + ` + + const DialogFooterStyled = styled.div` + box-sizing : border-box; + font-family : 'Roboto', sans serif; + margin : 20px -20px; + padding-top : 20px; + border-top : 1px #e5e5e5 solid; + justify-content : center; + text-align : center; + line-height : 1.42857143 + ` + + +export const RightSideStrikedH3 = styled.div` + display : inline-block; + border-bottom: 1px dotted #666; + vertical-align : middle; + font-weight : 500; + margin-right : 5px; + width : 45%; + ` + + export const LeftSideStrikedH3 = styled.div` + display : inline-block; + border-bottom: 1px dotted #666; + vertical-align : middle; + font-weight : 500; + margin-left : 5px; + width : 45%; + ` + + export const H3Div = styled.div` + margin-top : 0; + margin-bottom : 10px; + ` + + const H3Styled = styled.h3` + overflow : hidden; + text-align : center; + font-size : 14px; + color : #666; + margin : 10px 0; + ` + + const StyledAnchor = styled.a` + color : #00bcd4; + text-decoration : none; + ` + const ConfirmContainerStyled = styled.div` + display : flex; + margin-top : 10px; + align-items : center; + justify-content : center; + ` + const StyledLoginButton = styled(Button)` + background-color : #00bcd4 !important; + box-shadow : none !important; + outline: none !important; + border : 0 !important; + overflow : hidden !important; + width : 35% !important; + display : inline-block !important; + font-family : 'Roboto', sans serif !important; + font-size: 14px !important; + height : 36px !important; + align-items : center !important; + border-radius: 3px !important; + align-self : 50% !important; + :hover { + background-color : #00acc1 !important; + } + ` + + + const RememberRecover = styled.div` + display : flex; + justify-content : space-between; + font-size: 12px; + font-weight : 400; + ` + + const StyledLabel = styled.div` + box-sizing : border-box; + position : relative; + vertical-align : middle !important; + color : #666; + ` + + const UserForgotTheirPasswordSpan = styled.span` + margin-top : 1em; + font-size : 12px; + font-weight : 400; + text-align : right; + color : #666; + ` + + const StyledSpan = styled.span` + font-size : 12px; + font-weight : 400; + padding-top : 2px; + ` diff --git a/src/Components/LoginModal.js b/src/Components/LoginModal.js index 1652dc66f76984373b739f1a4ea692a3ef389ca7..5f2c5931996915e89c6c79e6820d7172d406cc19 100644 --- a/src/Components/LoginModal.js +++ b/src/Components/LoginModal.js @@ -16,16 +16,18 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {useContext} from 'react'; +import React, {useContext, useState} from 'react'; import { Button } from '@material-ui/core'; import Modal from '@material-ui/core/Modal'; import Backdrop from '@material-ui/core/Backdrop'; -import Fade from '@material-ui/core/Fade'; +import Zoom from '@material-ui/core/Fade'; import styled from 'styled-components' -import LoginContainer from './LoginContainer' +import LoginContainer from './LoginContainerFunction.js' import {Store} from '../Store.js' import axios from 'axios' import {apiUrl} from '../env'; +import Snackbar from '@material-ui/core/Snackbar'; +import MuiAlert from '@material-ui/lab/Alert'; const StyledLogin = styled(Modal)` margin : 0 !important; @@ -38,9 +40,22 @@ const StyledLogin = styled(Modal)` border-radius : 4px; ` +export function Alert(props) { + return <MuiAlert elevation={6} variant="filled" {...props} />; +} export default function LoginModal (props){ - const {state, dispatch} = useContext(Store) + const {state, dispatch} = useContext(Store) + + const [snackbarOpened, handleSnackbar] = useState(false) + + const handleCloseSnackbar = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + handleSnackbar(false); + } const handleLoginInfo = (login) => { axios.post(`${apiUrl}/auth/sign_in`, @@ -49,32 +64,59 @@ export default function LoginModal (props){ password : login.senha } ).then( (response) => { + console.log(response) dispatch ({ type: "USER_LOGGED_IN", userLoggedIn: !state.userIsLoggedIn, login: { - username : login.username, - email : login.email, + askTeacherQuestion : response.data.data.ask_teacher_question, + id : response.data.data.id, + username : response.data.data.name, + email : response.data.data.email, accessToken : response.headers['access-token'], - client : response.headers.client + clientToken : response.headers.client, + userAvatar : response.data.data.avatar_file_name, + userCover : response.data.data.cover_file_name, + uid : response.data.data.uid, + followCount : response.data.data.follows_count, + collectionsCount : response.data.data.collections_count, + submitter_request : response.data.data.submitter_request, + roles : response.data.data.roles } } ) + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + sessionStorage.setItem('@portalmec/clientToken', response.headers.client) + sessionStorage.setItem('@portalmec/id', response.data.data.id) + sessionStorage.setItem('@portalmec/username', response.data.data.name) + sessionStorage.setItem('@portalmec/uid', response.data.data.uid) + sessionStorage.setItem('@portalmec/senha', login.senha) + + if (login.checkboxChecked) { + localStorage.setItem('@portalmec/email', login.email) + localStorage.setItem('@portalmec/senha', login.senha) //MUDAR ISSO ASAP + } props.handleClose(); + props.openSnackbar(); }, (error) => { - console.log(':()') + {handleSnackbar(true)} } ) } return ( + <> + <Snackbar open={snackbarOpened} autoHideDuration={1000} onClose={handleCloseSnackbar} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="error">Ocorreu um erro ao se conectar!</Alert> + </Snackbar> <StyledLogin aria-labelledby="transition-modal-title" aria-describedby="transition-modal-description" open={props.open} - animation={true} - centered={true} + centered="true" onClose={props.handleClose} closeAfterTransition BackdropComponent={Backdrop} @@ -82,12 +124,13 @@ export default function LoginModal (props){ timeout: 500, }} > - <Fade in={props.open}> + <Zoom in={props.open} style={{ transitionDelay :"0.2ms"}}> <LoginContainer handleClose={props.handleClose} openSignUp={props.openSignUp} handleLoginInfo={handleLoginInfo} /> - </Fade> + </Zoom> </StyledLogin> + </> ) } diff --git a/src/Components/MenuBar.js b/src/Components/MenuBar.js index d2ba1f46a599c406a4ea94dac5e0b4cf6895f499..8ea5f1620e085fcf23fa8ae0b867a8bb3df1ef84 100644 --- a/src/Components/MenuBar.js +++ b/src/Components/MenuBar.js @@ -29,7 +29,7 @@ import styled from 'styled-components' import { Store } from '../Store'; import CloudUploadIcon from '@material-ui/icons/CloudUpload'; import Notifications from "./Notifications.js" -import CustomizedMenus from './MenuList' +import MenuList from './MenuList' const ContainerStyled = styled(Container)` *{ text-decoration: none } @@ -37,12 +37,13 @@ const ContainerStyled = styled(Container)` align-items: center; border-top: 1px rgba(0,0,0,.1) solid; padding: 5px; - *{ - margin-left: 10px; - } + + ` const ButtonStyled = styled(Button)` text-transform: capitalize !important; + margin : 0 8px !important; + font-weight : normal !important; ` const ButtonPublicarRecurso = styled(Button)` @@ -51,9 +52,14 @@ const ButtonPublicarRecurso = styled(Button)` border : 1px transparent solid; background-color : #ff7f00 !important; align-content : center; + font-weight : 500 !important; text-transform: capitalize !important; font-stretch : expanded; max-width: 200 !important; + .MuiSvgIcon-root { + vertical-align : middle !important; + margin-right : 5px !important; + } ` const IconSearchStyled = styled(IconSearch)` @@ -81,9 +87,12 @@ const Left = styled.span ` ` const ButtonPubRecursoStyled = styled(Button)` + font-weight : 500 !important; border : 1.5px #666 solid !important; color: #666; box-shadow: none; + margin : 0 8px !important; + font-weight : normal !important; ` @@ -92,28 +101,28 @@ export default function MenuBar(props){ const { state, dispatch } = useContext(Store) const menuSobre = [ - { name: "Sobre a Plataforma", href: "" }, + { name: "Sobre a Plataforma", href: "sobre" }, { name: "Portais Parceiros", href: "" }, - { name: "Termos de Uso", href: "" }, - { name: "Contato", href: "" } + { name: "Termos de Uso", href: "termos" }, + { name: "Contato", href: "contato" } ] const menuAjuda = [ - { name: "Central de Ajuda", href: ""}, - { name: "Publicando Recursos", href: ""}, - { name: "Encontrando Recursos", href: ""}, - { name: "Participando da Rede", href: ""}, - { name: "Gerenciando a Conta", href: ""} + { name: "Central de Ajuda", href: "ajuda"}, + { name: "Publicando Recursos", href: "publicando-recurso"}, + { name: "Encontrando Recursos", href: "encontrando-recurso"}, + { name: "Participando da Rede", href: "participando-da-rede"}, + { name: "Gerenciando a Conta", href: "gerenciando-conta"} ] const minhaArea = [ - { name: "Perfil e Atividades", href: "/perfil/atualizacoes"}, - { name: "Recursos Publicados", href: "/perfil/recursos-publicados"}, - { name: "Favoritos", href: "/perfil/favoritos"}, - { name: "Coleções", href: "/perfil/colecoes"}, - { name: "Rede", href: "/perfil/rede"}, - { name: "Configurações", href: "/perfil/cofiguracoes/editarperfil"}, - { name: "Sair", href:"/"} + { name: "Perfil e Atividades", href: "/perfil", value : '0'}, + { name: "Status e Conquistas", href: "/perfil", value: '1'}, + { name: "Recursos Publicados", href: "/perfil", value : '2'}, + { name: "Favoritos", href: "/perfil", value : '3'}, + { name: "Coleções", href: "/perfil", value : '4'}, + { name: "Rede", href: "/perfil", value : '5'}, + { name: "Configurações", href: "/editarperfil"}, ] return( @@ -124,20 +133,22 @@ export default function MenuBar(props){ <Dropdown name="Ajuda" items={menuAjuda}/> <a href="http://educacaoconectada.mec.gov.br/" rel="noopener noreferrer" target="_blank" > <ButtonStyled >Educação Conectada</ButtonStyled> - </a> + </a> + <Link to="/loja"> + <ButtonStyled>Lojinha</ButtonStyled> + </Link> <ButtonStyled onClick={props.openSearchBar} ><IconSearchStyled />Buscar</ButtonStyled> </Left> <Right> { state.userIsLoggedIn ? ( - [ <> <div style={{boxSizing:"border-box"}}> - <Link to="/termos-publicar-recurso"> + <Link to="/termos-publicar-recurso" cameFromPublishButton={true}> <ButtonPublicarRecurso> <CloudUploadIcon style={{color:"white", marginLeft : "0"}}/> - <span style={{color : "#fff", textAlign: "center", alignSelf : "center", fontWeight:"100"}} > + <span style={{color : "#fff", textAlign: "center", alignSelf : "center", fontWeight:"500"}} > PUBLICAR RECURSO </span> @@ -149,19 +160,16 @@ export default function MenuBar(props){ <Notifications/> </div> - <CustomizedMenus items={minhaArea}/> + <MenuList items={minhaArea}/> </> - ] ) : ( - [ <React.Fragment> <ButtonPubRecursoStyled onClick={props.openLogin}>PUBLICAR RECURSO?</ButtonPubRecursoStyled> <ButtonStyled onClick={props.openLogin}><ExitToAppIcon style={{color:"#00bcd4"}}/>Entrar</ButtonStyled> <ButtonStyled onClick={props.openSignUp}>Cadastre-se</ButtonStyled> </React.Fragment> - ] ) } diff --git a/src/Components/MenuList.js b/src/Components/MenuList.js index 5652912f35b10d55da9dc1ba178d80394267e8ae..796b57b386e93056825e0ced50a2b1d8b4a4cae0 100644 --- a/src/Components/MenuList.js +++ b/src/Components/MenuList.js @@ -28,6 +28,7 @@ import { Store } from '../Store'; import { Redirect } from "react-router-dom"; import Profile from '../img/default_profile0.png' import styled from 'styled-components' +import {apiDomain} from '../env.js' const iconStyles = { fontSize : "xxx-large", @@ -42,7 +43,7 @@ const OverrideButton = styled(Button)` text-transform : none !important; ` -export default function CustomizedMenus(props) { +export default function MenuList(props) { const [anchorEl, setAnchorEl] = React.useState(null); const { state, dispatch } = useContext(Store) @@ -55,6 +56,9 @@ export default function CustomizedMenus(props) { }; const handleLogout = () => { + localStorage.removeItem('@portalmec/username'); + sessionStorage.removeItem('@portalmec/uid'); + sessionStorage.removeItem('@portalmec/senha'); dispatch( { type: 'USER_LOGGED_OUT', userLoggedOut: !state.userIsLoggedIn, @@ -77,7 +81,18 @@ export default function CustomizedMenus(props) { onMouseEnter={handleClick} > - <img src={Profile} alt={''} style={{maxWidth:"50px", maxHeight:"50px", borderRadius:"25px"}}/> + <div style={{borderRadius: "50%", border: "2px solid #fff", background: "#fff", overflow: "hidden", maxWidth : "50px", maxHeight : "50px"}}> + { + state.currentUser.userAvatar == '' || state.currentUser.userAvatar == null ? + ( + + <img src={Profile} alt={'user avatar'} style={{width:"100%", height:"100%", verticalAlign : "middle", marginLeft : "0"}}/> + ): + ( + <img src={apiDomain + state.currentUser.userAvatar} alt={'user avatar'} style={{width:"100%", height:"100%", verticalAlign : "middle", marginLeft : "0"}}/> + ) + } + </div> <span style={{fontFamily:"inherit", fontWeight:"400", color:"#666"}}>Minha Ãrea </span> <KeyboardArrowDownIcon/> </OverrideButton> @@ -98,10 +113,13 @@ export default function CustomizedMenus(props) { { props.items.map((item)=> - <Link key={item.name} to={item.href} style={{textDecoration:"none"}} ><MenuItem style= {{fontSize:"14px", padding:"5px 20px", color:"#666"}}>{item.name}</MenuItem></Link> - ) + <Link to={{ + pathname : item.href, + state : item.value + }} style={{textDecoration:"none"}} key={item.value}><MenuItem style= {{fontSize:"14px", padding:"5px 20px", color:"#666"}}>{item.name}</MenuItem></Link> + ) } - <Button onClick={handleLogout} style={{layout:"row", layoutAlign:"space-between-center"}}> <MenuItem>Sair<ExitToAppIcon style={{align:"right"}}/></MenuItem></Button> + <StyledButtonSair onClick={handleLogout}> <StyledMenuItem disableGutters={true}>Sair<StyledExitToAppIcon/></StyledMenuItem></StyledButtonSair> </Menu> @@ -109,6 +127,37 @@ export default function CustomizedMenus(props) { ); } +const StyledButtonSair = styled(Button)` + height : 31px; + width : 177px; + layout : row; + + .listItem { + width : 100% !important; + display : flex !important; + justify-content: space-between !important; + font-size : 14px !important; + color : #a5a5a5 !important; + padding : 5px 20px !important; + } +` + +const StyledExitToAppIcon = styled(ExitToAppIcon) ` + fontSize : 24px; + color : rgb(162,165,165); + align : right; + display : flex; + justify-content : flex-end; +` +const StyledMenuItem = styled(MenuItem)` + display : flex !important; + justify-content: space-between !important; + width : 100% !important; + font-size : 14px !important; + color : #a5a5a5 !important; + padding : 5px 20px !important; +` + //import React from 'react'; //import Button from '@material-ui/core/Button'; //import ClickAwayListener from '@material-ui/core/ClickAwayListener'; diff --git a/src/Components/Modal.js b/src/Components/Modal.js index 38d84f11a216daf7c8964e81546ed760e8669d2d..cd970dd2d1436cdd4e423838ffd2f51235a9b183 100644 --- a/src/Components/Modal.js +++ b/src/Components/Modal.js @@ -26,29 +26,12 @@ import Backdrop from '@material-ui/core/Backdrop'; import Grid from '@material-ui/core/Grid'; import Fade from '@material-ui/core/Fade'; import VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined'; -import ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos'; -import ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos'; + import styled from 'styled-components' /*Importação de imagens para o componente*/ -import Handshake from "../img/termos/handshake.svg" -import Pessoa from "../img/termos/Pessoa.svg" -import Email from "../img/termos/Email.svg" -import Seguranca from "../img/termos/Seguranca.svg" -import Aberto from "../img/termos/Aberto.png"; -import Fechado from "../img/termos/Fechado.png"; -import Arrow_down from "../img/termos/Arrow_down.svg"; -import Arrow_double from "../img/termos/Arrow_double.svg"; -import Arrow_O from "../img/termos/Arrow_O que é a plataforma.png"; -import Arrow_O_1 from "../img/termos/Arrow_O que é a plataforma-1.png"; -import Like from "../img/termos/Like.svg"; -import Unlike from "../img/termos/Unlike.svg"; -import Line from "../img/termos/Line.svg"; -import Entenda from "../img/termos/Entenda.svg"; -import V from "../img/termos/V.svg"; -import OrthogonalLineUp from "../img/termos/OrthogonalLineUp.png" -import OrthogonalLineDown from "../img/termos/OrthogonalLineDown.png" + diff --git a/src/Components/ModalAbout.js b/src/Components/ModalAbout.js new file mode 100644 index 0000000000000000000000000000000000000000..3739a8935ab0dcc98d29fde4c2bb956aa5c21d75 --- /dev/null +++ b/src/Components/ModalAbout.js @@ -0,0 +1,205 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react'; +import { makeStyles } from '@material-ui/styles'; +import Modal from '@material-ui/core/Modal'; + +import Formulario from "./ContactForm"; + +import Backdrop from '@material-ui/core/Backdrop'; +import Grid from '@material-ui/core/Grid'; +import Fade from '@material-ui/core/Fade'; +import VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined'; + +import styled from 'styled-components' + + +/*Importação de imagens para o componente*/ + + + + +const useStyles = makeStyles(theme => ({ + modal: { + display: "flex", + alignItems: "center", + justifyContent: "center" + }, + paper: { + border: '2px solid #000', + boxShadow: " 0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)" + }, + carousel: { + width: "750px", + height:"370px", + + } +})); + +const Button = styled.button` + +background-color: #00bcd4; +color: #fff; +font-family: Roboto,sans-serif; +font-size: 14px; +font-weight: 700; +height: 36px; +border-radius: 3px; +padding-left: 16px; +padding-right: 16px; +box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); +display: inline-block; +position: relative; +cursor: pointer; +min-height: 36px; +min-width: 88px; +line-height: 36px; +vertical-align: middle; +-webkit-box-align: center; +outline: none; +text-align: center; +border: 0; +padding: 0 16px !important; +hite-space: nowrap; +text-decoration: none; + +` + +const Formulário = styled.div ` + background-color: #fff; + padding: 40px; + + border-radius: 4px; + + + color: #666 !important; + + h2 { + font-size: 26px; + font-weight: lighter; + margin-top: 20px; + margin-bottom: 10px; + } + + form .inputBlock { + margin-block: 22px; + + } + + form .inputBlock label { + font-size: 14px; + font-weight: bold; + display: block; + + } + + form .inputBlock input { + width: 100%; + height: 32px; + font-size: 14px; + border: 0; + border-bottom: 1px solid #eee; + + } + + form .inputBlock.Message input { + height: 131px; + } + + form buttom[type=submit] { + width: 100%; + border: 0; + margin-top: 30px; + background: #7d40e7 + border-radius: 2px; + padding: 15px 20px; + font-size: 16px; + font-weight: bold; + color: #fff; + cursor: pointer; + transition: background 0.5s; + + } + + form buttom[type=submit]:hover { + background: #6931ac + } + + + h2 { + font-size: 24px; + font-weight: lighter; + margin-bottom: 50px; + margin-top: 20px; + text-align: center; + + } +` + + + + +export default function TransitionsModal() { + const classes = useStyles(); + const [open, setOpen] = React.useState(false); + + const handleOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + + + <div style={{display:"flex", justifyContent: "center"}}> + <link href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto&display=swap" rel="stylesheet"/> + + <Button type="button" onClick={handleOpen}> + SUGERIR OUTRO SITE + </Button> + <Modal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + className={classes.modal} + open={open} + onClose={handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={open}> + + <div> + <Formulário> + <h2>Sugerir site de Recursos Educacionais Digitais</h2> + <Formulario/> + </Formulário> + + </div> + + </Fade> + </Modal> + </div> + ); +} diff --git a/src/Components/ModalAlterarAvatar/ComponentAlterarAvatar.js b/src/Components/ModalAlterarAvatar/ComponentAlterarAvatar.js new file mode 100644 index 0000000000000000000000000000000000000000..657c8183971fc197ba1c1a4a36dd1f4e6d31fe21 --- /dev/null +++ b/src/Components/ModalAlterarAvatar/ComponentAlterarAvatar.js @@ -0,0 +1,315 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Zoom from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../../Store.js' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import CloseIcon from '@material-ui/icons/Close'; +import Profile from '../../img/default_profile0.png' +import Cropper from '../Cropper.js' + + +function ChooseImage (props) { + return ( + <div style={{marginTop:"0"}}> + <DivAlterarFoto> + <DivFlowHolder> + <AvatarCircleDiv> + <img src={props.avatar} + alt="user avatar" style={{height:"inherit", width:"inherit", objectFit:"cover"}} + /> + <input accept="image/*" id="avatar-file" + type="file" + onChange={(e) => props.handleFile(e.target.files)} + style={{display : "none"}} + /> + <label for="avatar-file" style={{width:"inherit"}}> + <ChangeAvatarDiv > + <span>Alterar</span> + </ChangeAvatarDiv> + </label> + </AvatarCircleDiv> + </DivFlowHolder> + </DivAlterarFoto> + { + props.tempImg && + <img src={props.tempImg}/> + } + <ButtonsDiv> + <ButtonCancelar onClick={props.handleClose}> + <span>Cancelar</span> + </ButtonCancelar> + <ButtonConfirmar> + <span>Salvar Alterações</span> + </ButtonConfirmar> + </ButtonsDiv> + </div> + ) +} + +const GetHeaderConfig = () => { + + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + {/*'Host': 'api.portalmec.c3sl.ufpr.br', + 'Cookie': ''*/} + return config +} + +export default function ComponentAlterarAvatar (props) { + const {state, dispatch} = useContext(Store) + const [uploadingImage, setUploading] = useState(false) + + const handleFile = (selectorFiles) => { + const objectURL = URL.createObjectURL(selectorFiles[0]) + console.log(objectURL) + setTempImg(objectURL) + setUploading(true) + } + + const [tempImgURL, setTempImg] = useState(null) + + const [newAvatar, setNewAvatar] = useState('') + const updateAvatar = (avatar) => {setNewAvatar(avatar)} + + const [crop] = useState({ + unit: "%" , + width : 30, + aspect: 1 + }); + + const completeSelection = () => { + console.log(newAvatar) + //newAvatar is a base64 encoded image file + let fdAvatar = new FormData() + fdAvatar.set('user[avatar]', newAvatar) + + axios.put( (`${apiUrl}/users/` + props.id ), + fdAvatar, + GetHeaderConfig() + ).then( (response) => { + console.log(response) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + const target = state.currentUser + const source = {userAvatar : response.data.avatar} + dispatch({ + type : 'USER_CHANGED_COVER', + currUser : Object.assign(target, source) + }) + }, (error) => {console.log(error)} + ) + } + + return ( + <ModalDiv> + <HeaderDiv> + <span style={{width:"32px"}}/> + <StyledH2>{uploadingImage ? 'Alterar foto do perfil' : 'Editar Foto'}</StyledH2> + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon style={{color : "#666"}}/> + </StyledCloseModalButton> + </HeaderDiv> + <DialogDiv> + { + uploadingImage ? + ( + [ + <> + <EditarDiv> + <TextoEditarDiv> + Clique nos Ãcones e arraste para selecionar a parte que você quer da foto + </TextoEditarDiv> + <div style={{maxWidth : "500px", maxHeight : "300px"}}> + <Cropper src={tempImgURL} crop={crop} circularCrop={true} update={updateAvatar}/> + </div> + </EditarDiv> + <FooterButtonsDiv> + <ButtonCancelar>ESCOLHER OUTRA</ButtonCancelar> + <div> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonConfirmar onClick={() => {completeSelection()}}>SELECIONAR FOTO</ButtonConfirmar> + </div> + </FooterButtonsDiv> + </> + ] + ) + : + ( + [ + <> + <ChooseImage + avatar={props.userAvatar === '' || props.userAvatar == null ? Profile : `${apiDomain}` + props.userAvatar} + handleFile={handleFile} + handleClose={props.handleClose} + tempImg={tempImgURL} + /> + </> + ] + ) + } + </DialogDiv> + </ModalDiv> + ) + +} + +const FooterButtonsDiv = styled.div` + padding : 0 30px 20px; + display : flex; + flex-direction : row; + align-content : center; + justify-content : space-between; + Button { + margin-top : 20px; + } +` + +const TextoEditarDiv = styled.div` + margin-bottom : 15px; + align-self : center; + text-align : center; + font-size : 15px; +` + +const EditarDiv = styled.div` + position : relative; + background-color : #f4f4f4; + padding : 20px 30px 40px; +` + +const ChangeAvatarDiv = styled.div` + color : rgba(255,255,255,.7); + background-color:rgba(0,0,0,.5); + position: absolute; + bottom: 0; + width: inherit; + text-align: center; + font-size: 18px; + padding-bottom: 5px; + font-weight: 400; + height: 30%; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; +` + +const ModalDiv = styled.div` + background-color : #fff; + border-radius : 4px; + min-width : 560px; + color : #666; + display: flex; + flex-direction : column; + @media screen and (max-width: 959px) { + height : 100%; + width : 100%; + } +` +const ButtonConfirmar = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + border-radius : 3px !important; +` + +const ButtonCancelar = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + background-color : #fff !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; +` + +const ButtonsDiv = styled.div` +display : flex; +justify-content:flex-end; +` + +const AvatarCircleDiv = styled.div` +margin-bottom : 0; +border-radius : 50%; +height : 150px; +width : 150px; +position : relative; +overflow: hidden; +` + +const DivFlowHolder =styled.div` +align-self : auto; +` + +const DivAlterarFoto = styled.div` +display : flex; +margin-bottom : 30px; +flex-direction : row; +align-items : center; +justify-content :center; +` + +const DialogDiv = styled.div` +padding : 20px 30px; +overflow : visible !important; +` + +const HeaderDiv = styled.div` +display : flex; +flex-direction : row; +align-items : center; +align-content : center; +justify-content : space-between; +max-width : 100%; +` +const StyledH2 = styled.h2` +font-size : 26px; +font-weight : normal; +margin-top : 20px; +margin-bottom : 10px; +font-family: inherit; +line-height: 1.1; +color: inherit; +` +const StyledCloseModalButton = styled(Button)` +display : inline-block; +position : relative; +float : right !important; +background : transparent !important; +min-width: 0 !important; +width : 40px; +border-radius : 50%; +padding : 8px; +height : 40px; +margin : 0 6px; +` diff --git a/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js b/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js new file mode 100644 index 0000000000000000000000000000000000000000..0698c94b2a09389d8f787f36bc29c5975ea390b0 --- /dev/null +++ b/src/Components/ModalAlterarAvatar/ModalAlterarAvatar.js @@ -0,0 +1,68 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../../Store.js' +import axios from 'axios' +import {apiUrl} from '../../env'; +import CloseIcon from '@material-ui/icons/Close'; +import Profile from '../../img/default_profile0.png' +import ComponentAlterarAvatar from './ComponentAlterarAvatar.js' + +const StyledModal = styled(Modal)` + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; +` + +export default function ModarAlterarAvatar (props){ + + return ( + + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open} style={{ transitionDelay :"0.4ms"}}> + + <ComponentAlterarAvatar + userAvatar={props.userAvatar} + handleClose={props.handleClose} + id={props.id} + /> + </Fade> + </StyledModal> + + ) +} diff --git a/src/Components/ModalAlterarCover/ComponentAlterarCover.js b/src/Components/ModalAlterarCover/ComponentAlterarCover.js new file mode 100644 index 0000000000000000000000000000000000000000..4178b3cf9cdf4d74f9197b4c341ad779b40db235 --- /dev/null +++ b/src/Components/ModalAlterarCover/ComponentAlterarCover.js @@ -0,0 +1,202 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Zoom from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../../Store.js' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import CloseIcon from '@material-ui/icons/Close'; +import Profile from '../../img/default_profile0.png' +import Cropper from '../Cropper.js' + + +const GetHeaderConfig = () => { + + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + {/*'Host': 'api.portalmec.c3sl.ufpr.br', + 'Cookie': ''*/} + return config +} + +export default function ComponentAlterarCover (props) { + const {state, dispatch} = useContext(Store) + + const [tempImgURL, setTempImg] = useState(props.cover) + const [newCover, setNewCover] = useState('') + const updateCover = (cover) => {setNewCover(cover)} + const [crop] = useState({ + unit: "%" , + width : 100, + aspect: 16 / 9 + }); + + const completeSelection = () => { + console.log(newCover) + //newCover is a base64 encoded image file. + let fdCover = new FormData() + fdCover.set('user[cover]', newCover) + + axios.put( (`${apiUrl}/users/` + props.id ), + fdCover, + GetHeaderConfig() + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + const target = state.currentUser + const source = {userCover : response.data.cover} + dispatch({ + type : 'USER_CHANGED_COVER', + currUser : Object.assign(target, source) + }) + }, (error) => {console.log(error)} + ) + } + + return ( + <ModalDiv> + <HeaderDiv> + <span style={{width:"32px"}}/> + <StyledH2>Editar Capa do Perfil</StyledH2> + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon style={{color : "#666"}}/> + </StyledCloseModalButton> + </HeaderDiv> + <DialogDiv> + <EditarDiv> + <TextoEditarDiv> + Clique nos Ãcones e arraste para selecionar a parte que você quer da foto + </TextoEditarDiv> + <div style={{maxWidth : "500px", maxHeight : "300px"}}> + <Cropper src={tempImgURL} crop={crop} update={updateCover}/> + </div> + </EditarDiv> + <FooterButtonsDiv> + <ButtonCancelar>ESCOLHER OUTRA</ButtonCancelar> + <div> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonConfirmar onClick={() => {completeSelection()}}>SELECIONAR FOTO</ButtonConfirmar> + </div> + </FooterButtonsDiv> + </DialogDiv> + </ModalDiv> + ) + +} + +const ButtonCancelar = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + background-color : #fff !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; +` +const ButtonConfirmar = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + border-radius : 3px !important; +` + +const FooterButtonsDiv = styled.div` + padding : 0 30px 20px; + display : flex; + flex-direction : row; + align-content : center; + justify-content : space-between; + Button { + margin-top : 20px; + } +` + + +const TextoEditarDiv = styled.div` + margin-bottom : 15px; + align-self : center; + text-align : center; + font-size : 15px; +` + +const EditarDiv = styled.div` + position : relative; + background-color : #f4f4f4; + padding : 20px 30px 40px; +` + +const ModalDiv = styled.div` +background-color : #fff; +border-radius : 4px; +min-width : 560px; +color : #666; +display: flex; +flex-direction : column; +@media screen and (max-width: 959px) { + height : 100%; + width : 100%; +} +` + +const DialogDiv = styled.div` +padding : 20px 30px; +overflow : visible !important; +` + +const HeaderDiv = styled.div` +display : flex; +flex-direction : row; +align-items : center; +align-content : center; +justify-content : space-between; +max-width : 100%; +` +const StyledH2 = styled.h2` +font-size : 26px; +font-weight : normal; +margin-top : 20px; +margin-bottom : 10px; +font-family: inherit; +line-height: 1.1; +color: inherit; +` +const StyledCloseModalButton = styled(Button)` +display : inline-block; +position : relative; +float : right !important; +background : transparent !important; +min-width: 0 !important; +width : 40px; +border-radius : 50%; +padding : 8px; +height : 40px; +margin : 0 6px; +` diff --git a/src/Components/ModalAlterarCover/ModalAlterarCover.js b/src/Components/ModalAlterarCover/ModalAlterarCover.js new file mode 100644 index 0000000000000000000000000000000000000000..86636826010d9e129fd22192535c8aec56c310ed --- /dev/null +++ b/src/Components/ModalAlterarCover/ModalAlterarCover.js @@ -0,0 +1,85 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../../Store.js' +import axios from 'axios' +import {apiUrl} from '../../env'; +import CloseIcon from '@material-ui/icons/Close'; +import Profile from '../../img/default_profile0.png' +import ComponentAlterarCover from './ComponentAlterarCover.js' + +const StyledModal = styled(Modal)` + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; +` + +export default function ModarAlterarCover (props){ + const {state, dispatch} = useContext(Store) + const [avatarFile, setFile] = useState('') + + {/*const handleUploadCover = (img) => { + axios.post(`${apiUrl}`, + { + + } + ).then( (response) => { + dispatch ({ + + }, (error) => { + + } + ) + }) + }*/} + + return ( + + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open} style={{ transitionDelay :"0.4ms"}}> + + <ComponentAlterarCover + cover={props.cover} + handleClose={props.handleClose} + id={props.id} + /> + </Fade> + </StyledModal> + + ) +} diff --git a/src/Components/ModalAvaliarRecurso.js b/src/Components/ModalAvaliarRecurso.js new file mode 100644 index 0000000000000000000000000000000000000000..9d6c588e45636305070905de8b59b0b0dcdc2f89 --- /dev/null +++ b/src/Components/ModalAvaliarRecurso.js @@ -0,0 +1,345 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import Radio from '@material-ui/core/Radio'; +import FormControl from '@material-ui/core/FormControl'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import CloseModalButton from './CloseModalButton' +import Snackbar from '@material-ui/core/Snackbar'; +import Alert from '../Components/Alert.js'; +import TextField from '@material-ui/core/TextField'; +import { withStyles } from '@material-ui/core/styles'; + +const StyledRadio = withStyles({ + root: { + color: '#666', + '&$checked': { + color: '#ff7f00', + }, + }, + checked: {}, +})((props) => <Radio color="default" {...props} />); + +export default function ModalAvaliarRecurso (props) { + + const options = [ + { + text : "O recurso apresenta conteúdo de cunho polÃtico-partidário? (Ex: o conteúdo expressa qualquer forma de manifestação que se caracterize como propaganda polÃtica)?", id : 1 + }, + { + text : "O recurso apresenta conteúdo ofensivo? (Ex: material pornográfico e/ou que invada a privacidade de terceiros, viole os Direitos Humanos ou seja ilegal, ofensivo, e que incite a violência)?", id : 2 + }, + { + text : "O recurso apresenta algum tipo de propaganda ou marca? (Ex: o conteúdo tem cunho comercial)?", id : 3 + }, + { + text : "Outro motivo para rejeição (falta de descrição, autor, objeto, erros)? Indicar na justificativa se for o caso?", id : 4 + } + ] + + const [avaliacao, setAvaliacao] = useState([null,null,null,null]) + + const handleRadios = (event, id) => { + let newValue = avaliacao + newValue[id - 1] = (event.target.value === "Sim" ? true : false) + setAvaliacao(newValue) + + if(avaliacao.indexOf(null) === -1) { + toggleDisableButton(false) + } + } + + const [justificativa, setJustificativa] = useState("") + const handleChangeJustificativa = (e) => { + setJustificativa(e.target.value) + } + + const [snackbarCancelar, toggleSnackbarCancelar] = useState(false) + const handleSnackbarCancelar = (value) => toggleSnackbarCancelar(value) + + const handleCancel = () => { + handleSnackbarCancelar(true) + + props.handleClose() + } + + const [buttonDisabled, toggleDisableButton] = useState(true) + + const handleAvaliar = () => { + let criteria = options + avaliacao.map((criterium, index) => + criteria[index]['accepted'] = !criterium + ) + props.confirm(criteria, justificativa, avaliacao.filter((item) => item === true).length > 0 ? false : true) + returnToDefault() + } + + const returnToDefault = () => { + setAvaliacao([null,null,null,null]) + setJustificativa('') + toggleDisableButton(true) + } + + return ( + <> + <Snackbar open={snackbarCancelar} autoHideDuration={1000} onClose={toggleSnackbarCancelar} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + message="Você cancelou a avaliação deste recurso." + /> + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container> + <Header> + <h2>Você está avaliando o recurso + <span style={{fontWeight : "bolder"}}> {props.title}</span> + </h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + + <Content> + <Grid container> + <Grid item xs={12}> + <p>Esse recurso está em conformidade com os critérios? Marque as opções e justifique aquela(s) que não estiverem em conformidade.</p> + </Grid> + + <FormControl component="fieldset" style={{display:"BlockRuby"}} fullWidth={true}> + { + options.map( (option) => + <Grid item xs={12} key={option.id} style={{paddingTop : "10px"}}> + <Grid container> + <Grid item xs={10}> + <div style={{height : "100%", display : "flex", alignItems : "center"}}> + <p>{option.text}</p> + </div> + </Grid> + <Grid item xs={2}> + <RadioGroup row onChange={(e) => {handleRadios(e, option.id)}}> + <FormControlLabel value={"Sim"} control={<StyledRadio/>} label="Sim"/> + <FormControlLabel value={"Não"} control={<StyledRadio/>} label="Não"/> + </RadioGroup> + </Grid> + </Grid> + </Grid> + ) + } + </FormControl> + + <Grid item xs={12}> + <FormControl style={{width : "100%", height : "100px"}}> + <StyledTextField + id = {"title-form"} + label={"Justificativa (opcional)"} + type = {"text"} + value = {justificativa} + onChange = {e => {handleChangeJustificativa(e)}} + multiline + fullWidth + /> + </FormControl> + </Grid> + + <Grid item xs={12}> + <ButtonsDiv> + <ButtonEnviarAvaliar disabled={buttonDisabled} onClick={() => {handleAvaliar()}}>ENVIAR AVALIAÇÂO</ButtonEnviarAvaliar> + <GreyButton onClick={ () => {handleCancel()}}>CANCELAR</GreyButton> + </ButtonsDiv> + </Grid> + </Grid> + </Content> + + </Container> + </Fade> + </StyledModal> + </> + ) +} + +const Content = styled.div` + padding : 10px 75px 0 75px; + overflow : visible; + max-width : 100%; + color : #666; + font-size : 16px; + + .main-content-text { + font-size : 15px; + line-height : 22px; + text-align : justify; + } + + p { + text-align : start; + margin : 0 0 10px; + } +` + +const Header = styled.div` + display : flex; + flex-direction : row; + padding : 20px 75px 0 75px; + align-items : center; + justify-content : space-between; + color : #666; + + @media screen and (min-width : 990px) { + height : 64px; + } + @media screen and (max-width : 989px) { + max-height : none; + } + + h2 { + font-size : 26px; + font-weight : lighter; + + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + background-color : #fff; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + border-radius : 4px; + max-width : 100%; + + @media screen and (max-width : 699px) { + overflow : scroll; + width : 100%; + height : 100%; + } + + p { + margin : 0 0 10px; + } +` +const StyledTextField = styled(TextField)` + font-size : 14px; + width : 100% !important; + full-width : 100% !important; + + .MuiFormControl-root { + margin : 18px 0 !important; + } + + label.Mui-focused { + color : #ff7f00; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 2px solid #ff7f00; + } +` + +const ButtonsDiv = styled.div` + display : flex; + max-width : 100%; + text-align : start; + align-items : center; + padding : 0 0 20px 0; + + @media screen and (min-width : 990px) { + flex-direction : row; + } + @media screen and (max-width : 989px) { + flex-direction : column; + } +` +const GreyButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + max-height : 36px !important; + + background-color : transparent !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + font-weight : 600 !important; + + +` + +const ButtonEnviarAvaliar = styled(Button)` + color : ${(props) => props.disabled ? "rgba(0,0,0,0.38)" : "rgba(255,255,255,0.87) !important"}; + box-shadow : ${(props) => props.disabled ? "none !important" : "0 2px 5px 0 rgba(0,0,0,.26) !important"}; + font-weight : 600 !important; + background-color : ${(props) => props.disabled ? "#e9e9e9 !important" : "#ff7f00 !important"}; + margin-left : 8px !important; + margin-right : 8px !important; + + .MuiButton-label { + padding-left : 32px !important; + padding-right : 32px !important; + } +` diff --git a/src/Components/ModalConfirmarCuradoria.js b/src/Components/ModalConfirmarCuradoria.js new file mode 100644 index 0000000000000000000000000000000000000000..9e12906b13c7e0a0457819160a1dd358515c7b24 --- /dev/null +++ b/src/Components/ModalConfirmarCuradoria.js @@ -0,0 +1,260 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiDomain, apiUrl} from '../env'; +import Grid from '@material-ui/core/Grid'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import Radio from '@material-ui/core/Radio'; +import FormControl from '@material-ui/core/FormControl'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import CloseModalButton from './CloseModalButton' +import {getAxiosConfig} from './HelperFunctions/getAxiosConfig' + +export default function ModalConfirmarCuradoriaOpen (props) { + + const handleCancel = () => { + props.handleClose() + props.cancel() + } + + const transformReportCriteria = (criteria) => { + let newArr = [] + criteria.map((criterium) => + newArr.push({"question_id" : criterium.id, "accepted" : criterium.accepted}) + ) + return newArr + } + + const handleConfirmation = () => { + let config = getAxiosConfig() + + let payload = { + "submission" : { + "justification" : props.justificativa, + "answers" : transformReportCriteria(props.reportCriteria) + } + } + + axios.post( (`${apiUrl}/submissions/` + props.recursoId + '/answer'), payload, config).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response.data) + props.finalizeCuratorshipFlow() + }, (error) => {console.log(error)} + ) + } + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container recusado={!props.aceito}> + <Header> + <span style={{width:"32px"}}/> + <h2>Recurso a ser {props.aceito ? 'aprovado' : 'recusado'}</h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + <Content> + { + props.aceito ? + ( + <p>Este recurso será publicado na plataforma. Você confirma essa avaliação? + </p> + ) + : + ( + <> + <p>Agradecemos a sua contribuição. Você avaliou que o recurso não está em conformidade com o(s) seguinte(s) critério(s): + </p> + { + props.reportCriteria.filter((criterium) => criterium.accepted === false).map( (criterium) => + <p key={criterium.id} className="reason-offensive">{criterium.text}</p> + ) + } + <p>Você confirma essa avaliação? Ao confirmar, o recurso não será publicado na plataforma.</p> + </> + ) + } + <ButtonsDiv> + { + props.aceito ? + ( + <ButtonEnviarAvaliar onClick={() => {handleConfirmation()}}>SIM, CONFIRMAR</ButtonEnviarAvaliar> + ) + : + ( + <ButtonEnviarAvaliar onClick={() => {handleConfirmation()}}>SIM, CONFIRMAR</ButtonEnviarAvaliar> + ) + } + <GreyButton onClick={handleCancel}>NÃO, ALTERAR AVALIAÇÃO</GreyButton> + </ButtonsDiv> + </Content> + </Container> + </Fade> + </StyledModal> + ) +} + + +const Content = styled.div` + padding : 30px; + overflow : visible; + max-width : 100%; + color : #666; + font-size : 16px; + text-align : start; + .reason-offensive { + font-weight : 700; + } + + p { + margin : 0 0 10px; + } +` + +const Header = styled.div` + display : flex; + flex-direction : row; + align-items : center; + max-height : none; + justify-content : space-between; + color : #666; + + h2 { + font-size : 30px; + margin-top : 20px; + margin-bottom : 10px; + font-weight : lighter; + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : 4px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + background-color : #fff; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + position : relative; + border-radius : 4px; + max-width : 100%; + max-height : ${props => props.recusado ? 'none' : '370px'}; + + @media screen and (max-width : 699px) { + overflow : ${props => props.recusado ? 'scroll' : 'visible'}; + width : 100%; + height : 100%; + } + + p { + margin : 0 0 10px; + } +` +const ButtonsDiv = styled.div` + display : flex; + max-width : 100%; + text-align : center; + align-items : center; + justify-content : center; + padding-top : 20px; + + @media screen and (min-width : 990px) { + flex-direction : row; + } + @media screen and (max-width : 989px) { + flex-direction : column; + } +` +const GreyButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + max-height : 36px !important; + + background-color : transparent !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + font-weight : 600 !important; + .MuiButton-label { + padding-left : 16px !important; + padding-right : 16px !important; + } + @media screen and (max-width : 989px) { + margin-top : 10px !important; + } +` + +const ButtonEnviarAvaliar = styled(Button)` + color : rgba(255,255,255,0.87) !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + font-weight : 600 !important; + background-color : #ff7f00 !important; + margin-left : 8px !important; + margin-right : 8px !important; + + .MuiButton-label { + padding-left : 16px !important; + padding-right : 16px !important; + } +` diff --git a/src/Components/ModalConfirmarUnfollow.js b/src/Components/ModalConfirmarUnfollow.js new file mode 100644 index 0000000000000000000000000000000000000000..f8deb98a454280ce7a6c78f952caabf12f3e2527 --- /dev/null +++ b/src/Components/ModalConfirmarUnfollow.js @@ -0,0 +1,121 @@ +import React, {useContext} from 'react'; +import Modal from '@material-ui/core/Modal'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import { Button } from '@material-ui/core'; +import Backdrop from '@material-ui/core/Backdrop'; +import { Store } from '../Store.js'; +import axios from 'axios' +import {apiUrl} from '../env'; +import CloseIcon from '@material-ui/icons/Close'; +import CloseModalButton from './CloseModalButton' + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const HeaderDiv = styled.div` + display : flex; + flex-direction : row; + align-items : center; + text-align : center; + margin : 20px 30px; + + h3 { + font-size : 24px; + margin-top : 20px; + margin-bottpm : 10px + font-weight : normal; + color : #666 + } +` +const ContentContainer = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + color : #666; + + @media screen and (max-width : 899px) { + width : 100%; + max-height : 600px; + } +` +const ButtonCancelar = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + background-color : #fff !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; +` + +const ButtonConfirmar = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + border-radius : 3px !important; +` + +export default function ModalConfirmarUnfollow (props) { + const text = { + header : "Tem certeza que deseja deixar de seguir este usuário?", + explanation : "Este usuário deixará de fazer parte da sua rede." + } + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <ContentContainer> + <HeaderDiv> + <span style={{width:"32px"}}/> + <h3> + {text.header} + </h3> + <CloseModalButton handleClose={props.handleClose}/> + </HeaderDiv> + <div style={{display : "flex", flexDirection : "column", padding : "20px 30px"}}> + <div style={{marginTop : "0", textAlign : "center", marginBottom : "20px"}}> + <span style={{fontSize : "14px", color : "#666"}}>{text.explanation}</span> + </div> + <div style={{display : "flex", flexDirection : "row", justifyContent: "space-evenly"}}> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonConfirmar onClick={props.handleConfirm}>DEIXAR DE SEGUIR </ButtonConfirmar> + </div> + </div> + </ContentContainer> + </Fade> + + </StyledModal> + ) + +} diff --git a/src/Components/ModalExcluirColecao.js b/src/Components/ModalExcluirColecao.js new file mode 100644 index 0000000000000000000000000000000000000000..9c1b61b65600d0bef69cf3ee21bd37ec03216f7c --- /dev/null +++ b/src/Components/ModalExcluirColecao.js @@ -0,0 +1,157 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiUrl} from '../env'; +import GreyButton from './GreyButton.js' +import PurpleButton from './PurpleButton.js' +import {getAxiosConfig} from '../Components/HelperFunctions/getAxiosConfig' +import SnackbarComponent from './SnackbarComponent' + +export default function ModalExcluirColecao (props) { + const [snackbarOpen, toggleSnackbar] = useState(false) + + const handleDelete = () => { + let config = getAxiosConfig() + + axios.delete( (`${apiUrl}/collections/` + props.id), config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + toggleSnackbar(true) + props.handleClose() + }, (error) => {console.log(error);}) + } + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <> + <SnackbarComponent snackbarOpen={snackbarOpen} severity={"info"} handleClose={() => {toggleSnackbar(false)}} text={"Coleção excluÃda com sucesso"}/> + <Container> + <Header> + <h2>Tem certeza que deseja excluir esta Coleção?</h2> + </Header> + + <Content> + <p>A exclusão de uma coleção é permanente. Não é possÃvel desfazer.</p> + <ButtonsDiv> + <GreyButton + callback={props.handleClose} + text={"CANCELAR"} + /> + <PurpleButton + callback={handleDelete} + text={"EXCLUIR"} + /> + </ButtonsDiv> + </Content> + </Container> + </> + </Fade> + </StyledModal> + ) +} + +const ButtonsDiv = styled.div` + display : flex; + align-items : center; + align-content : center; + justify-content : space-evenly; + padding-top : 20px; + +` + +const Content = styled.div` + padding : 10px 30px 20px; + overflow : visible; + display : flex; + flex-direction : column; + + p { + margin : 0 0 10px; + } +` + +const Header = styled.div` + display : flex; + flex-direction : row; + align-items : center; + text-align : center; + margin : 20px 30px; + + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + } +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + color : #666; + + @media screen and (max-width : 899px) { + width : 100%; + max-height : 600px; + } +` diff --git a/src/Components/ModalExcluirComentario.js b/src/Components/ModalExcluirComentario.js new file mode 100644 index 0000000000000000000000000000000000000000..88ceeceff8c5c798b2e1fe85872451a43178172e --- /dev/null +++ b/src/Components/ModalExcluirComentario.js @@ -0,0 +1,103 @@ +import React, {useContext} from 'react'; +import Modal from '@material-ui/core/Modal'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import { Button } from '@material-ui/core'; +import Backdrop from '@material-ui/core/Backdrop'; +import { Store } from '../Store.js'; +import axios from 'axios' +import {apiUrl} from '../env'; + +const StyledModal = styled(Modal)` + margin : 0 !important; + margin-left : 0 !important; + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + border-radius : 4px; + max-width : none; + max-height : none; + min-width: 150px; + min-height: 150px !important; +` + +const HeaderDiv = styled.div` + width : 100%; + max-width : 100%; + display : flex; + align-items : center; + align-content : center; +` +const ContentContainer = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + min-wdith : 240px; + align : center; + border-radius : 4px; + font-family : 'Roboto', sans serif; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)!important; +` +const ButtonCancelar = styled(Button)` + background-color : rgba(158,158,158,0.2) !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + margin : 0 8px !important; + font-weight : 600 !important; +` + +const ButtonConfirmar = styled(Button)` + background-color : #ff7f00 !important; + color : #fff !important; + border-radius : 3px !important; + margin : 0 8px !important; + font-weight : 600 !important; +` + +export default function ModalExcluir (props) { + const text = { + header : "Tem certeza que deseja excluir este comentário?", + explanation : "A exclusão de um comentário é permanente. Não é possÃvel desfazer." + } + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <ContentContainer> + <HeaderDiv> + <h3 style={{fontSize : "24px", margin : "20px 15px 10px", fontWeight : "normal"}}> + {text.header} + </h3> + </HeaderDiv> + <div style={{display : "flex", flexDirection : "column", padding : "20px 30px"}}> + <div style={{marginTop : "0", textAlign : "center", marginBottom : "20px"}}> + <span style={{fontSize : "14px", color : "#666"}}>{text.explanation}</span> + </div> + <div style={{display : "flex", flexDirection : "row", justifyContent: "center"}}> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonConfirmar onClick={props.handleConfirm}> EXCLUIR </ButtonConfirmar> + </div> + </div> + </ContentContainer> + </Fade> + + </StyledModal> + ) + +} diff --git a/src/Components/ModalLearningObjectPublished.js b/src/Components/ModalLearningObjectPublished.js new file mode 100644 index 0000000000000000000000000000000000000000..8fe0d148a07896c378474e0928e2684ab0eb6ae2 --- /dev/null +++ b/src/Components/ModalLearningObjectPublished.js @@ -0,0 +1,236 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useRef} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import SignUpContainer from './SignUpContainerFunction.js' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import Facebook from '../img/facebook.svg' +import Twitter from '../img/twitter.svg' +import LinkIcon from '../img/link_icon.svg' +import CloseModalButton from './CloseModalButton.js' + +export default function ModalLearningObjectPublished (props) { + const refContainer = useRef(props.link); + + function copyToClipboard(e) { + let copyText = document.getElementById('p-text') + console.log(copyText) + }; + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container> + <Header> + <span style={{width:"32px"}}/> + <h2>O seu recurso foi publicado!</h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + + <Content > + <Grid container> + <Grid item xs={4} style={{paddingRight : "15px", paddingLeft : "15px"}}> + <div className="backgroundImg"/> + </Grid> + <Grid item xs={8} style={{paddingRight : "15px", paddingLeft : "15px", paddingTop : "20px"}}> + <div className="main-content-text"> + <p>Seu recurso já está disponÃvel na Plataforma. Você receberá notificações sempre que alguém favoritar, compartilhar e relatar experiência com o Recurso.</p> + </div> + </Grid> + </Grid> + </Content> + <ShareContainer> + <p>Gostaria de convidar o seus amigos para conhecer o recurso?</p> + <p>Compartilhe nas redes sociais:</p> + <div className="logos-shared"> + <a + href={"https://www.facebook.com/sharer/sharer.php?u=https://plataformaintegrada.mec.gov.br/recurso/" + props.draftID} + target="_blank"> + <ShareButton> + <img src={Facebook} alt="facebook-logo"/> + </ShareButton> + </a> + + <a + href={"https://www.twitter.com/intent/tweet?url=https://plataformaintegrada.mec.gov.br/recurso/" + props.draftID} + target="_blank"> + <ShareButton> + <img src={Twitter} alt="twitter-logo"/> + </ShareButton> + </a> + + <ShareButton > + <img src={LinkIcon} alt="link-icon"/> + </ShareButton> + </div> + </ShareContainer> + </Container> + </Fade> + </StyledModal> + ) +} + +const ShareButton = styled(Button)` + text-align :center; + margin : 0 !important; + + .MuiButton-label { + display : flex !important; + flex-direction : column !important; + justify-content : center !important; + font-weight : 700 !important; + } + + img { + height : 50px; + width : 50px; + padding-top : 10px; + vertical-align : middle; + } + + p { + margin : 0 0 10px; + } +` + +const ShareContainer = styled.div` + padding-top : 20px; + background-color : #f1f1f1; + width : 100%; + height : 215px; + font-size : 18px; + line-height : 30px; + text-align : center; + max-width : 600px; + color : #666; + border-radius : 4px; + + .logos-shared { + font-size : 18px; + line-height : 30px; + text-align : center; + display : flex; + flex-direction : row; + justify-content : center; + } +` + +const Content = styled.div` + padding : 20px 30px; + overflow : visible; + max-width : 600px; + color : #666; + + .backgroundImg { + background-image : url(https://plataformaintegrada.mec.gov.br/img/Publicar.png); + width : 145px; + height : 125px; + background-repeat : no-repeat; + background-size : contain; + margin : 0; + } + + .main-content-text { + font-size : 15px; + line-height : 22px; + text-align : justify; + } +` + +const Header = styled.div` + display : flex; + flex-direction : row; + padding : 10px 26px 0 26px; + align-items : center; + justify-content : space-between; + height : 64px; + + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + background-color : #fff; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + border-radius : 4px; + + @media screen and (min-width : 700px) { + max-width : 600px; + } + + @media screen and (max-width : 699px) { + width : 100%; + height : 100%; + } + + p { + margin : 0 0 10px; + } +` diff --git a/src/Components/Notifications.js b/src/Components/Notifications.js index 069b9770f95df55164bd7773cbba3fb4521eb3df..03f16486b99a2b9efdd96b6def38d08c97f507b4 100644 --- a/src/Components/Notifications.js +++ b/src/Components/Notifications.js @@ -15,13 +15,22 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {useContext} from 'react'; +import React, {useState, useEffect} from 'react'; import NotificationsIcon from '@material-ui/icons/Notifications'; import { Button } from '@material-ui/core'; import Badge from '@material-ui/core/Badge'; import styled from 'styled-components' -import Dropdown from './Dropdown'; - +import Menu from '@material-ui/core/Menu'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import MenuItem from '@material-ui/core/MenuItem'; +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import OpenIcon from '@material-ui/icons/OpenInNew'; +import ReportIcon from '@material-ui/icons/Error'; +import NotificationsInner from './NotificationsInner.js' +import {apiDomain, apiUrl} from '../env.js' +import axios from 'axios' +import ActivityListItem from './ActivityListItem.js' +import {getAxiosConfig} from './HelperFunctions/getAxiosConfig.js' const StyledBadge = styled(Badge) ` .MuiBadge-dot-45{ height : 9px ; @@ -41,19 +50,106 @@ const StyledNotificationButton = styled(Button)` height : 56px !important; width : 56px !important; border-radius : 50% !important; - &&:hover { - color : #00bcd4; + &:hover { + color : #00bcd4 !important; } ` export default function Notification (props) { + const [anchorEl, setAnchorEl] = React.useState(null); + const [notifications, setNotifications] = useState([]); + const [notificatonsLength, setLength] = useState(0); + useEffect(() => { + let config = getAxiosConfig() + axios.get(`${apiUrl}/feed?offset=0&limit=30`, config) + .then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + + console.log('atividades response: ', response) + setNotifications(response.data) + setLength(response.data.length) + + }, + (error) => { + console.log('error while running getNotifications') + } + ) + }, []) + function handleClick(event) { + setAnchorEl(event.currentTarget); + } + function handleClose() { + setAnchorEl(null); + } return ( - <StyledNotificationButton> - <StyledBadge badgeContent="1" color="secondary" variant="dot" overlap="circle" classname="badge"> + <React.Fragment> + <StyledNotificationButton onClick={handleClick}> + <StyledBadge badgeContent={1} color="secondary" variant="dot" overlap="circle" className="badge"> <StyledNotificationsIcon/> </StyledBadge> </StyledNotificationButton> + <StyledMenu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <ContainerDiv> + <div className="cabecalho"> + <span style={{fontSize : "15px"}}>NOTIFICAÇÕES •</span> + <span className="cabecalho-marcar">Marcar todas como lidas</span> + </div> + { + notifications.map( (notification) => + <ActivityListItem + onMenuBar={true} + avatar = {notification.owner.avatar ? apiDomain + notification.owner.avatar : null} + activity = {notification.activity} + actionType = {notification.trackable_type} + objectType = {notification.recipient_type} + createdAt = {notification.created_at} + ownerName = {notification.owner.name} + ownerHref = {'/usuario-publico/' + notification.owner.id} + recipientName = {notification.recipient.name} + /> + ) + } + </ContainerDiv> + </StyledMenu> + </React.Fragment> ) } + +const StyledMenu = styled(Menu)` + +` + +const ContainerDiv = styled.div` + margin-top : 10px; + right : 5%; + width : 360px; + max-height : 400px; + position : absolute; + box-shadow : 8px 8px 8px 8px + rgba(0,0,0,.1); + overflow-y : scroll; + padding : 5px 5px 5px 5px; + min-width : 160px; + + .cabecalho { + border-bottom : 1px solid #666; + + .cabecalho-marcar { + font-family: Lato,bold; + font-size: 12px; + -webkit-text-decoration-line: underline; + text-decoration-line: underline; + float: right; + } + } +` diff --git a/src/Components/NotificationsInner.js b/src/Components/NotificationsInner.js new file mode 100644 index 0000000000000000000000000000000000000000..5b80924a112447925393c4d6a3117aa9826d7e58 --- /dev/null +++ b/src/Components/NotificationsInner.js @@ -0,0 +1,79 @@ +import React, {useState, useContext, useEffect} from 'react' +import styled from 'styled-components' +import {apiDomain, apiUrl} from '../env.js' +import axios from 'axios' +import ActivityListItem from './ActivityListItem.js' +import {getAxiosConfig} from './HelperFunctions/getAxiosConfig.js' + +export default function NotificationInner (props) { + const [notifications, setNotifications] = useState([]); + const [notificatonsLength, setLength] = useState(0); + useEffect(() => { + let config = getAxiosConfig() + axios.get(`${apiUrl}/feed?offset=0&limit=30`, config) + .then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + + console.log('atividades response: ', response) + setNotifications(response.data) + setLength(response.data.length) + + }, + (error) => { + console.log('error while running getNotifications') + } + ) + }, []) + + return ( + <ContainerDiv> + <div className="cabecalho"> + <span style={{fontSize : "15px"}}>NOTIFICAÇÕES •</span> + <span className="cabecalho-marcar">Marcar todas como lidas</span> + </div> + { + notifications.map( (notification) => + <ActivityListItem + onMenuBar={true} + avatar = {notification.owner.avatar ? apiDomain + notification.owner.avatar : null} + activity = {notification.activity} + actionType = {notification.trackable_type} + objectType = {notification.recipient_type} + createdAt = {notification.created_at} + ownerName = {notification.owner.name} + ownerHref = {'/usuario-publico/' + notification.owner.id} + recipientName = {notification.recipient.name} + /> + ) + } + </ContainerDiv> + + ) +} + +const ContainerDiv = styled.div` + margin-top : 10px; + right : 5%; + width : 360px; + max-height : 400px; + position : absolute; + box-shadow : 8px 8px 8px 8px + rgba(0,0,0,.1); + overflow-y : scroll; + padding : 5px 5px 5px 5px; + min-width : 160px; + + .cabecalho { + border-bottom : 1px solid #666; + + .cabecalho-marcar { + font-family: Lato,bold; + font-size: 12px; + -webkit-text-decoration-line: underline; + text-decoration-line: underline; + float: right; + } + } +` diff --git a/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js b/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js new file mode 100644 index 0000000000000000000000000000000000000000..cc25a3b4aeb1f0fad21b2d9f56e6b9d6f915c719 --- /dev/null +++ b/src/Components/PageProfessorComponents/ModalConfirmarProfessor.js @@ -0,0 +1,155 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl} from '../../env'; +import CloseIcon from '@material-ui/icons/Close'; + +const StyledModal = styled(Modal)` + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; +` + +export default function ModalConfirmarProfessor (props){ + return ( + + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open} style={{ transitionDelay :"0.4ms"}}> + <> + <ConfirmarProfessorComponent> + <HeaderDiv> + <span style={{width:"32px"}}/> + <h2>Confirme os Dados</h2> + <Button style={{marginRight:"-8px", color:"000"}} onClick={props.handleClose}> + <CloseIcon style={{color:"#666", cursor:"pointer", verticalAlign:"middle"}}/> + </Button> + </HeaderDiv> + + <DialogContentDiv> + <ContainerCentralized> + <p><strong>MunicÃpio - UF:</strong> {props.info.school_uf.name} - {props.info.school_city} </p> + <p><strong>Escola:</strong> {props.info.school_name}</p> + <p><strong>Telefone da Escola:</strong> {props.info.school_phone}</p> + <p><strong>Seu CPF:</strong> {props.info.teacher_cpf}</p> + <ButtonsDiv> + <ConfirmButton onClick ={props.confirmar}>CONFIRMAR</ConfirmButton> + <CancelButton onClick = {props.cancelar}>CANCELAR</CancelButton> + </ButtonsDiv> + </ContainerCentralized> + </DialogContentDiv> + </ConfirmarProfessorComponent> + </> + </Fade> + </StyledModal> + + ) +} + +const CancelButton = styled(Button)` + width : 140px !important; + color :#666 !important; + font-family : Roboto,sans-serif !important; + font-size : 14px !important; + font-weight : 500 !important; + height : 36px !important; + border-radius : 3px !important; + padding-left : 16px !important; + padding-right : 16px !important; + outline : none !important; + margin : 6px 8px !important; + display : inline-block !important; +` + +const ConfirmButton = styled(Button)` + width : 140px !important; + background-color : #00bcd4 !important; + color : #fff !important; + font-family : Roboto,sans-serif !important; + font-size : 14px !important; + font-weight : 500 !important; + height : 36px !important; + border-radius : 3px !important; + padding-left : 32px !important; + padding-right : 32px !important; + outline : none !important; + margin : 6px 8px !important; + display : inline-block !important; +` + +const ButtonsDiv = styled.div` + margin-top : 10px; + display : flex; + justify-content : center; +` + + +const ContainerCentralized = styled.div` + margin-top : 0; + padding-left : 20px; + padding-right : 30px; + + p { + font-size : 15px; + margin : 0 0 10px; + } +` + +const DialogContentDiv = styled.div` + padding : 20px 30px; + overflow : visible !important; +` + +const HeaderDiv = styled.div` + text-align : center; + display : flex; + justify-content : space-between; + padding : 10px 26px 0 26px; + + h2 { + font-size : 26px; + font-weight : lighter; + } +` + +const ConfirmarProfessorComponent = styled.div` + min-width : 600px; + border-radius : 4px; + background-color : #fff; + color : #666; +` diff --git a/src/Components/PageProfessorComponents/PartOne.js b/src/Components/PageProfessorComponents/PartOne.js new file mode 100644 index 0000000000000000000000000000000000000000..6fe3e70cb933c64da77e923804f69fe375fbc580 --- /dev/null +++ b/src/Components/PageProfessorComponents/PartOne.js @@ -0,0 +1,291 @@ +import React, {useState, useEffect} from 'react' +import styled from 'styled-components' +import Stepper from '../Stepper.js' +import FormControl from '@material-ui/core/FormControl'; +import MenuItem from '@material-ui/core/MenuItem'; +import Select from '@material-ui/core/Select'; +import InputLabel from '@material-ui/core/InputLabel'; +import {Button} from '@material-ui/core' +import {RightSideStrikedH3, LeftSideStrikedH3} from '../LoginContainerFunction.js' +import Divider from '@material-ui/core/Divider'; +import {ButtonCancelar} from './PartTwo.js' +import axios from 'axios' +import FormInput from '../FormInput.js' + +export function sortDict (dict) { + const newDict = dict.sort((a, b) => (a.name) > (b.name) ? 1 : -1) + return newDict + +} + +const extractUFInfo = (ufs, name) => { + var id = '' + var abbreviation = '' + for (const obj of ufs) { + if (obj.name === name) { + id = obj.id + abbreviation = obj.abbreviation + } + } + return {id : id, abbreviation : abbreviation} +} + +export default function PartOne (props) { + //stores initial get response (list of states, sorted alphabetically) + const [ufList, setStates] = useState([]) + const handleSetStates = (states) => {setStates(states)} + + //stores list of cities sorted alphabetically + const [municipioList, setMunicipioList] = useState([]) + const handleSetMunicipioList = (municipios) => setMunicipioList(municipios) + + //stores a single user selected state + const [uf, setUF] = useState( + { + algumFoiEscolhido : false, + name : '', + abbreviation : '' + } + ) + + //stores a single user selected city + const [municipio, setMunicipio] = useState( + { + algumFoiEscolhido : false, + name : '' + } + ) + + const [codigoINEP, setCodigoINEP] = useState( + { + codigoInvalido : false, + value : '' + } + ) + + const handleCodigoINEP = (event) => { + const code = event.target.value + + setCodigoINEP({...codigoINEP, + codigoInvalido : false, + value : code + }) + } + + const validateINEP = () => { + const code = codigoINEP.value + + axios.get(('https://www.simcaq.c3sl.ufpr.br/api/v1/portal_mec_inep?filter=school_cod:' + code) + ).then( (response) => { + handleSubmit() + }, (error) => { + setCodigoINEP({...codigoINEP, + codigoInvalido : true, + value : '' + }) + } + ) + } + + const handleSubmit = () => { + console.log('handle submit : ', uf.abbreviation, uf.name, municipio.name, codigoINEP.value) + props.handleBuscar(uf.abbreviation, uf.name, municipio.name, codigoINEP.value) + } + + //on render component, call simcaq api and update ufList + useEffect ( () => { + axios.get(('https://simcaq.c3sl.ufpr.br/api/v1/state') + ).then( (response) => { + console.log(sortDict(response.data.result)) + handleSetStates(sortDict(response.data.result)) + }, + (error) => console.log('erro acessando api do simcaq (estados)')) + }, []) + + const handleChooseUF = (event) => { + const ufName = event.target.value + const {id, abbreviation} = extractUFInfo(ufList, ufName) + console.log(id, abbreviation) + + setUF({...uf, + algumFoiEscolhido : true, + name : ufName, + abbreviation : abbreviation + } + ) + + axios.get(('https://simcaq.c3sl.ufpr.br/api/v1/city?filter=state:' + id) + ).then( (response) => { + handleSetMunicipioList(sortDict(response.data.result)) + }, (error) => console.log('erro acessando api do simcaq (cidades)') + ) + } + + const handleChooseCity = (event) => { + const cityName = event.target.value + console.log(cityName) + setMunicipio({...municipio, + algumFoiEscolhido : true, + name : cityName + } + ) + } + + return ( + <> + {/*/////////////////////////////PRIMEIRA PARTE/////////////////////////////*/} + <Content> + <h4>Vamos localizar o seu cadastro:</h4> + <Stepper items={props.stepper}/> + <form style={{textAlign:"start"}}> + <p>Localize pelo menos uma escola em que você tenha atuado até maio de 2017:</p> + <FormControl required style={{width:"100%"}}> + <InputLabel>Procure sua UF</InputLabel> + <Select + labelId="demo-simple-select-label" + id="demo-simple-select" + value={uf.name} + onChange={handleChooseUF} + > + { + ufList.map( (ufs)=> + <MenuItem key={ufs.name} value={ufs.name}>{ufs.name}</MenuItem> + ) + } + </Select> + </FormControl> + <FormControl required style={{width:"100%"}}> + <InputLabel>Busque o seu municÃpio</InputLabel> + <Select + labelId="demo-simple-select-label" + id="demo-simple-select" + value={municipio.name} + onChange={handleChooseCity} + > + { + municipioList.map( (cidades)=> + <MenuItem key={cidades.name} value={cidades.name}>{cidades.name}</MenuItem> + ) + } + </Select> + </FormControl> + <div style={{display:"flex", justifyContent:"center",paddingTop:"10px", paddingBottom:"10px"}}> + <ButtonConfirmar + onClick={ ( (uf.algumFoiEscolhido && municipio.algumFoiEscolhido) ? handleSubmit : '')} + > + BUSCAR</ButtonConfirmar> + </div> + </form> + </Content> + + <div style={{display:"flex", justifyContent:"center", alignItems:"center"}}> + <LeftSideStrikedH3/><StrikeSpan>ou</StrikeSpan><RightSideStrikedH3/> + </div> + + {/*/////////////////////////////SEGUNDA PARTE/////////////////////////////*/} + <Content> + <form> + <p>Localize pelo código INEP da escola:</p> + <FormControl required style={{width:"100%"}}> + <FormInput + inputType={'text'} + name={'Código INEP'} + value={codigoINEP.value} + handleChange = {handleCodigoINEP} + placeholder={'Código INEP'} + required={true} + error={codigoINEP.codigoInvalido} + help={codigoINEP.codigoInvalido ? <span style={{color:'red'}}>código INEP inválido</span> : ''} + > + </FormInput> + </FormControl> + <div style={{display:"flex", justifyContent:"center",paddingTop:"10px", paddingBottom:"10px"}}> + <ButtonConfirmar + onClick={validateINEP} + > + BUSCAR</ButtonConfirmar> + </div> + </form> + </Content> + <Divider/> + <ButtonsArea> + <ButtonCancelar onClick={props.handleCancelar}>CANCELAR VERIFICAÇÃO</ButtonCancelar> + </ButtonsArea> + </> + ) +} + +export const ButtonsArea = styled.div` + display : flex; + justify-content : center; + padding-top : 10px; + padding-bottom : 10px; +` + +const StrikeSpan = styled.span` + vertical-align : middle; + font-family : Roboto; + font-style : normal; + font-weight : 500; + line-height : 22px; + font-size : 15px; + letter-spacing : .01em; +` + +export const Content = styled.div` + margin-top : 16px; + margin-bottom : 16px; + margin-right : 10%; + margin-left : 10%; + + h4 { + text-align : center; + magin-bottom : 20px; + font-family: Roboto; + font-style : normal; + font-weight : 300; + line-height : 36px; + font-size : 26px; + margin-top : 20px; + } + + p { + font-family : Roboto; + font-style : normal; + font-weight : 400; + line-height : 21px; + font-size : 15px; + } +` +export const ButtonConfirmar = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + font-family : 'Roboto',sans-serif !important; + font-size : 14px !important; + font-weight : bolder !important; + padding-left : 16px !important; + padding-right : 16px !important; + outline : none !important; + margin : 6px 8px !important; + white-space : nowrap !important; + text-transform : uppercase !important; + font-weight : bold !important; + font-size : 14px !important; + font-style : inherit !important; + font-variant : inherit !important; + font-family : inherit !important; + text-decoration : none !important; + overflow : hidden !important; + display : inline-block !important; + position : relative !important; + cursor : pointer !important; + min-height : 36px !important; + min-width : 88px !important; + line-height : 36px !important; + vertical-align : middle !important; + align-items : center !important; + text-align : center !important; + border-radius : 3px !important; + box-sizing : border-box !important; + border : 0 !important; +` diff --git a/src/Components/PageProfessorComponents/PartThree.js b/src/Components/PageProfessorComponents/PartThree.js new file mode 100644 index 0000000000000000000000000000000000000000..2ee7c262ad0e85e3ba1a3c6221cf5241bde4b207 --- /dev/null +++ b/src/Components/PageProfessorComponents/PartThree.js @@ -0,0 +1,109 @@ +import React, {useState} from 'react' +import {Content, ButtonsArea} from './PartOne.js' +import {ButtonCancelar, ButtonGrey} from './PartTwo.js' +import FormControl from '@material-ui/core/FormControl'; +import InputLabel from '@material-ui/core/InputLabel'; +import Stepper from '../Stepper.js' +import FormInput from '../FormInput.js' +import styled from 'styled-components' +import {Button} from '@material-ui/core' + +export default function PartThree (props) { + const [phoneNumber, setPhoneNumber] = useState( + { + flagInvalid : false, + number : '' + } + ) + const handleChangePhoneNumber = (event) => { + const input = event.target.value.replace(/\D/,'') + setPhoneNumber({...phoneNumber, + flagInvalid : (input.length < 9 ? true : false), + number : (input.length > 9 ? phoneNumber.number : input), + }) + } + + const [cpf, setCpf] = useState( { + flagInvalid : false, + number : '' + }) + const handleChangeCpf = (event) => { + const input = event.target.value.replace(/\D/,'') + setCpf({...cpf, + flagInvalid : (input.length < 11 ? true : false), + number : (input.length > 11 ? cpf.number : input), + }) + } + + const handleSubmit = () => { + const submit_phone = phoneNumber.number + const submit_cpf = cpf.number + + props.handleSubmit(submit_phone, submit_cpf) + } + + return ( + <> + {console.log(props)} + <Content> + <h4>Vamos localizar o seu cadastro:</h4> + <Stepper items={props.stepper}/> + <form style={{textAlign:"start"}}> + <span>CENTRO EDUC INF MEU PEDACINHO DE CHAO</span> + <FormControl required style={{width:"100%"}}> + <p>Inserir o telefone da escola:</p> + <FormInput + inputType={'text'} + pattern="[0-9]" + name={'DDD e Número'} + placeholder={'DDD e Número'} + value={phoneNumber.number} + handleChange={handleChangePhoneNumber} + error={phoneNumber.flagInvalid} + > + </FormInput> + </FormControl> + <FormControl required style={{width:"100%"}}> + <p>Inserir o seu CPF</p> + <FormInput + inputType={'text'} + name={'11 dÃgitos'} + placeholder={'11 dÃgitos'} + value={cpf.number} + handleChange={handleChangeCpf} + mask={'999.999.999-99'} + error={cpf.flagInvalid} + > + </FormInput> + </FormControl> + <div style={{display:"flex", justifyContent:"space-evenly",paddingTop:"10px", paddingBottom:"10px"}}> + <div style={{display:"flex", justifyContent:"center"}}> + <ButtonConfirmar onClick={( (cpf.flagInvalid || phoneNumber.flagInvalid) ? () => {console.log('cpf.flagInvalid: ', cpf.flagInvalid, 'phoneNumber.flagInvalid: ', phoneNumber.flagInvalid)} : handleSubmit)}>BUSCAR</ButtonConfirmar> + </div> + <div style={{display:"flex", justifyContent:"center"}}> + <ButtonGrey onClick={() => props.goBack(false, true, false)}>VOLTAR</ButtonGrey> + <ButtonCancelar onClick={props.handleCancelar}>CANCELAR</ButtonCancelar> + </div> + </div> + </form> + </Content> + </> + ) +} + +const ButtonConfirmar = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + box-shadow : none !important; + font-family : 'Roboto',sans-serif !important; + font-size : 14px !important; + font-weight : bold !important; + height : 36px !important; + border-radius : 3px !important; + padding-left : 16px !important; + padding-right : 16px !important; + vertical-align : middle !important; + text-align : center !important; + align-items : center !important; + +` diff --git a/src/Components/PageProfessorComponents/PartTwo.js b/src/Components/PageProfessorComponents/PartTwo.js new file mode 100644 index 0000000000000000000000000000000000000000..a4e68d4a6de2ad449ab9cfd9e999b321cd546379 --- /dev/null +++ b/src/Components/PageProfessorComponents/PartTwo.js @@ -0,0 +1,101 @@ +import React, {useState, useEffect} from 'react' +import {Content, ButtonsArea} from './PartOne.js' +import Divider from '@material-ui/core/Divider'; +import Stepper from '../Stepper.js' +import CustomizedTables from '../Table.js' +import styled from 'styled-components' +import {Button} from '@material-ui/core' +import axios from 'axios' +import {simcaqAPIurl} from '../../env' +import {sortDict} from './PartOne.js' + +export default function PartTwo (props) { + const [schoolList, setSchoolList] = useState([]) + + useEffect ( () => { + const code = (props.info.inep_code || '') + const uf = (props.info.school_uf.abbreviation || '') + const municipio = (props.info.school_city || '') + //console.log(code, uf, municipio) + + //if user searched by inep code + if (code !== '') { + axios.get((`${simcaqAPIurl}/portal_mec_inep?filter=school_cod:` + code) + ).then ((response) => { + setSchoolList(sortDict(response.data.result)) + }, (error) => console.log('erro ao dar get na escola por inep code') + )} + else if (uf !== '' && municipio !== '') { + axios.get((`${simcaqAPIurl}/school?search=state_name:"` + uf + '",city_name:"' + municipio + '"&filter=year:2017') + ).then((response)=> { + //console.log(response.data.result) + setSchoolList(sortDict(response.data.result)) + }, (error) => console.log('erro ao dar get na escola por uf e municipio', code, uf, municipio) + )} + }, []) + + const onClickTable = (city_name, id, name, state_name) => { + props.handleBuscar(city_name, id, name, state_name) + } + + return ( + <> + {console.log(props)} + <Content> + <h4>Vamos localizar o seu cadastro:</h4> + <Stepper items={props.stepper}/> + </Content> + <Content> + <InputContainer> + <p>Selecione a sua escola:</p> + + <CustomizedTables + columns={['Codigo INEP', 'Escola', 'UF', 'Cidade']} + rows={schoolList} onClickTable={onClickTable} + /> + + </InputContainer> + </Content> + <Divider/> + <ButtonsArea> + <ButtonGrey onClick={() => props.goBack(true, false, false)}>VOLTAR</ButtonGrey> + <ButtonCancelar onClick={props.handleCancelar}>CANCELAR VERIFICAÇÃO</ButtonCancelar> + </ButtonsArea> + </> + ) +} + +export const ButtonCancelar = styled(Button)` + color: #666 !important; + font-family: 'Roboto',sans-serif !important; + font-size: 14px !important; + font-weight: bold !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; +` + +export const ButtonGrey = styled(Button)` + background-color : #fff !important; + border : 1.5px #666 solid !important; + color : #666 !important; + box-shadow : none !important; + font-family : 'Roboto',sans-serif !important; + font-size : 14px !important; + font-weight : bold !important; + height : 36px !important; + border-radius : 3px !important; + padding-left : 16px !important; + padding-right : 16px !important; + vertical-align : middle !important; + text-align : center !important; + align-items : center !important; + +` + +const InputContainer = styled.div` + max-width : 970px; + display : block; + flex : auto; +` diff --git a/src/Components/PageProfessorComponents/SuccessfulRequest.js b/src/Components/PageProfessorComponents/SuccessfulRequest.js new file mode 100644 index 0000000000000000000000000000000000000000..b6d479e6b9cf54d684da5aaacc794a6e1f10614c --- /dev/null +++ b/src/Components/PageProfessorComponents/SuccessfulRequest.js @@ -0,0 +1,60 @@ +import React from 'react' +import styled from 'styled-components' +import {ButtonConfirmar} from './PartOne.js' +import Comentarios from '../../img/comentarios.png' + +export default function SuccessfulRequest (props) { + const h4Text = 'Obrigado por fazer parte dessa rede!' + const pText = 'Em breve você poderá publicar os seus próprios reursos educacionais digitais. O MEC analisará as suas informações junto a escola e você será avisada(o) aqui na plataforma e em seu email: ' + + const redirect = () => { + props.history.push('/') + } + + return ( + <div style={{maxWidth:"575px", padding : "0 36px"}}> + <div style={{display : "flex", flexDirection : "column"}}> + <StyledH4>{h4Text}</StyledH4> + <TextDiv> + <p>{pText} <b>{props.email}</b>.</p> + </TextDiv> + <div style={{display : 'flex', flexDirection : 'row', justifyContent : "center"}}> + <ButtonConfirmar onClick={redirect}>VOLTAR À PAGINA INICIAL</ButtonConfirmar> + </div> + <ImageDiv/> + </div> + </div> + ) +} + +const ImageDiv = styled.div` + height : 500px; + background-image : url(${Comentarios}); + background-repeat : no-repeat; + background-position : center center; +` + +const TextDiv = styled.div` + display : flex; + flex-direction : row; + + p { + text-align : justify; + font-family: Roboto; + font-style : normal; + font-weight : 400; + line-height : 21px; + font-size : 15px; + margin : 0 0 10px; + } +` + +const StyledH4 = styled.h4` + font-family : Roboto; + font-style : normal; + font-weight : 300; + line-height : 36px; + font-size : 26px; + margin-top : 20px; + margin-bottom : 20px; +` diff --git a/src/Components/PasswordRecoveryComponents/Default.js b/src/Components/PasswordRecoveryComponents/Default.js new file mode 100644 index 0000000000000000000000000000000000000000..ddbb4f43a3128596508fa1696a5fe4aa59820015 --- /dev/null +++ b/src/Components/PasswordRecoveryComponents/Default.js @@ -0,0 +1,25 @@ +import React from 'react' +import {CompletarCadastroButton} from '../TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js' +import FormInput from "../FormInput.js" + +export default function Default (props) { + return ( + <div style={{overflow:"hidden", display:"inline-block"}}> + <h2 style={{fontSize:"32px", fontWeight:"200", marginBottom:"20px"}}>Vamos encontrar a sua conta</h2> + <form onSubmit={(e) => props.onSubmit(e)}> + <FormInput + inputType={"text"} + name={"email"} + value={props.value} + placeholder={"E-mail"} + handleChange={e => props.handleChange(e)} + required={true} + error = {props.error} + /> + <div style={{display:"flex", justifyContent:"center"}}> + <CompletarCadastroButton type="submit" >BUSCAR</CompletarCadastroButton> + </div> + </form> + </div> + ) +} diff --git a/src/Components/PasswordRecoveryComponents/Error.js b/src/Components/PasswordRecoveryComponents/Error.js new file mode 100644 index 0000000000000000000000000000000000000000..38ea3937b4b3713e2ac3b363f8d582ff6d21c0f4 --- /dev/null +++ b/src/Components/PasswordRecoveryComponents/Error.js @@ -0,0 +1,27 @@ +import React from 'react' +import {CompletarCadastroButton} from '../TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js' +import FormInput from "../FormInput.js" + +export default function Error (props) { + return ( + <div style={{overflow:"hidden", display:"inline-block"}}> + <h2 style={{fontSize:"32px", fontWeight:"200", marginBottom:"20px"}}>Ops! Não encontramos essa conta</h2> + <p>{props.value}</p> + <p>Verifique se o e-mail foi digitado corretamente ou se você utilizou algum outro e-mail.</p> + <form onSubmit={(e) => props.onSubmit(e)}> + <FormInput + inputType={"text"} + name={"email"} + value={props.value} + placeholder={"E-mail"} + handleChange={e => props.handleChange(e)} + required={true} + error = {props.error} + /> + <div style={{display:"flex", justifyContent:"center"}}> + <CompletarCadastroButton type="submit" >BUSCAR</CompletarCadastroButton> + </div> + </form> + </div> + ) +} diff --git a/src/Components/PasswordRecoveryComponents/Success.js b/src/Components/PasswordRecoveryComponents/Success.js new file mode 100644 index 0000000000000000000000000000000000000000..d366bc3c8958f7560816e5ee27fe0172c0fb2789 --- /dev/null +++ b/src/Components/PasswordRecoveryComponents/Success.js @@ -0,0 +1,14 @@ +import React from 'react' +import {CompletarCadastroButton} from '../TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js' +import FormInput from "../FormInput.js" + +export default function Default (props) { + return ( + <div style={{overflow:"hidden", display:"inline-block", fontSize:"14px", textAlign:"start"}}> + <h2 style={{fontSize:"32px", fontWeight:"200", marginBottom:"20px"}}>Feito! Confira seu e-mail</h2> + <p> Enviamos um link para <span style={{color:"#00bcd4"}}>{String(props.email)}</span> que permite alterar sua senha. </p> + <p style={{marginBottom:"30px"}}> Caso não chegue em sua caixa de entrada, dê uma olhada em outras pastas, como lixo eletrônico ou spam. </p> + <p> Não é o seu e-mail? <span style={{color:"#00bcd4", cursor:"pointer"}} onClick={() => {props.changeSwitch('default')}}> Tente Novamente.</span></p> + </div> + ) +} diff --git a/src/Components/PublicationPermissionsContent.js b/src/Components/PublicationPermissionsContent.js index c40d49d7e16a0f6235b198be07fccb60ec6133e4..fe3536dc8c3afb0eb810835cb5f5c56430660d21 100644 --- a/src/Components/PublicationPermissionsContent.js +++ b/src/Components/PublicationPermissionsContent.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useState, useEffect} from 'react'; import Typography from '@material-ui/core/Typography'; import CardContent from '@material-ui/core/CardContent'; import styled from 'styled-components' @@ -6,11 +6,14 @@ import RadioGroup from '@material-ui/core/RadioGroup'; import FormControlLabel from '@material-ui/core/FormControlLabel'; import Radio from '@material-ui/core/Radio'; import FormControl from '@material-ui/core/FormControl'; - +import Grid from '@material-ui/core/Grid'; +import { withStyles } from '@material-ui/core/styles'; +import axios from 'axios' +import {apiUrl} from '../env'; const StyledFormControl = styled(FormControl)` display: "block ruby"; - margin-top : 0 !importantcd ; + margin-top : 0 !important ; ` const StyledDivEvaluateQuestion = styled.div` @@ -18,7 +21,35 @@ const StyledDivEvaluateQuestion = styled.div` justify-content : space-between; ` +const BlueRadio = withStyles({ + root: { + color: '#666', + '&$checked': { + color: '#00bcd4', + }, + }, + checked: {}, +})((props) => <Radio color="default" {...props} />); + export default function PublicationPermissionsContent (props) { + {/*To DO change to get https://api.portalmec.c3sl.ufpr.br/v1/questions*/} + + const [questionsArr, setQuestionsArr] = useState([]) + const handleSetQuestionsArr = (newArr) => {setQuestionsArr(newArr)} + + useEffect(() => { + axios.get(`${apiUrl}/questions/`).then( + (response) => { + console.log(response) + handleSetQuestionsArr(response.data) + }, + (error) => { + console.log('falhou em get questions') + } + ) + + }, []) + return ( <CardContent style={{textAlign: "start", marginBottom: "10px", lineHeight:"21px", color:"rgb(102, 102, 102)", padding:"65px"}}> <Typography variant="h4" style={{textAlign:"center", color:"rgb(102, 102, 102)", fontSize:"26px"}}> É necessário que você declare a permissão de publicação do seu Recurso:</Typography> @@ -31,41 +62,72 @@ export default function PublicationPermissionsContent (props) { <p>Ao prosseguir você concede a permissão de publicação do seu recurso ao nosso portal e se compromete a não infringir as polÃticas de conteúdos, estando então, a partir desse momento passÃvel de responsabilização pelo conteúdo a ser integrado a nossa rede. Para tanto atente-se as pontuações abaixo e verifique se o seu recurso está de acordo, antecipadamente, com as nossas condições. É recomendável a leitura das polÃticas de conteúdo estabelecidas - (<a href="termos-de-uso#publicacoes-de-usuario"><strong>PolÃticas de Conteúdo</strong></a>) + (<a href="/termos" style={{color:"initial"}}><strong>PolÃticas de Conteúdo</strong></a>) </p> <Typography variant="h5" style={{fontWeight:"300", color:"rgb(102, 102, 102)", fontSize:"22px"}}> Para que o recurso seja publicado na plataforma é preciso que ele esteja de acordo com as diretrizes abaixo, a presença de quaisquer dos itens a seguir inviabiliza a publicação do recurso em nossa rede. </Typography> <p><strong>No seu recurso está presente algum destes itens abaixo?</strong></p> + <StyledFormControl component="fieldset" style={{display:"BlockRuby"}} margin='dense' fullWidth={true}> - <StyledDivEvaluateQuestion> - <p> - O recurso apresenta conteúdo de cunho polÃtico-partidário? (Ex: o conteúdo expressa qualquer forma de manifestação que se caracterize como propaganda polÃtica)? - </p> - <RadioGroup row name="radio1" onChange={props.handleRadios}> - <FormControlLabel value="Sim" control={<Radio color="primary"/>} label="Sim"/> <FormControlLabel value="Não" control={<Radio color="primary"/>} label="Não"/> - </RadioGroup> - </StyledDivEvaluateQuestion> - <StyledDivEvaluateQuestion> - <p> - O recurso apresenta conteúdo ofensivo? (Ex: material pornográfico e/ou que invada a privacidade de terceiros, viole os Direitos Humanos ou seja ilegal, ofensivo, e que incite a violência)? - </p> - <RadioGroup row name="radio2" onChange={props.handleRadios}> - <FormControlLabel value="Sim" control={<Radio color="primary"/>} label="Sim"/> <FormControlLabel value="Não" control={<Radio color="primary"/>} label="Não"/> - </RadioGroup> - </StyledDivEvaluateQuestion> - <StyledDivEvaluateQuestion> - <p> - O recurso apresenta algum tipo de propaganda ou marca? (Ex: o conteúdo tem cunho comercial)? - </p> - <RadioGroup row name="radio3" onChange={props.handleRadios}> - <FormControlLabel value="Sim" control={<Radio color="primary"/>} label="Sim"/> <FormControlLabel value="Não" control={<Radio color="primary"/>} label="Não"/> - </RadioGroup> - </StyledDivEvaluateQuestion> + <Grid container> + { + questionsArr.map((question, index) => + + question.id !== 4 && + <React.Fragment key={question.id}> + <Grid item xs={10}> + <p>{question.description}</p> + </Grid> + <Grid item xs={2}> + <RadioGroup row name={"radio" + (index + 1)} onChange={props.handleRadios}> + <FormControlLabel value="Sim" control={<BlueRadio/>} label="Sim"/> <FormControlLabel value="Não" control={<BlueRadio/>} label="Não"/> + </RadioGroup> + </Grid> + </React.Fragment> + + ) + } + </Grid> </StyledFormControl> </div> </CardContent> ) } + +{/* + <Grid item xs={10}> + <p> + O recurso apresenta conteúdo de cunho polÃtico-partidário? (Ex: o conteúdo expressa qualquer forma de manifestação que se caracterize como propaganda polÃtica)? + </p> + </Grid> + <Grid item xs={2}> + <RadioGroup row name="radio1" onChange={props.handleRadios}> + <FormControlLabel value="Sim" control={<BlueRadio/>} label="Sim"/> <FormControlLabel value="Não" control={<BlueRadio/>} label="Não"/> + </RadioGroup> + </Grid> + + <Grid item xs={10}> + <p> + O recurso apresenta conteúdo ofensivo? (Ex: material pornográfico e/ou que invada a privacidade de terceiros, viole os Direitos Humanos ou seja ilegal, ofensivo, e que incite a violência)? + </p> + </Grid> + <Grid item xs={2}> + <RadioGroup row name="radio2" onChange={props.handleRadios}> + <FormControlLabel value="Sim" control={<BlueRadio/>} label="Sim"/> <FormControlLabel value="Não" control={<BlueRadio/>} label="Não"/> + </RadioGroup> + </Grid> + <Grid item xs={10}> + <p> + O recurso apresenta algum tipo de propaganda ou marca? (Ex: o conteúdo tem cunho comercial)? + </p> + </Grid> + <Grid item xs={2}> + <RadioGroup row name="radio3" onChange={props.handleRadios}> + <FormControlLabel value="Sim" control={<BlueRadio/>} label="Sim"/> <FormControlLabel value="Não" control={<BlueRadio/>} label="Não"/> + </RadioGroup> + </Grid> + </Grid> + */} diff --git a/src/Components/PurpleButton.js b/src/Components/PurpleButton.js new file mode 100644 index 0000000000000000000000000000000000000000..1b57b823d14aedd9bb2604fa0de6b9a4ea73da72 --- /dev/null +++ b/src/Components/PurpleButton.js @@ -0,0 +1,52 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import { Button } from '@material-ui/core'; +import styled from 'styled-components' + +export default function PurpleButton (props) { + return ( + <StyledButton onClick={props.callback}> + {props.text} + </StyledButton> + ) +} + +const StyledButton = styled(Button)` + max-height : 36px !important; + background-color : #673ab7 !important; + color : #fff !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + + .button-text { + cursor : pointer; + line-height : 36px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600 !important; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + padding : 6px 16px !important; + } +` diff --git a/src/Components/RedirectModal.js b/src/Components/RedirectModal.js new file mode 100644 index 0000000000000000000000000000000000000000..bc786eca8e32d73651fcb3b7f279b0aa9b0a5180 --- /dev/null +++ b/src/Components/RedirectModal.js @@ -0,0 +1,171 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useEffect, useState} from 'react' +import styled from 'styled-components' +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import CloseIcon from '@material-ui/icons/Close'; + +function CloseModalButton (props) { + return ( + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> + ) +} + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : absolute !important; + right : 8px; + top : 8px; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + + width : 40px; +` + + +export default function RedirectModal (props) { + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container> + <CloseModalButton handleClose={props.handleClose}/> + <Header> + <span style={{width:"32px"}}/> + <h2>Você será redirecionado para outro site</h2> + </Header> + <Content> + <span style={{fontWeight : "600"}}>Uma nova aba ou janela irá abrir, deseja continuar?</span> + <div style={{paddingTop : "20px", paddingBottom : "10px"}}> + Lembre-se de que você pode reportar caso considere o conteúdo abusivo/ofensivo ou caso a página não corresponda a descrição apresentada. + </div> + <section style={{display : "flex", flexDirection : "row", justifyContent : "center"}}> + <ButtonGrey onClick={props.handleClose}>CANCELAR</ButtonGrey> + <a href={props.link} target="_blank" rel="noreferrer noopener" style={{textDecoration : "none !important"}}><ButtonOrange>CONTINUAR</ButtonOrange></a> + </section> + </Content> + </Container> + </Fade> + </StyledModal> + ) +} + +const ButtonOrange = styled(Button)` + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + background-color : #ff7f00 !important; + color : #fff !important; + text-decoration : none !important; + text-transform : uppercase !important; + outline : none !important; + text-align : center !important; + max-height : 36px; + margin-top : 5px !important; + font-size : 14px !important; + font-weight : 600 !important; +` + + +const ButtonGrey = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + margin-top : 5px !important; + margin-right : 15px !important; + background-color : transparent !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + font-size : 14px !important; + font-weight : 600 !important; + +` + +const Content = styled.div` + color : #666; + padding : 20px 30px; + overflow : visible; + text-align : center; + font-size : 14px; +` +const Header = styled.div` + display : flex; + flex-direction : row; + align-items : center; + justify-content : space-between; + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + padding : 10px 20px 0 20px; + + } +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px gba(0,0,0,.12); + background-color : white; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + @media screen and (min-width : 700px) { + max-width : 395px; + height : 326px; + } + @media screen and (max-width : 699px) { + width : 100%; + height : 100%; + } +` diff --git a/src/Components/ReportButton.js b/src/Components/ReportButton.js new file mode 100644 index 0000000000000000000000000000000000000000..ea8bb313cc7adc7f1b60187ae780e55a0ae0befb --- /dev/null +++ b/src/Components/ReportButton.js @@ -0,0 +1,94 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useContext} from 'react' +import styled from 'styled-components' +import Menu from '@material-ui/core/Menu'; +import MenuItem from '@material-ui/core/MenuItem'; +import ReportIcon from '@material-ui/icons/Error'; +import Button from '@material-ui/core/Button'; +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import ReportModal from './ReportModal.js' +import {Store} from '../Store.js' + +export default function ReportButton (props) { + const {state} = useContext(Store) + + /*Menu control variables-----------------------------*/ + const [anchorEl, setAnchorEl] = React.useState(null); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + /*---------------------------------------------------*/ + + + /*modal variables------------------------------------*/ + const [reportModal, toggleReportModal] = useState(false) + const [loginModal, toggleLoginModal] = useState(false) + + const handleModal = () => { + if (state.currentUser.id) { + toggleReportModal(!reportModal) + } + else { + toggleLoginModal(true) + } + } + /*---------------------------------------------------*/ + + return ( + <> + { + reportModal && + <ReportModal open={reportModal} handleClose={() => handleModal()} + form="user" complainableId={props.complainableId} + complainableType={props.complainableType} + {...props}/> + } + {/* + loginModal && + <LoginModal open={loginModal} handleClose={() => {toggleLoginModal(false)}}/> + */} + <Button onClick={handleClick}> + <MoreVertIcon style={{color : "#666"}}/> + </Button> + <StyledMenu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + style={{borderRadius : "0"}} + > + <MenuItem onClick={() => {handleModal()}} style={{color : "#666"}}> + <ReportIcon/> + <span style={{paddingLeft : "3px"}}>Reportar</span> + </MenuItem> + </StyledMenu> + </> + ) +} + +const StyledMenu = styled(Menu)` + .MuiPaper-rounded { + border-radius : 0 !important; + } +` diff --git a/src/Components/ReportColecaoForm.js b/src/Components/ReportColecaoForm.js new file mode 100644 index 0000000000000000000000000000000000000000..fcea00e793912b73c072b2b146a33d809be9402c --- /dev/null +++ b/src/Components/ReportColecaoForm.js @@ -0,0 +1,153 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useContext} from 'react'; +import { Button } from '@material-ui/core'; +import styled from 'styled-components' +import Radio from '@material-ui/core/Radio'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import FormControl from '@material-ui/core/FormControl'; +import TextField from '@material-ui/core/TextField'; +import {StyledFormControl, ButtonsDiv, ButtonCancelar} from './ReportUserForm.js' +import { withStyles } from '@material-ui/core/styles'; + +const StyledRadio = withStyles({ + root: { + color: '#666', + '&$checked': { + color: '#673ab7', + }, + }, + checked: {}, +})((props) => <Radio color="default" {...props} />); + +export default function ReportColecaoForm (props) { + const [value, setValue] = React.useState(-1); + + const handleChange = (event) => { + setValue(event.target.value); + }; + + /*values are set according to backend complaint id*/ + const [options] = React.useState([ + {value : "1", text : 'A Coleção viola os direitos autorais.'}, + {value : "2", text : 'A Coleção contém conteúdo ofensivo/abusivo.'}, + {value : "5", text : 'A descrição da Coleção não corresponde ao seu conteúdo.'} + ]) + + const [moreInfo, setMoreInfo] = React.useState({ + key : false, + value : "", + }) + + const handleChangeMoreInfo = (e) => { + const userInput = e.target.value + + const flag = userInput.length > 150 ? true : false + + setMoreInfo({...moreInfo, + key : flag, + value : userInput + }) + } + + const handleSubmit = (e) => { + e.preventDefault() + const finalRadioValue = value + const finalMoreInfo = moreInfo + + if( finalRadioValue != -1 && !(finalMoreInfo.key)) { + props.handleSubmit(finalRadioValue, finalMoreInfo.value) + } + else { + console.log('oops') + } + } + + return ( + <form onSubmit={(e) => handleSubmit(e)} style={{textAlign : "left"}}> + <StyledFormControl component="fieldset"> + <RadioGroup value={value} onChange={handleChange}> + { + options.map(option => + <FormControlLabel value={option.value} control={<StyledRadio/>} label={option.text} /> + ) + } + </RadioGroup> + </StyledFormControl> + + <StyledTextField + id = {"report-text-field"} + label={"Escreva mais sobre o problema"} + value = {moreInfo.value} + onChange = {e => handleChangeMoreInfo(e)} + helperText = {moreInfo.value.length + '/150'} + multiline={true} + rowsMax = {"5"} + error = {moreInfo.key} + required = {false} + helperText ={moreInfo.value.length + '/150'} + style={{width : "100%"}} + /> + + <ButtonsDiv> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonEnviar type="submit">ENVIAR</ButtonEnviar> + </ButtonsDiv> + </form> + ) +} + +const StyledTextField = styled(TextField)` + .MuiFormHelperText-root { + text-align : left; + } + + label.Mui-focused { + color : #673ab7; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 2px solid #673ab7; + } +` +const ButtonEnviar = styled(Button)` + background-color : #673ab7 !important; + color : #fff !important; + font-size: 14px !important; + font-weight: 500 !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important; + outline : none !important; + min-width : 88px !important; + vertical-align : middle !important; + margin : 6px 8px !important; + text-decoration : none !important; + + .MuiButton-label { + padding-right : 16px; + padding-left : 16px; + } +` diff --git a/src/Components/ReportModal.js b/src/Components/ReportModal.js new file mode 100644 index 0000000000000000000000000000000000000000..ed472b3890cda0cbc7bd02e7aa6b1f44714e0131 --- /dev/null +++ b/src/Components/ReportModal.js @@ -0,0 +1,185 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import SignUpContainer from './SignUpContainerFunction.js' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiUrl} from '../env'; +import CloseIcon from '@material-ui/icons/Close'; +import ReportUserForm from './ReportUserForm.js' +import ReportRecursoForm from './ReportRecursoForm.js' +import ReportColecaoForm from './ReportColecaoForm.js' + +function CloseModalButton (props) { + return ( + <StyledCloseModalButton onClick={props.handleClose}> + <CloseIcon/> + </StyledCloseModalButton> + ) +} + +export default function ReportModal (props) { + const {state} = useContext(Store) + + const handleSubmit = (complaint_reason_id, description) => { + console.log('complaint_reason_id: ', complaint_reason_id) + console.log('description: ', description) + + const payload = { + "complaint" : { + "user_id" : state.currentUser.id, + "description" : description, + "complainable_id" : props.complainableId, + "complainable_type" : props.complainableType, + "complaint_reason_id" : complaint_reason_id + } + } + console.log(payload) + + axios.post(`${apiUrl}/complaints`, + { + "complaint" : { + "user_id" : state.currentUser.id, + "description" : description, + "complainable_id" : props.complainableId, + "complainable_type" : props.complainableType, + "complaint_reason_id" : complaint_reason_id + } + }).then( (response) => {console.log(response)}, (error) => {console.log(error)}) + } + + const renderForm = (formType) => { + switch (formType) { + case 'colecao': + return ( + <ReportColecaoForm handleClose={props.handleClose} handleSubmit={handleSubmit}/> + ) + case 'recurso': + return ( + <ReportRecursoForm handleClose={props.handleClose} handleSubmit={handleSubmit}/> + ) + break; + default: + return ( + <ReportUserForm handleClose={props.handleClose} handleSubmit={handleSubmit}/> + ) + } + } + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <ReportContainer> + <Header> + <span style={{width:"32px"}}/> + <h2>O que está acontecendo?</h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + + <Content> + { + renderForm(props.form) + } + </Content> + </ReportContainer> + </Fade> + </StyledModal> + ) +} + + +const Content = styled.div` + padding : 20px 30px; + overflow : visible; + max-width : 470px; +` + +const Header = styled.div` + display : flex; + flex-direction : row; + padding : 10px 26px 0 26px; + align-items : center; + justify-content : space-between; + height : 64px; + + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const ReportContainer = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + + @media screen and (max-width : 899px) { + width : 100%; + height : 100%; + } +` diff --git a/src/Components/ReportRecursoForm.js b/src/Components/ReportRecursoForm.js new file mode 100644 index 0000000000000000000000000000000000000000..66704bde8cda4ddad3c60c4aaf3ecd22e74760f8 --- /dev/null +++ b/src/Components/ReportRecursoForm.js @@ -0,0 +1,114 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useContext} from 'react'; +import { Button } from '@material-ui/core'; +import styled from 'styled-components' +import Radio from '@material-ui/core/Radio'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import FormControl from '@material-ui/core/FormControl'; +import TextField from '@material-ui/core/TextField'; +import {StyledFormControl, StyledTextField, ButtonsDiv, ButtonCancelar, ButtonEnviar} from './ReportUserForm.js' +import { withStyles } from '@material-ui/core/styles'; + +const StyledRadio = withStyles({ + root: { + color: '#666', + '&$checked': { + color: '#ff7f00', + }, + }, + checked: {}, +})((props) => <Radio color="default" {...props} />); + +export default function ReportRecursoForm (props) { + const [value, setValue] = React.useState(-1); + + const handleChange = (event) => { + setValue(event.target.value); + }; + + /*values are set according to backend complaint id*/ + const [options] = React.useState([ + {value : "1", text : 'O Recurso viola os direitos autorais.'}, + {value : "2", text : 'O Recurso contém conteúdo ofensivo/abusivo.'}, + {value : "5", text : 'A descrição do Recurso não corresponde ao seu conteúdo.'} + ]) + + const [moreInfo, setMoreInfo] = React.useState({ + key : false, + value : "", + }) + + const handleChangeMoreInfo = (e) => { + const userInput = e.target.value + + const flag = userInput.length > 150 ? true : false + + setMoreInfo({...moreInfo, + key : flag, + value : userInput + }) + } + + const handleSubmit = (e) => { + e.preventDefault() + const finalRadioValue = value + const finalMoreInfo = moreInfo + + if( finalRadioValue != -1 && !(finalMoreInfo.key)) { + props.handleSubmit(finalRadioValue, finalMoreInfo.value) + } + else { + console.log('oops') + } + } + + return ( + <form onSubmit={(e) => handleSubmit(e)} style={{textAlign : "left"}}> + <StyledFormControl component="fieldset"> + <RadioGroup value={value} onChange={handleChange}> + { + options.map(option => + <FormControlLabel value={option.value} control={<StyledRadio/>} label={option.text} /> + ) + } + </RadioGroup> + </StyledFormControl> + + <StyledTextField + id = {"report-text-field"} + label={"Escreva mais sobre o problema"} + value = {moreInfo.value} + onChange = {e => handleChangeMoreInfo(e)} + helperText = {moreInfo.value.length + '/150'} + multiline={true} + rowsMax = {"5"} + error = {moreInfo.key} + required = {false} + helperText ={moreInfo.value.length + '/150'} + style={{width : "100%"}} + /> + + <ButtonsDiv> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonEnviar type="submit">ENVIAR</ButtonEnviar> + </ButtonsDiv> + </form> + ) +} diff --git a/src/Components/ReportUserForm.js b/src/Components/ReportUserForm.js new file mode 100644 index 0000000000000000000000000000000000000000..2ed7bd88d9cf7b29803d97788159116764263390 --- /dev/null +++ b/src/Components/ReportUserForm.js @@ -0,0 +1,186 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext} from 'react'; +import { Button } from '@material-ui/core'; +import styled from 'styled-components' +import Radio from '@material-ui/core/Radio'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import FormControl from '@material-ui/core/FormControl'; +import TextField from '@material-ui/core/TextField'; +import { withStyles } from '@material-ui/core/styles'; + +const StyledRadio = withStyles({ + root: { + '&$checked': { + color: '#ff7f00 !important', + }, + }, + checked: {}, +})((props) => <Radio color="default" {...props} />); + +export default function ReportForm (props) { + const [value, setValue] = React.useState(-1); + + const handleChange = (event) => { + setValue(event.target.value); + }; + + /*values are set according to backend complaint id*/ + const [options] = React.useState([ + {value : "6", text :'Esta pessoa está fingindo ser eu ou alguém que eu conheço.'}, + {value : "4", text : 'Essa pessoa envia spam.'}, + {value : "3", text : 'Essa é uma conta falsa.'}, + {value : "1", text : ' A publicação dessa pessoa viola os diretos autorais.'}, + {value : "2", text : 'As publicações dessa pessoa contém conteúdo ofensivo/abusivo.'} + ]) + + const [moreInfo, setMoreInfo] = React.useState({ + key : false, + value : "", + }) + + const handleChangeMoreInfo = (e) => { + const userInput = e.target.value + + const flag = userInput.length > 150 ? true : false + + setMoreInfo({...moreInfo, + key : flag, + value : userInput + }) + } + + const formSubmit = (e) => { + e.preventDefault() + const finalRadioValue = value + const finalMoreInfo = moreInfo + + if( finalRadioValue != -1 && !(finalMoreInfo.key)) { + props.handleSubmit(finalRadioValue, finalMoreInfo.value) + } + } + + return ( + <form onSubmit={(e) => {formSubmit(e)}}> + <StyledFormControl component="fieldset"> + <RadioGroup value={value} onChange={handleChange}> + { + options.map(option => + <FormControlLabel value={option.value} control={<StyledRadio/>} label={option.text} /> + ) + } + </RadioGroup> + </StyledFormControl> + + <StyledTextField + id = {"Escreva mais sobre o problema"} + label={"Escreva mais sobre o problema"} + type = {"text"} + value = {moreInfo.value} + onChange = {e => handleChangeMoreInfo(e)} + helperText = {moreInfo.value.length + '/150'} + multiline={true} + rowsMax = {"5"} + error = {moreInfo.key} + required = {false} + style={{width:"100%"}} + /> + + <ButtonsDiv> + <ButtonCancelar onClick={props.handleClose}>CANCELAR</ButtonCancelar> + <ButtonEnviar type="submit">ENVIAR</ButtonEnviar> + </ButtonsDiv> + </form> + ); +} + +export const ButtonsDiv = styled.div` + display : flex; + flex-direction : row; + justify-content : flex-end; + align-items : center; +` + +export const ButtonCancelar = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + height : 36px !important; + padding-left : 16px !important; + padding-right : 16px !important; + font-weight : 500 !important; + border-radius : 3px !important; + color :#666 !important; + background-color: transparent; + min-width : 88px !important; + height : 36px !important; +` + +export const ButtonEnviar = styled(Button)` + background-color : #ff7f00 !important; + color : #fff !important; + font-size: 14px !important; + font-weight: 500 !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important; + outline : none !important; + min-width : 88px !important; + vertical-align : middle !important; + margin : 6px 8px !important; + text-decoration : none !important; + + .MuiButton-label { + padding-right : 16px; + padding-left : 16px; + } +` +export const StyledTextField = styled(TextField)` + .MuiFormHelperText-root { + text-align : left; + } + + label.Mui-focused { + color : orange; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 2px solid orange; + } +` + +export const StyledFormControl = styled(FormControl)` + .MuiFormControlLabel-root { + color : #666; + } + + .PrivateRadioButtonIcon-checked { + color : orange; + } + + .MuiTypography-body1 { + font-size : 14px; + } +` diff --git a/src/Components/RequirementsDialog.js b/src/Components/RequirementsDialog.js new file mode 100644 index 0000000000000000000000000000000000000000..a8f5f208cf28c0ac536b66e959013887eb543f7d --- /dev/null +++ b/src/Components/RequirementsDialog.js @@ -0,0 +1,85 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Button from '@material-ui/core/Button'; +import Dialog from '@material-ui/core/Dialog'; +import DialogActions from '@material-ui/core/DialogActions'; +import DialogContent from '@material-ui/core/DialogContent'; +import DialogContentText from '@material-ui/core/DialogContentText'; +import DialogTitle from '@material-ui/core/DialogTitle'; +import FormControl from '@material-ui/core/FormControl'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import InputLabel from '@material-ui/core/InputLabel'; +import MenuItem from '@material-ui/core/MenuItem'; +import Select from '@material-ui/core/Select'; +import Switch from '@material-ui/core/Switch'; + +const useStyles = makeStyles(theme => ({ + form: { + display: 'flex', + flexDirection: 'column', + margin: 'auto', + width: 'fit-content', + }, + formControl: { + marginTop: theme.spacing(2), + minWidth: 120, + }, + formControlLabel: { + marginTop: theme.spacing(1), + }, +})); + +export default function MaxWidthDialog(props) { + const classes = useStyles(); + const [open, setOpen] = React.useState(false); + const fullWidth = true; + const maxWidth = 'sm'; + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + <React.Fragment> + <Button variant="outlined" color="primary" onClick={handleClickOpen}> + Mais + </Button> + <Dialog + fullWidth={fullWidth} + maxWidth={maxWidth} + open={open} + onClose={handleClose} + aria-labelledby="max-width-dialog-title" + > + <DialogTitle id="max-width-dialog-title">{props.title}</DialogTitle> + <DialogContent> + <DialogContentText> + {props.description} + <h4>Requisitos</h4> + <dl> + {props.requirements.map( + (r) => { + return( + <div> + <dt>{r.name}</dt> + <dd>{r.description}</dd> + </div> + ); + })} + </dl> + </DialogContentText> + </DialogContent> + <DialogActions> + <Button onClick={handleClose} color="primary"> + Fechar + </Button> + </DialogActions> + </Dialog> + </React.Fragment> + ); +} + diff --git a/src/Components/ResourceCard.js b/src/Components/ResourceCard.js index 481cb111f53f90be585a02fd70806784f05c1e30..ea072ee2f98061fc4a0a36a9daddcd980c86c176 100644 --- a/src/Components/ResourceCard.js +++ b/src/Components/ResourceCard.js @@ -16,15 +16,15 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {Component} from 'react'; -import './CardsAnimation.css'; -import {Container} from 'react-grid-system'; -import Card from '@material-ui/core/Card'; -import CardContent from '@material-ui/core/CardContent'; -import CardActions from '@material-ui/core/CardActions'; -import IconButton from '@material-ui/core/IconButton'; -import Typography from '@material-ui/core/Typography'; -import FavoriteIcon from '@material-ui/icons/Favorite'; +import React, { Component } from "react"; +import "./CardsAnimation.css"; +import { Container } from "react-grid-system"; +import Card from "@material-ui/core/Card"; +import CardContent from "@material-ui/core/CardContent"; +import CardActions from "@material-ui/core/CardActions"; +import IconButton from "@material-ui/core/IconButton"; +import Typography from "@material-ui/core/Typography"; +import FavoriteIcon from "@material-ui/icons/Favorite"; import animacao from "../img/laranja/ANIMACAO_SIMULACAO.jpg"; import apresentacao from "../img/laranja/APRESENTACAO.jpg"; import aplicativo from "../img/laranja/APP.jpg"; @@ -39,104 +39,159 @@ import outros from "../img/laranja/OUTROS.jpg"; import software from "../img/laranja/SOFTWARE.jpg"; import texto from "../img/laranja/TEXTO.jpg"; import video from "../img/laranja/VIDEO.jpg"; -import Rating from '@material-ui/lab/Rating'; -import StarBorderIcon from '@material-ui/icons/StarBorder'; -import {apiDomain} from '../env'; -import AddIcon from '@material-ui/icons/CreateNewFolder'; -import Options from './CardOptions' -import Video from '@material-ui/icons/OndemandVideo'; +import Rating from "@material-ui/lab/Rating"; +import StarBorderIcon from "@material-ui/icons/StarBorder"; +import { apiDomain } from "../env"; +import AddIcon from "@material-ui/icons/CreateNewFolder"; +import Options from "./CardOptions"; +import Video from "@material-ui/icons/OndemandVideo"; import noAvatar from "../img/default_profile.png"; -const types = [{label: "Animação", thumb: animacao}, {label: "Apresentação", thumb: apresentacao}, -{label: "Aplicativo" , thumb: aplicativo}, {label: "Ãudio", thumb: audio}, {label: "Vazio", thumb: vazio}, {label: "Imagem", thumb: imagem}, {label: "Gráfico", thumb: grafico}, {label: "Jogo", thumb: jogo}, {label: "Livro", thumb: livro}, {label:"Livro digital", thumb: livro}, {label: "Mapa", thumb: mapa}, {label: "Outros", thumb: outros}, {label: "Software Educacional", thumb:software}, {label: "Software", thumb:software}, {label: "Texto", thumb:texto}, {label: "VÃdeo", thumb:video}] -const slideStyle={ +const types = [ + { label: "Animação", thumb: animacao }, + { label: "Apresentação", thumb: apresentacao }, + { label: "Aplicativo", thumb: aplicativo }, + { label: "Ãudio", thumb: audio }, + { label: "Vazio", thumb: vazio }, + { label: "Imagem", thumb: imagem }, + { label: "Gráfico", thumb: grafico }, + { label: "Jogo", thumb: jogo }, + { label: "Livro", thumb: livro }, + { label: "Livro digital", thumb: livro }, + { label: "Mapa", thumb: mapa }, + { label: "Outros", thumb: outros }, + { label: "Software Educacional", thumb: software }, + { label: "Software", thumb: software }, + { label: "Texto", thumb: texto }, + { label: "VÃdeo", thumb: video } +]; +const slideStyle = { height: "50px", width: "50px", backgroundColor: "white", - borderRadius: "50%", + borderRadius: "50%" }; -const publisherStyle={ +const publisherStyle = { color: "white", paddinLeft: "30px", - fontSize: "15px", + fontSize: "15px" }; class ResourceCard extends Component { constructor(props) { super(props); - this.state={ + this.state = { thumbnail: null, userStyle: "animatiOff", - userAvatar: null, + userAvatar: null }; - } renderType(type){ - if (!this.state.thumbnail && !this.props.thumbnail ) { + if (!this.state.thumbnail) { + if(!this.props.thumbnail) { + const aux = types.find(function(element){return element.label === type}); + this.setState({thumbnail: aux.thumb}); + } + else{ + this.setState({thumbnail: `${apiDomain}` + this.props.thumbnail}); + } + } + {/*if (!this.state.thumbnail && !this.props.thumbnail ) { var aux = types.find(function(element){ return element.label === type}); this.setState({thumbnail: aux.thumb}); } if (!this.state.thumbnail && this.props.thumbnail ) { this.setState({thumbnail: apiDomain + this.props.thumbnail}); - } + }*/} } - onHover(){ - this.setState({userStyle: "animatiOn"}); + onHover() { + this.setState({ userStyle: "animatiOn" }); } - onIddle(){ - this.setState({userStyle: "animatiOff"}) + onIddle() { + this.setState({ userStyle: "animatiOff" }); } - defAvatar(){ - if (!this.state.userAvatar && (!this.props.avatar.length)){ - this.setState({userAvatar: noAvatar}); + defAvatar() { + if (!this.state.userAvatar && !this.props.avatar.length) { + this.setState({ userAvatar: noAvatar }); } - if (!this.state.userAvatar && (this.props.avatar) ) { - this.setState({userAvatar:apiDomain+this.props.avatar}); + if (!this.state.userAvatar && this.props.avatar) { + this.setState({ userAvatar: apiDomain + this.props.avatar }); } } - render(){ - this.renderType(this.props.type); - this.defAvatar(); - return ( - <Card onMouseOver={this.onHover.bind(this)} onMouseOut={this.onIddle.bind(this)} > - <Container style={{padding:"0px", height:"175px", backgroundColor: "#ff7f00"}}> - <div className={this.state.userStyle}> - <img style={slideStyle} src={this.state.userAvatar} alt="Avatar"/> - <Typography style={publisherStyle}>Enviado por: <br/>{this.props.author}</Typography> - </div> - <img src={this.state.thumbnail} style={{height:"100%"}} alt="thumbnail do recurso"/> - </Container> - <CardContent style={{height: "60%", textAlign: "left", paddingBottom: "0px"}}> - <Typography variant="body2" color="textSecondary" component="p" style={{height:"45px", overflow: "hidden", fontSize: "0.8em"}}> - {this.props.name} - </Typography> - </CardContent> - <Container style={{textAlign: "left"}}> - - <Rating - name="customized-empty" - value={this.props.rating*10} - precision={0.5} - emptyIcon={<StarBorderIcon fontSize="inherit" />} - /> - </Container> - <CardActions style={{justifyContent: "space-between", padding: "0px"}}> - { this.props.type ==="VÃdeo" - ? <Video style={{color:"#ff7f00"}} /> - : <br/>} - <IconButton aria-label="Favoritar" size="small"> - <FavoriteIcon /> - </IconButton> - </CardActions> - <CardActions style={{borderTop:"1px solid #e5e5e5", justifyContent: "space-between"}}> - - <IconButton aria-label="Guardar" size="small"> - <AddIcon /> - </IconButton> - <Options/> - </CardActions> - </Card> - );} - } + render() { + this.renderType(this.props.type); + this.defAvatar(); + return ( + <Card + onMouseOver={this.onHover.bind(this)} + onMouseOut={this.onIddle.bind(this)} + > + <Container + style={{ + padding: "0px", + height: "175px", + backgroundColor: "#ff7f00" + }} + > + <div className={this.state.userStyle}> + <img style={slideStyle} src={this.state.userAvatar} alt="Avatar" /> + <Typography style={publisherStyle}> + Enviado por: <br /> + {this.props.author} + </Typography> + </div> + <img + src={this.state.thumbnail} + style={{ height: "100%" }} + alt="thumbnail do recurso" + /> + </Container> + <CardContent + style={{ height: "60%", textAlign: "left", paddingBottom: "0px" }} + > + <Typography + variant="body2" + color="textSecondary" + component="p" + style={{ height: "45px", overflow: "hidden", fontSize: "0.8em" }} + > + {this.props.name} + </Typography> + </CardContent> + <Container style={{ textAlign: "left" }}> + <Rating + name="customized-empty" + value={this.props.rating * 10} + precision={0.5} + emptyIcon={<StarBorderIcon fontSize="inherit" />} + /> + </Container> + <CardActions + style={{ justifyContent: "space-between", padding: "0px" }} + > + {this.props.type === "VÃdeo" ? ( + <Video style={{ color: "#ff7f00" }} /> + ) : ( + <br /> + )} + <IconButton aria-label="Favoritar" size="small"> + <FavoriteIcon /> + </IconButton> + </CardActions> + <CardActions + style={{ + borderTop: "1px solid #e5e5e5", + justifyContent: "space-between" + }} + > + <IconButton aria-label="Guardar" size="small"> + <AddIcon /> + </IconButton> + <Options /> + </CardActions> + </Card> + ); + } +} - export default ResourceCard; +export default ResourceCard; diff --git a/src/Components/ResourceCardFunction.js b/src/Components/ResourceCardFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..8ff31bd892ff7c08aaacbc4ca208b1b0f12d0917 --- /dev/null +++ b/src/Components/ResourceCardFunction.js @@ -0,0 +1,389 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react'; +import Card from '@material-ui/core/Card'; +import axios from 'axios' +import {apiDomain, apiUrl} from '../env'; +import ResourceCardOptions from './ResourceCardOptions' +import noAvatar from "../img/default_profile.png"; +import { makeStyles } from '@material-ui/core/styles'; +import Button from '@material-ui/core/Button'; +import styled from 'styled-components' +import animacao from "../img/laranja/ANIMACAO_SIMULACAO.jpg"; +import apresentacao from "../img/laranja/APRESENTACAO.jpg"; +import aplicativo from "../img/laranja/APP.jpg"; +import audio from "../img/laranja/AUDIO.jpg"; +import vazio from "../img/laranja/EMPTY.jpg"; +import imagem from "../img/laranja/IMAGEM.jpg"; +import grafico from "../img/laranja/INFOGRAFICO.jpg"; +import jogo from "../img/laranja/JOGO.jpg"; +import livro from "../img/laranja/LIVRO_DIGITAL.jpg"; +import mapa from "../img/laranja/MAPA.jpg"; +import outros from "../img/laranja/OUTROS.jpg"; +import software from "../img/laranja/SOFTWARE.jpg"; +import texto from "../img/laranja/TEXTO.jpg"; +import video from "../img/laranja/VIDEO.jpg"; +import Rating from '@material-ui/lab/Rating'; +import StarBorderIcon from '@material-ui/icons/StarBorder'; +import AddIcon from '@material-ui/icons/CreateNewFolder'; +import Video from '@material-ui/icons/OndemandVideo'; +import MoreIcon from '@material-ui/icons/More'; +import FavoriteIcon from '@material-ui/icons/Favorite'; +import ButtonGuardarColecao from './ButtonGuardarColecao.js' +import Slide from '@material-ui/core/Slide'; +import Grid from '@material-ui/core/Grid'; +import {Link} from 'react-router-dom'; +import {getDefaultThumbnail} from './HelperFunctions/getDefaultThumbnail' +import GetIconByName from './UploadPageComponents/GetIconByName' +import {getAxiosConfig} from './HelperFunctions/getAxiosConfig' + +const types = [{label: "Animação", thumb: animacao}, {label: "Apresentação", thumb: apresentacao}, +{label: "Aplicativo" , thumb: aplicativo}, {label: "Ãudio", thumb: audio}, {label: "Vazio", thumb: vazio}, {label: "Imagem", thumb: imagem}, {label: "Gráfico", thumb: grafico}, {label: "Jogo", thumb: jogo}, {label: "Livro", thumb: livro}, {label:"Livro digital", thumb: livro}, {label: "Mapa", thumb: mapa}, {label: "Outros", thumb: outros}, {label: "Software Educacional", thumb:software}, {label: "Software", thumb:software}, {label: "Texto", thumb:texto}, {label: "VÃdeo", thumb:video}] + +export default function ResourceCardFunction (props) { + const [thumbnail, setThumbnail] = useState(null) + const [label, setLabel] = useState(props.type) + const [userAvatar, setUserAvatar] = useState(noAvatar) + const [slideIn, setSlide] = useState(false) + const controlSlide = () => {setSlide(!slideIn)} + const [liked, toggleLiked] = useState(props.liked) + + useEffect( () => { + //decide which thumbnail to use + if (props.thumbnail) { + setThumbnail(`${apiDomain}` + props.thumbnail) + } + else { + setThumbnail(getDefaultThumbnail(label)) + } + + if (props.avatar) { + setUserAvatar(`${apiDomain}` + props.avatar) + } + + }, []) + + const handleLike = () => { + let payload = {} + let config = getAxiosConfig() + + axios.put( (`${apiUrl}/learning_objects/` + props.id + '/like'),payload, config + ).then( (response) => {toggleLiked(!liked)}, (error) => {console.log(error)}) + } + + const SlideAnimationContent = () => { + return ( + <SlideContentDiv> + <div style={{display:"flex", flex:"1"}}>{/*marginBottom:10px*/} + <AvatarDiv> + <img className="img" src={userAvatar} alt="user avatar"/> + </AvatarDiv> + <EnviadoPor> + Enviado por: + <br/> + <p>{props.author}</p> + </EnviadoPor> + </div> + <TagContainer> + <Grid container spacing={1} justify='safe' style={{height : "inherit"}}> + { + props.tags.map( (tag) => + <Grid item key={tag.id}> + <span key={tag.id}>{tag.name}</span> + </Grid> + ) + } + </Grid> + </TagContainer> + </SlideContentDiv> + ) + } + + return ( + <StyledCard> + <CardDiv> + <CardReaDiv> + <Header onMouseEnter={controlSlide} onMouseLeave={controlSlide}> + { + props.published && + <Slide direction="right" in={slideIn}> + <Link to={props.href} className="text"> + {SlideAnimationContent()} + </Link> + </Slide> + } + <Link to={props.href}> {/*add link to learningObject*/} + <img className="img-cover" src={thumbnail} alt="learning object thumbnail"/> + </Link> + </Header> + + <Description> + <Link to={props.href} className="text"> {/*add link to learningObject*/} + <span> + {props.title} + </span> + </Link> + + { + props.published && + <Rating + name="customized-empty" + value={props.rating} + precision={0.5} + style={{color:"#666"}} + emptyIcon={<StarBorderIcon fontSize="inherit" />} + /> + } + + <Footer> + <Type> + {GetIconByName(label)} + <span>{label}</span> + </Type> + + { + props.published && + <LikeCounter> + <span>{props.likeCount}</span> + <ButtonNoWidth onClick={handleLike}> + <FavoriteIcon style={{color : liked ? "red" : "#666" }}/> + </ButtonNoWidth> + </LikeCounter> + } + </Footer> + </Description> + </CardReaDiv> + + { + props.published && + <CardReaFooter> + <div style={{display : "flex", height : "100%"}}> + <ButtonGuardarColecao thumb={props.thumbnail} title={props.title} recursoId={props.id} + /> + </div> + <ResourceCardOptions + learningObjectId={props.id} + downloadableLink = {props.downloadableLink} + thumb={props.thumbnail} + title={props.title} + /> + </CardReaFooter> + } + </CardDiv> + </StyledCard> + ) +} +/*---------- USED IN SLIDE DIV ONLY -----------*/ +export const TagContainer = styled.div` + display : flex; + flex-direction : row; + width : 100%; + overflow : hidden; + flex : 2; + height : 120px; + + span { + background-color : #fff; + height : 20px; + overflow : hidden; + margin : 2px; + padding : 3px 8px; + border-radius : 10px; + color : #666; + font-size : 11px; + } +` + +export const EnviadoPor = styled.div` + display : inline-block; + padding-left : 10px; + overflow : hidden; + color : #fff; + padding-right : 1em; + + p { + text-overflow : ellipsis; + overflow : hidden; + white-space : nowrap; + margin : 0; + } +` +const AvatarDiv = styled.div` + vertical-align : middle; + border : 0; + + img { + height : 40px; + width : 40px; + border : 0; + vertical-align : middle; + border-radius : 50%; + } +` + +const SlideContentDiv = styled.div` + background-color : #ff9226; + padding : 10px; + width : 100%; + height : 100%; + position : absolute; + display : flex; + flex-direction : column; +` +/*--------------------------------------------*/ + +const CardReaFooter = styled.div` + height : 60px; + display : flex; + justify-content : space-between; + border-top : 1px solid #e5e5e5; + border-bottom : 1px solid #e5e5e5; + align-items : center; + padding : 0 15px 0 15px; +` + +export const ButtonNoWidth = styled(Button)` + max-width : 24px !important; + width : 24px !important; + min-width : 24px !important; + max-height : 24px !important; + padding : 0 !important; + background-color : #fff !important; + color : #a5a5a5 !important; + border : 0 !important; + + .MuiButton-root { + width : 24px !important; + min-width : 12px !important; + } + + .MuiSvgIcon-root { + padding-right : 0 !important; + } + + .MuiButton-label { + padding-left : 4px !important; + } +` + +export const LikeCounter = styled.div` + font-size : 14px; + + .btn-like { + padding : 0 !important; + background-color : #fff !important; + border : 0 !important; + min-width : min-content; + } + + .MuiSvgIcon-root { + font-size : 21px; + vertical-align : middle; + padding-right : .4em; + } +` + +const Type = styled.div` + line-height : 1; + + .icon { + height : 27px; + width : 27px; + padding-right : .4em; + vertical-align : middle + align-self : center; + + .st1 { + fill : #ff7f00; + } + } +` + +export const Footer = styled.div` + display : flex; + flex-direction : row; + justify-content : space-between; +` + +const Description = styled.div` + display : flex; + flex : 1; + background-color : #fff; + flex-direction : column; + justify-content: space-between; + padding : 15px; + + a { + text-decoration : none !important; + color : inherit; + } + + .title { + text-overflow : ellipsis; + overflow : hidden; + margin-bottom : 10px; + font-size : 1.2em; + line-height : 1.1; + max-height : 46px; + color : #666; + } +` + +export const Header = styled.div` + display : flex; + flex : 2; + position : relative; + overflow : hidden; +` + +export const CardReaDiv = styled.div` + display : flex; + flex-direction : column; + height : 320px; + width : 272.5px; + margin : 0 auto; + + .img-cover { + background-color : #e5e5e5; + height : 100%; + object-fit : cover; + overflow : hidden; + display : block; + background-position : center; + background-size : cover; + width : 100%; + } +` + +export const CardDiv = styled.div` + background-color : #fff; + text-align : start; + font-family : 'Roboto', sans serif; + color : #666; +` + +export const StyledCard = styled(Card)` + width : 272.5px; + max-height : 380px; + margin-top : 10px; + margin-bottom : 10px; + max-width : 345px; + border-radius : 0; + box-shadow : 0 0 5px 0 rgba(0,0,0,.25); +` diff --git a/src/Components/ResourceCardOptions.js b/src/Components/ResourceCardOptions.js new file mode 100644 index 0000000000000000000000000000000000000000..53d401f0e2659ccd84189205998aaf0901ab7218 --- /dev/null +++ b/src/Components/ResourceCardOptions.js @@ -0,0 +1,187 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react'; +import {Store} from '../Store.js' +import styled from 'styled-components' +import Button from '@material-ui/core/Button'; +import Menu from '@material-ui/core/Menu'; +import ListItemIcon from '@material-ui/core/ListItemIcon'; +import MenuItem from '@material-ui/core/MenuItem'; +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import OpenIcon from '@material-ui/icons/OpenInNew'; +import ReportIcon from '@material-ui/icons/Error'; +import axios from 'axios' +import {apiUrl} from '../env'; +import {getAxiosConfig} from './HelperFunctions/getAxiosConfig' +import ReportModal from './ReportModal.js' +import {Link} from 'react-router-dom' +import DownloadIcon from '@material-ui/icons/CloudDownload'; +import ShareIcon from '@material-ui/icons/Share'; +import AddIcon from '@material-ui/icons/CreateNewFolder'; +import GuardarModal from './GuardarModal' +import ShareModal from './ShareModal' +import SnackbarComponent from './SnackbarComponent' + +export default function ResourceCardOptions (props) { + const {state} = useContext(Store) + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + + const [reportModal, toggleReportModal] = useState(false) + const handleModalReportar = (value) => { + toggleReportModal(value) + {/*if (state.currentUser.id) { + toggleReportModal(!reportModal) + } + else { + toggleLoginModal(true) + }*/} + } + + const [saveToCol, toggleSave] = useState(false) + const handleGuardar = () => { + if(state.currentUser.id === '') { + console.log('abrir login modal'); + } + else { + toggleSave(true); + } + handleClose() + } + + const enableDownload = () => { + const url = props.downloadableLink + window.open(url, '_blank'); + toggleSnackbar(true) + } + + const [shareOpen, toggleShare] = useState(false) + + const handleShare = () => { + if(state.currentUser.id === '') { + console.log('abrir login modal'); + } + else { + toggleShare(true); + } + handleClose() + } + const getShareablePageLink = () => { + return (window.location.href + "/recurso/" + props.learningObjectId) + } + + const [snackbarOpen, toggleSnackbar] = useState(false) + + return ( + <React.Fragment> + <ReportModal open={reportModal} handleClose={() => handleModalReportar(false)} + form="recurso" complainableId={props.learningObjectId} + complainableType={"LearningObject"} + {...props} + /> + <GuardarModal open={saveToCol} handleClose={() => {toggleSave(false)}} + thumb={props.thumb} title={props.title} recursoId={props.learningObjectId} + /> + <ShareModal open={shareOpen} handleClose={() => {toggleShare(false)}} + thumb={props.thumb} title={props.title} link={getShareablePageLink()} + /> + <SnackbarComponent snackbarOpen={snackbarOpen} severity={"info"} handleClose={() => {toggleSnackbar(false)}} text={"Baixando o Recurso... Lembre-se de relatar sua experiência após o uso do Recurso!"} + /> + <div style={{fontSize: "12px", display : "flex", flexDirection : "column", justifyContent : "center"}}> + <ButtonNoWidth aria-controls="simple-menu" aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> + <MoreVertIcon style={{color : "#666"}}/> + </ButtonNoWidth> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <StyledMenuItem onClick={handleClose}> + <Link to={"/recurso/" + props.learningObjectId}> + <ListItemIcon><OpenIcon /></ListItemIcon>Abrir + </Link> + </StyledMenuItem> + + { + props.downloadableLink && + <StyledMenuItem onClick={() => {enableDownload(); handleClose()}}> + <ListItemIcon><DownloadIcon /></ListItemIcon>Baixar + </StyledMenuItem> + } + + <StyledMenuItem onClick={handleShare}> + <ListItemIcon><ShareIcon /></ListItemIcon>Compartilhar + </StyledMenuItem> + + <StyledMenuItem onClick={handleGuardar}> + <ListItemIcon><AddIcon /></ListItemIcon>Guardar + </StyledMenuItem> + + <StyledMenuItem onClick={() => {handleModalReportar(true); handleClose()}}> + <ListItemIcon><ReportIcon /></ListItemIcon>Reportar + </StyledMenuItem> + </Menu> + </div> + </React.Fragment> + ); +} + +const ButtonNoWidth = styled(Button)` + width : 24px !important; + min-width : 24px !important; + max-height : 24px !important; + padding : 0 !important; + background-color : #fff !important; + color : #a5a5a5 !important; + border : 0 !important; + + .MuiButton-root { + width : 24px !important; + min-width : 12px !important; + } + + .MuiSvgIcon-root { + padding-right : 0 !important; + vertical-align : middle; + } + + .MuiButton-label { + padding-left : 4px !important; + } + ` + +const StyledMenuItem = styled(MenuItem)` + color : #666 !important; + .MuiSvgIcon-root { + vertical-align : middle !important; + } + a { + text-decoration : none !important; + color : #666 !important; + } +` diff --git a/src/Components/ResourcePageComponents/CommentForm.js b/src/Components/ResourcePageComponents/CommentForm.js new file mode 100644 index 0000000000000000000000000000000000000000..efbf0a0349ad1184ac616bd738faffa5abfba7a0 --- /dev/null +++ b/src/Components/ResourcePageComponents/CommentForm.js @@ -0,0 +1,258 @@ +import React, {useState} from 'react' +import styled from 'styled-components' +import Rating from '@material-ui/lab/Rating'; +import StarBorderIcon from '@material-ui/icons/StarBorder'; +import StarIcon from '@material-ui/icons/Star'; +import TextField from "@material-ui/core/TextField"; +import { Button } from '@material-ui/core'; +import axios from 'axios' +import {apiUrl} from '../../env'; +import EditIcon from '@material-ui/icons/Edit'; +import Grid from '@material-ui/core/Grid'; + +export default function CommentForm (props) { + const [rating, setRating] = useState({ + error : true, + value : 0 + }) + const [comment, setComment] = useState({ + error : false, + value : '' + }) + + const handleChange = (e) => { + const userInput = e.target.value + const flag = (userInput.length === 0 ? true : false); + setComment({...comment, error : flag, value : userInput}) + } + + const [attemptedSubmit, setAttempt] = useState(false) + + const handleSubmit = (e) => { + e.preventDefault() + const finalRating = rating + const finalComment = comment + + + if (!(finalRating.error || finalComment.error)) { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + let payload = { + "review" : { + "description" : finalComment.value, + "review_ratings_attributes" : [ + { + "rating_id" : 1, + "value" : finalRating.value + } + ] + } + } + let type = props.recurso ? 'learning_objects/' : 'collections/' + console.log(payload) + axios.post( (`${apiUrl}/` + type + props.recursoId + '/reviews'), payload, config + ).then((response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response.data); + props.handleSnackbar(1); + props.rerenderCallback()}, + (error) => {console.log(error)}) + } + else { + setAttempt(true) + } + } + + let windowWidth = window.innerWidth + + return ( + <StyledForm onSubmit={handleSubmit}> + <label htmlFor="avaliacao-estrelas" className="start-label"> + {props.recurso ? "Este recurso foi útil?*" : "Esta coleção foi útil?*"} + </label> + <div className="stars-container"> + <Rating + name="avaliacao-estrelas" + value={rating.value} + precision={0.5} + style={{color:"#ff9226"}} + onChange = {(e, newValue) => {setRating({...rating, error : newValue === null ? true : false, value : newValue})}} + emptyIcon={<StarIcon fontSize="inherit" style={{color : "#666"}} />} + getLabelText={(value) => {return(value + ' Estrela' + (value !== 1 ? 's' : ''))}} + /> + </div> + <div className="star-alert" style={attemptedSubmit ? {visibility : "visible"} : {visibility : "hidden" }}>{props.recurso ? "Avalie se o recurso foi útil." : "Avalie se esta coleção foi útil."}</div> + + <Grid container> + { + windowWidth > 990 ? + ( + <> + <Grid item xs={10}> + <StyledTextField + colecao={!props.recurso} + value={comment.value} + multiline + rows="5" + error={comment.error} + label={props.recurso ? "Escreva aqui a sua experiência com este Recurso" : "Escreva aqui a sua experiência com esta Coleção"} + onChange={e => handleChange(e)} + required={true} + help = {comment.error ? (props.recurso ? "Escreva aqui a sua experiência com este Recurso" : "Escreva aqui a sua experiência com esta Coleção") : ''} + /> + </Grid> + <Grid item xs={2}> + <div style={{height : "100%", display : "flex", flexDirection : "column", justifyContent : "flex-end"}}> + { + props.recurso ? + ( + <OrangeButton type="submit">Publicar</OrangeButton> + ) + : + ( + <PurpleButton type="submit"><EditIcon/>Enviar</PurpleButton> + ) + } + </div> + </Grid> + + <div className="campos-obrigatorios">* Campos obrigatórios.</div> + </> + ) + : + ( + <> + <Grid item xs={12}> + <StyledTextField + colecao={!props.recurso} + value={comment.value} + multiline + rows="5" + error={comment.error} + label={props.recurso ? "Escreva aqui a sua experiência com este Recurso" : "Escreva aqui a sua experiência com esta Coleção"} + onChange={e => handleChange(e)} + required={true} + help = {comment.error ? (props.recurso ? "Escreva aqui a sua experiência com este Recurso" : "Escreva aqui a sua experiência com esta Coleção") : ''} + /> + </Grid> + <Grid item xs={12}> + <div style={{paddingTop : "18px", display : "flex", justifyContent : "space-between"}}> + <div className="campos-obrigatorios">* Campos obrigatórios.</div> + <div style={{width : "40%"}}> + { + props.recurso ? + ( + <OrangeButton type="submit">Publicar</OrangeButton> + ) + : + ( + <PurpleButton type="submit"><EditIcon/>Enviar</PurpleButton> + ) + } + </div> + </div> + </Grid> + </> + ) + } + </Grid > + </StyledForm> + ) +} + +const PurpleButton = styled(Button)` + background-color : #673ab7 !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + font-weight : 600 !important; + color : #fff !important; + .icon { + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + font-size : 24px !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + } +` + +const OrangeButton = styled(Button)` + color : rgba(255,255,255,0.87) !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + font-weight : 600 !important; + background-color : #ff7f00 !important; +` + +const StyledTextField = styled(TextField)` + .MuiInputBase-root { + margin-bottom : 5px; + } + + label.Mui-focused { + color : ${props => props.colecao ? "#673ab7" : "rgb(255,127,0)"} + } + + .MuiInput-underline::after { + border-bottom: ${props => props.colecao ? "2px solid #673ab7" : "2px solid rgb(255,127,0)" }; + } + + label.Mui-focused.Mui-error { + color : red; + } + + width: 95%; +` + +const StyledForm = styled.form` + display : flex; + flex-direction : column; + text-align : start; + @media screen and (max-width : 990px) { + padding-left : 15px; + } + + .start-label { + font-size : 14px; + max-width : 100%; + display : inline-block; + margin-bottom : 0; + color : #a5a5a5; + font-weight : 400; + } + + .stars-container { + padding-top : 10px; + padding-bottom : 5px; + display : flex; + flex-direction : row; + align-self : flex-start; + margin-bottom : 5px; + color : #a5a5a5; + } + + .star-alert { + color : #666; + text-align : start; + } + + .campos-obrigatorios { + padding-top : 18px; + font-weight : 400; + font-size : 12px; + color :#a5a5a5; + } +` diff --git a/src/Components/ResourcePageComponents/CommentsArea.js b/src/Components/ResourcePageComponents/CommentsArea.js new file mode 100644 index 0000000000000000000000000000000000000000..924a690434497aa0f7e133ff4ddec765310d5566 --- /dev/null +++ b/src/Components/ResourcePageComponents/CommentsArea.js @@ -0,0 +1,214 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useContext, useEffect} from 'react' +import {Store} from '../../Store.js' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; +import { Button } from '@material-ui/core'; +import ExitToAppIcon from '@material-ui/icons/ExitToApp'; +import Comentarios from '../../img/comentarios.png' +import {apiUrl, apiDomain} from '../../env'; +import CommentForm from './CommentForm.js' +import axios from 'axios' +import Comment from '../Comment.js' + +export default function CommentsArea (props) { + const {state} = useContext(Store) + const [comentarios, setComentarios] = useState([]) + const [gambiarra, setState] = useState(0) + const forceUpdate = () => {setState(gambiarra + 1)} + + useEffect( () => { + axios.get( (`${apiUrl}/learning_objects/` + props.recursoId + '/reviews') + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + setComentarios(response.data.sort((a, b) => a.updated_at > b.updated_at ? -1 : 1)) + }, (error) => {console.log(error)}) + }, [gambiarra]) + + return ( + <Grid container spacing={2} style={{padding : "10px"}}> + { + (state.currentUser.id !== '') ? + ( + <Grid item xs={12} > + <GrayContainer> + <h3>Conte sua experiência com o Recurso</h3> + <Grid container style={{paddingTop : "20px"}}> + <Grid item xs={2} style={{paddingLeft : "15px", paddingRight : "15px"}}> + <img src={apiDomain + state.currentUser.userAvatar} className="minha-imagem" alt="user avatar"/> + </Grid> + <Grid item xs={10}> + <CommentForm + recursoId={props.recursoId} + handleSnackbar={props.handleSnackbar} + rerenderCallback={forceUpdate} + recurso={props.recurso} + /> + </Grid> + </Grid> + </GrayContainer> + </Grid> + ) + : + ( + <Grid item xs={12}> + <LogInToComment> + <span className="span-laranja">Você precisa entrar para comentar</span> + {/*adicionar funcionalidade ao botao de entrar*/} + <Button style={{textTransform : "uppercase", color : "#666", fontWeight : "700"}}> + <ExitToAppIcon/>ENTRAR + </Button> + </LogInToComment> + </Grid> + ) + } + { + comentarios.length !== 0 ? + ( + <ComentariosBox> + <h3>{comentarios.length} {comentarios.length != 1 ? 'Relatos' : 'Relato'} sobre o uso do Recurso</h3> + { + comentarios.map( comentario => + <div className="comentario-template" key={comentario.id}> + <Comment + authorID={comentario.user ? comentario.user.id : null} + authorAvatar={comentario.user ? comentario.user.avatar : null} + authorName={comentario.user ? comentario.user.name : null} + name={comentario.name} + rating={comentario.rating_average} + reviewRatings = {comentario.review_ratings} + description={comentario.description} + createdAt={comentario.created_at} + recurso={true} + reviewID={comentario.id} + objectID={props.recursoId} + rerenderCallback={forceUpdate} + handleSnackbar={props.handleSnackbar} + /> + </div> + ) + } + </ComentariosBox> + ) + : + ( + <Grid item xs={12}> + <LogInToComment> + <img src={Comentarios} /> + <span className="span-laranja">Compartilhe sua experiência com a Rede!</span> + <AoRelatar> + Ao relatar sua experiência de uso do Recurso você estará auxiliando professores de todo paÃs. + </AoRelatar> + </LogInToComment> + </Grid> + ) + } + </Grid> + ) +} + + +const ComentariosBox = styled.div` + display : flex; + flex-direction : column; + padding : 20px; + width : 100%; + + h3 { + font-family: 'Roboto Light','Roboto Regular',Roboto; + font-weight: 300; + font-style: normal; + color:#666; + font-size: 1.857em; + margin: 15px 2%; + text-align : flex-start; + } + + .comentario-template { + padding : 20px 0; + border-bottom : 1px solid #f4f4f4; + } +` +const AoRelatar = styled.div` + width : 70%; + font-size : 20px; + font-weight : 300; + text-align : center; + padding-bottom : 20px; +` + +const LogInToComment = styled.div` + display : flex; + flex-direction : column; + text-align : center; + padding : 20px; + align-items : center; + + .span-laranja { + font-size : 24px; + font-weight : 700; + padding-bottom : 5px; + color : #ff7f00; + } + + img { + object-fit : contain !important; + background-color : transparent !important; + } +` + +const GrayContainer = styled.div` + background-color : #fafafa; + font-weight : 400; + display : flex; + flex-direction : column; + justify-content : space-between; + font-size : 14px; + padding-bottom : 20px; + @media screen and (min-width : 990px) { + padding-right : 15px; + padding-left : 15px; + } + + h3 { + font-family : 'Roboto Light','Roboto Regular',Roboto; + font-weight: 300; + font-style: normal; + color: #666; + font-size: 1.857em; + margin-bottom : 10px; + margin-left : 2%; + margin-top : 2%; + } + + .minha-imagem { + height: 60px; + width: 60px; + border-radius: 50%; + margin-left: 2%; + margin-top: 5%; + } + img { + vertical-align :middle; + } +` diff --git a/src/Components/ResourcePageComponents/Footer.js b/src/Components/ResourcePageComponents/Footer.js new file mode 100644 index 0000000000000000000000000000000000000000..ea2253c4718394b629ae4603ce7d1645d3142d43 --- /dev/null +++ b/src/Components/ResourcePageComponents/Footer.js @@ -0,0 +1,336 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useContext} from 'react' +import {Store} from '../../Store.js' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; +import { Button } from '@material-ui/core'; +import ErrorIcon from '@material-ui/icons/Error'; +import ShareIcon from '@material-ui/icons/Share'; +import FolderIcon from '@material-ui/icons/Folder'; +import GetAppIcon from '@material-ui/icons/GetApp'; +import CallMadeIcon from '@material-ui/icons/CallMade'; +import {Link} from 'react-router-dom' +import ReportModal from '../ReportModal.js' +import ReportRecursoForm from '../ReportRecursoForm.js' +import ShareModal from '../ShareModal.js' +import GuardarModal from '../GuardarModal.js' +import RedirectModal from '../RedirectModal' +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import Menu from '@material-ui/core/Menu'; +import MenuItem from '@material-ui/core/MenuItem'; + +function ReportButton (props) { + return ( + !props.complained ? + ( + <ButtonGrey onClick={props.userLoggedIn ? props.toggleReport : props.openLogin}> + <span className="button-text"> + <ErrorIcon className="icon"/> Reportar abuso ou erro + </span> + </ButtonGrey> + ) + : + ( + <ButtonGrey> + <span className="button-text-report"> + <ErrorIcon className="icon"/> Você já reportou este recurso + </span> + </ButtonGrey> + ) + ) +} + +function DownloadButton (props) { + return ( + props.downloadableLink ? + ( + <ButtonOrange onClick={props.enableDownload}> + <span className="text"> + <GetAppIcon className="icon"/> Baixar Recurso + </span> + </ButtonOrange> + ) + : + props.link ? + ( + <ButtonOrange onClick={props.toggleRedirect}> + <span className="text"> + <CallMadeIcon className="icon"/> Abrir Recurso + </span> + </ButtonOrange> + ) + : + ( + <React.Fragment/> + ) + ) +} + +export default function Footer (props) { + const {state} = useContext(Store) + const enableDownload = () => { + const url = props.downloadableLink + window.open(url, '_blank'); + props.handleSnackbar(0) + } + let windowWidth = window.innerWidth + const [reportOpen, toggleReport] = useState(false) + const [shareOpen, toggleShare] = useState(false) + const [saveToCol, toggleSave] = useState(false) + const [redirectOpen, toggleRedirect] = useState(false) + + const [anchorEl, setAnchorEl] = React.useState(null); + + function handleClick(event) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + + return ( + <React.Fragment> + {/*-------------------------------MODALS---------------------------------------*/} + <ReportModal open={reportOpen} handleClose={() => {toggleReport(false)}} + form="recurso" + complainableId={props.recursoId} + complainableType={"LearningObject"} + /> + <ShareModal open={shareOpen} handleClose={() => {toggleShare(false)}} + thumb={props.thumb} title={props.title} link={props.currPageLink} + /> + + <GuardarModal open={saveToCol} handleClose={() => {toggleSave(false)}} + thumb={props.thumb} title={props.title} recursoId={props.recursoId} + /> + <RedirectModal open={redirectOpen} handleClose={() => {toggleRedirect(false)}} + link={props.link} + /> + {/*----------------------------------------------------------------------------*/} + + {/*-----------------------------BUTTONS----------------------------------------*/} + <OpcoesDiv> + <StyledGrid container> + { + windowWidth > 990 ? + ( + <React.Fragment> + {/*Botao Reportar*/} + <Grid item xs={3}> + <ReportButton + userLoggedIn={state.currentUser.id === '' ? false : true} + toggleReport={() => {toggleReport(true)}} + openLogin={() => console.log('abrir login modal')} + complained={props.complained} + /> + </Grid> + + {/*Botao Compartilhar*/} + <Grid item xs={3}> + <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleShare(true)}> + <span className="button-text"> + <ShareIcon className="icon"/> Compartilhar + </span> + </ButtonGrey> + </Grid> + + {/*Botao Guardar*/} + <Grid item xs={3}> + <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleSave(true)}> + <span className="button-text"> + <FolderIcon className="icon"/>Guardar + </span> + </ButtonGrey> + </Grid> + + <Grid item xs={3} style={{justifyContent : "right !important"}}> + <DownloadButton + downloadableLink={props.downloadableLink} + link={props.link} + enableDownload={enableDownload} + toggleRedirect={() => {toggleRedirect(true)}} + /> + </Grid> + </React.Fragment> + ) + : + ( + <React.Fragment> + {/*Botao Guardar*/} + <Grid item xs={4}> + <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleSave(true)}> + <span className="button-text"> + <FolderIcon className="icon"/>Guardar + </span> + </ButtonGrey> + </Grid> + + <Grid item xs={7}> + <DownloadButton + downloadableLink={props.downloadableLink} + link={props.link} + enableDownload={enableDownload} + toggleRedirect={() => {toggleRedirect(true)}} + /> + </Grid> + + <Grid item xs={1}> + <Button aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}> + <MoreVertIcon/> + </Button> + <Menu + id="simple-menu" + anchorEl={anchorEl} + keepMounted + open={Boolean(anchorEl)} + onClose={handleClose} + > + <MenuItem> + <ReportButton + userLoggedIn={state.currentUser.id === '' ? false : true} + toggleReport={() => {toggleReport(true)}} + openLogin={() => console.log('abrir login modal')} + complained={props.complained} + /> + </MenuItem> + <MenuItem> + <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleShare(true)}> + <span className="button-text"> + <ShareIcon className="icon"/> Compartilhar + </span> + </ButtonGrey> + </MenuItem> + </Menu> + </Grid> + </React.Fragment> + ) + } + + + </StyledGrid> + </OpcoesDiv> + </React.Fragment> + ) +} + +const OpcoesDiv = styled.div` + display : flex; + align-items : center; + height : 65px; + background-color : #fafafa; +` + +const StyledGrid = styled(Grid)` + @media screen and (min-width: 990px) { + padding-left : 15px !important; + } + + .MuiGrid-item { + padding-right : 15px; + padding-left : 15px; + display : flex; + justify-content : center; + } +` + +const ButtonGrey = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + background-color : transparent !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + + .icon { + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + font-size : 24px !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + color : inherit !important; + } + + .button-text { + cursor : pointer; + line-height : 36px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + } + .button-text-report { + cursor : pointer; + line-height : 36px; + text-align : center; + color : red !important; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + } +` + +const ButtonOrange = styled(Button)` + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + background-color : #ff7f00 !important; + color : #fff !important; + text-decoration : none !important; + text-transform : uppercase !important; + outline : none !important; + text-align : center !important; + max-height : 36px; + margin-top : 5px !important; + + .icon { + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + font-size : 24px !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + } + + .text { + font-size : 14px; + font-weight : 600; + } +` diff --git a/src/Components/ResourcePageComponents/Sobre.js b/src/Components/ResourcePageComponents/Sobre.js new file mode 100644 index 0000000000000000000000000000000000000000..1b4bfa627f4d5d8d4b8b2c612c607845c706b4c7 --- /dev/null +++ b/src/Components/ResourcePageComponents/Sobre.js @@ -0,0 +1,403 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState, useEffect} from 'react' +import {Store} from '../../Store' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; +import {Link} from 'react-router-dom' +import {NoIcon} from '../ContactButtons/FollowButton.js' +import MoreVertIcon from '@material-ui/icons/MoreVert'; +import Collapse from '@material-ui/core/Collapse'; +import SdCardIcon from '@material-ui/icons/SdCard'; +import TranslateIcon from '@material-ui/icons/Translate'; +import InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import ExpandLessIcon from '@material-ui/icons/ExpandLess'; +import DateRangeIcon from '@material-ui/icons/DateRange'; +import UpdateIcon from '@material-ui/icons/Update'; +import AssignmentIcon from '@material-ui/icons/Assignment'; +import License from '../../img/cc_license.png' +import ContactCardOptions from '../ContactCardOptions.js' + +function AdditionalInfoItem (props) { + return ( + <span className="meta-objeto"> + {props.icon} + <span>{props.label}</span> + {props.value} + </span> + ) +} + +export default function Sobre (props) { + const {state} = useContext(Store) + + const [collapsed, setCollapsed] = useState(false) + const toggleCollapsed = () => {setCollapsed(!collapsed)}; + + var moment = require('moment') + + const [additionalInfo, setAdditionalInfo] = useState() + + useEffect(() => { + let aux = [] + + if (props.attachments && props.attachments[0]){ + aux.push(<AdditionalInfoItem + icon={<SdCardIcon/>} + label={'Tamanho: '} + value={(props.attachments[0].size / 1000000).toFixed(2) + ' Mb'} + key={props.attachments[0].id} + />) + } + + if(props.language){ + props.language.map( (lang) => + aux.push(<AdditionalInfoItem + icon={<TranslateIcon/>} + label={'Idioma: '} + value={lang.name} + key={lang.id} + /> + )) + } + + if (props.mimeType){ + aux.push(<AdditionalInfoItem + icon={<InsertDriveFileIcon/>} + label={'Formato: '} + value={props.mimeType} + key={props.mimeType} + />) + } + if (props.createdAt) { + aux.push(<AdditionalInfoItem + icon={<DateRangeIcon/>} + label={'Data de Envio: '} + value={moment(props.createdAt).format("DD/MM/YYYY")} + key={"dateCreatedAt"} + />) + } + if (props.updatedAt) { + aux.push(<AdditionalInfoItem + icon={<UpdateIcon/>} + label={'Modificado em: '} + value={moment(props.createdAt).format("DD/MM/YYYY")} + key={"dateUpdatedAt"} + />) + } + if (props.license) { + aux.push(<AdditionalInfoItem + icon={<AssignmentIcon/>} + label={'Tipo de licença: '} + value={ + <div className="license-link"> + <a href={props.license.url}> + <img src={License} alt="license"/> + </a> + <p> + {props.license.name} + </p> + </div> + } + key={props.license.id} + />) + } + else { + aux.push(<AdditionalInfoItem + icon={<AssignmentIcon/>} + label={'Tipo de licença: '} + value={ + <div className="license-link"> + <p> + Informação não disponÃvel. + </p> + </div> + } + key={"no-license"}/>) + } + setAdditionalInfo(aux) + }, []) + + let windowWidth = window.innerWidth + + return ( + <Grid container style={{paddingRight : "15px", paddingLeft : "15px"}}> + + <Grid item xs={windowWidth > 990 ? 9 : 12} style={{paddingRight : "15px"}}> + <Collapse in={collapsed} collapsedHeight={338}> + <SobreDiv> + <div className="titulo"> + Sobre o Recurso + </div> + + <div className="sobre-conteudo"> + <div className="tags-container"> + { + props.tags && + props.tags.map( (tag) => + <span key={tag.name}>{tag.name}</span> + ) + } + </div> + <div className="conteudo"> + <p className="descricao-objeto">{props.description}</p> + { + props.author && + <p className="autoria"> + <b>Autoria: </b>{props.author} + </p> + } + </div> + </div> + + <div className="titulo"> + Informações Adicionais + </div> + + {additionalInfo} + + </SobreDiv> + </Collapse> + </Grid> + + <Grid item xs={windowWidth > 990 ? 3 : 12}> + <MetasObjeto> + <div className="enviado-por"> + Enviado por: + </div> + + + <div className="foto-autor"> + <Link to={"/usuario-publico/" + props.id}> + <img src={props.avatar} alt="user avatar"/> + </Link> + </div> + + <div className="nome-autor"> + <Link to={"/usuario-publico/" + props.id} style={{textDecoration : "none"}}> + <span className="span-st">{props.publisher}</span> + </Link> + </div> + + <div style={{paddingTop : "0.75em", display : "flex", justifyContent : "center"}}> + { + (props.id != state.currentUser.id) && + <> + <NoIcon followableID={props.id}/> + <ContactCardOptions followableID={props.id}/> + </> + } + </div> + </MetasObjeto> + </Grid> + + <Grid item xs={12} style={{paddingTop : "15px"}}> + <CollapseControl onClick={() => {toggleCollapsed()}}> + { + collapsed ? + ( + <React.Fragment> + <span>VER MENOS</span> + <ExpandLessIcon/> + </React.Fragment> + ) + : + ( + <React.Fragment> + <span>VER MAIS</span> + <ExpandMoreIcon/> + </React.Fragment> + ) + } + </CollapseControl> + </Grid> + </Grid> + ) +} + +const CollapseControl = styled.div` + display : flex; + justify-content : center; + align-content : center; + align-items : center; + height : 50px; + border-top : 1px solid #e5e5e5; + color : #666; + font-weight : 700; + cursor : pointer; + + .MuiSvgIcon-root { + vertical-align : middle + } + + span { + text-transform : uppercase; + font-size : 14px; + } +` + +const SobreDiv = styled.div` + padding-left : 3% !important; + padding-top : 3% !important; + .titulo { + margin-top : 2% !important; + margin : 0; + margin-bottom : 10px; + font-family : 'Roboto Light','Roboto Regular',Roboto; + font-weight : 300; + font-style : normal; + color : #666; + font-size : 1.857em; + } + + .sobre-conteudo { + .tags-container { + padding : 0; + width : 100%; + display : flex; + flex-direction : row; + align-items : center; + font-size : .8em; + + span { + text-transform : capitalize; + display : inline-flex; + border-radius : 15px; + background-color : #e5e5e5; + margin-right : 3px; + padding : 3px 7px; + line-height : 18px; + margin-bottom : 3px; + color : #666; + font-size : .8em + } + } + + .conteudo { + font-size : 14px; + .descricao-objeto { + text-align: justify; + margin-bottom: 20px; + margin-top: 20px; + } + .autoria { + margin-bottom : 30px; + } + + p { + margin : 0 0 10px; + } + } + } + + .meta-objeto { + width: 100%; + display: inline-block; + margin-bottom: 15px; + font-size : 14px; + + .MuiSvgIcon-root { + vertical-align : middle + } + + span { + margin-left : 2%; + font-weight : 700; + } + + .license-link { + text-align : center; + display : inline-grid; + + a { + text-decoration : none !important; + color : initial; + + img { + vertical-align : middle; + width : auto !important; + height : auto !important; + float : inherit !important; + } + } + + p { + margin : 0 0 10px; + } + } + } +` + +const MetasObjeto = styled.div` + margin : 20px 0; + -webkit-box-orient : vertical; + -webkit-box-direction : normal; + -ms-flex-direction : column; + flex-direction : column; + -webkit-box-pack : start; + -ms-flex-pack : start; + justify-content : flex-start; + padding : 20px; + text-align : center; + + @media screen and (min-width : 990px) { + border-left : 1px solid #e5e5e5; + } + + .span-st { + position : relative; + font-size : 14px; + color: #666; + } + + .enviado-por { + font-size : 14px; + color :#666; + font-weight : 500; + margin-bottom : 5px; + margin-top : 20px; + text-align : center; + } + + .foto-autor { + display : -webkit-box; + display : -ms-flexbox; + display : flex; + -webkit-box-pack : center; + -ms-flex-pack : center; + justify-content : center; + -webkit-box-align : center; + -ms-flex-align : center; + align-items : center; + padding-top : 10px; + + img { + width : 60px; + height : 60px; + border-radius : 50%; + vertical-align : middle; + } + } + + .nome-autor { + text-align : center; + font-weight : 500; + } +` diff --git a/src/Components/ResourcePageComponents/TextoObjeto.js b/src/Components/ResourcePageComponents/TextoObjeto.js new file mode 100644 index 0000000000000000000000000000000000000000..5c7c400f5a279838b28a7c11b4a3aa34b72caa1e --- /dev/null +++ b/src/Components/ResourcePageComponents/TextoObjeto.js @@ -0,0 +1,277 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useEffect, useState, useContext} from 'react' +import {Store} from '../../Store.js' +import styled from 'styled-components' +import Firulas from '../Firulas.js' +import Grid from '@material-ui/core/Grid'; +import VisibilityIcon from '@material-ui/icons/Visibility'; +import GetAppIcon from '@material-ui/icons/GetApp'; +import EditIcon from '@material-ui/icons/Edit'; +import DeleteForeverIcon from '@material-ui/icons/DeleteForever'; +import Button from '@material-ui/core/Button'; +import {Link, Redirect} from 'react-router-dom' +import Alert from '../Alert.js'; +import Snackbar from '@material-ui/core/Snackbar'; +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; + +export default function TextoObjeto (props) { + const {state} = useContext(Store) + + const [outrasTematicas, setOutrasTem] = useState('') + const [componentesCurriculares, setCompCurr] = useState('') + const [eduStages, setEduStages] = useState('') + + const extractComponentesCurriculares = (subjects) => { + if (subjects) { + let outrasTem = [] + let compCurr = [] + + subjects.map((subject) => { + if (!subject.theme) { + compCurr.push(subject.name) + } + else { + outrasTem.push(subject.name) + } + }) + setOutrasTem(outrasTem.join(' - ')) + setCompCurr(compCurr.join(' - ')) + } + else { + setOutrasTem("Dado não identificado") + setCompCurr("Dado não identificado") + } + } + + const extractEduStages = (stages) => { + return(stages ? stages.map((stage) => {return (stage.name)}).join(' - ') : undefined) + } + + useEffect(() => { + extractComponentesCurriculares(props.subjects) + setEduStages(extractEduStages(props.educationalStages)) + }, []) + + const infos = [ + {label : 'Tipo de Recurso: ', text : (props.objType ? props.objType : "Dado não identificado")}, + {label : 'Componentes Curriculares: ', text : componentesCurriculares}, + {label : 'Outras Temáticas: ', text : outrasTematicas}, + {label : 'Etapas de Ensino: ', text : eduStages} + ] + + const [snackbarOpen, toggleSnackbar] = useState(false) + const [publisherDeletedObject, toggleDeleted] = useState(false) + const handleDelete = () => { + let config = getAxiosConfig() + axios.delete((`${apiUrl}/learning_objects/` + props.recursoId), config).then( + (response) => { + toggleSnackbar(true) + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + toggleDeleted(true) + }, + (error) => { + console.log(error) + } + ) + } + + const checkAccessLevel = (levelToCheck) => { + if (state.currentUser.id != '') { + return(checkUserRole(levelToCheck)) + } + else { + return(false) + } + } + + const checkUserRole = (userRole) => { + return(state.currentUser.roles.filter((role) => role.name === userRole).length > 0) + } + + return ( + <TextoObjetoDiv> + { publisherDeletedObject && + <Redirect to="/"/> + } + <Snackbar open={snackbarOpen} autoHideDuration={1000} onClose={() => {toggleSnackbar(false)}} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="info" style={{backgroundColor:"#00acc1"}}> + Recurso excluido com sucesso! + </Alert> + </Snackbar> + <Grid container style={{paddingLeft : "15px"}}> + <Grid item xs={11}> + <h3>{props.name}</h3> + { + props.stateRecurso !== "submitted" && + <Firulas + rating={props.rating} + likesCount={props.likesCount} + liked={props.likedBool} + recursoId={props.recursoId} + /> + } + + { + infos.map( (info) => + <span className={"info-recurso"} key={info.label}> + <span className={"info-cabecalho-recurso"}>{info.label}</span> + <span className={"dado-recurso"}>{info.text}</span> + </span> + ) + } + + <span className={"views-downloads"}> + <span className={"info-cabecalho-recurso"}> + <VisibilityIcon className={"icon"}/>Visualizações: + </span> + <span className={"dado-recurso"} style={{paddingRight : "50px"}}>{props.viewCount}</span> + + <span className={"info-cabecalho-recurso"}> + <GetAppIcon className={"icon"}/>Baixados/Acessados: + </span> + <span className={"dado-recurso"}>{props.downloadCount}</span> + </span> + + { + props.attachments[0] && (props.attachments[0].mime_type==="/audio/mpeg" || + props.attachments[0].format === "audio") && + <div className="recurso-container-audio"> + <audio controls className="audio audio-objeto"> + <source src={props.audioUrl} type="audio/mp3"/> + </audio> + </div> + } + + {/*|| checkUserRole('publisher')*/} + { + props.stateRecurso === "submitted" && + <div className="alert-warning"> + Esse recurso ainda não foi publicado por estar esperando análise da curadoria + </div> + } + + {/*|| checkUserRole('publisher')*/} + { + props.stateRecurso === "draft" && + <div className="alert-warning"> + Esse recurso ainda é um rascunho, termine de editar para publicá-lo + </div> + } + </Grid> + <Grid item xs={1}> + {/*|| checkUserRole('publisher')*/} + {props.id === state.currentUser.id && + <React.Fragment> + { + (checkAccessLevel('publisher') || props.stateRecurso === "draft") && + <Link to={"/editar-recurso/" + props.recursoId}> + <Button style={{color : "#666"}}><EditIcon/></Button> + </Link> + } + <Button style={{color : "#666"}} onClick={() => {handleDelete()}}><DeleteForeverIcon/></Button> + </React.Fragment> + } + + </Grid> + </Grid> + </TextoObjetoDiv> + ) +} + +const TextoObjetoDiv = styled.div` + padding : 20px 20px 0 20px; + display : flex; + flex-direction : column; + justify-content : flex-start; + flex-wrap : no-wrap; + align-content : center; + align-items : flex-start; + + h3 { + font-size : 26px; + font-weight : 400; + margin : 0; + padding-bottom : 15px; + } + + .info-recurso { + display : inline-block; + width : 100%; + font-size : 15px; + font-weight : lighter; + margin-bottom : 12px; + } + + .info-cabecalho-recurso { + font-size : 15px; + } + + .dado-recurso { + font-size : 15px; + font-weight : 600; + } + + .views-downloads { + font-size : 15px; + font-weight : lighter; + margin-bottom : 12px; + } + + .icon { + color : #666; + vertical-align : middle; + margin-right : 2px; + } + + .alert-warning { + color : #8a6d3b; + background-color : #fcf8e3; + border-color : #faebcc; + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; + font-size : 14px; + } + + .recurso-container-audio { + width : 100%; + margin-top : 20px; + + .audio-objeto { + height : 32px; + width : 100%; + margin : 10px 0 8px 0; + background-color : #e5e5e5; + } + + .audio { + display : inline-block; + vertical-align : baseline; + } + } +` diff --git a/src/Components/ResourcePageComponents/VideoPlayer.js b/src/Components/ResourcePageComponents/VideoPlayer.js new file mode 100644 index 0000000000000000000000000000000000000000..35e3846f6ea03a5015cf94121b69e4c3f2546180 --- /dev/null +++ b/src/Components/ResourcePageComponents/VideoPlayer.js @@ -0,0 +1,88 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import styled from 'styled-components' + +function GetEmbeddedLink (link) { + if (link.indexOf("youtube") != -1) { //plain youtebe.com/ link + if(link.indexOf("embed/") != -1) { //if it's already an embedded link, return it + return link + } + link = link.split("&")[0] //else remove features and other queries + var link = link.split("v=")[1] //get video id + var embed = "https://www.youtube.com/embed/" + link; //create embedded link + } + else if (link.indexOf("youtu.be") != -1) { //if it's a youtu.be link + link = link.split("&")[0].split("?")[0] //remove queries and features if existent + link = link.split(".be/")[1] //get video id + var embed = "https://www.youtube.com/embed/" + link; //create embedded link + } + else if (link.indexOf("vimeo") != -1) { //if the 13th character = o (vimeo videos) + link = link.split("?")[0].split("/") + console.log(link) //key # = from 19th character on + var embed = "https://player.vimeo.com/video/" + link.pop(); //Add vimeo link before key # + } + return embed +} + + +export default function VideoPlayer (props) { + + return ( + <> + { + props.urlVerified ? + ( + <VideoContainer> + <iframe + src={GetEmbeddedLink(props.link)} + frameBorder="0" allowFullScreen className="video" + /> + </VideoContainer> + ) + : + ( + <VideoContainer> + <video controls className="video"> + <source src={props.videoUrl} type="video/webm"/> + <source src={props.videoUrl} type="video/mp4"/> + <p>Seu navegador não permite a exibição deste vÃdeo. É necessário baixar o vÃdeo para poder visualizá-lo.</p> + </video> + </VideoContainer> + + ) + } + </> + ) +} + +const VideoContainer = styled.div` + position : relative; + width : 100%; + height : 0; + padding-bottom : 56.25%; + + .video { + width : 100%; + height : 100%; + position : absolute; + top : 0; + left : 0; + } +` diff --git a/src/Components/SearchExpansionPanel/SearchEPCompCurriculum.js b/src/Components/SearchExpansionPanel/SearchEPCompCurriculum.js new file mode 100644 index 0000000000000000000000000000000000000000..d55d6e63579e5b74ff3e57e09469478edcc654b8 --- /dev/null +++ b/src/Components/SearchExpansionPanel/SearchEPCompCurriculum.js @@ -0,0 +1,95 @@ +import React from "react"; +import { makeStyles } from "@material-ui/core/styles"; +import List from "@material-ui/core/List"; +import ListItem from "@material-ui/core/ListItem"; +import ListItemIcon from "@material-ui/core/ListItemIcon"; +import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; +import ListItemText from "@material-ui/core/ListItemText"; +import Checkbox from "@material-ui/core/Checkbox"; +import IconButton from "@material-ui/core/IconButton"; + +const useStyles = makeStyles(theme => ({ + root: { + width: "100%", + maxWidth: 360, + backgroundColor: theme.palette.background.paper, + color: "#666" + } +})); + +export default function SearchEPCompCurriculum() { + const classes = useStyles(); + const [checked, setChecked] = React.useState([0]); + + const handleToggle = value => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + const filtrosComponente = [ + { exemplo: "Arte", value: "3" }, + { exemplo: "Biologia", value: "5" }, + { exemplo: "Ciências da Natureza", value: "6" }, + { exemplo: "Direitos Humanos", value: "20" }, + { exemplo: "Educação Ambiental", value: "21" }, + { exemplo: "Educação do Campo", value: "22" }, + { exemplo: "Educação Especial", value: "23" }, + { exemplo: "Educação FÃsica", value: "7" }, + { exemplo: "Educação IndÃgena", value: "24" }, + { exemplo: "Educação Quilombola", value: "25" }, + { exemplo: "Educação Sexual", value: "26" }, + { exemplo: "Ensino Religioso", value: "16" }, + { exemplo: "Filosofia", value: "8" }, + { exemplo: "FÃsica", value: "9" }, + { exemplo: "Geografia", value: "10" }, + { exemplo: "História", value: "11" }, + { exemplo: "Informática", value: "18" }, + { exemplo: "LÃngua Espanhola", value: "1" }, + { exemplo: "LÃngua Inglesa", value: "2" }, + { exemplo: "LÃngua Portuguesa", value: "4" }, + { exemplo: "Matemática", value: "12" }, + { exemplo: "Outras LÃnguas", value: "15" }, + { exemplo: "Outros", value: "17" }, + { exemplo: "QuÃmica", value: "13" }, + { exemplo: "Sociologia", value: "14" } + ]; + + return ( + <List className={classes.root}> + {filtrosComponente.map(item => { + const labelId = `checkbox-list-label-${item.value}`; + + return ( + <ListItem + key={item.exemplo} + role={undefined} + dense + button + onClick={handleToggle(item.value)} + > + <ListItemIcon> + <Checkbox + edge="start" + checked={checked.indexOf(item.value) !== -1} + tabIndex={-1} + disableRipple + inputProps={{ "aria-labelledby": labelId }} + /> + </ListItemIcon> + <ListItemText id={labelId} primary={item.exemplo} /> + <ListItemSecondaryAction> + <IconButton edge="end" aria-label="comments"></IconButton> + </ListItemSecondaryAction> + </ListItem> + ); + })} + </List> + ); +} diff --git a/src/Components/SearchExpansionPanel/SearchEPIdiomas.js b/src/Components/SearchExpansionPanel/SearchEPIdiomas.js new file mode 100644 index 0000000000000000000000000000000000000000..a9426aec66f0c41fca8c30a99cab47f81591dd4e --- /dev/null +++ b/src/Components/SearchExpansionPanel/SearchEPIdiomas.js @@ -0,0 +1,82 @@ +import React from "react"; +import { makeStyles } from "@material-ui/core/styles"; +import List from "@material-ui/core/List"; +import ListItem from "@material-ui/core/ListItem"; +import ListItemIcon from "@material-ui/core/ListItemIcon"; +import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; +import ListItemText from "@material-ui/core/ListItemText"; +import Checkbox from "@material-ui/core/Checkbox"; +import IconButton from "@material-ui/core/IconButton"; + +const useStyles = makeStyles(theme => ({ + root: { + width: "100%", + maxWidth: 360, + backgroundColor: theme.palette.background.paper, + color: "#666" + } +})); + +export default function SearchEPIdiomas() { + const classes = useStyles(); + const [checked, setChecked] = React.useState([0]); + + const handleToggle = value => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + const filtrosIdiomas = [ + { value: "5", exemplo: "Alemão" }, + { value: "3", exemplo: "Espanhol" }, + { value: "4", exemplo: "Francês" }, + { value: "2", exemplo: "Inglês" }, + { value: "6", exemplo: "Italiano" }, + { value: "9", exemplo: "Japonês" }, + { value: "19", exemplo: "LIBRAS" }, + { value: "7", exemplo: "Mandarim" }, + { value: "18", exemplo: "Nenhum" }, + { value: "10", exemplo: "Outro" }, + { value: "1", exemplo: "Português" }, + { value: "8", exemplo: "Russo" } + ]; + + return ( + <List className={classes.root}> + {filtrosIdiomas.map(item => { + const labelId = `checkbox-list-label-${item.value}`; + + return ( + <ListItem + key={item.exemplo} + role={undefined} + dense + button + onClick={handleToggle(item.value)} + > + <ListItemIcon> + <Checkbox + edge="start" + checked={checked.indexOf(item.value) !== -1} + tabIndex={-1} + disableRipple + inputProps={{ "aria-labelledby": labelId }} + /> + </ListItemIcon> + <ListItemText id={labelId} primary={item.exemplo} /> + <ListItemSecondaryAction> + <IconButton edge="end" aria-label="comments"></IconButton> + </ListItemSecondaryAction> + </ListItem> + ); + })} + </List> + ); +} diff --git a/src/Components/SearchExpansionPanel/SearchEPKeyWord.js b/src/Components/SearchExpansionPanel/SearchEPKeyWord.js new file mode 100644 index 0000000000000000000000000000000000000000..101a0e0609fe318817ab8b76b5d964daef1deba8 --- /dev/null +++ b/src/Components/SearchExpansionPanel/SearchEPKeyWord.js @@ -0,0 +1,167 @@ +import React from "react"; +import { withStyles } from "@material-ui/core/styles"; +import MuiExpansionPanel from "@material-ui/core/ExpansionPanel"; +import MuiExpansionPanelSummary from "@material-ui/core/ExpansionPanelSummary"; +import MuiExpansionPanelDetails from "@material-ui/core/ExpansionPanelDetails"; +import Typography from "@material-ui/core/Typography"; +import ExpandMoreIcon from "@material-ui/icons/ExpandMore"; +import SearchList from "../SearchList"; + +const ExpansionPanel = withStyles({ + root: { + border: "1px solid rgba(0, 0, 0, .125)", + boxShadow: "none", + "&:not(:last-child)": { + borderBottom: 0 + }, + "&:before": { + display: "none" + }, + "&$expanded": { + margin: "auto" + } + }, + expanded: {} +})(MuiExpansionPanel); + +const ExpansionPanelSummary = withStyles({ + root: { + color: "#666", + marginBottom: -1, + minHeight: 56, + backgroundColor: "#fff", + + "&$expanded": { + minHeight: 56, + backgroundColor: "#fff" + } + }, + content: { + "&$expanded": { + margin: "12px 0" + } + }, + expanded: {} +})(MuiExpansionPanelSummary); + +const TesteTypography = withStyles({ + root: { + fontSize: "17px" + } +})(Typography); + +const ExpansionPanelDetails = withStyles(theme => ({ + root: { + padding: theme.spacing(2) + } +}))(MuiExpansionPanelDetails); + +export default function SearchExpansionPanels() { + return ( + <div> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,500&display=swap" + rel="stylesheet" + /> + + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel1d-content" + id="panel1d-header" + > + <Typography + style={{ + fontSize: "18px", + textTransform: "uppercase", + fontWeight: "500" + }} + > + Filtros + </Typography> + </ExpansionPanelSummary> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + expandIcon={<ExpandMoreIcon />} + aria-controls="panel2d-content" + id="panel2d-header" + > + <TesteTypography>Componentes Curriculares</TesteTypography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + <SearchList /> + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + expandIcon={<ExpandMoreIcon />} + aria-controls="panel3d-content" + id="panel3d-header" + > + <Typography>Tipos de Recurso</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada + lacus ex, sit amet blandit leo lobortis eget. + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel4d-content" + expandIcon={<ExpandMoreIcon />} + id="panel4d-header" + > + <Typography>Etapas de Ensino</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada + lacus ex, sit amet blandit leo lobortis eget. + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel5d-content" + expandIcon={<ExpandMoreIcon />} + id="panel5d-header" + > + <Typography>Idiomas</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada + lacus ex, sit amet blandit leo lobortis eget. + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel6d-content" + expandIcon={<ExpandMoreIcon />} + id="panel6d-header" + > + <Typography>Palavra-Chave</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada + lacus ex, sit amet blandit leo lobortis eget. + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + </div> + ); +} diff --git a/src/Components/SearchExpansionPanel/SearchEPTiposRec.js b/src/Components/SearchExpansionPanel/SearchEPTiposRec.js new file mode 100644 index 0000000000000000000000000000000000000000..0d36afff0599d418b38b9c03592afb0615046352 --- /dev/null +++ b/src/Components/SearchExpansionPanel/SearchEPTiposRec.js @@ -0,0 +1,86 @@ +import React from "react"; +import { makeStyles } from "@material-ui/core/styles"; +import List from "@material-ui/core/List"; +import ListItem from "@material-ui/core/ListItem"; +import ListItemIcon from "@material-ui/core/ListItemIcon"; +import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; +import ListItemText from "@material-ui/core/ListItemText"; +import Checkbox from "@material-ui/core/Checkbox"; +import IconButton from "@material-ui/core/IconButton"; + +const useStyles = makeStyles(theme => ({ + root: { + width: "100%", + maxWidth: 360, + backgroundColor: theme.palette.background.paper, + color: "#666" + } +})); + +export default function SearchEPTiposRec() { + const classes = useStyles(); + const [checked, setChecked] = React.useState([0]); + + const handleToggle = value => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + const filtrosTipos = [ + { value: "5", exemplo: "Animação" }, + { value: "20", exemplo: "Aplicativo móvel" }, + { value: "17", exemplo: "Apresentação" }, + { value: "7", exemplo: "Ãudio" }, + { value: "4", exemplo: "Experimento prático" }, + { value: "1", exemplo: "Imagem" }, + { value: "18", exemplo: "Infográfico" }, + { value: "19", exemplo: "Jogo" }, + { value: "21", exemplo: "Livro digital" }, + { value: "2", exemplo: "Mapa" }, + { value: "15", exemplo: "Outros" }, + { value: "3", exemplo: "Software Educacional" }, + { value: "6", exemplo: "Texto" }, + { value: "8", exemplo: "VÃdeo" }, + { value: "13", exemplo: "Website externo" }, + { value: "22", exemplo: "Plano de Aula" }, + ]; + + return ( + <List className={classes.root}> + {filtrosTipos.map(item => { + const labelId = `checkbox-list-label-${item.value}`; + + return ( + <ListItem + key={item.exemplo} + role={undefined} + dense + button + onClick={handleToggle(item.value)} + > + <ListItemIcon> + <Checkbox + edge="start" + checked={checked.indexOf(item.value) !== -1} + tabIndex={-1} + disableRipple + inputProps={{ "aria-labelledby": labelId }} + /> + </ListItemIcon> + <ListItemText id={labelId} primary={item.exemplo} /> + <ListItemSecondaryAction> + <IconButton edge="end" aria-label="comments"></IconButton> + </ListItemSecondaryAction> + </ListItem> + ); + })} + </List> + ); +} diff --git a/src/Components/SearchExpansionPanel/SearchExpansionPanel.js b/src/Components/SearchExpansionPanel/SearchExpansionPanel.js new file mode 100644 index 0000000000000000000000000000000000000000..32c9b72eb11b94bbea425e674aff8168e9718c0b --- /dev/null +++ b/src/Components/SearchExpansionPanel/SearchExpansionPanel.js @@ -0,0 +1,159 @@ +import React from "react"; +import { withStyles } from "@material-ui/core/styles"; +import MuiExpansionPanel from "@material-ui/core/ExpansionPanel"; +import MuiExpansionPanelSummary from "@material-ui/core/ExpansionPanelSummary"; +import MuiExpansionPanelDetails from "@material-ui/core/ExpansionPanelDetails"; +import Typography from "@material-ui/core/Typography"; +import ExpandMoreIcon from "@material-ui/icons/ExpandMore"; +import SearchEPCompCurriculum from "./SearchEPCompCurriculum"; +import SearchEPTiposRec from "./SearchEPTiposRec"; +import SearchEPEtapasEns from "./SesrchEPEtapasEns"; +import SearchEPIdiomas from "./SearchEPIdiomas"; +const ExpansionPanel = withStyles({ + root: { + border: "1px solid rgba(0, 0, 0, .125)", + boxShadow: "none", + '.MuiButtonBase-root' : { + paddingInline:"0 !important" + }, + "&:not(:last-child)": { + borderBottom: 0 + }, + "&:before": { + display: "none" + }, + "&$expanded": { + margin: "auto" + } + }, + expanded: {} +})(MuiExpansionPanel); + +const ExpansionPanelSummary = withStyles({ + root: { + color: "#666", + marginBottom: -1, + minHeight: 56, + backgroundColor: "#fff", + + + "&$expanded": { + minHeight: 56, + backgroundColor: "#fff" + } + }, + content: { + "&$expanded": { + margin: "12px 0" + } + }, + expanded: {} +})(MuiExpansionPanelSummary); + +const TesteTypography = withStyles({ + root: { + fontSize: "17px" + } +})(Typography); + +const ExpansionPanelDetails = withStyles(theme => ({ + root: { + padding: theme.spacing(2) + } +}))(MuiExpansionPanelDetails); + +export default function SearchExpansionPanel() { + return ( + <div> + <link + href="https://fonts.googleapis.com/css?family=Roboto:400,500&display=swap" + rel="stylesheet" + /> + + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel1d-content" + id="panel1d-header" + > + <Typography + style={{ + fontSize: "18px", + textTransform: "uppercase", + fontWeight: "500" + }} + > + Filtros + </Typography> + </ExpansionPanelSummary> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + expandIcon ={<ExpandMoreIcon/>} + + aria-controls="panel2d-content" + id="panel2d-header" + > + <TesteTypography>Componentes Curriculares</TesteTypography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + <SearchEPCompCurriculum /> + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + expandIcon={<ExpandMoreIcon />} + aria-controls="panel3d-content" + id="panel3d-header" + > + <Typography>Tipos de Recurso</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <SearchEPTiposRec /> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel4d-content" + expandIcon={<ExpandMoreIcon />} + id="panel4d-header" + > + <Typography>Etapas de Ensino</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <SearchEPEtapasEns /> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel5d-content" + expandIcon={<ExpandMoreIcon />} + id="panel5d-header" + > + <Typography>Idiomas</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <SearchEPIdiomas /> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel square> + <ExpansionPanelSummary + aria-controls="panel6d-content" + expandIcon={<ExpandMoreIcon />} + id="panel6d-header" + > + <Typography>Palavra-Chave</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <Typography> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. Lorem ipsum + dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada + lacus ex, sit amet blandit leo lobortis eget. + </Typography> + </ExpansionPanelDetails> + </ExpansionPanel> + </div> + ); +} diff --git a/src/Components/SearchExpansionPanel/SesrchEPEtapasEns.js b/src/Components/SearchExpansionPanel/SesrchEPEtapasEns.js new file mode 100644 index 0000000000000000000000000000000000000000..b0241d3221d414adcde34ed7fb60afa2467ea421 --- /dev/null +++ b/src/Components/SearchExpansionPanel/SesrchEPEtapasEns.js @@ -0,0 +1,76 @@ +import React from "react"; +import { makeStyles } from "@material-ui/core/styles"; +import List from "@material-ui/core/List"; +import ListItem from "@material-ui/core/ListItem"; +import ListItemIcon from "@material-ui/core/ListItemIcon"; +import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; +import ListItemText from "@material-ui/core/ListItemText"; +import Checkbox from "@material-ui/core/Checkbox"; +import IconButton from "@material-ui/core/IconButton"; + +const useStyles = makeStyles(theme => ({ + root: { + width: "100%", + maxWidth: 360, + backgroundColor: theme.palette.background.paper, + color: "#666" + } +})); + +export default function SearchEPEtapasEns() { + const classes = useStyles(); + const [checked, setChecked] = React.useState([0]); + + const handleToggle = value => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + const filtrosEtapas = [ + { value: "1", exemplo: "Educação Infantil" }, + { value: "2", exemplo: "Ensino Fundamental I (1º até o 5º ano )" }, + { value: "3", exemplo: "Ensino Fundamental II (do 6º até o 9º ano)" }, + { value: "4", exemplo: "Ensino Médio" }, + { value: "5", exemplo: "Ensino Superior" }, + { value: "6", exemplo: "Outros" } + ]; + + return ( + <List className={classes.root}> + {filtrosEtapas.map(item => { + const labelId = `checkbox-list-label-${item.value}`; + + return ( + <ListItem + key={item.exemplo} + role={undefined} + dense + button + onClick={handleToggle(item.value)} + > + <ListItemIcon> + <Checkbox + edge="start" + checked={checked.indexOf(item.value) !== -1} + tabIndex={-1} + disableRipple + inputProps={{ "aria-labelledby": labelId }} + /> + </ListItemIcon> + <ListItemText id={labelId} primary={item.exemplo} /> + <ListItemSecondaryAction> + <IconButton edge="end" aria-label="comments"></IconButton> + </ListItemSecondaryAction> + </ListItem> + ); + })} + </List> + ); +} diff --git a/src/Components/SearchList.js b/src/Components/SearchList.js new file mode 100644 index 0000000000000000000000000000000000000000..0f789ce11cbfdb21bb5a37df2379aff6d109e1b8 --- /dev/null +++ b/src/Components/SearchList.js @@ -0,0 +1,70 @@ +import React from "react"; +import { makeStyles } from "@material-ui/core/styles"; +import List from "@material-ui/core/List"; +import ListItem from "@material-ui/core/ListItem"; +import ListItemIcon from "@material-ui/core/ListItemIcon"; +import ListItemSecondaryAction from "@material-ui/core/ListItemSecondaryAction"; +import ListItemText from "@material-ui/core/ListItemText"; +import Checkbox from "@material-ui/core/Checkbox"; +import IconButton from "@material-ui/core/IconButton"; +import CommentIcon from "@material-ui/icons/Comment"; + +const useStyles = makeStyles(theme => ({ + root: { + width: "100%", + maxWidth: 360, + backgroundColor: theme.palette.background.paper + } +})); + +export default function SearchList() { + const classes = useStyles(); + const [checked, setChecked] = React.useState([0]); + + const handleToggle = value => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + + return ( + <List className={classes.root}> + {[0, 1, 2, 3].map(value => { + const labelId = `checkbox-list-label-${value}`; + + return ( + <ListItem + key={value} + role={undefined} + dense + button + onClick={handleToggle(value)} + > + <ListItemIcon> + <Checkbox + edge="start" + checked={checked.indexOf(value) !== -1} + tabIndex={-1} + disableRipple + inputProps={{ "aria-labelledby": labelId }} + /> + </ListItemIcon> + <ListItemText id={labelId} primary={`Line item ${value + 1}`} /> + <ListItemSecondaryAction> + <IconButton edge="end" aria-label="comments"> + <CommentIcon /> + </IconButton> + </ListItemSecondaryAction> + </ListItem> + ); + })} + </List> + ); +} diff --git a/src/Components/SearchSection.js b/src/Components/SearchSection.js index 989774625d87cef62831fdd74d93cf7c6f89da90..c82035cc368fb52601ce32dc3ebb4cae30d5a9c5 100644 --- a/src/Components/SearchSection.js +++ b/src/Components/SearchSection.js @@ -72,13 +72,13 @@ class SearchSection extends Component{ <SearchBar/> </Container> */} <div style={{paddingBottom: "100px", color: "white"}}> - <a href="#sobre"><MdInfoOutline size="30px"/>SOBRE A PLATAFORMA</a> - <a href="#apresentacao"> <FaRegPlayCircle size="25px"/>VÃDEO DE APRESENTAÇÃO</a> + <a href="sobre" style={{color:"#fff",textDecoration: "none", outline:"none"}}><MdInfoOutline size="24px" style={{verticalAlign: "middle"}} />SOBRE A PLATAFORMA</a> + <a href="#apresentacao" style={{color:"#fff",textDecoration: "none"}}> <FaRegPlayCircle size="20px" style={{verticalAlign: "middle"}} />VÃDEO DE APRESENTAÇÃO</a> </div> <Row justify="center"> - <button style={{...buttonStyle, ...{backgroundColor: "#ff7f00"}}} onClick={()=> {this.props.function("Recursos")}}>Recursos Educacionais Digitais</button> - <button style={{...buttonStyle, ...{backgroundColor: "#e81f4f"}}} onClick={()=> {this.props.function("Materiais")}}>Materiais de Formação</button> - <button style={{...buttonStyle, ...{backgroundColor: "#673ab7"}}} onClick={()=> {this.props.function("Colecoes")}}>Coleções dos Usuários</button> + <button style={{...buttonStyle, ...{backgroundColor: "#ff7f00",fontSize:"1.14em", outline:"none"}}} onClick={()=> {this.props.function("Recursos")}}>Recursos Educacionais Digitais</button> + <button style={{...buttonStyle, ...{backgroundColor: "#e81f4f",fontSize:"1.14em", outline:"none"}}} onClick={()=> {this.props.function("Materiais")}}>Materiais de Formação</button> + <button style={{...buttonStyle, ...{backgroundColor: "#673ab7",fontSize:"1.14em", outline:"none"}}} onClick={()=> {this.props.function("Colecoes")}}>Coleções dos Usuários</button> </Row> </div> ); diff --git a/src/Components/ShareModal.js b/src/Components/ShareModal.js new file mode 100644 index 0000000000000000000000000000000000000000..1f3b771286cd3f95c331295e9691277914e11842 --- /dev/null +++ b/src/Components/ShareModal.js @@ -0,0 +1,248 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useRef} from 'react'; +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import SignUpContainer from './SignUpContainerFunction.js' +import {Store} from '../Store.js' +import axios from 'axios' +import {apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import Facebook from '../img/facebook.svg' +import Twitter from '../img/twitter.svg' +import LinkIcon from '../img/link_icon.svg' +import CloseModalButton from './CloseModalButton.js' + +export default function ReportModal (props) { + const refContainer = useRef(props.link); + + function copyToClipboard(e) { + let copyText = document.getElementById('p-text') + console.log(copyText) + }; + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + centered="true" + onClose={props.handleClose} + closeAfterTransition + BackdropComponent={Backdrop} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container> + <Header> + <span style={{width:"32px"}}/> + <h2>Compartilhar este recurso</h2> + <CloseModalButton handleClose={props.handleClose}/> + </Header> + <Content style={{paddingTop : "0"}}> + <ResourceInfo> + <img src={apiDomain + props.thumb} alt="thumbnail recurso"/> + <div className="text"> + <strong>{props.title}</strong> + <span>{props.link}</span> + </div> + </ResourceInfo> + <ShareInfo> + <Grid container style={{paddingRight : "15px", paddingLeft : "15px"}}> + + {/*Share to facebook*/} + <Grid item xs={4}> + <a + href={"https://www.facebook.com/sharer/sharer.php?u=" + props.link} + target="_blank"> + <ShareButton> + <img src={Facebook} alt="facebook-logo"/> + <p>FACEBOOK</p> + </ShareButton> + </a> + </Grid> + + {/*Share to Twitter*/} + <Grid item xs={4}> + <a + href={"https://www.twitter.com/intent/tweet?url=" + props.link} + target="_blank"> + <ShareButton> + <img src={Twitter} alt="twitter-logo"/> + <p>TWITTER</p> + </ShareButton> + </a> + </Grid> + + {/*Get shareable link*/} + <Grid item xs={4}> + <ShareButton onClick={copyToClipboard}> + <img src={LinkIcon} alt="link-icon"/> + <p id="p-text" value={props.link}>COPIAR LINK</p> + </ShareButton> + </Grid> + </Grid> + </ShareInfo> + </Content> + </Container> + </Fade> + </StyledModal> + ) +} + +const ShareButton = styled(Button)` + text-align :center; + margin : 0 !important; + min-height : 121px !important; + + .MuiButton-label { + display : flex !important; + flex-direction : column !important; + justify-content : center !important; + font-weight : 700 !important; + } + + img { + height : 75px; + width : 75px; + padding-top : 10px; + vertical-align : middle; + } + + p { + margin : 0 0 10px; + } +` + +const ShareInfo = styled.div` + padding-top : 20px; + color : #000; +` + +const ResourceInfo = styled.div` + margin-top : 0; + background-color : #f4f4f4; + overflow : hidden; + border-radius : 5px; + display : flex; + flex-direction : row; + align-items : center; + align-content : center; + max-wdith : 100%; + justify-content : space-between; + + .text { + max-height : 100%; + max-width : 66.66%; + display : flex; + flex-direction : column; + text-align : left; + padding-right : 10px; + } + + img { + object-fit : cover; + height : 115px; + max-width : 165px; + background-color : #e5e5e5; + float : left; + padding : 0; + + @media screen and (min-width : 600px) { + margin-right : 20px; + margin-bottom : 0; + } + @media screen and (max-width : 768px) { + width : 100%; + } + } + +` + +const Content = styled.div` + padding : 20px 30px; + overflow : visible; + +` + +const Header = styled.div` + display : flex; + flex-direction : row; + padding : 10px 26px 0 26px; + align-items : center; + justify-content : space-between; + height : 64px; + + h2 { + font-size : 26px; + font-weight : lighter; + color : #666 + } +` + +const StyledCloseModalButton = styled(Button)` + display : inline-block; + position : relative; + float : right !important; + margin-right : -8px !important; + background : transparent !important; + min-width: 0 !important; + width : 40px; +` + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + text-align : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + background-color : white; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + padding : 10px; + border-radius : 4px; + + @media screen and (min-width : 700px) { + max-width : 600px; + } + + @media screen and (max-width : 699px) { + width : 100%; + height : 100%; + } +` diff --git a/src/Components/ShinyProgressBar.js b/src/Components/ShinyProgressBar.js new file mode 100644 index 0000000000000000000000000000000000000000..f2d1cc03c8c2df869499dd72d3dda7078fe2f7de --- /dev/null +++ b/src/Components/ShinyProgressBar.js @@ -0,0 +1,55 @@ +import React, {Component} from 'react'; +import {Container} from 'react-grid-system'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import styled from 'styled-components' + + +export default function ShinyProgressBar(props) { + return ( + <ProgressBar> + <ShinyFiller percentage={props.percentage}/> + </ProgressBar> + ); +} + +const ShinyFiller = (props) => { + return ( + <StyledFiller style={{ width: `${props.percentage}%` }}> + <FillerShine/> + </StyledFiller> + ); +} + +const FillerShine = (props) => { + return <StyledShine/> +} + +const ProgressBar = styled.div` + background: #C4C4C4; + position: relative; + height: 30px; + width: 100%; + border-radius: 50px; + margin-left:20px; + margin-right:20px; +` + +const StyledFiller = styled.div` + background: #02A4B9; + height: 100%; + border-radius: 50px; + transition: width 1s ease-in; +` + +const StyledShine = styled.div` + position: relative; + top: 5px; + left: 15px; + background: #03C0CE; + height: 25%; + width: 95%; + border-radius: 50px; + transition: width 1s ease-in; + z-index: +1; +` \ No newline at end of file diff --git a/src/Components/SignUpContainer.js b/src/Components/SignUpContainer.js index f87f002efb76eb4ee4313705ab6f9e81003b4b9b..9d01f58daf46303a7b3967d3eb8adc5d2e7e9ec0 100644 --- a/src/Components/SignUpContainer.js +++ b/src/Components/SignUpContainer.js @@ -24,7 +24,7 @@ import CloseIcon from '@material-ui/icons/Close'; import styled from 'styled-components' import {device} from './device.js' import FormInput from "./FormInput.js" - +import {StyledCloseModalButton, DialogContentDiv, DialogHeaderStyled, SocialConnectDiv, StyledGoogleLoginButton, H3Div} from './LoginContainer.js' const responseGoogle = (response) => { console.log(response); } @@ -40,14 +40,36 @@ var callback = function () { console.log('Done!!!!'); }; +function validateUserInfo (name, email, password) { + const errors = [] + + if(name.lenght === 0 ) { + errors.push({name : "name", msg : "Faltou preencher seu nome completo."}) + } + if(email.length === 0) { + errors.push({name : "email", msg : "Faltou preencher seu e-mail."}) + } + else if ( (email.split("").filter(x => x === "@").length !== 1) || (email.indexOf(".") === -1) ){ + errors.push({name : "email", msg : "Insira um endereço de email válido."}) + errors.push({name : "email", msg : "Por exemplo: seunome@gmail.com, seunome@hotmail.com"}) + } + if(password.length === 0) { + errors.push({ name : "password", msg : "Faltou definir uma senha."}) + } + + return errors +} + class SignUpContainer extends Component { constructor (props) { super(props); this.state = { - nomeCompleto: "", + name: "", email: "", - senha: "" + password: "", + + errors : [] }; }; @@ -59,85 +81,102 @@ class SignUpContainer extends Component { handleChange = e => { this.setState({[e.target.name]: e.target.value}) + }; onSubmit = (e) => { //on submit we should prevent the page from refreshing e.preventDefault(); //though this is arguable - - //pass user info to Store.js and clear all text fields - this.props.handleLoginInfo(this.state) - this.setState({ - nomeCompleto: "", - email: "", - senha: "" - }) + const { name, email, password } = this.state; + const errors = validateUserInfo(name, email, password) + console.log(this.state) + if ( errors.length < 1) { + //pass user info to Store.js and clear all text fields + this.props.handleLoginInfo(this.state) + this.setState({ + name: "", + email: "", + password: "" + }) + } + else { + this.setState({errors}) + } } render () { + const { errors } = this.state; return ( <ContainerStyled > <DialogHeaderStyled> + <span style={{width:"32px"}}/> <H2Styled> Cadastrar-se - <StyledCloseModalButton onClick={this.props.handleClose} > - <CloseIcon /> - </StyledCloseModalButton> </H2Styled> + <StyledCloseModalButton onClick={this.props.handleClose} > + <CloseIcon /> + </StyledCloseModalButton> </DialogHeaderStyled> - <div style={{paddingTop: "20px"}}> - <div style={{marginTop:"0"}}> + <DialogContentDiv> + <SocialConnectDiv> <StyledGoogleLoginButton clientId="658977310896-knrl3gka66fldh83dao2rhgbblmd4un9.apps.googleusercontent.com" - onSuccess={responseGoogle} onFailure={responseGoogle} cookiePolicy={'single_host_origin'} > <span style={{textTransform:"none", fontSize:"13px"}}>Usando o Google</span> </StyledGoogleLoginButton> - </div> - </div> + </SocialConnectDiv> - <H3Styled> - <RightSideStrikedH3/> - <span style={{verticalAlign:"middle"}}>ou</span> - <LeftSideStrikedH3/> - </H3Styled> + <H3Div> + <H3Styled> + <RightSideStrikedH3/> + <span style={{verticalAlign:"middle"}}>ou</span> + <LeftSideStrikedH3/> + </H3Styled> + </H3Div> <form ref="form" onSubmit={this.onSubmit}> + {errors.map(error => ( + <p key={error.name}>Error: {error.msg}</p> + ))} <FormInput inputType={"text"} - name={"nomeCompleto"} - value={this.state.nomeCompleto} - placeholder={"Nome Completo *"} + name={"name"} + value={this.state.name} + placeholder={"Nome Completo"} handleChange={e => this.handleChange(e)} + required={true} /> <br/> <FormInput inputType={"text"} name={"email"} value={this.state.email} - placeholder={"E-mail *"} + placeholder={"E-mail"} handleChange={e => this.handleChange(e)} + required={true} /> <br/> <FormInput inputType={"password"} - name={"senha"} - value={this.state.senha} - placeholder={"Senha *"} + name={"password"} + value={this.state.password} + placeholder={"Senha"} handleChange={e => this.handleChange(e)} + required={true} /> <br/> - <StyledRecaptcha + <Recaptcha sitekey="6LcyFr8UAAAAAOd0Po6rmZC1D_nYik8nLCAkNKsc" + size="normal" render="explicit" onloadCallback={callback} /> <ConfirmContainerStyled> - <StyledSignUpButton onClick={e => this.onSubmit(e)} variant="contained"> + <StyledSignUpButton type="submit" variant="contained"> <span style={{paddingLeft:"16px", paddingRight:"16px", borderRadius:"3px", boxSizing:"border-box", fontFamily:"Roboto, sans serif", fontWeight:"500", color:"#fff"}} @@ -156,6 +195,7 @@ class SignUpContainer extends Component { <DialogFooterStyled> <span style={{textAlign:"center", fontSize: "14px"}}>Já possui cadastro? <StyledAnchor href="" onClick={e => this.switchModal(e)}>ENTRAR</StyledAnchor></span> </DialogFooterStyled> + </DialogContentDiv> </ContainerStyled> ) } @@ -168,24 +208,19 @@ const ContainerStyled = styled.div` background-color : white; max-width : none; align : center; - padding-left : 25px; - padding-right:25px; - padding-bottom:10px; - border-radius: 4px; + display : flex; + flex-direction : column; + min-width : 450px; + + max-height : none; + position : relative; + padding : 10px; @media ${device.mobileM} { width : 100%; height : 100%; } ` -const DialogHeaderStyled = styled.div` - text-align : center; - display : inline-flex; - justify-content : space-between; - padding : 10px 26px 0 26px; - height : 64px; -` - const DialogFooterStyled = styled.div` box-sizing : border-box; font-family : 'Roboto', sans serif; @@ -197,15 +232,6 @@ const DialogFooterStyled = styled.div` line-height : 1.42857143 ` -const StyledGoogleLoginButton = styled(GoogleLogin)` - background-color: fff; - border : 1px solid rgb(66, 133, 244); - box-shadow: 0 0 0 1px #4285f4 !important; - :hover { - background-color: #f4f4f4 !important; - } -` - const TermosDeUsoStyled = styled.div` font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif; color : #666; @@ -223,7 +249,6 @@ const H2Styled = styled.h2` font-weight : lighter; justify-content: space-between; font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif !important; - padding: 10px 26px 0 26px; text-align: center; letter-spacing: .005em; ` @@ -257,15 +282,15 @@ const StyledAnchor = styled.a` color : #00bcd4; text-decoration : none; ` -const StyledCloseModalButton = styled(Button)` - display : inline-block; - position : relative; - float : right !important; - margin-right : -8px; - background : transparent; - min-width: 0 !important; - width : 40px; -` +//const StyledCloseModalButton = styled(Button)` +// display : inline-block; +// position : relative; +// float : right !important; +// margin-right : -8px; +// background : transparent; +// min-width: 0 !important; +// width : 40px; +//` const ConfirmContainerStyled = styled.div` display : flex; @@ -273,6 +298,7 @@ const ConfirmContainerStyled = styled.div` align-items : center; justify-content : center; box-sizing : border-box; + font-size : 13px; ` const StyledSignUpButton = styled(Button)` diff --git a/src/Components/SignUpContainerFunction.js b/src/Components/SignUpContainerFunction.js new file mode 100644 index 0000000000000000000000000000000000000000..44e3df95450417562ead91717e0abd5a7134d65c --- /dev/null +++ b/src/Components/SignUpContainerFunction.js @@ -0,0 +1,337 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from "react"; +import GoogleLogin from 'react-google-login' +import { Button } from '@material-ui/core'; +//import FacebookLogin from 'react-facebook-login'; +import CloseIcon from '@material-ui/icons/Close'; +import styled from 'styled-components' +import {device} from './device.js' +import FormInput from "./FormInput.js" +import {StyledCloseModalButton, DialogContentDiv, DialogHeaderStyled, SocialConnectDiv, StyledGoogleLoginButton, H3Div} from './LoginContainer.js' +import ValidateUserInput from '../Components/FormValidationFunction.js' + +var Recaptcha = require('react-recaptcha') + +var callback = function () { + console.log('Done!!!!'); +}; + +export default function SignUpContainer (props) { + const [formNome, setNome] = useState( + { + key : false, + value : "", + } + ) + + const [formEmail, setEmail] = useState( + { + key : false, + value : "", + } + ) + + const [formSenha, setSenha] = useState( + { + key : false, + value : "" + } + ) + + const handleChange = (e, type) => { + const userInput = e.target.value + const flag = ValidateUserInput(type, userInput) + + if (type === 'username') { + setNome({...formNome, + key : flag, + value : userInput + }) + console.log(formNome) + } + else if(type === 'email') { + setEmail({...formEmail, + key : flag, + value : userInput + }) + console.log(formEmail) + } + else if(type === 'password') { + setSenha({...formSenha, + key : flag, + value : userInput + }) + console.log(formSenha) + } + } + + const limpaCamposForm = () => { + setNome({...formNome, + key : false, + value : '' + }) + + setEmail({...formEmail, + key : false, + value : '' + }); + + setSenha({...formSenha, + key : false, + value : '' + }) + } + + const responseGoogle = (response) => { + console.log(response); + } + + const switchModal = (e) => { + e.preventDefault() + props.handleClose() + props.openLogin() + }; + + const onSubmit = (e) => { + e.preventDefault(); + const newLogin = {name : formNome.value, email : formEmail.value, password : formSenha.value} + + if (!(formNome.key || formEmail.key || formSenha.key)) { + props.handleLoginInfo(newLogin) + limpaCamposForm() + } + } + + return ( + <ContainerStyled > + <DialogHeaderStyled> + <span style={{width:"32px"}}/> + <H2Styled> Cadastrar-se + </H2Styled> + <StyledCloseModalButton onClick={props.handleClose} > + <CloseIcon /> + </StyledCloseModalButton> + </DialogHeaderStyled> + + <DialogContentDiv> + <SocialConnectDiv> + <StyledGoogleLoginButton + clientId="658977310896-knrl3gka66fldh83dao2rhgbblmd4un9.apps.googleusercontent.com" + onSuccess={responseGoogle} + onFailure={responseGoogle} + cookiePolicy={'single_host_origin'} + > + <span style={{textTransform:"none", fontSize:"13px"}}>Usando o Google</span> + </StyledGoogleLoginButton> + </SocialConnectDiv> + + <H3Div> + <H3Styled> + <RightSideStrikedH3/> + <span style={{verticalAlign:"middle"}}>ou</span> + <LeftSideStrikedH3/> + </H3Styled> + </H3Div> + + <form onSubmit={onSubmit}> + <FormInput + inputType={"text"} + name={"name"} + value={formNome.value} + placeholder={"Nome Completo"} + handleChange={e => handleChange(e, 'username')} + required={true} + error={formNome.key} + /> + <br/> + <FormInput + inputType={"text"} + name={"email"} + value={formEmail.value} + placeholder={"E-mail"} + handleChange={e => handleChange(e, 'email')} + required={true} + error={formEmail.key} + help = {formEmail.key ? (formEmail.value.length == 0 ? "Faltou preencher seu e-mail." : <span>Insira um endereço de e-mail válido.<br/>Por exemplo: seunome@gmail.com, seunome@hotmail.com</span>) : ""} + /> + <br/> + <FormInput + inputType={"password"} + name={"password"} + value={formSenha.value} + placeholder={"Senha"} + handleChange={e => handleChange(e, 'password')} + required={true} + error={formSenha.key} + help = {formSenha.key ? (formSenha.value.length == 0 ? "Faltou digitar sua senha." : "A senha precisa ter no mÃnimo 8 caracteres.") : ""} + /> + <br/> + <Recaptcha + sitekey="6LcyFr8UAAAAAOd0Po6rmZC1D_nYik8nLCAkNKsc" + size="normal" + render="explicit" + onloadCallback={callback} + /> + <ConfirmContainerStyled> + <StyledSignUpButton type="submit" variant="contained"> + <span + style={{paddingLeft:"16px", paddingRight:"16px", borderRadius:"3px", boxSizing:"border-box", + fontFamily:"Roboto, sans serif", fontWeight:"500", color:"#fff"}} + > + CADASTRAR + </span> + </StyledSignUpButton> + </ConfirmContainerStyled> + </form> + + <TermosDeUsoStyled> + <p>Ao se cadastrar, você está aceitando os Termos de Uso e de PolÃtica + de Privacidade. <a href="./">Ler Termos</a>.</p> + </TermosDeUsoStyled> + + <DialogFooterStyled> + <span style={{textAlign:"center", fontSize: "14px"}}>Já possui cadastro? <StyledAnchor href="" onClick={e => switchModal(e)}>ENTRAR</StyledAnchor></span> + </DialogFooterStyled> + </DialogContentDiv> + </ContainerStyled> + ) +} + +const ContainerStyled = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + align : center; + display : flex; + flex-direction : column; + min-width : 450px; + + max-height : none; + position : relative; + padding : 10px; + @media ${device.mobileM} { + width : 100%; + height : 100%; + } +` + +const DialogFooterStyled = styled.div` + box-sizing : border-box; + font-family : 'Roboto', sans serif; + margin : 20px -20px; + padding-top : 20px; + border-top : 1px #e5e5e5 solid; + justify-content : center; + text-align : center; + line-height : 1.42857143 +` + +const TermosDeUsoStyled = styled.div` + font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif; + color : #666; + font-size : 13px; + margin : 0 0 10px; + max-width : 350px; + margin-top : 10px; + text-align : start; +` + +const H2Styled = styled.h2` + align-self : center; + color : #666; + font-size : 26px; + font-weight : lighter; + justify-content: space-between; + font-family: 'Roboto', sans serif, 'Helvetica Neue', Helvetica, Arial, sans-serif !important; + text-align: center; + letter-spacing: .005em; +` + +const H3Styled = styled.h3` + overflow : hidden; + text-align : center; + font-size : 14px; + color : #666; + margin : 10px 0; +` +const RightSideStrikedH3 = styled.div` + display : inline-block; + border-bottom: 1px dotted #666; + vertical-align : middle; + font-weight : 500; + margin-right : 5px; + width : 45%; +` + +const LeftSideStrikedH3 = styled.div` + display : inline-block; + border-bottom: 1px dotted #666; + vertical-align : middle; + font-weight : 500; + margin-left : 5px; + width : 45%; +` + +const StyledAnchor = styled.a` + color : #00bcd4; + text-decoration : none; +` +//const StyledCloseModalButton = styled(Button)` +// display : inline-block; +// position : relative; +// float : right !important; +// margin-right : -8px; +// background : transparent; +// min-width: 0 !important; +// width : 40px; +//` + +const ConfirmContainerStyled = styled.div` + display : flex; + margin-top : 10px; + align-items : center; + justify-content : center; + box-sizing : border-box; + font-size : 13px; +` + +const StyledSignUpButton = styled(Button)` + background-color: #00bcd4 !important; + box-shadow : none !important; + outline: none !important; + border : 0 !important; + overflow : hidden !important; + width : 50% !important; + display : inline-block !important; + font-family : 'Roboto', sans serif !important; + font-size: 14px !important; + height : 36px !important; + align-items : center !important; + border-radius: 3px !important; + align-self : 50% !important; + :hover { + background-color : #00acc1 !important; + } +` + +const StyledRecaptcha = styled(Recaptcha)` + display : flex !important; + justify-content : center !important; +` diff --git a/src/Components/SignUpModal.js b/src/Components/SignUpModal.js index c25758f49c33d287bd28a13f321bdd7eeaa8b673..b4c156af213fcc92dd57daa0996ce4a40d8381b6 100644 --- a/src/Components/SignUpModal.js +++ b/src/Components/SignUpModal.js @@ -22,7 +22,7 @@ import Modal from '@material-ui/core/Modal'; import Backdrop from '@material-ui/core/Backdrop'; import Fade from '@material-ui/core/Fade'; import styled from 'styled-components' -import SignUpContainer from './SignUpContainer.js' +import SignUpContainer from './SignUpContainerFunction.js' import {Store} from '../Store.js' import axios from 'axios' import {apiUrl} from '../env'; @@ -41,48 +41,43 @@ const StyledModalSignUp = styled(Modal)` ` -const useStyles = makeStyles(theme => ({ - modal: { - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - textAlign: "center", - maxBlockSize: "350px", - width: '100%', - minBlockSize: "100px", - }, - paper: { - backgroundColor: "theme.palette.background.paper", - border: '2px solid #000', - boxShadow: " 0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12);", - align:"center", - }, -})); + export default function SignUpModal (props) { const { state, dispatch } = useContext(Store) const handleLoginInfo = (newLogin) => { - + {/*console.log(state.currentUser)*/} axios.post(`${apiUrl}/auth`, { - name : newLogin.nomeCompleto, + name : newLogin.name, email: newLogin.email, - password : newLogin.senha, - password_confirmation : newLogin.senha + password : newLogin.password, + password_confirmation : newLogin.senha, + terms_of_service:true, + avatar: "" } ).then( (response) => { dispatch ( { type: 'USER_SIGNED_UP', userLoggedIn: !state.userIsLoggedIn, login: { - username : newLogin.username, - email : newLogin.email, + id : response.data.id, + username : response.data.name, + email : response.data.email, accessToken : response.headers['access-token'], - client : response.headers.client + clientToken : response.headers.client, + userAvatar : response.data.avatar_file_name, + userCover : response.data.cover_file_name } } ) + localStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + localStorage.setItem('@portalmec/clientToken', response.headers.client,) + localStorage.setItem('@portalmec/id', response.data.data.id) + localStorage.setItem('@portalmec/username', response.data.data.name) + localStorage.setItem('@portalmec/uid', response.data.data.uid) + console.log(state.currentUser) props.handleClose() }, (error) => { console.log(':(') @@ -90,15 +85,15 @@ export default function SignUpModal (props) { ) } - //useEffect(()=>{console.log(state.loginInfo)},[state.loginInfo]) + //useEffect(()=>{console.log(state.currentUser)},[state.currentUser]) return ( <StyledModalSignUp aria-labelledby="transition-modal-title" aria-describedby="transition-modal-description" open={props.open} - animation={true} - centered={true} + + centered="true" onClose={props.handleClose} closeAfterTransition BackdropComponent={Backdrop} diff --git a/src/Components/SnackbarComponent.js b/src/Components/SnackbarComponent.js new file mode 100644 index 0000000000000000000000000000000000000000..74730d3c4b949a6e4af69f5799ba6bad09961fca --- /dev/null +++ b/src/Components/SnackbarComponent.js @@ -0,0 +1,33 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import Alert from '../Components/Alert.js'; +import Snackbar from '@material-ui/core/Snackbar'; + +export default function SnackbarComponent (props) { + return ( + <Snackbar open={props.snackbarOpen} autoHideDuration={1000} onClose={props.handleClose} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity={props.severity} style={{backgroundColor:"#00acc1"}}> + {props.text} + </Alert> + </Snackbar> + ) +} diff --git a/src/Components/Stepper.js b/src/Components/Stepper.js new file mode 100644 index 0000000000000000000000000000000000000000..c550c2d94f110930e42ea057d6e47d737ab12353 --- /dev/null +++ b/src/Components/Stepper.js @@ -0,0 +1,53 @@ +import React, {useState} from 'react' +import styled from 'styled-components' + +export default function Stepper (props) { + + return ( + <div style={{display:"flex",justifyContent:"center", marginBottom:"50px"}}> + <FeedbackUpload> + { + props.items.map((item)=> + <div className={"page-selector " + (item.selected ? 'selected' : '')} > + {item.value} + </div> + ) + } + </FeedbackUpload> + </div> + ) +} + +const FeedbackUpload = styled.div` + width : 280px; + display : flex; + background :#e5e5e5; + flex-direction : row; + justify-content : space-between; + height : 50px; + align-items : center; + padding : 7px; + border-radius : 50px; + margin-top : 20px; + + .page-selector { + height : 36px; + width : 36px; + background : #fff; + border-radius : 50%; + color : #00bcd4; + line-height : 32px; + font-size : 20px; + font-weight : 500; + border: solid 3px #00bcd4; + text-align: center; + align-items : center; + vertical-align:middle; + } + + .selected { + background : #00bcd4; + color : #fff; + border-color : #00bcd4; + } +` diff --git a/src/Components/StoreGuide.js b/src/Components/StoreGuide.js new file mode 100644 index 0000000000000000000000000000000000000000..a4b0f509b11a3c8ab590e397c1fe07e9ba616c5c --- /dev/null +++ b/src/Components/StoreGuide.js @@ -0,0 +1,86 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext} from 'react'; +import styled from 'styled-components'; +import Grid from '@material-ui/core/Grid'; +import Card from '@material-ui/core/Card'; +import CardContent from '@material-ui/core/CardContent'; +import { Typography } from '@material-ui/core'; + +const StoreTitle = styled.h1` + margin-top: 0; +` + +const StoreTopic = styled.h2` + padding-top: 0.5em; + font-size: 1em; + font-weight: 100; +` + +const StoreBody = styled.p` + font-size: 0.8em; +` +export default function ItemStoreContainer (props) { + return ( + <Grid item xs={10} sm={7}> + <Card> + <CardContent> + <StoreTitle> + Lojinha + </StoreTitle> + <StoreTopic> + O que são "gemas"? + </StoreTopic> + <StoreBody> + Gemas são moedas virtuais que você ganha usando a plataforma MEC RED (publicando recursos, avaliando recursos, criando conexões, etc) e pode usar para adquirir itens cosméticos para seu perfil, como insÃgnias e bordas de avatar. + </StoreBody> + <StoreTopic> + Posso usar dinheiro real para comprar gemas? + </StoreTopic> + <StoreBody> + <strong>Não.</strong> Gemas são adquiridas exclusivamente através do uso da plataforma. + </StoreBody> + <StoreTopic> + Qual a vantagem de usar itens? + </StoreTopic> + <StoreBody> + Os itens são uma maneira de mostrar quem você é, quais os seus interesses e quais foram suas contribuições mais importantes. Nenhum item oferece funcionalidade a mais, de maneira que novos usuários não sofram desvantagem. + </StoreBody> + <StoreTopic> + Como usar + </StoreTopic> + <StoreBody> + As seções da loja dividem os itens por <strong>categoria</strong>. + <ul> + <li> + Itens adquiridos <strong>somente por conquistas</strong> não aparecem + na loja (exceto pelos que você já tem); + </li> + <li> + Outros itens podem ser comprados (usando gemas), usados (usar uma borda de avatar, por exemplo) ou tirados (se estiverem sendo usados). + </li> + </ul> + </StoreBody> + <h4> + Boas compras! + </h4> + </CardContent> + </Card> + </Grid> + ) +} diff --git a/src/Components/TabPanels/Breadcrumbs.js b/src/Components/TabPanels/Breadcrumbs.js new file mode 100644 index 0000000000000000000000000000000000000000..00d547825993a8dd803b6d3a7f89617e71fd2714 --- /dev/null +++ b/src/Components/TabPanels/Breadcrumbs.js @@ -0,0 +1,48 @@ +import React from 'react' +import styled from 'styled-components' +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import {Link} from 'react-router-dom'; + +export default function CustomizedBreadcrumbs (props) { + + return ( + <BreadcrumbsDiv> + <StyledBreadcrumbs> + <Link to="/" style={{color:"#00bcd4", textDecoration:"none"}}> + Página Inicial + </Link> + { + props.values.map( (value) => + <span> + {value} + </span> + ) + } + {/*<span> + {props.currentPage} + </span> + <span> + {props.value} + </span> */} + </StyledBreadcrumbs> + </BreadcrumbsDiv> + ) +} + +const BreadcrumbsDiv = styled.div` + padding : 10px; + display : flex; + justify-content : center; + @media screen and (max-width: 768px) { + margin-left : 10px; + } + ` + +const StyledBreadcrumbs = styled(Breadcrumbs)` + display : flex; + justify-content : flex-start; + max-width : 1170px; + span { + color : #a5a5a5; + } +` diff --git a/src/Components/TabPanels/PanelComponents/ButtonsArea.js b/src/Components/TabPanels/PanelComponents/ButtonsArea.js new file mode 100644 index 0000000000000000000000000000000000000000..b55cfd06e13cdd636e0c141eac053b737f60485e --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/ButtonsArea.js @@ -0,0 +1,157 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import styled from 'styled-components' +import {Carregados} from '../StyledComponents.js' +import Button from '@material-ui/core/Button'; + +export function ButtonsAreaRecurso (props) { + return ( + <Carregados> + <p style={{margin:"0 0 10px", fontSize:"14px"}}> + Carregados {props.sliceLength} de {props.length} + </p> + + { + props.length > 4 && + <React.Fragment> + <ButtonMostrarMaisRecurso onClick={() => {props.showMore()}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS</span> + </ButtonMostrarMaisRecurso> + + <ButtonMostrarTodos onClick={() => {props.showAll()}}> + <span style={{color:"#666", fontSize:"14px", fontWeight:"500"}}>MOSTRAR TODOS</span> + </ButtonMostrarTodos> + </React.Fragment> + } + + </Carregados> + ) +} + +export function ButtonsAreaColecao (props) { + return ( + <Carregados> + <p style={{margin:"0 0 10px", fontSize:"14px"}}> + Carregados {props.sliceLength} de {props.length} + </p> + + { + props.length > 4 && + <React.Fragment> + <ButtonMostrarMaisColecao onClick={() => {props.showMore()}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS</span> + </ButtonMostrarMaisColecao> + + <ButtonMostrarTodos onClick={() => {props.showAll()}}> + <span style={{color:"#666", fontSize:"14px", fontWeight:"500"}}>MOSTRAR TODOS</span> + </ButtonMostrarTodos> + </React.Fragment> + } + + </Carregados> + ) +} + +export function ButtonsAreaRede (props) { + return ( + <Carregados> + <p style={{margin:"0 0 10px", fontSize:"14px"}}> + Carregados {props.sliceLength} de {props.length} + </p> + + { + props.length > 4 && + <React.Fragment> + <ButtonMostrarMaisRede onClick={() => {props.showMore()}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS</span> + </ButtonMostrarMaisRede> + + <ButtonMostrarTodos onClick={() => {props.showAll()}}> + <span style={{color:"#666", fontSize:"14px", fontWeight:"500"}}>MOSTRAR TODOS</span> + </ButtonMostrarTodos> + </React.Fragment> + } + + </Carregados> + ) +} + +const ButtonMostrarTodos = styled(Button)` + &:hover { + background-color : #d5d5d5 !important; + } + height : 36px !important; + padding-left : 16px !important; + padding-right : 16px !important; + font-weight : 500 !important; + border-radius : 3px !important; + color :#666 !important; + background-color: #e8e8e8 !important; + min-width : 88px !important; + height : 36px !important; +` + +const ButtonMostrarMaisRede = styled(Button)` + background-color : #00bcd4 !important; + font-size: 14px !important; + font-weight: 500 !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important; + outline : none !important; + min-width : 88px !important; + vertical-align : middle !important; + margin : 6px 8px !important; + text-decoration : none !important; +` + +export const ButtonMostrarMaisColecao = styled(Button)` + background-color : #503096 !important; + font-size: 14px !important; + font-weight: 500 !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important; + outline : none !important; + min-width : 88px !important; + vertical-align : middle !important; + margin : 6px 8px !important; + text-decoration : none !important; +` + +export const ButtonMostrarMaisRecurso = styled(Button)` + background-color : #ff7f00 !important; + font-size: 14px !important; + font-weight: 500 !important; + height: 36px !important; + border-radius: 3px !important; + padding-left: 16px !important; + padding-right: 16px !important; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26) !important; + outline : none !important; + min-width : 88px !important; + vertical-align : middle !important; + margin : 6px 8px !important; + text-decoration : none !important; +` diff --git a/src/Components/TabPanels/PanelComponents/NoContent.js b/src/Components/TabPanels/PanelComponents/NoContent.js new file mode 100644 index 0000000000000000000000000000000000000000..60c8d76d0e2e952467399bb766ab3e46ddcc2ac1 --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/NoContent.js @@ -0,0 +1,58 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import styled from 'styled-components' + +export default function NoContent (props) { + + return ( + <DivTextoNoPublications> + <InnerDiv> + <NoPubSpan>{props.text}</NoPubSpan> + </InnerDiv> + </DivTextoNoPublications> + ) +} + +const NoPubSpan = styled.span` + margin-top : 10px; + font-size : 24px; + font-family : Roboto; + font-weight : lighter; + white-space : break-spaces +` + +const InnerDiv = styled.div` + top : 50%; + position : relative; + transform : translateY(-50%); +` + +export const DivTextoNoPublications = styled.div` + height : 360px; + text-align : center; + padding-left : 15px; + padding-right : 15px; +` + +{/*const DivConteudoNaoPublicado = styled.div` + position : relative; + top : 50%; + transform : translateY(-50%); +`*/} diff --git a/src/Components/TabPanels/PanelComponents/PanelTitle.js b/src/Components/TabPanels/PanelComponents/PanelTitle.js new file mode 100644 index 0000000000000000000000000000000000000000..ffe073623b4fa46f583ca4f513b9cb4c7f9c1565 --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/PanelTitle.js @@ -0,0 +1,36 @@ +import React from 'react' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; + +export default function PanelTitle (props) { + return ( + <Header container> + <Grid item xs={12}> + <p className="titulo">{props.title} <b style={{fontWeight:"500", fontSize : "20px"}}>({props.length})</b></p> + <hr/> + </Grid> + </Header> + ) +} + +const Header = styled(Grid)` + margin-bottom : 15px; + padding : 0; + + .titulo { + margin : 0; + font-style : normal; + color : #757575; + font-size : 1.857em; + padding-left : 15px; + padding-right : 15px; + margin-top : 10px; + margin-bottom : 5px; + } + + hr { + border : 0; + margin : 0 15px 0 15px; + border-top : 1px solid #757575; + } +` diff --git a/src/Components/TabPanels/PanelComponents/TemplateColecao.js b/src/Components/TabPanels/PanelComponents/TemplateColecao.js new file mode 100644 index 0000000000000000000000000000000000000000..dfb193fc5a5db0774c39c7df8095153eedc36c59 --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/TemplateColecao.js @@ -0,0 +1,113 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import Grid from '@material-ui/core/Grid'; +import NoContent from './NoContent.js' +import CollectionCardFunction from '../../CollectionCardFunction.js' +import Title from './PanelTitle.js' +import {WhiteContainer, StyledGrid} from '../StyledComponents.js' +import {ButtonsAreaColecao} from './ButtonsArea' + + +export default function PanelTemplateColecao (props) { + const RenderFollowedColCard = (card, followerBoolean) => { + if (followerBoolean) { + return ( + <CollectionCardFunction + name={card.followable.name} + rating={card.followable.score} + type={card.followable.object_type} + description={card.followable.description} + author={card.followable.owner.name} + authorID={card.followable.owner.id} + avatar={card.followable.owner.avatar} + thumbnails={card.followable.items_thumbnails} + likeCount={card.followable.likes_count} + liked={card.followable.liked} + followed={card.followable.followed} + privacy={card.followable.privacy} + id={card.followable.id} + /> + ) + } + else { + return ( + <CollectionCardFunction + name={card.name} + rating={card.score} + type={card.object_type} + description={card.description} + author={card.owner.name} + avatar={card.owner.avatar} + authorID={card.owner.id} + thumbnails={card.items_thumbnails} + likeCount={card.likes_count} + privacy={card.privacy} + liked={card.liked} + followed={card.followed} + tags={card.tags} + id={card.id} + /> + ) + } + } + + return ( + <WhiteContainer> + <Title + title={props.title} + length={props.length} + /> + + { + props.length === 0 ? + ( + [ + <NoContent text={props.noContentText}/> + ] + ) + : + ( + [ + <React.Fragment> + + <StyledGrid container spacing={1} style={{paddingLeft : "30px", paddingRight : "15px"}}> + { + props.sliceArr.map( (card) => + <Grid item md={3} xs={12} key={card.id}> + {RenderFollowedColCard(card, props.followed)} + </Grid> + ) + } + </StyledGrid> + + <ButtonsAreaColecao + sliceLength={props.sliceArr.length} + length={props.length} + showMore={() => props.showMore()} + showAll={() => props.showAll()} + /> + </React.Fragment> + ] + ) + } + + </WhiteContainer> + ) +} diff --git a/src/Components/TabPanels/PanelComponents/TemplateCuradoria.js b/src/Components/TabPanels/PanelComponents/TemplateCuradoria.js new file mode 100644 index 0000000000000000000000000000000000000000..132b96efa8ba381fa3ad1eb5cdfc0fb66611965f --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/TemplateCuradoria.js @@ -0,0 +1,79 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import Grid from '@material-ui/core/Grid'; +import NoContent from './NoContent.js' +import ResourceCardFunction from '../../ResourceCardFunction.js' +import Title from './PanelTitle.js' +import {WhiteContainer, StyledGrid} from '../StyledComponents.js' +import {ButtonsAreaRecurso} from './ButtonsArea' + +export default function Template (props) { + return ( + <WhiteContainer> + <Title + title={props.titleText} + length={props.length} + /> + + { + props.length === 0 ? + ( + [ + <NoContent text={props.noContentText}/> + ] + ) + : + ( + [ + <React.Fragment> + <StyledGrid container spacing={1} style={{paddingLeft : "30px", paddingRight : "15px"}}> + { + props.sliceArr.map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <ResourceCardFunction + id={card.learning_object.id} + avatar = {card.submitter.avatar} + thumbnail = {card.learning_object.thumbnail} + type = {card.learning_object.object_type ? card.learning_object.object_type : "Outros"} + title={card.learning_object.name} + published={false} + tags={card.educational_stages} + href={"/recurso/" + card.learning_object.id} + downloadableLink={card.default_attachment_location} + /> + </Grid> + ) + } + </StyledGrid> + + <ButtonsAreaRecurso + sliceLength={props.sliceArr.length} + length={props.length} + showMore={() => props.showMore()} + showAll={() => props.showAll()} + /> + </React.Fragment> + ] + ) + } + + </WhiteContainer> + ) +} diff --git a/src/Components/TabPanels/PanelComponents/TemplateRecurso.js b/src/Components/TabPanels/PanelComponents/TemplateRecurso.js new file mode 100644 index 0000000000000000000000000000000000000000..6d46e423e6c596efbff5a2725d7ba5d8bb26feab --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/TemplateRecurso.js @@ -0,0 +1,83 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import Grid from '@material-ui/core/Grid'; +import NoContent from './NoContent.js' +import ResourceCardFunction from '../../ResourceCardFunction.js' +import Title from './PanelTitle.js' +import {WhiteContainer, StyledGrid} from '../StyledComponents.js' +import {ButtonsAreaRecurso} from './ButtonsArea' + +export default function Template (props) { + return ( + <WhiteContainer> + <Title + title={props.titleText} + length={props.length} + /> + + { + props.length === 0 ? + ( + [ + <NoContent text={props.noContentText}/> + ] + ) + : + ( + [ + <React.Fragment> + <StyledGrid container spacing={1} style={{paddingLeft : "30px", paddingRight : "15px"}}> + { + props.slice.map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <ResourceCardFunction + avatar = {card.publisher.avatar} + id={card.id} + thumbnail = {card.thumbnail} + type = {card.object_type !== null? card.object_type : "Outros"} + title={card.name} + published={card.state === "published" ? true : false} + likeCount={card.likes_count} + liked={card.liked} + rating={card.review_average} + tags={card.educational_stages} + href={"/recurso/" + card.id} + downloadableLink={card.default_attachment_location} + + /> + </Grid> + ) + } + </StyledGrid> + + <ButtonsAreaRecurso + sliceLength={props.slice.length} + length={props.length} + showMore={() => props.showMore()} + showAll={() => props.showAll()} + /> + </React.Fragment> + ] + ) + } + + </WhiteContainer> + ) +} diff --git a/src/Components/TabPanels/PanelComponents/TemplateRede.js b/src/Components/TabPanels/PanelComponents/TemplateRede.js new file mode 100644 index 0000000000000000000000000000000000000000..b4ded29ef208c343697b8828481bf517abacd27c --- /dev/null +++ b/src/Components/TabPanels/PanelComponents/TemplateRede.js @@ -0,0 +1,94 @@ +import React from 'react' +import ContactCard from '../../ContactCard.js' +import {apiDomain} from '../../../env'; +import NoContent from './NoContent.js' +import {WhiteContainer, StyledGrid} from '../StyledComponents.js' +import Title from './PanelTitle.js' +import Grid from '@material-ui/core/Grid'; +import {ButtonsAreaRede} from './ButtonsArea' + +export default function PanelTemplateRede (props) { + const RenderContactCard = (card, followerBoolean) => { + if (followerBoolean) { + return ( + <ContactCard + name = {card.follower.name} + avatar = {card.follower.avatar ? apiDomain + card.follower.avatar : null} + cover={card.follower.cover ? apiDomain + card.follower.cover : null} + numCollections = {card.follower.collections_count} + numLearningObjects = {card.follower.learning_objects_count} + follow_count={card.follower.follows_count} + followed = {card.follower.followed || null} + followerID = {card.follower.id} + href={'/usuario-publico/' + card.follower.id} + /> + ) + } + else { + return ( + <ContactCard + name = {card.followable.name} + avatar = {card.followable.avatar ? apiDomain + '/' + card.followable.avatar : null} + cover={apiDomain + card.followable.cover} + numCollections = {card.followable.collections_count} + numLearningObjects = {card.followable.learning_objects_count} + follow_count={card.followable.follows_count} + followed = {card.followable.followed || null} + followedID = {card.followable.id} + href={'/usuario-publico/' + card.followable.id} + /> + ) + } + } + + return ( + <WhiteContainer> + + <Title + title={props.title} + length={props.length} + /> + + + {/*if length is 0, display "No Content" text */} + {/*otherwise, display either ContactCard and Buttons */} + { + props.length === 0 ? + ( + [ + <NoContent text={props.noContentText}/> + ] + ) + : + ( + [ + <React.Fragment> + <StyledGrid container spacing={1} style={{paddingLeft : "30px", paddingRight : "15px"}}> + { + props.sliceArr.map( (card) => + <> + { + card.follower && + <Grid item md={3} xs={12} key={card.id}> + {RenderContactCard(card, props.follower)} + </Grid> + } + </> + ) + } + </StyledGrid> + + <ButtonsAreaRede + sliceLength={props.sliceArr.length} + length={props.length} + showMore={() => props.showMore()} + showAll={() => props.showAll()} + /> + </React.Fragment> + ] + ) + } + + </WhiteContainer> + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/LastCollections.js b/src/Components/TabPanels/PublicUserPageTabs/LastCollections.js new file mode 100644 index 0000000000000000000000000000000000000000..495a5e2df68e3dc2892fc0813db88bfa9fab7593 --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/LastCollections.js @@ -0,0 +1,62 @@ +import React from 'react' +import Grid from '@material-ui/core/Grid'; +import {HeaderGrid, StyledGrid} from '../StyledComponents.js' +import {NoContent} from './TabInicio.js' +import CollectionCardFunction from '../../CollectionCardFunction.js' +import NoCol from '../../../img/Pagina_vazia_colecao.png' + +export default function LastCols (props) { + return ( + <React.Fragment> + <HeaderGrid container> + <Grid item xs={12}> + <h3>Últimas alterações em coleções</h3> + </Grid> + </HeaderGrid> + + + { + props.count == 0 || props.collections.length == 0? + ( + [ + <Grid container> + <Grid item xs={12}> + <NoContent + image={NoCol} + text1={props.username + " ainda não disponibilizou nenhuma coleção."} + text2={"Quando disponibilizar, elas aparecerão aqui."} + /> + </Grid> + </Grid> + ] + ) + : + ( + [ + <StyledGrid container spacing={1} style={{paddingLeft : "0.5em"}}> + { + props.collections.slice(0,4).map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <CollectionCardFunction + name={card.name} + rating={card.score} + type={card.object_type} + description={card.description} + author={card.owner.name} + avatar={card.owner.avatar} + thumbnails={card.items_thumbnails} + likeCount={card.likes_count} + liked={card.liked} + followed={card.followed} + tags={card.tags} + /> + </Grid> + ) + } + </StyledGrid> + ] + ) + } + </React.Fragment> + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/LastLearnObj.js b/src/Components/TabPanels/PublicUserPageTabs/LastLearnObj.js new file mode 100644 index 0000000000000000000000000000000000000000..d1c3b1315e2a13da178548ceb5259e4bc47f2a63 --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/LastLearnObj.js @@ -0,0 +1,70 @@ +import React from 'react' +import Grid from '@material-ui/core/Grid'; +import ResourceCardFunction from '../../ResourceCardFunction.js' +import NoPub from '../../../img/Pagina_vazia_Sem_publicar.png' +import {HeaderGrid, StyledGrid} from '../StyledComponents.js' +import {NoContent} from './TabInicio.js' + +export default function LastLearnObjs (props) { + return ( + <React.Fragment> + <HeaderGrid container> + <Grid item xs={9}> + <h3>Últimos Recursos Publicados</h3> + </Grid> + <Grid item xs={3} style={{textAlign : "end"}}> + {props.count > 4 && + <span> + VER MAIS + </span> + } + </Grid> + </HeaderGrid> + + { + props.count == 0 ? + ( + [ + <Grid container> + <Grid item xs={12}> + <NoContent + image={NoPub} + text1={props.username + " ainda não disponibilizou nenhum recurso."} + text2={"Quando disponibilizar, eles aparecerão aqui."} + /> + </Grid> + </Grid> + ] + ) + : + ( + [ + <StyledGrid container spacing={1} style={{paddingLeft : "0.5em"}}> + { + props.learningObjs.slice(0,4).map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <ResourceCardFunction + avatar = {card.publisher.avatar} + id={card.id} + thumbnail = {card.thumbnail} + type = {card.object_type !== null? card.object_type : "Outros"} + title={card.name} + published={card.state === "published" ? true : false} + likeCount={card.likes_count} + liked={card.liked} + rating={card.review_average} + tags={card.educational_stages} + href={"/recurso/" + card.id} + downloadableLink={card.default_attachment_location} + + /> + </Grid> + ) + } + </StyledGrid> + ] + ) + } + </React.Fragment> + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/TabColecoes.js b/src/Components/TabPanels/PublicUserPageTabs/TabColecoes.js new file mode 100644 index 0000000000000000000000000000000000000000..2ab49230b9c737d3468b9645cf9786fd29e07510 --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/TabColecoes.js @@ -0,0 +1,76 @@ +import React, {useState, useEffect} from 'react' +import styled from 'styled-components' +import {HeaderGrid, ContainerStyled, Carregados} from '../StyledComponents.js' +import Grid from '@material-ui/core/Grid'; +import CollectionCardFunction from '../../CollectionCardFunction.js' +import {ButtonMostrarMaisColecao} from '../PanelComponents/ButtonsArea.js' + +export default function TabRecursos (props) { + const [arr, setArr] = useState([]) + const [colsSlice, setSlice] = useState([]) + const handleSlice = (newArr) => {setSlice(newArr)} + + useEffect( () => { + setArr(props.collections) + setSlice(props.collections.slice(0,4)) + }, []) + + const showMore = (quantity) => { + var sliceLength = colsSlice.length + handleSlice(arr.slice(0, sliceLength + quantity)) + } + + return ( + <ContainerStyled style={{flexDirection : "column"}}> + + <HeaderGrid container> + <Grid item xs={12}> + <h3>Coleções públicas <b style={{fontWeight:"500"}}>({props.count})</b></h3> + </Grid> + </HeaderGrid> + + <Grid container spacing={1} style={{paddingLeft : "0.5em"}}> + { + colsSlice.map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <CollectionCardFunction + name={card.name} + rating={card.score} + type={card.object_type} + description={card.description} + author={card.owner.name} + avatar={card.owner.avatar} + thumbnails={card.items_thumbnails} + likeCount={card.likes_count} + liked={card.liked} + followed={card.followed} + tags={card.tags} + /> + </Grid> + ) + } + </Grid> + + <Carregados> + <p style={{margin:"0 0 10px", fontSize:"14px"}}> + Carregados {colsSlice.length} de {arr.length} + </p> + + { + props.count > 5 && + <React.Fragment> + <ButtonMostrarMaisColecao onClick={() => {showMore(4)}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS 4</span> + </ButtonMostrarMaisColecao> + + <ButtonMostrarMaisColecao onClick={() => {showMore(20)}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS 20</span> + </ButtonMostrarMaisColecao> + </React.Fragment> + } + + </Carregados> + + </ContainerStyled> + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/TabInicio.js b/src/Components/TabPanels/PublicUserPageTabs/TabInicio.js new file mode 100644 index 0000000000000000000000000000000000000000..f0febf175a58638dde9ae48b71810da80bb62255 --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/TabInicio.js @@ -0,0 +1,101 @@ +import React from 'react' +import styled from 'styled-components' +import UserDescription from './UserDescription.js' +import NoContentImage from '../../../img/img-16.png' +import Grid from '@material-ui/core/Grid'; +import LastLearnObjs from './LastLearnObj.js' +import LastCols from './LastCollections.js' +import {ContainerStyled} from '../StyledComponents.js' + +const NoContentContainer = styled.div` + height : 250px; + display : flex; + justify-content : center; + align-content : center; + text-align : center; + + h3 { + font-size : 24px; + font-weight : lighter; + margin-top : 20px; + margin-bottom : 10px; + } + + p { + font-size : 15px; + font-weight : lighter; + margin : 0 0 10px; + } +` +/*Displays given image and text saying user hasn't posted anything yet*/ +export function NoContent (props) { + return ( + <NoContentContainer> + <div style={{paddingTop : "1em"}}> + <img src={props.image} style={{width : "130px", verticalAlign : "middle", border : "0"}}/> + <h3> + {props.text1} + </h3> + <p> + {props.text2} + </p> + </div> + </NoContentContainer> + + ) +} + +export default function TabInicio (props) { + + return ( + <React.Fragment> + {/*display user description*/} + {props.user.description && + <UserDescription text={props.user.description}/> + } + { + props.user.learning_objects_count == 0 && props.user.collections_count == 0 ? + ( + [ + <ContainerStyled> + <Grid container> + <Grid item xs={12}> + <NoContent + image={NoContentImage} + text1={props.user.name + " ainda não disponibilizou nenhum recurso ou coleção."} + text2={"Quando disponibilizar, eles aparecerão aqui."} + /> + </Grid> + </Grid> + </ContainerStyled> + ] + ) + : + ( + [ + <React.Fragment> + <ContainerStyled style={{flexDirection : "column"}}> + <LastLearnObjs + count={props.user.learning_objects_count} + username={props.user.name} + learningObjs={props.learningObjs} + /> + </ContainerStyled> + + <ContainerStyled style={{flexDirection : "column", paddingTop : "1em"}}> + <LastCols + count={props.user.collections_count} + username={props.user.name} + collections={props.collections} + /> + </ContainerStyled> + </React.Fragment> + ] + ) + } + {/*display last published learning objects and last alterations in user collections*/} + + </React.Fragment> + + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/TabRecursos.js b/src/Components/TabPanels/PublicUserPageTabs/TabRecursos.js new file mode 100644 index 0000000000000000000000000000000000000000..ce445d9ad57aa2b6627018314a45741b23ad1b5b --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/TabRecursos.js @@ -0,0 +1,77 @@ +import React, {useState, useEffect} from 'react' +import styled from 'styled-components' +import {HeaderGrid, ContainerStyled, Carregados} from '../StyledComponents.js' +import Grid from '@material-ui/core/Grid'; +import ResourceCardFunction from '../../ResourceCardFunction.js' +import {ButtonMostrarMaisRecurso} from '../PanelComponents/ButtonsArea' + +export default function TabRecursos (props) { + const [arr, setArr] = useState([]) + const [objsSlice, setSlice] = useState([]) + const handleSlice = (newArr) => {setSlice(newArr)} + + useEffect( () => { + setArr(props.learningObjs) + setSlice(props.learningObjs.slice(0,4)) + }, []) + + const showMore = (quantity) => { + var sliceLength = objsSlice.length + handleSlice(arr.slice(0, sliceLength + quantity)) + } + + return ( + <ContainerStyled style={{flexDirection : "column"}}> + + <HeaderGrid container> + <Grid item xs={12}> + <h3>Recursos Publicados <b style={{fontWeight:"500"}}>({props.count})</b></h3> + </Grid> + </HeaderGrid> + + <Grid container spacing={1} style={{paddingLeft : "0.5em"}}> + { + objsSlice.map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <ResourceCardFunction + avatar = {card.publisher.avatar} + id={card.id} + thumbnail = {card.thumbnail} + type = {card.object_type ? card.object_type : "Outros"} + title={card.name} + published={card.state === "published" ? true : false} + likeCount={card.likes_count} + liked={card.liked} + rating={card.review_average} + tags={card.educational_stages} + downloadableLink={card.default_attachment_location} + + /> + </Grid> + ) + } + </Grid> + + <Carregados> + <p style={{margin:"0 0 10px", fontSize:"14px"}}> + Carregados {objsSlice.length} de {arr.length} + </p> + + { + props.count > 5 && + <React.Fragment> + <ButtonMostrarMaisRecurso onClick={() => {showMore(4)}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS 4</span> + </ButtonMostrarMaisRecurso> + + <ButtonMostrarMaisRecurso onClick={() => {showMore(20)}}> + <span style={{color:"#fff", fontSize:"14px", fontWeight:"500"}}>MOSTRAR MAIS 20</span> + </ButtonMostrarMaisRecurso> + </React.Fragment> + } + + </Carregados> + + </ContainerStyled> + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/TabRede.js b/src/Components/TabPanels/PublicUserPageTabs/TabRede.js new file mode 100644 index 0000000000000000000000000000000000000000..ac1d3a0694d125c1beb4131f8ad9ebc02819772e --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/TabRede.js @@ -0,0 +1,82 @@ +import React, {useState, useEffect} from 'react' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../../env'; +import PanelTemplateRede from '../PanelComponents/TemplateRede.js' + +const getConfig = () => { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type':'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid') + } + } + return config +} + +export default function TabRede (props) { + const [followers, setFollowers] = useState([]) + const [followersSlice, setFollowersSlice] = useState([]) + + const showMoreFollowers = () => { + let varSlice = followersSlice.length + setFollowersSlice(followers.slice(0, varSlice + 4)) + } + const showAllFollowers = () => {setFollowersSlice(followers)} + + const [following, setFollowing] = useState([]) + const [followingSlice, setFollowingSlice] = useState([]) + const showMoreFollowing = () => { + let varSlice = followingSlice.length + setFollowingSlice(following.slice(0, varSlice + 4)) + } + const showAllFollowing = () => {setFollowingSlice(following)} + + useEffect( () => { + axios.all([ + axios.get((`${apiUrl}/users/` + props.id + '/followers'), getConfig()), + axios.get((`${apiUrl}/users/` + props.id + '/following/User'), getConfig()) + ]) + .then( (responseArr) => { + console.log('responseArr Rede: ', responseArr) + if (responseArr[0].headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', responseArr[0].headers['access-token']) + } + setFollowers(responseArr[0].data) + setFollowersSlice(responseArr[0].data.slice(0,4)) + + setFollowing(responseArr[1].data) + setFollowingSlice(responseArr[1].data.slice(0,4)) + }, + (error) => { + console.log('error while running axios all') + } + ) + }, []) + + return ( + <React.Fragment> + <PanelTemplateRede + title={"Seguidores"} + length={followers.length} + sliceArr={followersSlice} + showMore={showMoreFollowers} + showAll={showAllFollowers} + follower={true} + noContentText={props.username + ' não possui nenhum seguidor'} + /> + + <PanelTemplateRede + title={"Seguindo"} + length={following.length} + sliceArr={followingSlice} + showMore={showMoreFollowing} + showAll={showAllFollowing} + follower={false} + noContentText={props.username + ' não segue nenhum usuário'} + /> + </React.Fragment> + ) +} diff --git a/src/Components/TabPanels/PublicUserPageTabs/UserDescription.js b/src/Components/TabPanels/PublicUserPageTabs/UserDescription.js new file mode 100644 index 0000000000000000000000000000000000000000..495e60e37f549d330c9281f2f86c71d73590367f --- /dev/null +++ b/src/Components/TabPanels/PublicUserPageTabs/UserDescription.js @@ -0,0 +1,68 @@ +import React from 'react' +import styled from 'styled-components' + +export default function UserDescription (props) { + return ( + <NoPadBox> + <ContainerDiv> + <DivSobre> + <h3>Sobre</h3> + <p>{props.text}</p> + </DivSobre> + </ContainerDiv> + </NoPadBox> + ) +} + +const DivSobre = styled.div` + position : relative; + min-height : 1px; + padding-left : 30px; + margin-bottom : 20px; + @media screen and (min-width: 992px) { + width : 66.66666667%; + float : left; + } + + h3 { + font-size : 24px; + margin-top : 20px; + margin-bottom : 10px; + font-family : inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; + } + + p { + margin : 0 0 10px; + } +` + +const ContainerDiv = styled.div` + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } + +` + +const NoPadBox = styled.div` + display : flex; + flex-direction: column; + margin-right : auto; + margin-left : auto; + padding : 0; + background-color : #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + margin-bottom : 30px; + + @media screen and (min-width: 768px) { + width : max-content; + } +` diff --git a/src/Components/TabPanels/StyledComponents.js b/src/Components/TabPanels/StyledComponents.js new file mode 100644 index 0000000000000000000000000000000000000000..2570be1d40a302c096a4432e8feede85b95f3685 --- /dev/null +++ b/src/Components/TabPanels/StyledComponents.js @@ -0,0 +1,253 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; +import Tabs from '@material-ui/core/Tabs'; +import { Container } from 'react-grid-system' + +{/* COMPONENTS USED IN ALL TABS */} + +export const ContainerDivStyled = styled.div` + /*No portal atual: "container nopad box"*/ + margin-left : auto; + margin-right : auto; + margin-bottom: 30px; + background-color: #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24) !important; + + height : auto; + display : flex; + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } + + @media screen and (max-width: 768px) { + width : max-content; + } +` +export const DivContainerRecursosPublicados = styled.div` + /*No portal atual: "container-recursos-privados-dskt col-xs 12"*/ + position : relative; + min-height : 1px; + padding-right : 15px; + padding-left : 15px; +` + +export const WhiteContainer = styled.div` + padding-top : 1em; + display : flex; + flex-direction : column; + margin-left : auto; + margin-right : auto; + background-color : #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + margin-bottom : 30px; + + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } + + @media screen and (max-width: 768px) { + width : auto; + } +` + +export const StyledGrid = styled(Grid)` + .MuiGrid-item { + @media screen and (max-width: 768px) { + display : flex; + justify-content : center; + } + } +` +export const Carregados = styled.div` + text-align : center; + position : relative; + margin-right : -15px; + margin-left : -15px; +` + +export const HeaderGrid = styled(Grid)` + border-bottom : 1px solid #d1d1d1; + padding-bottom : 15px; + margin-bottom : 10px; + + h3 { + font-size: 21px; + font-weight: lighter !important; + margin: 0; + @media screen and (max-width: 768px) { + padding-left : 5px; + } + } + + span { + color: #ff7f00 !important; + text-transform : uppercase; + font-weight : 700; + font-size : 15px; + @media screen and (max-width: 768px) { + padding-right : 5px; + } + } +` +export const ContainerStyled = styled.div` + padding : 0; + display : flex; + margin-left : auto; + margin-right : auto; + + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } + + @media screen and (max-width: 768px) { + width : auto; + } + + .marginTop { + margin-top : 50px; + } +` + +/*User page and Public User page components: */ +export const HeaderContainer = styled.div` + background-color : #afeeee; + position : relative; +` + +export const UserProfileContainer = styled.div` + background-color : #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + margin-bottom : 30px; + margin-right : auto; + margin-left : auto; + display : flex; + flex-direction : column; + color : #666; + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } +` + +export const CoverContainer = styled.div` + height : 230px; + position : relative; +` + +export const UserProfileInfoDiv = styled.div` + position : absolute; + bottom : 0; + left : 260px; + overflow : hidden; + margin-bottom : 20px; +` + +export const CheckTeacherDiv = styled.div` + @media screen and (min-width: 500px) { + padding-top : 10px; + padding-left : 250px; + margin-bottom : -10px; + } + p { + margin : 0 0 10px; + font-family: Roboto; + font-size: 15px; + line-height: 22px; + text-align: left; + + span { + padding-right : 5px; + + img { + display: inline; + height: 20px; + width: 22px; + } + } + } + @media screen and (max-width: 499px) { + display : none; + } +` + +export const StyledTabs = styled(Tabs)` + .MuiTab-textColorPrimary.Mui-selected { + color : #00bcd4; + } + .PrivateTabIndicator-colorPrimary-4 { + background-color : #00bcd4 !important; + } +` + +export const RodapeDiv = styled.div` + display : flex; + flex-direction : row; + justify-content : flex-end; + padding-right : 15px; + + .report-button { + @media screen and (max-width: 768px) { + display : none; + } + } + +` + +export const NavBarContentContainer = styled(Container)` + background-color : transparent; + padding-bottom : 0; + overflow-x : hidden !important; + overflow-y : hiddden !important; + margin-right : 0 !important; +` + +export const BackgroundDiv = styled.div` + color : #666; + font-family : 'Roboto', sans serif; + font-size : 14px; + padding-bottom : 50px; + line-height : 20px; + background : #f4f4f4; +` diff --git a/src/Components/TabPanels/TabPanelStatusEConquistas.js b/src/Components/TabPanels/TabPanelStatusEConquistas.js new file mode 100644 index 0000000000000000000000000000000000000000..00a3a1f234162ecfb29633818e7a5f1497a34c12 --- /dev/null +++ b/src/Components/TabPanels/TabPanelStatusEConquistas.js @@ -0,0 +1,91 @@ +import React, {useContext, useState, useEffect} from 'react' +import { Store } from '../../Store.js' +import styled from 'styled-components' +import { Container } from 'react-grid-system' +import Paper from '@material-ui/core/Paper'; +import Button from '@material-ui/core/Button'; +import {ContainerDivStyled} from './StyledComponents.js' +import LoadingSpinner from '../LoadingSpinner.js' +import PaginaVaziaColecao from '../../img/Pagina_vazia_colecao.png' +import axios from 'axios' +import {apiUrl} from '../../env'; +import LevelDescriptionCard from '../LevelDescriptionCard.js' +import AchievementDescriptionCard from '../AchievementDescriptionCard.js' +import { Grid } from '@material-ui/core' + +export default function TabPanelStatusEConquistas (props) { + const [achievements, setAchievements] = useState([]); + const [level, setLevel] = useState(0); + const [xp, setXP] = useState(0); + const [coins, setCoins] = useState(0); + const [barSize, setBarSize] = useState(0); + const [xpToNextLevel, setXpToNextLevel] = useState(0); + const { state } = useContext(Store) + + useEffect(() => { + axios.all( + ['xp_to_next_lvl', 'percent_to_next_level', 'points', 'xp', 'get_level', + 'completed_achievements'].map((r) => { + return axios.get(apiUrl + '/' + r + '?id=' + state.currentUser.id); + })).then(axios.spread((xp_to_next_lvl, percent_to_next_level, points, + xp, level, completed_achievements) => { + this.setXpToNextLevel(xp_to_next_lvl); + this.setBarSize(100-percent_to_next_level); + this.setCoins(points); + this.setXP(xp); + this.setLevel(level); + this.setAchievements(completed_achievements); + })); + }, []) + + return ( + <div> + <ContainerDivStyled> + <Paper elevation={3}> + <LevelDescriptionCard + xp_to_next_lvl={xpToNextLevel} + bar_size={barSize} + coins={coins} + xp={xp} + level={level} + /> + </Paper> + </ContainerDivStyled> + <AchievementsContainer> + <AchievementsSectionTitle> + Conquistas + </AchievementsSectionTitle> + <AchievementsList> + <Grid container direction="row" justify="space-around" alignItems="center"> + {achievements.map( + (a) => { return ( + <Grid item xs={12} md={5}> + <AchievementDescriptionCard + name={a.title} + description={a.description} + src={a.imgsrc} + requirements={a.requirements} + /> + + </Grid> + )} + )} + </Grid> + </AchievementsList> + </AchievementsContainer> + </div> + ); +} + +const AchievementsSectionTitle = styled.h1` + font-weight: 400; +` +const AchievementsContainer = styled.div` + max-width : 1140px; + margin-left : auto; + margin-right : auto; + margin-bottom: 30px; + margin-top: 70px; +` +const AchievementsList = styled.div` +` diff --git a/src/Components/TabPanels/UserPageTabs/ContainerRedeVazia.js b/src/Components/TabPanels/UserPageTabs/ContainerRedeVazia.js new file mode 100644 index 0000000000000000000000000000000000000000..6d746d03a3a671996886376b606646904b345283 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/ContainerRedeVazia.js @@ -0,0 +1,97 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState, useEffect} from 'react' +import styled from 'styled-components' +import { Container } from 'react-grid-system' +import NoRede1 from '../../../img/no-rede-1.png' +import NoRede2 from '../../../img/no-rede-2.png' +import NoRede3 from '../../../img/no-rede-3.png' +import Paper from '@material-ui/core/Paper'; +import TabRedeImgDiv from './TabRedeImgDiv.js' +import {WhiteContainer} from '../StyledComponents.js' +import Grid from '@material-ui/core/Grid'; + +export default function ContainerRedeVazia (props) { + return ( + <React.Fragment> + <WhiteContainer> + <RedeVaziaBoxContainer> + <StyledSpan>Você ainda não tem uma rede. + <br/> + Veja como começar: + </StyledSpan> + <StyledSpan> + <StyledHr/> + <Grid container style={{paddingLeft : "30px", paddingRight : "15px"}}> + <Grid item md={4} xs={12}> + <TabRedeImgDiv img={NoRede1} text={"Para encontrar um usuário especÃfico, você pode utilizar a barra de busca e selecionar a busca por \"pessoas\""}/> + </Grid> + + <Grid item md={4} xs={12}> + <TabRedeImgDiv img={NoRede2} text={"Você pode começar a seguir uma pessoa clicando no botão \"seguir\" no card (A) ou na página dela (B)"}/> + </Grid> + + <Grid item md={4} xs={12}> + <TabRedeImgDiv img={NoRede3} text={"Pronto! Agora você poderá acompanhar os novos recursos e coleções dessa pessoas na sua página, na aba \"Perfil e Atividades\""}/> + </Grid> + </Grid> + </StyledSpan> + </RedeVaziaBoxContainer> + </WhiteContainer> + </React.Fragment> + ) +} + +const DivColumns = styled.div` + display : flex; + flex-direction : row; + aling-items : space-between + padding-right : 15px; + padding-left : 15px +` + +const StyledHr = styled.hr` + margin-top : 20px; + margin-bottom : 20px; + border : 0; + border-top: 1px solid #eee; +` + +const RedeVaziaBoxContainer = styled.div` + background-color : #fff; + padding: 30px; + padding-right: 30px; + padding-left: 30px; + margin-bottom: 30px; + text-align: center; + height: 100%; + padding-left: 0 !important; + padding-right: 0 !important; + margin-top: 20px; +} +` +const StyledSpan = styled.span` + font-weight : lighter; + margin-top: 0; + font-family: Roboto; + font-size: 24px; + p { + font-weight : normal; + } +` diff --git a/src/Components/TabPanels/UserPageTabs/PanelAtividades.js b/src/Components/TabPanels/UserPageTabs/PanelAtividades.js new file mode 100644 index 0000000000000000000000000000000000000000..38080f38f5e14aec7ff2768d86d3b945b4186843 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelAtividades.js @@ -0,0 +1,235 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState, useEffect} from 'react' +import styled from 'styled-components' +import { Container } from 'react-grid-system' +import Paper from '@material-ui/core/Paper'; +import Button from '@material-ui/core/Button'; +import axios from 'axios' +import {apiUrl, apiDomain} from '../../../env'; +import Bolo from '../../../img/Bolo.png' +import LoadingSpinner from '../../LoadingSpinner.js' +import ActivityListItem from '../../ActivityListItem.js' +import List from '@material-ui/core/List'; + +export default function TabPanelAtividades (props) { + const [loading, handleLoading] = useState(true) + + const [notifications, setNotifications] = useState([]); + const [notificatonsLength, setLength] = useState(0); + const [notificationsSlice, setNotificationsSlice] = useState([]) + + const showMore = (offset) => { + var sliceLength = notificationsSlice.length + setNotificationsSlice(notifications.slice(0, sliceLength + offset)) + } + + useEffect( () => { + axios.get(`${apiUrl}/feed?offset=0&limit=30`, props.config) + .then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + + console.log('atividades response: ', response) + setNotifications(response.data) + setNotificationsSlice(response.data.slice(0,30)) + setLength(response.data.length) + + + handleLoading(false) + }, + (error) => { + console.log('error while running getNotifications') + } + ) + }, []) + + return ( + + <MainContainerDesktop> + <Paper elevation={3}> + <div> + <DivTitulo> + <InnerDivTitulo> + <TituloContent> + <p style={{margin:"0 0 10px", marginBottom : "40px"}}>Todas Notificações</p> + </TituloContent> + </InnerDivTitulo> + </DivTitulo> + { + loading ? + ( + <LoadingSpinner text={'Carregando Atividades'}/> + ) + : + ( + [ + <div> + { + notificatonsLength == 0 ? + ( + [ + <NoNotificationsDiv> + <div> + <div> + <H3Styled><img src={Bolo} alt='bolo' style={{width:"23px"}}/> Você se cadastrou na Plataforma</H3Styled> + </div> + <p + style={{fontSize:"15px", fontWeight:"lighter", margin:"0 0 10px", display:"flex", justifyContent:"center", textAlign:"center"}} + >Construa conosco a plataforma e amplie sua rede de conhecimento interagindo + <br/> + com pessoas envolvidas com experiências que ocorrem em todo o Brasil! + </p> + </div> + </NoNotificationsDiv> + ] + ) + : + ( + [ <> + <List height={400} width={300}> + { + notificationsSlice.map( (notification) => + <ActivityListItem + avatar = {notification.owner.avatar ? apiDomain + notification.owner.avatar : null} + activity = {notification.activity} + actionType = {notification.trackable_type} + objectType = {notification.recipient_type} + createdAt = {notification.created_at} + ownerName = {notification.owner.name} + ownerHref = {'/usuario-publico/' + notification.owner.id} + recipientName = {notification.recipient.name} + /> + ) + } + </List> + <LoadMoreButton onClick={() => {showMore(4)}}><span>CARREGAR MAIS 4</span></LoadMoreButton> + <LoadMoreButton onClick={() => {showMore(20)}}><span>CARREGAR MAIS 20</span></LoadMoreButton> + <span style={{fontSize:"14px", color : "#666"}}>Mostrando {notificationsSlice.length} de {notificatonsLength}</span> + </> + ] + ) + } + </div> + + ] + ) + } + </div> + </Paper> + </MainContainerDesktop> + ) +} + +const MainContainerDesktop = styled.div` + padding : 10px 0 8px 0; + margin-left : auto; + margin-right : auto; + + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } +` + +const H3Styled = styled.h3` + font-size: 24px; + font-weight : lighter; + color : #00bcd4; + margin-top : 20px; + margin-bottom : 10px; + display : flex; + justify-content : center; + align-items : center; +` + +const NoNotificationsDiv = styled.div` + height : 250px; + display: flex; + align-items : center; + justify-content : center; +` + +const LoadMoreButton = styled(Button)` + outline : none !important; + display : inline-block !important; + cusor : pointer !important; + min-height : 36px !important; + min-widht : 88px !important; + line-height: 36px !important; + vertical-align: middle !important; + border : 0 !important; + padding : 0 px !important; + margin : 6px 8px !important; + text-decoration : none !important; + font-weight : 500 !important; + overflow : hidden !important; + text-transform : uppercase !important; + font-size : 14px !important; + background : transparent !important; + color : #666 !important + &:hover { + background : rgba(158,158,158,0.2) !important + } +` + +const TituloContent = styled.div` + display : block; + z-index : 1; + position : relative; + font-family: Roboto, sans-serif; + font-weight : ligther; +` + +const InnerDivTitulo = styled.div` + margin-top : 24px; + padding-top : 16px; + padding-left : 16px; + padding-right : 16px; + font-size: 30px; + font-weight: lighter; + color: #6e6e6e; + text-align: center; +` + + +const DivTitulo = styled.div` + display : flex; + justify-content : center; + font-size: 14px; + font-weight: 500; + letter-spacing: .01em; + line-height: 1.2em; + margin : 0; + border-bottom: 1px solid #eee; +` + +const ContainerDivStyled = styled.div` + max-width : 1140px; + margin-left : auto; + margin-right : auto; + margin-left : 20em; + background-color: #fff; +` diff --git a/src/Components/TabPanels/UserPageTabs/PanelColecoes.js b/src/Components/TabPanels/UserPageTabs/PanelColecoes.js new file mode 100644 index 0000000000000000000000000000000000000000..f7883396f3359173d24eace08e1826429bdd8210 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelColecoes.js @@ -0,0 +1,224 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import styled from 'styled-components' +import Grid from '@material-ui/core/Grid'; +import LoadingSpinner from '../../LoadingSpinner.js' +import axios from 'axios' +import {apiUrl} from '../../../env'; +import PanelTemplateColecao from '../PanelComponents/TemplateColecao.js' +import PaginaVaziaColecao from '../../../img/Pagina_vazia_colecao.png' + +import NoContent from '../PanelComponents/NoContent.js' +import {WhiteContainer, StyledGrid} from '../StyledComponents.js' +import CreateNewFolderIcon from '@material-ui/icons/CreateNewFolder'; +import Title from '../PanelComponents/PanelTitle.js' +import CollectionCardFunction from '../../CollectionCardFunction.js' +import {ButtonsAreaColecao} from '../PanelComponents/ButtonsArea' +import CriarColecaoModal from '../../CriarColecaoModal.js' + +export default function TabPanelColecoes (props) { + const [loading, handleLoading] = useState(true) + + const [userCollections, setUserCollections] = useState([]) + const [userCollectionsSlice, setUserCollectionsSlice] = useState([]) + + const [followedCollections, setFollowedCollections] = useState([]) + const [followedCollectionsSlice, setFollowedCollectionsSlice] = useState([]) + + const getInfo = () => { + axios.all([ + axios.get((`${apiUrl}/users/` + props.id + '/collections'), props.config), + axios.get((`${apiUrl}/users/` + props.id + '/following/Collection'), props.config), + ]) + .then( (responseArr) => { + console.log('responseArr Colecoes: ', responseArr) + if (responseArr[1].headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', responseArr[1].headers['access-token']) + } + + handleLoading(false) + setUserCollections(responseArr[0].data) + setUserCollectionsSlice(responseArr[0].data.slice(0,3)) + + setFollowedCollections(responseArr[1].data) + setFollowedCollectionsSlice(responseArr[1].data.slice(0,4)) + + }, + (error) => { + handleLoading(false) + console.log('error while running axios all') + } + ) + } + + useEffect( () => { + getInfo() + }, []) + + const showMoreUserCollections = () => { + var sliceLength = userCollectionsSlice.length + setUserCollectionsSlice(userCollections.slice(0, sliceLength + 4)) + } + + const showAllUserCollections = () => {setUserCollectionsSlice(userCollections)} + + const showMoreFollowedCollections = () => { + var sliceLength = followedCollectionsSlice.length + setFollowedCollectionsSlice(followedCollections.slice(0, sliceLength + 4)) + } + + const showAllFollowedCollections = () => {setFollowedCollectionsSlice(followedCollections)} + + return ( + <> + { + loading ? + ( + <LoadingSpinner text={'CARREGANDO COLEÇÕES'}/> + + ) + : + ( + [ + <React.Fragment> + <Tentativa + title={"Minhas Coleções"} + length={userCollections.length} + noContentText={ + <div> + <img src={PaginaVaziaColecao} alt="PaginaVaziaColecao" style={{height:"150px",width:"150px", verticalAlign:"middle", border:"0"}}/> + <br/> + <span style={{fontFamily:"Roboto", fontWeight:"lighter", fontSize:"24px"}}> + Criamos a sua primeira Coleção! + </span> + <p style={{fontFamily:"Roboto", fontSize:"16px", margin:"10px 0 0", fontWeight : "normal"}}> + Adicione nela recursos que você queira acessar mais tarde. + <br/> + Crie novas coleções clicando no cartão roxo "Criar Colecão". + </p> + </div> + } + sliceArr={userCollectionsSlice} + showMore={showMoreUserCollections} + showAll={showAllUserCollections} + callback={getInfo} + /> + + <PanelTemplateColecao + title={"Coleções que eu sigo"} + length={followedCollections.length} + noContentText={"Você ainda não segue nenhuma coleção."} + sliceArr={followedCollectionsSlice} + showMore={showMoreFollowedCollections} + showAll={showAllFollowedCollections} + followed={true} + /> + </React.Fragment> + ] + ) + } + </> + ) +} + +function Tentativa (props) { + const [modalOpen, toggleModal] = useState(false) + const handleModal = () => {toggleModal(!modalOpen)}; + + return ( + <WhiteContainer> + <CriarColecaoModal open={modalOpen} handleClose={() => {handleModal(); props.callback()}}/> + + <Title + title={props.title} + length={props.length} + /> + + <StyledGrid container spacing={1} style={{paddingLeft : "30px", paddingRight : "15px"}}> + <Grid item md={3} xs={12}> + <CardDiv onClick={()=>{handleModal()}}> + <div style={{backgroundColor:"#673ab7", height:"250px", display:"flex", justifyContent:"center", alignItems:"center"}}> + <CreateNewFolderIcon style={{color:"#fff", fontSize:"70px"}}/> + <p style={{fontSize:"16px", margin:"0 0 10px", color : "#fff"}}> + CRIAR COLEÇÃO + </p> + </div> + </CardDiv> + </Grid> + + { + props.length === 0 ? + ( + [ + <Grid item lg={6} md={4} sm={6} xs={12}> + <NoContent text={props.noContentText}/> + </Grid> + ] + ) + : + ( + [ + <React.Fragment> + { + props.sliceArr.map( (card) => + <Grid item md={3} xs={12} key={card.id}> + <CollectionCardFunction + name={card.name} + rating={card.score} + type={card.object_type} + description={card.description} + author={card.owner.name} + avatar={card.owner.avatar} + authorID={card.owner.id} + thumbnails={card.items_thumbnails} + likeCount={card.likes_count} + liked={card.liked} + followed={card.followed} + tags={card.tags} + privacy={card.privacy} + id={card.id} + /> + </Grid> + ) + } + </React.Fragment> + ] + ) + } + </StyledGrid> + { + props.length > 0 && + <ButtonsAreaColecao + sliceLength={props.sliceArr.length} + length={props.length} + showMore={() => props.showMore()} + showAll={() => props.showAll()} + /> + } + </WhiteContainer> + ) +} + +const CardDiv = styled.div` + margin-top : 10px; + margin-bottom : 10px; + width : 95%; + float : left; +` diff --git a/src/Components/TabPanels/UserPageTabs/PanelCuradoria.js b/src/Components/TabPanels/UserPageTabs/PanelCuradoria.js new file mode 100644 index 0000000000000000000000000000000000000000..4e58cd17c41842a5f32d4306488e57410ead2529 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelCuradoria.js @@ -0,0 +1,79 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl} from '../../../env'; +import LoadingSpinner from '../../LoadingSpinner.js' +import TemplateCuradoria from '../PanelComponents/TemplateCuradoria.js' + +export default function TabPanelCuradoria (props) { + const [loading, handleLoading] = useState(true) + + const [submissions, setSubmissions] = useState([]) + const [submissionsSlice, setSubmissionsSlice] = useState([]) + + const showMoreSubmissions = () => { + var sliceLength = submissionsSlice.length + setSubmissionsSlice(submissions.slice(0, sliceLength + 4)) + } + + const showAllSubmissions = () => {setSubmissionsSlice(submissions)} + + useEffect( () => { + axios.get( (`${apiUrl}/users/` + props.id + '/submissions?offset=0&status=submitted'), props.config) + .then(response => { + console.log(response) + if (response.headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + + handleLoading(false) + setSubmissions(response.data) + setSubmissionsSlice(response.data.slice(0,4)) + + }, error => {console.log('error while running ComponentDidMout on TabPanelCuradoria')}) + }, []) + + return ( + <React.Fragment> + { + loading ? + ( + <LoadingSpinner text={"Carregando Recursos"}/> + ) + : + ( + [ + <React.Fragment> + <TemplateCuradoria + length={submissions.length} + titleText = {"Recursos a serem curados"} + noContentText = {"Você não tem nenhum recurso para ser avaliado"} + sliceArr={submissionsSlice} + showMore={showMoreSubmissions} + showAll={showAllSubmissions} + /> + </React.Fragment> + ] + ) + } + </React.Fragment> + ) +} diff --git a/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js b/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js new file mode 100644 index 0000000000000000000000000000000000000000..07a5751e3a40ddb7942c8a20ea412a4b97bbf3d5 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelEditarPerfil.js @@ -0,0 +1,271 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState} from 'react' +import styled from 'styled-components' +import { Store } from '../../../Store.js'; +import {Link} from 'react-router-dom' +import Button from '@material-ui/core/Button'; +import IconButton from '@material-ui/core/IconButton'; +import PhotoCamera from '@material-ui/icons/PhotoCamera'; +import Tooltip from '@material-ui/core/Tooltip'; +import FormInput from "../../FormInput.js" +import ValidateUserInput from '../../FormValidationFunction.js' +import {apiDomain} from '../../../env.js' + + +export default function TabPanelEditarPerfil (props) { + const {state, dispatch} = useContext(Store) + const [hoverAlterarFoto, handleAlterarFoto] = React.useState(false) + + const [formNome, setNome] = useState({ + key : false, + value : "" + }) + + const [formAboutMe, setAboutMe] = useState({ + key : false, + value : "", + }) + + const handleHoverAlterarFoto = () => { + handleAlterarFoto(!hoverAlterarFoto) + } + + const updateCover = (selectorFiles) => { + console.log(selectorFiles) + console.log(selectorFiles[0].name) + } + + const handleChange = (e, type) => { + const userInput = e.target.value + const flag = ValidateUserInput(type, userInput) + + if(type === 'username') { + setNome({...formNome, + key : flag, + value : userInput + }) + console.log(formNome) + } + else if (type === 'aboutMe') { + setAboutMe({...formAboutMe, + key : flag, + value : userInput, + }) + console.log(formAboutMe) + } + } + + const limpaCamposForm = () => { + setNome({...formNome, + key : false, + value : '' + }) + + setAboutMe({...formAboutMe, + key : false, + value : '' + }) + } + + const handleSubmit = (e) => { + e.preventDefault() + const info = {nome : formNome.value, aboutMe : formAboutMe.value} + const flagNome = formNome.key + const flagAboutMe = formAboutMe.key + + if (!(flagNome || flagAboutMe)) { + console.log(info) + limpaCamposForm() + } + } + + return ( + <div className="card-config"> + <h1 style={{fontWeight:"300"}}>Editar Perfil </h1> + <div className='content-div'> + <div style={{padding:"0", display:"flex", flexDirection:"column"}}> + <HeaderContainer> + <div style={{position:"relative", height:"100%"}}> + <img src={`${apiDomain}` + state.currentUser.userCover} alt="user cover avatar" style={{width:"100%", height:"100%", objectFit:"cover"}}/> + <input accept="image/*" style = {{display:"none"}} id="icon-button-file" type="file" onChange={(e) => updateCover(e.target.files)}/> + <label htmlFor="icon-button-file"> + <Tooltip title={<span style={{fontSize:"14px", overflow:"hidden", transition:"all .5s ease"}}>ALTERAR CAPA</span>} placement="left"> + <IconButton style={{position:"absolute",right:"0",top:"0",color:"#fff"}}color="primary" aria-label="upload picture" component="span"> + <PhotoCamera /> + </IconButton> + </Tooltip> + </label> + </div> + <ProfileAvatarDiv onMouseEnter={handleHoverAlterarFoto} onMouseLeave={handleHoverAlterarFoto}> + <img src={`${apiDomain}` + state.currentUser.userAvatar} alt = "user avatar" style={{border:"0", verticalAlign:"middle"}}/> + <ChangeAvatarDiv style={ {display : hoverAlterarFoto ? 'flex' : 'none'}}> + <span>Alterar Foto</span> + </ChangeAvatarDiv> + </ProfileAvatarDiv> + </HeaderContainer> + <br/> + <br/> + <br/> + <br/> + </div> + + <div style={{paddingTop:"90px"}}> + <div style={{display:"flex", flexDirection:"row"}}> + <form onSubmit={e => handleSubmit(e)}> + <FormInput + inputType={"text"} + name={"Nome Completo"} + value={formNome.value} + placeholder={"Nome Completo"} + handleChange={e => handleChange(e, 'username')} + required={true} + error={formNome.key} + /> + <FormInput + inputType={"text"} + name={"Sobre Mim"} + value={formAboutMe.value} + multi = {true} + rows="3" + rowsMax = "3" + error={formAboutMe.key} + placeholder={"Sobre Mim"} + handleChange={e => handleChange(e, 'aboutMe')} + required={false} + help = {formAboutMe.value.length + '/160'} + /> + </form> + </div> + <ButtonsDiv> + <Link to="perfil" ><ButtonCancelar ><span>CANCELAR</span></ButtonCancelar></Link> + <ButtonConfirmar onClick={e => handleSubmit(e)}><span>SALVAR ALTERAÇÕES</span></ButtonConfirmar> + </ButtonsDiv> + </div> + </div > + </div> + ) +} + +const ButtonConfirmar = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + font-family : 'Roboto',sans-serif !important; + font-size : 14px !important; + font-weight : 500 !important; + padding-left : 16px !important; + padding-right : 16px !important; + outline : none !important; + margin : 6px 8px !important; + white-space : nowrap !important; + text-transform : uppercase !important; + font-weight : bold !important; + font-size : 14px !important; + font-style : inherit !important; + font-variant : inherit !important; + font-family : inherit !important; + text-decoration : none !important; + overflow : hidden !important; + display : inline-block !important; + position : relative !important; + cursor : pointer !important; + min-height : 36px !important; + min-width : 88px !important; + line-height : 36px !important; + vertical-align : middle !important; + align-items : center !important; + text-align : center !important; + border-radius : 3px !important; + box-sizing : border-box !important; + border : 0 !important; +` + +export const ButtonCancelar = styled(Button)` + height : 36px !important; + padding-left : 16px !important; + padding-right : 16px !important; + font-weight : bold !important; + border-radius : 3px !important; + outline : none !important; + text-transform : uppercase !important; + font-weight : 500 !important; + font-size : 14px !important; + font-style : inherit !important; + font-variant : inherit !important; + font-family : inherit !important; + text-decoration : none !important; + overflow : hidden !important; + display : inline-block !important; + position : relative !important; + cursor : pointer !important; + min-height : 36px !important; + min-width : 88px !important; + line-height : 36px !important; + vertical-align : middle !important; + align-items : center !important; + text-align : center !important; + border-radius : 3px !important; + box-sizing : border-box !important; + user-select : none !important; + border : 0 !important; + padding : 0 6px !important; + margin : 6px 8px !important; + :hover{ + background-color : #f1f1f1 !important; + } + +` + +const ButtonsDiv = styled.div` + text-align : right; + margin-top : 80px; +` + +const ChangeAvatarDiv = styled.div` + height : 40px; + position: absolute; + width : 100%; + bottom : 0; + display : flex; + background-color : #000; + color : #fff; + justify-content : center; +` + +const ProfileAvatarDiv = styled.div` + bottom : -10px; + left : 120px !important; + border-radius : 100%; + position : absolute; + width : 100px !important; + height : 100px !important; + overflow : hidden; + border : 8px solid #fff; + outline : 0; + cursor : pointer; + z-index : 10; + background-color : #fff !important; +` + +const HeaderContainer = styled.div` + background-color : #afeeee; + position : relative; + height : 150px; + border-radius : 8px; +` diff --git a/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js b/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js new file mode 100644 index 0000000000000000000000000000000000000000..838382a372d38a0bbac55a335b4e7a7418403f34 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelFavoritos.js @@ -0,0 +1,114 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState, useEffect} from 'react' +import axios from 'axios' +import {apiUrl} from '../../../env'; +import LoadingSpinner from '../../LoadingSpinner.js' +import Template from '../PanelComponents/TemplateRecurso.js' +import PanelTemplateColecao from '../PanelComponents/TemplateColecao.js' + +export default function TabPanelFavoritos (props) { + const [loading, handleLoading] = useState(true) + + const [likedLearnObjs, setlikedLearnObjs] = useState([]) + const [likedLearnObjsSlice, setlikedLearnObjsSlice] = useState([]) + + const [likedCollections, setlikedCollections] = useState([]) + const [likedCollectionsSlice, setlikedCollectionsSlice] = useState([]) + + useEffect( () => { + axios.all([ + axios.get((`${apiUrl}/users/` + props.id + '/learning_objects/liked'), props.config), + axios.get((`${apiUrl}/users/` + props.id + '/collections/liked'), props.config), + ]) + .then( (responseArr) => { + console.log('responseArr favoritos: ', responseArr) + if (responseArr[0].headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', responseArr[0].headers['access-token']) + } + setlikedLearnObjs(responseArr[0].data) + setlikedLearnObjsSlice(responseArr[0].data.slice(0,4)) + + setlikedCollections(responseArr[1].data) + setlikedCollectionsSlice(responseArr[1].data.slice(0,4)) + + handleLoading(false) + }, + (error) => { + handleLoading(false) + console.log('error while running axios all') + } + ) + }, []) + + const showMoreLikedLearnObj = () => { + var sliceLength = likedLearnObjsSlice.length + setlikedLearnObjsSlice(likedLearnObjs.slice(0, sliceLength + 4)) + } + + const showAllLikedLearnObjs = () => {setlikedLearnObjsSlice(likedLearnObjs)} + + const showMoreLikedCollections = () => { + var sliceLength = likedCollectionsSlice.length + setlikedCollectionsSlice(likedCollections.slice(0, sliceLength + 4)) + } + + const showAllLikedCollections = () => {setlikedCollectionsSlice(likedCollections)} + + return ( + <> + { + loading? + ( + <LoadingSpinner text={'CARREGANDO...'}/> + ) + : + ( + [ + <React.Fragment> + <Template + length = {likedLearnObjs.length} + titleText = {"Recursos Favoritados"} + noContentText={<p style={{fontFamily:"Roboto",fontSize:"16px"}}>Quando você favorita um recurso ele aparece nesta seção. Além disso, você + <br/> + aumenta o prestÃgio dele na Plataforma. Para favoritar, basta clicar no Ãcone de + <br/> + coração que aparece nos Recursos. + </p>} + slice={likedLearnObjsSlice} + showMore={showMoreLikedLearnObj} + showAll={showAllLikedLearnObjs} + /> + + <PanelTemplateColecao + title={"Coleções favoritadas"} + length={likedCollections.length} + noContentText={"Você ainda não curtiu nenhuma coleção."} + sliceArr={likedCollectionsSlice} + showMore={showMoreLikedCollections} + showAll={showAllLikedCollections} + followed={false} + /> + </React.Fragment> + ] + ) + } + </> + ) +} diff --git a/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js b/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js new file mode 100644 index 0000000000000000000000000000000000000000..ee09ebe4b676c6ef8cff4013bbe67d82cbd38ef7 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelGerenciarConta.js @@ -0,0 +1,220 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import Paper from '@material-ui/core/Paper'; +import Button from '@material-ui/core/Button'; +import FormInput from "../../FormInput.js" +import {CompletarCadastroButton} from './PanelSolicitarContaProfessor.js' +import {ButtonCancelar} from './PanelEditarPerfil.js' +import ValidateUserInput from '../../FormValidationFunction.js' + +export default function TabPanelGerenciarConta (props) { + const [senhaAtual, setSenhaAtual] = useState( + { + key : false, + value : localStorage.getItem("@portalmec/senha") || "" + }) + + const [novaSenha, setNovaSenha] = useState( + { + key : false, + value : "" + }) + + const [novaSenhaConfirmacao, setNovaSenhaConfirmacao] = useState( + { + key : false, + value : "" + }) + + const [novoEmail, setNovoEmail] = useState( + { + key : false, + value : "" + }) + + const handleChangeSenha = (e, type) => { + const userInput = e.target.value + const flag = (type === 'confirmacao' ? ValidateUserInput('confirmation', userInput, novaSenha.value) : ValidateUserInput('password', userInput)) + + if(type === 'senhaAtual') { + setSenhaAtual({...senhaAtual, + key : flag, + value : userInput + }) + console.log(senhaAtual) + } + else if(type === 'novaSenha') { + setNovaSenha({...novaSenha, + key : flag, + value : userInput + }) + console.log(novaSenha) + } + else if (type === 'confirmacao'){ + setNovaSenhaConfirmacao({...novaSenhaConfirmacao, + key : flag, + value : userInput + }) + console.log(novaSenhaConfirmacao) + } + } + + const handleChangeEmail = (e) => { + const userInput = e.target.value + const flag = ValidateUserInput('email', userInput) + + setNovoEmail({...novoEmail, + key : flag, + value : userInput + }) + + console.log(novoEmail) + } + + const limpaCamposForm = () => { + setSenhaAtual({...senhaAtual, + key : false, + value : '' + }) + + setNovaSenha({...novaSenha, + key : false, + value : '' + }) + + setNovaSenhaConfirmacao({...novaSenhaConfirmacao, + key : false, + value : '' + }) + } + + const onSubmit = (e, type) => { + e.preventDefault() + + if (type === 'senha'){ + if (senhaAtual.value === localStorage.getItem("@portalmec/senha")) { + const login = {senhaAtual : senhaAtual.value, novaSenha : novaSenha.value, novaSenhaConfirmacao : novaSenhaConfirmacao.value} + + if (!(senhaAtual.key || novaSenha.key || novaSenhaConfirmacao.key)) { + console.log(login) + limpaCamposForm() + props.handleSnackbar() + } + } + else { + console.log(localStorage.getItem("@portalmec/senha"), senhaAtual.value) + } + } + else { + console.log(novoEmail.value) + } + + } + + return ( + <> + <Paper elevation={3} style= {{width:"100%"}}> + <div className='card-config'> + <div className='content-div'> + <h1>Gerenciar Conta</h1> + <div style={{display : "flex", flexDirection : "column"}}> + <form style={{width:"500px", margin : "0 0 20px 0"}} onSubmit={e => onSubmit(e, 'senha')}> + <h4 style={{display:"flex", justifyContent:"flex-start", fontSize:"18px"}}>Alterar Senha</h4> + <FormInput + inputType={"password"} + name={"Senha Atual"} + value={senhaAtual.value} + placeholder={"Senha atual"} + handleChange={e => handleChangeSenha(e, 'senhaAtual')} + required={true} + error={senhaAtual.key} + help={ senhaAtual.key ? "Faltou inserir sua senha atual" : ""} + /> + <FormInput + inputType={"password"} + name={"Nova senha"} + value={novaSenha.value} + placeholder={"Nova senha"} + handleChange={e => handleChangeSenha(e, 'novaSenha')} + required={true} + error={novaSenha.key} + help={ novaSenha.key ? (novaSenha.value.length == 0 ? "Faltou definir uma nova senha" : "A senha precisa ter no mÃnimo 8 caracteres.") : ""} + /> + <FormInput + inputType={"password"} + name={"Digite novamente a nova senha"} + value={novaSenhaConfirmacao.value} + placeholder={"Digite novamente a nova senha"} + handleChange={e => handleChangeSenha(e, 'confirmacao')} + required={true} + error={novaSenhaConfirmacao.key} + help={ novaSenhaConfirmacao.key ? "As senhas devem ser iguais" : ""} + /> + <div style={{display:"flex", flexDirection:"row", justifyContent:"space-evenly"}}> + <span style={{paddingTop:"0.7em"}}><a href="recuperar-senha" style={{textAlign: "flex-start", color:"#00bcd4"}}>Esqueceu a senha?</a></span> + <div style={{margin:"0"}}> + <ButtonCancelar onClick={limpaCamposForm}>Limpar Campos</ButtonCancelar> + <CompletarCadastroButton type="submit">Alterar Senha</CompletarCadastroButton> + </div> + </div> + </form> + </div> + </div> + </div> + </Paper> + <Paper elevation={3} style= {{width:"100%"}}> + <div className='card-config'> + <div className='content-div'> + <div style={{display : "flex", flexDirection : "column"}}> + <form style={{width:"500px"}} onSubmit={(e) => onSubmit(e, 'email')}> + <h4 style={{display:"flex", justifyContent:"flex-start", fontSize:"18px"}}>Alterar e-mail</h4> + <FormInput + inputType={"text"} + name={"email"} + value={novoEmail.value} + placeholder={"E-mail"} + handleChange={e => handleChangeEmail(e)} + required={true} + error = {novoEmail.key} + /> + <div style={{margin:"0", display:"flex", justifyContent:"flex-start"}}> + <CompletarCadastroButton type="submit">SALVAR ALTERAÇÕES</CompletarCadastroButton> + </div> + </form> + </div> + </div> + </div> + </Paper> + <Paper elevation={3} style= {{width:"100%"}}> + <div className='card-config'> + <div className='content-div'> + <div> + <h4 style={{display:"flex", justifyContent:"flex-start", fontSize:"18px"}}>Conta</h4> + <span style={{margin:"0", display:"flex", justifyContent:"flex-start"}}>Antes de excluir a sua conta, saiba que ela será removida permanentemente.</span> + </div> + <div style={{margin:"0", display:"flex", justifyContent:"flex-start"}}> + <ButtonCancelar style={{color:'#eb4034'}}>EXCLUIR CONTA</ButtonCancelar> + </div> + </div> + </div> + </Paper> + </> + ) +} diff --git a/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js b/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js new file mode 100644 index 0000000000000000000000000000000000000000..3d9c93d09707c27216f21b79fefc1ba8567b7d48 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelMeusRecursos.js @@ -0,0 +1,132 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import axios from 'axios' +import {apiUrl} from '../../../env'; +import LoadingSpinner from '../../LoadingSpinner.js' +import Template from '../PanelComponents/TemplateRecurso.js' +import TemplateCuradoria from '../PanelComponents/TemplateCuradoria.js' + +export default function TabPanelAtividades (props) { + const [loading, handleLoading] = useState(true) + + const [learningObjects, setLearningObjects] = useState([]); + const [learningObjectsSlice, setLearningObjectsSlice] = useState([]) + + const [drafts, setDrafts] = useState([]); + const [draftsSlice, setDraftsSlice] = useState([]) + + const [curating, setCurating] = useState([]); + const [curatingSlice, setCuratingSlice] = useState([]) + + useEffect( () => { + axios.all([ + axios.get((`${apiUrl}/users/` + props.id + '/learning_objects'), props.config), + axios.get((`${apiUrl}/users/` + props.id + '/drafts'), props.config), + axios.get((`${apiUrl}/users/` + props.id + '/submissions?status=submitted'), props.config) + ]) + .then( (responseArr) => { + console.log('responseArr Meus recursos: ', responseArr) + if (responseArr[0].headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', responseArr[0].headers['access-token']) + } + + setLearningObjects(responseArr[0].data) + setLearningObjectsSlice(responseArr[0].data.slice(0, 4)) + + setDrafts(responseArr[1].data) + setDraftsSlice(responseArr[1].data.slice(0, 4)) + + setCurating(responseArr[2].data) + setCuratingSlice(responseArr[2].data.slice(0, 4)) + + handleLoading(false) + }, + (error) => { + handleLoading(false) + console.log('error while running axios all') + } + ) + }, []) + + const showMoreLearnObj = () => { + var sliceLength = learningObjectsSlice.length + setLearningObjectsSlice(learningObjects.slice(0, sliceLength + 4)) + } + + const showAllLearnObj = () => {setLearningObjectsSlice(learningObjects)} + + const showMoreDrafts = () => { + var sliceLength = draftsSlice.length + setDraftsSlice(drafts.slice(0, sliceLength + 4)) + } + + const showAllDrafts = () => {setDraftsSlice(drafts)} + + const showMoreCurating = () => { + var sliceLength = curatingSlice.length + setCuratingSlice(curating.slice(0, sliceLength + 4)) + } + + const showAllCurating = () => {setCuratingSlice(curating)} + + return ( + <> + { + loading ? + ( + <LoadingSpinner text={'Carregando Recursos'}/> + ) + : + ( + [ + <React.Fragment> + <Template + length = {learningObjects.length} + titleText = {learningObjects.length === 1 ? "Recurso Publicado" : "Recursos Publicados"} + noContentText={"Você ainda não publicou nenhum Recurso!"} + slice={learningObjectsSlice} + showMore={showMoreLearnObj} + showAll={showAllLearnObj} + /> + + <Template + length = {drafts.length} + titleText = {drafts.length === 1 ? "Rascunho Publicado" : "Rascunhos Publicados"} + noContentText={"Você não tem nenhum recurso sendo editado."} + slice={draftsSlice} + showMore={showMoreDrafts} + showAll={showAllDrafts} + /> + + <TemplateCuradoria + length={curating.length} + titleText = {curating.length === 1 ? "Recurso sendo avaliado pela curadoria" : "Recursos sendo avaliados pela curadoria"} + noContentText={"Você não tem nenhum recurso sendo avaliado pelos curadores."} + sliceArr={curatingSlice} + showMore={showMoreCurating} + showAll={showAllCurating} + /> + </React.Fragment> + ] + ) + } + </> + ) +} diff --git a/src/Components/TabPanels/UserPageTabs/PanelRede.js b/src/Components/TabPanels/UserPageTabs/PanelRede.js new file mode 100644 index 0000000000000000000000000000000000000000..f6d349b9ed274569a5bb33190618680f9c764e56 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelRede.js @@ -0,0 +1,131 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext, useState, useEffect} from 'react' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../../env'; +import LoadingSpinner from '../../LoadingSpinner.js' +import ContainerRedeVazia from './ContainerRedeVazia.js' +import PanelTemplateRede from '../PanelComponents/TemplateRede.js' + +export default function TabPanelRede (props) { + const [loading, handleLoading] = useState(true) + + const [followingList, setFollowing] = useState([]) + const [followingSlice, setFollowingSlice] = useState([]) + + const [followersList, setFollowers] = useState([]) + const [followersSlice, setFollowersSlice] = useState([]) + + const showMoreFollowing = () => { + var sliceLength = followingSlice.length + setFollowingSlice(followingList.slice(0, sliceLength + 4)) + } + const showAllFollowing = () => {setFollowingSlice(followingList)} + + const showMoreFollowers = () => { + var sliceLength = followersSlice.length + setFollowersSlice(followersList.slice(0, sliceLength + 4)) + } + const showAllFollowers = () => {setFollowersSlice(followersList)} + + + useEffect( () => { + axios.all([ + axios.get((`${apiUrl}/users/` + props.id + '/following/User'), props.config), + axios.get((`${apiUrl}/users/` + props.id + '/followers'), props.config) + ]) + .then( (responseArr) => { + console.log('responseArr Rede: ', responseArr) + if (responseArr[0].headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', responseArr[0].headers['access-token']) + } + + setFollowing(responseArr[0].data) + setFollowingSlice(responseArr[0].data.slice(0,4)) + + + setFollowers(responseArr[1].data) + setFollowersSlice(responseArr[1].data.slice(0,4)) + + handleLoading(false) + }, + (error) => { + handleLoading(false) + console.log('error while running axios all') + } + ) + }, []) + + return ( + <> + { + loading ? + ( + [ + <LoadingSpinner text={'CARREGANDO...'}/> + ] + ) + : + ( + [ + <> + { + followingList.length == 0 && followersList.length == 0 ? + ( + [ + <> + <ContainerRedeVazia/> + </> + ] + ) + : + ( + [ + <React.Fragment> + <PanelTemplateRede + title={followersList.length == 1 ? "Seguidor" : "Seguidores"} + length={followersList.length} + sliceArr={followersSlice} + showMore={showMoreFollowers} + showAll={showAllFollowers} + follower={true} + noContentText={'Você não possui nenhum seguidor'} + /> + + <PanelTemplateRede + title={"Seguindo"} + length={followingList.length} + sliceArr={followingSlice} + showMore={showMoreFollowing} + showAll={showAllFollowing} + follower={false} + noContentText={'Você ainda não segue nenhum usuário'} + /> + </React.Fragment> + + ] + ) + } + </> + ] + ) + } + </> + ) +} diff --git a/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js b/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js new file mode 100644 index 0000000000000000000000000000000000000000..83f116f0c9d93cde0edc84f369ad3769c95b5830 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js @@ -0,0 +1,134 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useContext} from 'react' +import { Store } from '../../../Store.js'; +import styled from 'styled-components' +import Button from '@material-ui/core/Button'; + +//3 casos + //Professor nao cadastrado (nao pediu OU submitter_request = rejected) + //Professor em análise (submitter_request = requested) + //Professor aceito (submitter_request = accepted) +export default function TabPanelSolicitarContaProfessor (props) { + const {state, dispatch} = useContext(Store) + + return ( + <div className='card-config'> + <div className='content-div'> + { + state.currentUser.submitter_request === 'default' || state.currentUser.submitter_request === 'rejected' ? + ( + [ + <div style={{paddingLeft:"100px", paddingRight:"101px"}}> + <ImageDiv/> + <StyledH2>Você é professor(a) da educação básica e gostaria de colaborar com a Plataforma?</StyledH2> + <StyledP>Ao ser identificado como professor(a), você poderá publicar e compartilhar recursos educacionais + digitais na plataforma com toda a comunidade escolar do paÃs. + </StyledP> + <div> + <CompletarCadastroButton> + SIM, COMPLETAR CADASTRO + </CompletarCadastroButton> + </div> + </div> + ] + ) + : + ( + [ + <> + { + state.currentUser.submitter_request === 'requested' ? + ( + [ + <span>Requested</span> + ] + ) + : + ( + [ + <span>Professor</span> + ] + ) + } + </> + ] + ) + } + </div> + </div> + ) +} + +export const CompletarCadastroButton = styled(Button)` + background-color : #00bcd4 !important; + color : #fff !important; + font-family : 'Roboto',sans-serif !important; + font-size : 14px !important; + font-weight : bold !important; + height : 36px !important; + border-radius : 3px !important; + padding-left : 16px !important; + padding-right : 16px !important; + outline : none !important; + margin : 6px 8px !important; + white-space : nowrap !important; + text-transform : uppercase !important; + font-weight : bold !important; + font-size : 14px !important; + font-style : inherit !important; + font-variant : inherit !important; + font-family : inherit !important; + text-decoration : none !important; + overflow : hidden !important; + display : inline-block !important; + position : relative !important; + cursor : pointer !important; + min-height : 36px !important; + min-width : 88px !important; + vertical-align : middle !important; + align-items : center !important; + text-align : center !important; + box-sizing : border-box !important; + border : 0 !important; +` + +const StyledP = styled.p` + font-size : 15px; + line-height : 22px; + text-align : left; + padding-bottom : 20px; +` + +const StyledH2 = styled.h2` + font-weight : 200; + font-size : 26px; + line-height : 36px; + text-align : left; + padding-bottom : 20px; +` + +const ImageDiv = styled.div` + background-image : url(https://plataformaintegrada.mec.gov.br/img/Publicar.png); + display : block; + height : 114px; + background-size : contain; + background-position : center center; + background-repeat : no-repeat; +` diff --git a/src/Components/TabPanels/UserPageTabs/TabRedeImgDiv.js b/src/Components/TabPanels/UserPageTabs/TabRedeImgDiv.js new file mode 100644 index 0000000000000000000000000000000000000000..13399e5ac70ba3b97a502dde8fdedeb418d738d6 --- /dev/null +++ b/src/Components/TabPanels/UserPageTabs/TabRedeImgDiv.js @@ -0,0 +1,28 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' + +export default function TabRedeImgDiv (props) { + return ( + <div> + <img src={props.img} alt={'no rede 1'} style={{width : "100%", verticalAlign : "middle", border : "0"}}/> + <p style={{fontSize : "14px", fontFamily : "Roboto", margin : "0 0 10px"}}>{props.text}</p> + </div> + ) +} diff --git a/src/Components/Table.js b/src/Components/Table.js new file mode 100644 index 0000000000000000000000000000000000000000..773a5fffb85387a8a4571b6e80b087c85104c944 --- /dev/null +++ b/src/Components/Table.js @@ -0,0 +1,81 @@ +import React from 'react'; +import { withStyles, makeStyles } from '@material-ui/core/styles'; +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableContainer from '@material-ui/core/TableContainer'; +import TableHead from '@material-ui/core/TableHead'; +import TableRow from '@material-ui/core/TableRow'; +import Paper from '@material-ui/core/Paper'; + +const StyledTableCell = withStyles(theme => ({ + head: { + backgroundColor: '#00bcd4', + color: '#ffffff', + fontFamily: 'Roboto', + fontStyle: 'normal', + fontWeight: 500, + fontSize: 15, + letterSpacing: .01 + }, + body: { + fontSize: 14, + }, +}))(TableCell); + +const StyledTableRow = withStyles(theme => ({ + root: { + '&:nth-of-type(odd)': { + backgroundColor: theme.palette.background.default, + }, + }, +}))(TableRow); + + +const useStyles = makeStyles({ + table: { + minWidth: 970, + }, +}); + +export default function CustomizedTables(props) { + const classes = useStyles(); + + const onClick = (row) => { + const {city_name, id, name, state_name} = row + props.onClickTable(city_name, id, name, state_name) + } + + return ( + <> + <TableContainer component={Paper}> + <Table className={classes.table} aria-label="customized table"> + <TableHead> + <TableRow> + { + props.columns.map( (column)=> + <StyledTableCell align="left">{column}</StyledTableCell> + ) + } + </TableRow> + </TableHead> + <TableBody> + {props.rows.map(row => ( + <> + {console.log(row)} + <StyledTableRow onClick={() => onClick(row)} key={row.id}> + <StyledTableCell component="th" scope="row"> + {row.id} + </StyledTableCell> + <StyledTableCell align="left">{row.name}</StyledTableCell> + <StyledTableCell align="left">{row.state_name}</StyledTableCell> + <StyledTableCell align="left">{row.city_name}</StyledTableCell> + </StyledTableRow> + </> + ))} + </TableBody> + </Table> + </TableContainer> + </> + ); +} diff --git a/src/Components/UploadPageComponents/ButtonsDiv.js b/src/Components/UploadPageComponents/ButtonsDiv.js new file mode 100644 index 0000000000000000000000000000000000000000..8add164e3a46bcef35c155d223f788a682af6c5f --- /dev/null +++ b/src/Components/UploadPageComponents/ButtonsDiv.js @@ -0,0 +1,77 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import ModalCancelar from './ModalCancelar.js' +import { GreyButton, OrangeButton, StyledDiv } from './StyledComponents'; +import Grid from '@material-ui/core/Grid'; +import {Redirect} from 'react-router-dom' +export default function ButtonsDiv (props) { + const [modalCancelar, toggleModalCancelar] = useState(false) + const [redirectTrue, toggleRedirect] = useState(false) + return ( + <> + <ModalCancelar + open={modalCancelar} + handleClose={() => {toggleModalCancelar(false)}} + draftID={props.draftID} + /> + + { + redirectTrue && + <Redirect to="/"/> + } + <Grid container justify="center"> + + {/*botao excluir na pagina de editar*/} + <Grid item md={2} xs={6}> + <GreyButton onClick={() => {toggleModalCancelar(true)}}> + <span className="button-text"> + CANCELAR + </span> + </GreyButton> + </Grid> + + { + props.onPartTwo && + <Grid item md={2} xs={6}> + <GreyButton onClick={() => {props.stepperControl(-1)}}> + <span className="button-text"> + VOLTAR + </span> + </GreyButton> + </Grid> + } + + <Grid item md={4} xs={12}> + <GreyButton onClick={() => {if(window.confirm('O seu recurso em edição foi salvo.')) toggleRedirect(true)}}> + <span className="button-text"> + CONTINUAR MAIS TARDE + </span> + </GreyButton> + </Grid> + + <Grid item md={4} xs={12}> + <OrangeButton type="submit"> + SALVAR E AVANÇAR + </OrangeButton> + </Grid> + </Grid> + </> + ) +} diff --git a/src/Components/UploadPageComponents/ChooseLinkSection.js b/src/Components/UploadPageComponents/ChooseLinkSection.js new file mode 100644 index 0000000000000000000000000000000000000000..ef282d1de8b75c8d3b1372fc3fdd38f5aeb6198d --- /dev/null +++ b/src/Components/UploadPageComponents/ChooseLinkSection.js @@ -0,0 +1,99 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import styled from 'styled-components' +import LinkIcon from '../../img/link_icon.svg' +import { Button } from '@material-ui/core'; +import TextField from '@material-ui/core/TextField'; +import UndoIcon from '@material-ui/icons/Undo'; +import {WrapperBox, StyledTextField, BlueButton, GrayButton} from './StyledComponents.js' + +export default function ChooseLink (props) { + const [linkSent, setLinkSent] = useState(false) + const [link, setLink] = useState({flag : false, value : ""}) + const handleLink = (e) => { + let userInput = e.target.value + const urlRegex = new RegExp( + "(?:(?:(?:https?|ftp):\/\/))(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})*(?:[/?#]\S*)?", "i" + ) + let flag = !(urlRegex.test(userInput)) + setLink({...link, + flag : flag, + value : userInput} + ) + } + + const handleSubmit = (e) => { + e.preventDefault() + console.log(link.flag) + if (!link.flag) { + props.submit(link.value) + setLinkSent(true) + } + } + + + return ( + <WrapperBox> + <div className="inner"> + <div className="upload-title"> Enviar Link</div> + + <div className="flex-column"> + <p>Insira o link da página do recurso abaixo:</p> + <form onSubmit={(e) => {handleSubmit(e)}}> + <StyledTextField + id = {"choose-link-form"} + label={"Exemplo: http://google.com"} + type = {"text"} + value = {link.value} + onChange = {e => {handleLink(e)}} + helperText = {link.flag ? "Faltou inserir um endereço eletrônico" : ""} + multiline={true} + rowsMax = {"10"} + rows={1} + error = {link.flag} + required = {true} + disabled={linkSent} + /> + + <div className="buttons-div"> + { + linkSent ? + ( + <BlueButton onClick={() => {setLinkSent(false)}}>Editar</BlueButton> + ) + : + ( + <> + <GrayButton onClick={() => {props.handleNextStage("default")}}> + <span className="button-text"> + <UndoIcon className="icon"/>Voltar + </span> + </GrayButton> + <BlueButton type="submit">SALVAR</BlueButton> + </> + ) + } + </div> + </form> + </div> + </div> + </WrapperBox> + ) +} diff --git a/src/Components/UploadPageComponents/DragAndDrop.tsx b/src/Components/UploadPageComponents/DragAndDrop.tsx new file mode 100644 index 0000000000000000000000000000000000000000..d416b22257648c2c500ef0cb85150e7acfacae20 --- /dev/null +++ b/src/Components/UploadPageComponents/DragAndDrop.tsx @@ -0,0 +1,153 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import CloudUploadIcon from '@material-ui/icons/CloudUpload'; +import {DottedBox, BlueButton} from './StyledComponents.js'; +import FileToUpload from './FileToUpload' +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig.js' +import AddAPhotoIcon from '@material-ui/icons/AddAPhoto'; + +type Props = { + draftID : string; +} + +const UploadMediaComponent: React.FC<Props> = ({draftID, children}) => { + const [filesToUpload, setFilesToUpload] = useState<FileToUpload | undefined>(undefined); + + const onFileChange = (e: React.ChangeEvent<HTMLInputElement>) => { + const files: FileList | null = e.target.files; + if(!files) return; + + let fileToUpload: FileToUpload = new FileToUpload(files[0], files[0].name, draftID); + + setFilesToUpload(fileToUpload); + if (fileToUpload != undefined){ + console.log(fileToUpload.uploadFile()) + + } + }; + + return ( + <div className="upload-container"> + <h2 className="upload-title">File Uploader</h2> + <div className="upload-form"> + <form id="file_upload"> + <DottedBox + + > + <AddAPhotoIcon className="icon"/> + <input + type="file" + onChange = {onFileChange} + id="upload-file-thumbnail" + style={{display : "none"}} + /> + <BlueButton> + <label htmlFor="upload-file-thumbnail" style={{width : "inherit", cursor : "pointer"}}> + ESCOLHER IMAGEM + </label> + </BlueButton> + <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span> + </DottedBox> + </form> + </div> + </div> + ) +} +UploadMediaComponent.displayName = 'UploadMedia'; +export default UploadMediaComponent; + +{/*<div className="upload-file-select"> + <label htmlFor="file_1">Select files for upload</label> + <input id="file_1" type="file" multiple onChange={onFileChange}/> +</div> + +<div className="upload-file-list"> + {filesToUpload.map((f,i) => <div className="upload-file" key={i}>{f.name} - {f.file.size}bytes</div>)} +</div> + +<div className="upload-submit"> + <input type="submit" value="submit"/> +</div>*/} + +{/* + const [dropDepth, setDropDepth] = useState(0) + const [inDropZone, toggleInDropZone] = useState(false) + const [fileList, setFileList] = useState([]) + + const handleDragEnter = e => { + e.preventDefault(); + e.stopPropagation(); + + setDropDepth(dropDepth + 1) + }; + + const handleDragLeave = e => { + e.preventDefault(); + e.stopPropagation(); + + setDropDepth(dropDepth - 1) + if (dropDepth > 0) + toggleInDropZone(true) + }; + + const handleDragOver = e => { + e.preventDefault(); + e.stopPropagation(); + e.dataTransfer.dropEffect = 'copy'; + toggleInDropZone(true) + }; + + const handleDrop = e => { + e.preventDefault(); + e.stopPropagation(); + let files = [...e.dataTransfer.files] + + if (files && files.length > 0) { + props.acceptFile(files[0]) + } + }; + + const handleUpload = (e, selectorFiles : FileList) => { + e.preventDefault(); + props.acceptFile(selectorFiles[0]) + } + + + <DottedBox + onDrop={e => handleDrop(e)} + onDragOver={e => handleDragOver(e)} + onDragEnter={e => handleDragEnter(e)} + onDragLeave={e => handleDragLeave(e)} + > + <CloudUploadIcon className="icon"/> + <input + type="file" + onChange = {(e) => handleUpload(e, e.target.files)} + id="upload-file" + style={{display : "none"}} + /> + <BlueButton> + <label htmlFor="upload-file" style={{width : "inherit", cursor : "pointer"}}> + ESCOLHER O ARQUIVO + </label> + </BlueButton> + <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span> +</DottedBox> + */} diff --git a/src/Components/UploadPageComponents/FileToUpload.ts b/src/Components/UploadPageComponents/FileToUpload.ts new file mode 100644 index 0000000000000000000000000000000000000000..0fba0fc8204700a5e47bdd98516b8aa474e98133 --- /dev/null +++ b/src/Components/UploadPageComponents/FileToUpload.ts @@ -0,0 +1,88 @@ +export default class FileToUpload { + static chunkSize = 262144; + readonly request: XMLHttpRequest; + readonly uploadUrl: string; + readonly file: File; + readonly name: string; + readonly draftID: string; + readonly _chunkIdentifier: string; + private _chunkNumber: number; + currentChunkStartByte: number; + currentChunkFinalByte: number; + + constructor(file: File, name: string, draftID : string) { + this.request = new XMLHttpRequest(); + this.request.onreadystatechange = function(ev: Event) { + if(this.readyState === XMLHttpRequest.DONE){ + if (this.getResponseHeader('access-token') != null) { + console.log(this.getResponseHeader('access-token')) + sessionStorage.setItem('@portalmec/accessToken', this.getResponseHeader('access-token')!) + } + } + } + this.request.overrideMimeType('application/octet-stream'); + + this.file = file; + this.name = name; + this.draftID = draftID; + this.uploadUrl = 'https://api.portalmec.c3sl.ufpr.br/v1/learning_objects/' + draftID + '/chunk' + this._chunkIdentifier = draftID + '-' + this.name; + this._chunkNumber = 0; + + this.currentChunkStartByte = 0; + this.currentChunkFinalByte = FileToUpload.chunkSize > this.file.size ? this.file.size : FileToUpload.chunkSize; + } + + uploadFile() { + this.request.open('POST', this.uploadUrl, true); + + let chunk: Blob = this.file.slice(this.currentChunkStartByte, this.currentChunkFinalByte); // split the file according to the boundaries + + //set necessary headers + this.request.setRequestHeader('Content-Range', `bytes ${this.currentChunkStartByte}-${this.currentChunkFinalByte}/${this.file.size}`); + if (sessionStorage.getItem('@portalmec/uid') != undefined) { + this.request.setRequestHeader('uid', sessionStorage.getItem('@portalmec/uid')!) + } + if (sessionStorage.getItem('@portalmec/clientToken') != undefined) { + this.request.setRequestHeader('client', String(sessionStorage.getItem('@portalmec/clientToken'))) + } + if (sessionStorage.getItem('@portalmec/accessToken') != undefined) { + this.request.setRequestHeader('access-token', String(sessionStorage.getItem('@portalmec/accessToken'))) + } + + this.request.onload = () => { + const remainingBytes = this.file.size - this.currentChunkFinalByte; + + if(this.currentChunkFinalByte === this.file.size) { + alert('Yay, upload completed! Chao!'); + return('done'); + } else if (remainingBytes < FileToUpload.chunkSize) { + // if the remaining chunk is smaller than the chunk size we defined + this.currentChunkStartByte = this.currentChunkFinalByte; + this.currentChunkFinalByte = this.currentChunkStartByte + remainingBytes; + } + else { + // keep chunking + this.currentChunkStartByte = this.currentChunkFinalByte; + this.currentChunkFinalByte = this.currentChunkStartByte + FileToUpload.chunkSize; + } + + this._chunkNumber = this._chunkNumber + 1 + this.uploadFile(); + } + + //add attributes + const formData = new FormData(); + formData.append('_chunkFilename', this.file.name); + formData.append('_chunkIdentifier', this._chunkIdentifier); + formData.append('_totalChunks', String(Math.ceil(this.file.size/FileToUpload.chunkSize))); + formData.append('_chunkSize', String(FileToUpload.chunkSize)); + formData.append('_currentChunkSize', String(this.currentChunkFinalByte - this.currentChunkStartByte)); + formData.append('_chunkNumber', String(this._chunkNumber)); + formData.append('_totalSize', String(this.file.size)); + formData.append('file', chunk); + + this.request.send(formData);// send it now! + } + +} diff --git a/src/Components/UploadPageComponents/FileUploadStage.js b/src/Components/UploadPageComponents/FileUploadStage.js new file mode 100644 index 0000000000000000000000000000000000000000..5419bb3f7ce1dfc0574a3965c32ede36a7fcd425 --- /dev/null +++ b/src/Components/UploadPageComponents/FileUploadStage.js @@ -0,0 +1,72 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import styled from 'styled-components' +import {WrapperBox} from './StyledComponents.js' +import DoneIcon from '@material-ui/icons/Done'; +import DeleteIcon from '@material-ui/icons/Delete'; +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig.js' +import axios from 'axios' +import {apiUrl} from '../../env'; + +export default function FileUploadStage (props) { + const [uploading, toggleUploading] = useState(true) + + const handleDelete = () => { + let config = getAxiosConfig + + axios.delete( (`${apiUrl}/learning_objects/` + props.draftID), config).then( + (response) => { + console.log(response) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + props.handleNextStage("default") + }, + (error) => {console.log(error)}) + } + + return ( + <WrapperBox> + <div className="inner"> + <div className="upload-title"> + {uploading ? 'Carregando arquivo' : 'O arquivo foi carregado'} + </div> + + <div className="uploading"> + <div className="upload-item"> + <div className="item-info"> + <div className="file-status"> + <DoneIcon className="icon icon-margin"/> {props.file.name} + </div> + <div className="remove-file" onClick={handleDelete}> + Excluir <DeleteIcon className="icon icon-remove"/> + </div> + </div> + </div> + <div className="warning"> + <span>Não se esqueça de preencher as</span> + <br/> + <span>informações sobre o recurso ao lado.</span> + </div> + </div> + </div> + </WrapperBox> + ) +} diff --git a/src/Components/UploadPageComponents/Forms/Autor.js b/src/Components/UploadPageComponents/Forms/Autor.js new file mode 100644 index 0000000000000000000000000000000000000000..c2427708808305757edb1df197161c5909abd9af --- /dev/null +++ b/src/Components/UploadPageComponents/Forms/Autor.js @@ -0,0 +1,76 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, memo, useContext} from 'react' +import {Store} from '../../../Store.js' +import { withStyles } from '@material-ui/core/styles'; + +import FormControl from '@material-ui/core/FormControl'; +import {StyledTextField, StyledFormLabel, OutroAutorTextField} from '../StyledComponents.js' +import FormHelperText from '@material-ui/core/FormHelperText'; +import RadioGroup from '@material-ui/core/RadioGroup'; +import Radio from '@material-ui/core/Radio'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; + +const BlueRadio = withStyles({ + root: { + color: '#666', + '&$checked': { + color: '#00bcd4', + }, + }, + checked: {}, +})((props) => <Radio color="default" {...props} />); + +function Autor (props) { + const {state} = useContext(Store) + const [authorValue, setAuthorValue] = useState(props.initialValue ? props.initialValue : -1) + const [outroAutor, setOutroAutor] = useState(props.initialOutroAutor ? props.initialOutroAutor : '') + + const getAuthor = () => { + return authorValue === "0" ? state.currentUser.username : outroAutor + } + + return ( + <FormControl required={true} style={{width : "100%"}} onBlur={() => {props.onBlurCallback("author", getAuthor(), props.draftID)}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Autor do recurso</b> + </StyledFormLabel> + <RadioGroup ara-label="Autor do Recurso" name="Autor do Recurso" value={authorValue} onChange={(e) => {setAuthorValue(e.target.value)}}> + <FormControlLabel value="0" control={<BlueRadio />} label="Sou o(a) autor(a) deste recurso"/> + <FormControlLabel value="1" control={<BlueRadio/>} + label={ + <div style={{display : "flex", alignItems : "center"}}> + Outro: + <OutroAutorTextField + id = {"outro-autor-form"} + placeholder={"Nome dos autores"} + type = {"text"} + value = {outroAutor} + onChange = {e => {setOutroAutor(e.target.value)}} + disabled = {authorValue === "0"} + style={{paddingLeft : "5px", width : "100%"}} + /> + </div>} + /> + </RadioGroup> + </FormControl> + ) +} + +export default memo(Autor) diff --git a/src/Components/UploadPageComponents/Forms/Idioma.js b/src/Components/UploadPageComponents/Forms/Idioma.js new file mode 100644 index 0000000000000000000000000000000000000000..ced59ebd7233165a30cb9dfa6b804633054bb014 --- /dev/null +++ b/src/Components/UploadPageComponents/Forms/Idioma.js @@ -0,0 +1,64 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import FormControl from '@material-ui/core/FormControl'; +import {StyledFormLabel} from '../StyledComponents.js' +import ListItemText from '@material-ui/core/ListItemText'; +import Checkbox from '@material-ui/core/Checkbox'; +import Input from '@material-ui/core/Input'; +import MenuItem from '@material-ui/core/MenuItem'; +import Select from '@material-ui/core/Select'; + +export default function Idioma (props) { + const [chosenLanguage, setChosenLanguage] = useState(props.initialValue ? props.initialValue : []) + const [ids, setIds] = useState(props.initialIDValues ? props.initialIDValues : []) + + const handleChangeLanguage = (event) => { + console.log(event.target.value) + let newLanguage = event.target.value.pop() + setChosenLanguage(chosenLanguage => [...chosenLanguage, newLanguage.name]); + setIds(ids => [...ids, newLanguage.id]) + }; + + + return ( + <FormControl required style={{minWidth : "30%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Idioma</b> + </StyledFormLabel> + <Select + value={chosenLanguage} + multiple + renderValue={(selected) => selected.join(', ')} + name="Idioma" + onChange={handleChangeLanguage} + onBlur={() => {props.onBlurCallback("language_ids", ids, props.draftID)}} + > + { + props.languages.map( language => + <MenuItem key={language.name} value={language}> + <Checkbox checked={chosenLanguage.indexOf(language.name) > -1} /> + <ListItemText primary={language.name} /> + </MenuItem> + ) + } + </Select> + </FormControl> + ) +} diff --git a/src/Components/UploadPageComponents/Forms/Keywords.js b/src/Components/UploadPageComponents/Forms/Keywords.js new file mode 100644 index 0000000000000000000000000000000000000000..238d0b7a42aead95b8f4fcc5778796c05bb7600a --- /dev/null +++ b/src/Components/UploadPageComponents/Forms/Keywords.js @@ -0,0 +1,87 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, memo, useEffect} from 'react' +import FormControl from '@material-ui/core/FormControl'; +import {StyledTextField, StyledFormLabel} from '../StyledComponents.js' +import FormHelperText from '@material-ui/core/FormHelperText'; +import Chip from '@material-ui/core/Chip'; + +function Keywords (props) { + + const [keywords, setKeywords] = useState(props.initialValue ? props.initialValue : []) + const handleSetKeywords = (newKeyword) => {setKeywords(newKeyword)} + const deleteKeyword = (keywordToDelete) => { + setKeywords(keywords.filter((keyword) => keyword !== keywordToDelete)) + } + + const [keywordsBuffer, setKeywordsBuffer] = useState('') + + const handleKeywords = (event) => { + let userInput = event.target.value; + + if(userInput.indexOf(',') != -1 ) { + if(userInput.length > 1) { + handleSetKeywords([...keywords, userInput.split(',')[0]]) + } + setKeywordsBuffer('') + } + else { + setKeywordsBuffer(userInput) + } + } + + + return ( + <React.Fragment> + <FormControl required={true} style={{width : "100%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Palavras-chave para buscar o Recurso</b> + <span style={{color : "#a5a5a5", paddingLeft : "10px"}}> + (Use vÃrgula ou enter para separar as palavras-chave)</span> + </StyledFormLabel> + <StyledTextField + id = {"text-form"} + placeholder={"Ex: Biomas, Geografia, ..."} + type = {"text"} + value={keywordsBuffer} + onChange={handleKeywords} + onKeyDown={(event) => { + if(event.keyCode === 13){ + handleSetKeywords([...keywords, keywordsBuffer]) + setKeywordsBuffer('')}} + } + fullWidth + onBlur={() => {props.onBlurCallback("tags", keywords, props.draftID)}} + /> + </FormControl> + { + keywords.length !== 0 && + <FormHelperText> + { + keywords.map( (keyword) => + <Chip label={keyword} key={keyword} onDelete={() => deleteKeyword(keyword)} /> + ) + } + </FormHelperText> + } + </React.Fragment> + ) +} + +export default memo(Keywords) diff --git a/src/Components/UploadPageComponents/Forms/NewTitle.js b/src/Components/UploadPageComponents/Forms/NewTitle.js new file mode 100644 index 0000000000000000000000000000000000000000..0a763dc0a08fd0d399f7daf3b127a9620d24965c --- /dev/null +++ b/src/Components/UploadPageComponents/Forms/NewTitle.js @@ -0,0 +1,62 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, memo} from 'react' +import FormControl from '@material-ui/core/FormControl'; +import {StyledTextField, StyledFormLabel} from '../StyledComponents.js' +import FormHelperText from '@material-ui/core/FormHelperText'; + + +function NewTitle (props) { + + const [objTitle, setFormValue] = useState({ + error : false, + value : props.initialValue ? props.initialValue : "" + }) + const handleChangeTitle = (e) => { + let userInput = e.target.value + let flag = (userInput.length > 100 || userInput.length === 0 ? true : false) + setFormValue({...objTitle, + error : flag, + value : userInput + }) + } + + return ( + <FormControl required={true} style={{width : "100%", height : "100px"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>TÃtulo do Recurso</b> + </StyledFormLabel> + <StyledTextField + id = {"title-form"} + placeholder={"Ex: Jogo Virtual sobre os Biomas do Brasil"} + type = {"text"} + value = {objTitle.value} + onChange = {e => {handleChangeTitle(e)}} + helperText = {objTitle.value.length + "/100"} + error = {objTitle.error} + fullWidth + onBlur={() => {props.onBlurCallback("name", objTitle.value, props.draftID)}} + /> + {objTitle.value.length === 0 && objTitle.error && + <FormHelperText style={{fontSize : "14px", position : "relative", top : "-26px"}}>Faltou definir um tÃtulo.</FormHelperText>} + </FormControl> + ) +} + +export default memo(NewTitle) diff --git a/src/Components/UploadPageComponents/Forms/SobreORecurso.js b/src/Components/UploadPageComponents/Forms/SobreORecurso.js new file mode 100644 index 0000000000000000000000000000000000000000..93ea7daab57031935510a63cf5794039c69fcf6c --- /dev/null +++ b/src/Components/UploadPageComponents/Forms/SobreORecurso.js @@ -0,0 +1,48 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, memo, useEffect} from 'react' +import FormControl from '@material-ui/core/FormControl'; +import {StyledTextField, StyledFormLabel} from '../StyledComponents.js' + +function SobreORecurso (props) { + const [objDescription, setDescription] = useState(props.initialValue ? props.initialValue : '') + const handleSetDescription = (event) => {setDescription(event.target.value)} + + + return ( + <FormControl style={{width : "100%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Descrição geral do Recurso</b> (Opcional) + </StyledFormLabel> + <StyledTextField + id = {"description-form"} + placeholder={"Quais assuntos são contemplados neste Recurso? Para quais objetivos este Recurso pode ser destinado?"} + type = {"text"} + value={objDescription} + onChange={handleSetDescription} + fullWidth + multiline + rows={5} + onBlur={() => {props.onBlurCallback("description", objDescription, props.draftID)}} + /> + </FormControl> + ) +} + +export default memo(SobreORecurso); diff --git a/src/Components/UploadPageComponents/Forms/TipoDeRecurso.js b/src/Components/UploadPageComponents/Forms/TipoDeRecurso.js new file mode 100644 index 0000000000000000000000000000000000000000..55474c92981e3229868b4b02538a06aa6cd8b9bf --- /dev/null +++ b/src/Components/UploadPageComponents/Forms/TipoDeRecurso.js @@ -0,0 +1,51 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, memo} from 'react' +import FormControl from '@material-ui/core/FormControl'; +import {StyledRadio, ObjTypeBox, StyledFormLabel} from '../StyledComponents.js' +import RadioGroup from '@material-ui/core/RadioGroup'; +import Radio from '@material-ui/core/Radio'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; + + +function TipoDeRecurso (props) { + + const [objTypeValue, chooseObjType] = useState(props.initialValue ? props.initialValue : 0) + const handleChangeObjType = (event) => {chooseObjType(Number(event.target.value))} + + return ( + <FormControl required={true} style={{width : "100%"}} onBlur={() => {props.onBlurCallback("object_type_id", objTypeValue, props.draftID)}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Tipo de recurso</b> + </StyledFormLabel> + <RadioGroup aria-label="Tipo de Recurso" name="Tipo de Recurso" row value={objTypeValue} onChange={handleChangeObjType} style={{justifyContent : "center"}}> + { + props.objTypes.map( (type) => + <FormControlLabel key={type.id} value={type.id} + control={<StyledRadio label={type.name} checked={objTypeValue === type.id}/>} + /> + ) + + } + </RadioGroup> + </FormControl> + ) +} + +export default memo(TipoDeRecurso) diff --git a/src/Components/UploadPageComponents/GetIconByName.js b/src/Components/UploadPageComponents/GetIconByName.js new file mode 100644 index 0000000000000000000000000000000000000000..2d4bb7c6c5fbe268131da5cbbf09acbd9357835c --- /dev/null +++ b/src/Components/UploadPageComponents/GetIconByName.js @@ -0,0 +1,167 @@ +import React from 'react' +import {ReactComponent as AplicativoMovelIcon} from '../../img/object_type_icons/object-type_aplicativo-movel.svg' +import {ReactComponent as ApresentacaoIcon} from '../../img/object_type_icons/object-type_apresentacao.svg' +import {ReactComponent as AudioIcon} from '../../img/object_type_icons/object-type_audio.svg' +import {ReactComponent as ImagemIcon} from '../../img/object_type_icons/object-type_imagem.svg' +import {ReactComponent as InfograficoIcon} from '../../img/object_type_icons/object-type_infografico.svg' +import {ReactComponent as JogoIcon} from '../../img/object_type_icons/object-type_jogo.svg' +import {ReactComponent as LivroDigitalIcon} from '../../img/object_type_icons/object-type_livro-digital.svg' +import {ReactComponent as MapaIcon} from '../../img/object_type_icons/object-type_mapa.svg' +import {ReactComponent as OutrosIcon} from '../../img/object_type_icons/object-type_outros.svg' +import {ReactComponent as SoftwareEducacionalIcon} from '../../img/object_type_icons/object-type_software-educacional.svg' +import {ReactComponent as TextoIcon} from '../../img/object_type_icons/object-type_texto.svg' +import {ReactComponent as VideoIcon} from '../../img/object_type_icons/object-type_video.svg' +import {ReactComponent as AnimacaoIcon} from '../../img/object_type_icons/object-type_animacao.svg' + +import {ReactComponent as Arte} from '../../img/subject_icons/subject_arte.svg' +import {ReactComponent as Biologia} from '../../img/subject_icons/subject_biologia.svg' +import {ReactComponent as CienciasNatureza} from '../../img/subject_icons/subject_ciencias-da-natureza.svg' +import {ReactComponent as DireitosHumanos} from '../../img/subject_icons/subject_direitos-humanos.svg' +import {ReactComponent as EducacaoAmbiental} from '../../img/subject_icons/subject_educacao-ambiental.svg' +import {ReactComponent as EducacaoCampo} from '../../img/subject_icons/subject_educacao-do-campo.svg' +import {ReactComponent as EducacaoEspecial} from '../../img/subject_icons/subject_educacao-especial.svg' +import {ReactComponent as EducacaoFisica} from '../../img/subject_icons/subject_educacao-fisica.svg' +import {ReactComponent as EducacaoIndigena} from '../../img/subject_icons/subject_educacao-indigena.svg' +import {ReactComponent as EducacaoQuilombola} from '../../img/subject_icons/subject_educacao-quilombola.svg' +import {ReactComponent as EducacaoSexual} from '../../img/subject_icons/subject_educacao-sexual.svg' +import {ReactComponent as EnsinoReligioso} from '../../img/subject_icons/subject_ensino-religioso.svg' +import {ReactComponent as Filosofia} from '../../img/subject_icons/subject_filosofia.svg' +import {ReactComponent as Fisica} from '../../img/subject_icons/subject_fisica.svg' +import {ReactComponent as Geografia} from '../../img/subject_icons/subject_geografia.svg' +import {ReactComponent as Historia} from '../../img/subject_icons/subject_historia.svg' +import {ReactComponent as Informatica} from '../../img/subject_icons/subject_informatica.svg' +import {ReactComponent as LinguaEspanhola} from '../../img/subject_icons/subject_lingua-espanhola.svg' +import {ReactComponent as LinguaInglesa} from '../../img/subject_icons/subject_lingua-inglesa.svg' +import {ReactComponent as LinguaPortuguesa} from '../../img/subject_icons/subject_lingua-portuguesa.svg' +import {ReactComponent as Matematica} from '../../img/subject_icons/subject_matematica.svg' +import {ReactComponent as OutrasLinguas} from '../../img/subject_icons/subject_outras-linguas.svg' +import {ReactComponent as Quimica} from '../../img/subject_icons/subject_quimica.svg' +import {ReactComponent as Sociologia} from '../../img/subject_icons/subject_sociologia.svg' +import {ReactComponent as Outros} from '../../img/subject_icons/subject_outros.svg' + + + +export function GetSubjectIconByName (subjName) { + switch (subjName) { + case "Arte": + return <Arte className="icon"/> + break; + case "Biologia": + return <Biologia className="icon"/> + break; + case "Ciências da Natureza": + return <CienciasNatureza className="icon"/> + break; + case "Direitos Humanos": + return <DireitosHumanos className="icon"/> + break; + case "Educação Ambiental": + return <EducacaoAmbiental className="icon"/>; + break; + case "Educação do Campo": + return <EducacaoCampo className="icon"/>; + break; + case "Educação Especial": + return <EducacaoEspecial className="icon"/>; + break; + case "Educação FÃsica": + return <EducacaoFisica className="icon"/>; + break; + case "Educação IndÃgena": + return <EducacaoIndigena className="icon"/>; + break; + case "Educação Quilombola": + return <EducacaoQuilombola className="icon"/>; + break; + case "Educação Sexual": + return <EducacaoSexual className="icon"/>; + break; + case "Ensino Religioso": + return <EnsinoReligioso className="icon"/>; + break; + case "Filosofia": + return <Filosofia className="icon"/>;; + break; + case "FÃsica": + return <Fisica className="icon"/>; + break; + case "Geografia": + return <Geografia className="icon"/>; + break; + case "História": + return <Historia className="icon"/>; + break; + case "Informática": + return <Informatica className="icon"/>; + break; + case "LÃngua Espanhola": + return <LinguaEspanhola className="icon"/>; + break; + case "LÃngua Inglesa": + return <LinguaInglesa className="icon"/>; + break; + case "LÃngua Portuguesa": + return <LinguaPortuguesa className="icon"/>; + break; + case "Matemática": + return <Matematica className="icon"/>; + break; + case "Outras LÃnguas": + return <OutrasLinguas className="icon"/>; + break; + case "QuÃmica": + return <Quimica className="icon"/>; + break; + case "Sociologia": + return <Sociologia className="icon"/>; + break; + default: + return <Outros className="icon"/>; + break; + } +} + +export default function GetIconByName (objName) { + switch (objName.toLowerCase()) { + case "imagem": + return <ImagemIcon className="icon" />; + break; + case "mapa": + return <MapaIcon className="icon"/>; + break; + case "software educacional" : + return <SoftwareEducacionalIcon className="icon"/>; + break; + case "aplicativo móvel": + return <AplicativoMovelIcon className="icon"/>; + break; + case "apresentação": + return <ApresentacaoIcon className="icon"/>; + break; + case "áudio": + return <AudioIcon className="icon"/>; + break; + case "infográfico": + return <InfograficoIcon className="icon"/>; + break; + case "jogo": + return <JogoIcon className="icon"/>; + break; + case "livro digital" : + return <LivroDigitalIcon className="icon"/>; + break; + case "texto": + return <TextoIcon className="icon"/>; + break; + case "vÃdeo": + return <VideoIcon className="icon"/>; + break; + case "animação": + return <AnimacaoIcon className="icon"/>; + break; + default: + return <OutrosIcon className="icon"/>; + break; + + } +} diff --git a/src/Components/UploadPageComponents/ModalCancelar.js b/src/Components/UploadPageComponents/ModalCancelar.js new file mode 100644 index 0000000000000000000000000000000000000000..44f17b032ed9e8b67ba0de04fc913c702b8b0db9 --- /dev/null +++ b/src/Components/UploadPageComponents/ModalCancelar.js @@ -0,0 +1,174 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import { Button } from '@material-ui/core'; +import Modal from '@material-ui/core/Modal'; +import Backdrop from '@material-ui/core/Backdrop'; +import Fade from '@material-ui/core/Fade'; +import styled from 'styled-components' +import CloseIcon from '@material-ui/icons/Close'; +import axios from 'axios' +import {apiUrl} from '../../env'; +import {Link} from 'react-router-dom' + +export default function ModalCancelar (props) { + const handleDelete = () => { + console.log(props.draftID) + {/*delete the draft*/} + if (props.draftID) { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + axios.delete( (`${apiUrl}/learning_objects/` + props.draftID), config).then( + (response) => { + console.log(response) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + }, (error) => {console.log(error)}) + } + {/*close modal*/} + props.handleClose() + {/*change current page to home page*/} + console.log('ir pra home') + + } + + return ( + <StyledModal + aria-labelledby="transition-modal-title" + aria-describedby="transition-modal-description" + open={props.open} + centered="true" + closeAfterTransition + BackdropComponent={Backdrop} + onClose={props.handleClose} + BackdropProps={{ + timeout: 500, + }} + > + <Fade in={props.open}> + <Container> + <Content> + <h2>Tem certeza que deseja cancelar?</h2> + <p>Ao clicar no botão "OK", o seu recurso NÃO será salvo.</p> + </Content> + <ButtonsArea> + <StyledButton onClick={props.handleClose}>VOLTAR</StyledButton> + <Link to="/" style={{textDecoration : "none !important"}}> + <StyledButton onClick={handleDelete}>OK</StyledButton> + </Link> + </ButtonsArea> + </Container> + </Fade> + </StyledModal> + ) +} + +const ButtonsArea = styled.div` + display : flex; + align-items : center; + justify-content : flex-end; + padding-right : 8px; + padding-left : 16px; + min-height : 52px; +` + +const Content = styled.div` + padding : 24px; + overflow : visible; + max-width : 470px; + h2 { + margin-top : 0; + font-size : 20px; + font-weight : bold; + color : #666; + margin-bottom : 10px; + } + + p { + margin : 0 0 10px; + font-size : 14px; + color : #666; + } +` + + +const StyledModal = styled(Modal)` + .djXaxP{ + margin : 0 !important; + } + display : flex; + align-items: center; + justify-content : center; + padding : 10px !important; + max-width : none; + max-height : none; +` + +const Container = styled.div` + box-sizing : border-box; + background-color : white; + max-width : none; + align : center; + display : flex; + flex-direction : column; + min-width : 240px; + max-height : none; + position : relative; + border-radius : 4px; + box-shadow : 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12); + + @media screen and (max-width : 899px) { + width : 100%; + height : 100%; + } +` +const StyledButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + max-height : 36px !important; + + background-color : transparent !important; + color : #00bcd4 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + + .button-text { + cursor : pointer; + line-height : 36px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600 !important; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + padding : 6px 16px !important; + } +` diff --git a/src/Components/UploadPageComponents/PartOne.js b/src/Components/UploadPageComponents/PartOne.js new file mode 100644 index 0000000000000000000000000000000000000000..bd02f792230d6f69971c805b054fc3c137544f29 --- /dev/null +++ b/src/Components/UploadPageComponents/PartOne.js @@ -0,0 +1,119 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import Grid from '@material-ui/core/Grid'; +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import ButtonsDiv from './ButtonsDiv.js' +import { makeStyles } from '@material-ui/core/styles'; +import {ObjTypeBox, StyledFormHelperText, OutroAutorTextField, StyledFormLabel, StyledTextField, StyledNativeSelect} from './StyledComponents.js' + +import SobreORecurso from './Forms/SobreORecurso.js' +import NewTitle from './Forms/NewTitle.js' +import Keywords from './Forms/Keywords.js' +import Autor from './Forms/Autor.js' +import TipoDeRecurso from './Forms/TipoDeRecurso.js' +import Idioma from './Forms/Idioma.js' +import {SendInfo} from './SendInfo.js' + +export default function PartOne (props) { + {/*const [subjects, setSubjects] = useState([])*/} + const [languages, setLanguages] = useState([]) + const [objTypes, setObjTypes] = useState([]) + + useEffect( () => { + {/*get the list of subjects*/} + {/* axios.get(`${apiUrl}/subjects/`).then( + (response) => { + console.log(response.data) + setSubjects(response.data) + }, (error) => { + console.log(error) + } + )*/} + + {/*get the list of object_types*/} + axios.get(`${apiUrl}/object_types/`).then( + (response) => { + setObjTypes(response.data.sort((a, b) => (a.name) > (b.name) ? 1 : -1)) + }, (error) => { + console.log(error) + } + ) + + {/*get the list of languages*/} + axios.get(`${apiUrl}/languages/`).then( + (response) => { + setLanguages(response.data) + }, (error) => { + console.log(error) + } + ) + }, []) + + const handleSubmit = () => { + props.stepperControl(1) + } + + return ( + <form onSubmit={handleSubmit}> + {/*------------------------------Titulo-----------------------------------------*/} + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <NewTitle draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + {/*------------------------------Sobre------------------------------------------*/} + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <SobreORecurso draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + {/*------------------------------Palavras-chave------------------------------------------*/} + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Keywords draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + {/*------------------------------Autor------------------------------------------*/} + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Autor draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + {/*------------------------------Tipo do Objeto------------------------------------------*/} + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <TipoDeRecurso objTypes={objTypes} draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + {/*------------------------------Idioma------------------------------------------*/} + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Idioma languages={languages} draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + {/*------------------------------Botoes------------------------------------------*/} + <Grid item xs={12}> + <ButtonsDiv draftID={props.draftID} stepperControl={props.stepperControl}/> + </Grid> + + <Grid item xs={12} style={{marginTop : "20px"}}> + <span style={{marginTop : "20px", fontWeight : "200", color : "#a5a5a5", paddingLeft : "10px"}}> + * Campos obrigatórios + </span> + </Grid> + </form> + ) +} diff --git a/src/Components/UploadPageComponents/PartThree.js b/src/Components/UploadPageComponents/PartThree.js new file mode 100644 index 0000000000000000000000000000000000000000..cce31c71977d064486e3f4253e5e9006c6833abd --- /dev/null +++ b/src/Components/UploadPageComponents/PartThree.js @@ -0,0 +1,479 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect, useContext} from 'react' +import {Store} from '../../Store.js' +import Grid from '@material-ui/core/Grid'; +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import Stepper from './Stepper.js' +import Rating from '@material-ui/lab/Rating'; +import StarBorderIcon from '@material-ui/icons/StarBorder'; +import LoadingSpinner from '../LoadingSpinner.js' +import MoreIcon from '@material-ui/icons/More'; +import SdCardIcon from '@material-ui/icons/SdCard'; +import DateRangeIcon from '@material-ui/icons/DateRange'; +import UpdateIcon from '@material-ui/icons/Update'; +import TranslateIcon from '@material-ui/icons/Translate'; +import AssignmentIcon from '@material-ui/icons/Assignment'; +import { GrayButton, OrangeButton} from './StyledComponents'; +import ModalCancelar from './ModalCancelar.js' +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig.js' +import {getDefaultThumbnail} from '../HelperFunctions/getDefaultThumbnail' + +export default function PartThree (props) { + var moment = require('moment') + const now = moment() + const {state} = useContext(Store) + const [loading, setLoading] = useState(true) + + const [draft, setDraft] = useState({}) + const [subjects, setSubjects] = useState('') + const [tags, setTags] = useState([]) + const [description, setDescription] = useState('') + const [author, setAuthor] = useState('') + + useEffect(() => { + if (state.currentUser.id !== "") { + const config = getAxiosConfig() + axios.get( (`${apiUrl}/learning_objects/` + props.draftID), config + ).then( (response) => { + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + setDraft(response.data) + + /*extract subjects*/ + setSubjects(response.data.subjects.map((subject)=>(subject.name)).join(', ')) + setTags(response.data.tags.map(tag => tag.name)) + setDescription(response.data.description) + setAuthor(response.data.author) + setLoading(false) + }, (error) => {console.log(error)}) + } + }, [state.currentUser.id]) + + let windowWidth = window.innerWidth + const [modalCancelar, toggleModalCancelar] = useState(false) + + const checkAccessLevel = (levelToCheck) => { + if (state.currentUser.id != '') { + return(checkUserRole(levelToCheck)) + } + } + + const checkUserRole = (userRole) => { + return(state.currentUser.roles.filter((role) => role.name === userRole).length > 0) + } + + return ( + <React.Fragment> + { + !loading ? + ( + <React.Fragment> + <ModalCancelar + open={modalCancelar} + handleClose={() => {toggleModalCancelar(false)}} + draftID={draft.id} + /> + <Grid container style={{backgroundColor : "#f4f4f4"}}> + <Grid item xs={12}> + <StyledSessao1 className="page-content-preview"> + <div className="cabecalho"> + <div className="feedback-upload"> + <Stepper activeStep={props.activeStep}/> + <h2>Quase lá, agora só falta publicar!</h2> + <span className="subtitle">Veja abaixo como o seu Recurso vai aparecer na Plataforma:</span> + </div> + </div> + </StyledSessao1> + + <CaixaContainer> + <div> + <div className="cabecalho-objeto"> + <img className="img-objeto" + src={draft.thumbnail === null ? getDefaultThumbnail(draft.object_type) : apiDomain + draft.thumbnail}/> + <div className="texto-objeto"> + <h3>{draft.name}</h3> + <div className="rating-objeto"> + <Rating + name="customized-empty" + value={draft.score} + precision={0.5} + style={{color:"#666"}} + emptyIcon={<StarBorderIcon fontSize="inherit" />} + /> + </div> + + <div className="relacionado"> + Relacionado com: {subjects} + </div> + + <div className="tags-objeto"> + {tags.map((tag) => <div className="tag" key={tag}>{tag}</div>)} + </div> + </div> + </div> + + <div className="sobre-objeto"> + <Grid container> + <Grid item xs={windowWidth > 990 ? 7 : 12} className="left"> + <div className="titulo"> + Sobre o Recurso + </div> + <div className="sobre-conteudo"> + <p className="descricao">{description}</p> + { + author !== '' && + <p className="autor"> + <b>Autoria:</b> + <br/> + {author} + </p> + } + </div> + </Grid> + + <Grid item xs={windowWidth > 990 ? 4 : 12} className="right"> + <span className="meta-objeto"> + <MoreIcon/> <b>Tipo de mÃdia: </b>{draft.object_type} + </span> + + <span className="meta-objeto"> + <SdCardIcon/> <b>Tamanho: </b> + </span> + + <span className="meta-objeto"> + <DateRangeIcon/> <b>Enviado: </b> + {moment(draft.created_at).format("DD/MM/YYYY")} + </span> + + <span className="meta-objeto"> + <UpdateIcon/><b>Atualização: </b> + {moment(draft.updated_at).format("DD/MM/YYYY")} + </span> + + { + draft.language.map( (language => + <span className="meta-objeto" key={language.id}> + <TranslateIcon/><b>Idioma: </b>{language.name} + </span> + )) + } + + <span className="meta-objeto"> + <AssignmentIcon/><b>Licença: </b>{draft.license.name} + </span> + </Grid> + </Grid> + </div> + </div> + </CaixaContainer> + <Sessao3> + <form> + <Grid container> + <Grid item xs={windowWidth > 990 ? 6 : 12} style={{paddingRight : "15px", paddingLeft : "15px", textAlign: windowWidth > 990 ? 'right' : 'center'}}> + <span style={{fontSize : "14px"}}> + Para segurança da plataforma <br/> marque que você não é um robô + </span> + </Grid> + + <Grid item xs={windowWidth > 990 ? 6 : 12} style={{paddingRight : "15px", paddingLeft : "15px", textAlign: windowWidth > 990 ? 'left' : 'center'}}> + <span>Recaptcha</span> + </Grid> + <Grid item xs={12} style={{paddingRight : "15px", paddingLeft : "15px", marginTop : "30px", textAlign : 'center'}}> + <GrayButton onClick={() => {props.stepperControl(-1)}}>VOLTAR</GrayButton> + <GrayButton onClick={() => {toggleModalCancelar(true)}}>CANCELAR</GrayButton> + { + checkAccessLevel("partner") ? + ( + <OrangeButton onClick={props.handlePost}>PUBLICAR RECURSO</OrangeButton> + ) + : + ( + <OrangeButton onClick={props.handleSubmit}>SUBMETER RECURSO</OrangeButton> + ) + + } + </Grid> + </Grid> + </form> + </Sessao3> + </Grid> + </Grid> + </React.Fragment> + ) + : + ( + <LoadingSpinner text="CARREGANDO"/> + ) + } + </React.Fragment> + ) +} + +const Sessao3 = styled.div` + position : relative; + top : -120px; + padding-right :15px; + padding-left :15px; + margin-right : auto; + margin-left : auto; + @media screen and (min-width: 768px) { + width : 750px; + } + @media screen and (min-width: 992px) { + width : 970px; + } + @media screen and (min-width: 1200px) { + width : 970px; + } + color : #666; + background-color : #f4f4f4; + +` + +const CaixaContainer = styled.div` + background-color : rgba(238,238,238,.5); + border-radius : 5px; + position : relative; + top : -145px; + padding : 10px; + + margin-right : auto; + margin-left : auto; + @media screen and (min-width: 768px) { + width : 750px; + } + @media screen and (min-width: 992px) { + width : 970px; + } + @media screen and (min-width: 1200px) { + width : 970px; + } + + + .cabecalho-objeto { + background-color:#fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 0; + margin-top: 30px; + margin-bottom: 30px; + position: relative; + min-height: 100px; + margin-top: 0; + margin-bottom: 10px; + color : #666; + + .img-objeto { + background-color:#e5e5e5; + height: 270px; + width: 400px; + float: left; + padding: 0; + } + + .texto-objeto { + padding: 20px 20px 0 20px; + height: content; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -ms-flex-line-pack: center; + align-content: center; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + + h3 { + font-size: 26px; + font-weight: 400; + margin: 0; + padding-bottom: 15px; + } + + .rating-objeto { + margin : 0; + display : inline-flex; + padding-bottom : 10px; + } + + .relacionado { + font-weight : 500; + font-size : 13px; + } + + .tags-objeto { + max-height: 54px; + font-size: .8em; + overflow: hidden; + clear: both; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + + .tag { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 3px; + background-color: #e5e5e5; + padding: 3px 7px; + border-radius: 15px; + line-height: 18px; + color: #666; + margin-bottom: 3px; + } + } + } + } + + .sobre-objeto { + margin-top : 0; + margin-bottom : 0; + min-height : 275px; + display : flex; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 0; + position: relative; + min-height: 500px; + + .left { + @media screen and (min-width : 990px) { + margin-left : 4% !important; + margin-top : 4% !important; + } + + @media screen and (max-width : 989px) { + margin : 0; + padding : 20px; + padding-bottom : 0; + } + + .titulo { + margin-top: 2% !important; + margin-bottom: 10px; + font-family: 'Roboto Light','Roboto Regular',Roboto; + font-weight: 300; + font-style: normal; + color:#666; + font-size: 1.857em; + } + + .sobre-conteudo { + flex : 1; + color : #666; + font-size : 14px !important; + + .descricao { + text-align: justify; + margin-bottom: 20px; + margin-top: 20px; + } + + .autor { + margin : 0 0 10px !important; + } + } + } + + .right { + margin-top : 4% !important; + border-left: 1px solid #e5e5e5; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + padding: 20px; + position : relative; + margin-bottom : 20px; + + .meta-objeto { + position: relative; + width: 100%; + font-size: 14px; + color: #666; + margin-bottom: 20px; + display : inline-block; + } + + .MuiSvgIcon-root { + vertical-align : middle !important; + margin-right : 15px !important; + } + } + } +} +` + +const StyledSessao1 = styled.div` + color : #fff; + background-color : #00bcd4; + float : none; + height : 300px; + text-align : center; + padding-top : 48px; + padding-bottom : 48px; + margin-bottom : 30px; + + .cabecalho { + display : flex; + flex-direction : column; + align-items : center; + margin-bottom : 30px; + + .feedback-upload { + display : flex; + flex-direction : column; + justify-content : center; + text-align : center + margin-top : 20px; + width : 55%; + } + + h2 { + margint-top : 0; + font-size : 26px; + font-weight : lighter; + margin-bottom : 10px; + } + + .subtitle { + font-size : 16px; + + } + } +` diff --git a/src/Components/UploadPageComponents/PartTwo.js b/src/Components/UploadPageComponents/PartTwo.js new file mode 100644 index 0000000000000000000000000000000000000000..29374bd7c875625165f5f0a14c02d3284f463539 --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwo.js @@ -0,0 +1,181 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import Grid from '@material-ui/core/Grid'; +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import DragAndDropThumbnail from './PartTwoComponents/DragAndDropThumbnail' +import EducationalStage from './PartTwoComponents/EducationalStage' +import Licenca from './PartTwoComponents/Licenca' +import Checkbox from '@material-ui/core/Checkbox'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import FormControl from '@material-ui/core/FormControl'; +import {StyledFormLabel} from './StyledComponents.js' +import ButtonsDiv from './ButtonsDiv.js' +import SubjectsAndThemes from './PartTwoComponents/SubjectsAndThemes.js' +import {SendInfo} from './SendInfo.js' +import EditThumbnail from './PartTwoComponents/EditThumbnail.js' +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig' +import DisplayThumbnail from './PartTwoComponents/DisplayThumbnail.js' +import CustomCircularProgress from './PartTwoComponents/CustomCircularProgress'; + +export function LoadingDiv () { + return ( + <div style={{width : "100%", display : "flex", alignItems : "center", justifyContent : "center", color : "#666"}}> + <CustomCircularProgress/> CARREGANDO IMAGEM + </div> + ) +} + +export default function PartTwo (props) { + const [eduStages, setEduStages] = useState([]) + const [subjects, setSubjects] = useState([]) + const [themes, setThemes] = useState([]) + + useEffect(() => { + axios.get(`${apiUrl}/educational_stages/`).then( + (response) => {console.log(response); + setEduStages(response.data) + }, + (error) => {console.log(error)} + ) + + axios.get(`${apiUrl}/subjects/`).then( + (response) => {console.log(response); + setSubjects(response.data.filter(subject => subject.theme === false).sort((a,b) => a.name > b.name ? 1 : -1)) + setThemes(response.data.filter(subject => subject.theme === true).sort((a,b) => a.name > b.name ? 1 : -1)) + }, + (error) => {console.log(error)} + ) + }, []) + + + /*------------------------Licenca------------------------*/ + + const [termsCheckbox, setChecked] = useState(false) + const toggleCheckbox = (event) => { + setChecked(event.target.checked) + } + + const [thumbnail, setThumbnail] = useState('') + const [tempUrl, setTempUrl] = useState('') + + const acceptFile = (file) => { + const objectURL = URL.createObjectURL(file) + console.log(file) + setTempUrl(objectURL) + setThumbnailStage('editing') + } + const updateThumb = (newThumbnail) => { + setThumbnail(newThumbnail) + console.log(thumbnail) + + } + const finalizeThumb = () => { + setThumbnailStage('uploading') + let config = getAxiosConfig() + let fdThumb = new FormData() + fdThumb.set('learning_object[thumbnail]', thumbnail) + axios.put((`${apiUrl}/learning_objects/` + props.draftID), fdThumb, config).then( + (response) => { + setThumbnailStage('done') + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + }, + (error) => {console.log(error)} + ) + } + + const [thumbnailStage, setThumbnailStage] = useState('default') + + const chooseRenderStageThumbnail = () => { + switch(thumbnailStage) { + case 'uploading': + return (<LoadingDiv/>) + break; + case 'done': + return (<DisplayThumbnail acceptFile={acceptFile} thumbnail={thumbnail}/>) + break; + case 'editing': + return (<EditThumbnail finalizeThumb={finalizeThumb} tempImgURL={tempUrl} updateThumb={updateThumb}/>) + break; + default : + return (<DragAndDropThumbnail acceptFile={acceptFile}/>) + break; + + } + } + + const handleSubmit = () => { + props.stepperControl(1) + } + + return ( + <form style={{width : "100%"}} onSubmit={handleSubmit}> + <Grid item xs={12} style={{paddingBottom : "40px"}}> + {chooseRenderStageThumbnail()} + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <EducationalStage draftID={props.draftID} eduStages={eduStages} onBlurCallback={SendInfo}/> + </Grid> + + <SubjectsAndThemes draftID={props.draftID} subjects={subjects} themes={themes} onUploadPage={true} onBlurCallback={SendInfo}/> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Licenca draftID={props.draftID} onBlurCallback={SendInfo}/> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <StyledFormControl required > + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Confirme se você concorda com os <a href="/termos" style={{color : "#ff7f00"}}>termos de uso e de propriedade intelectual</a></b> + </StyledFormLabel> + <FormControlLabel label={<span className="label">Li e concordo com os termos de uso e de propriedade intelectual.</span>} control={<Checkbox checked={termsCheckbox} onChange={toggleCheckbox}/>} + /> + </StyledFormControl> + </Grid> + + <Grid item xs={12}> + <ButtonsDiv draftID={props.draftID} stepperControl={props.stepperControl} onPartTwo={true}/> + </Grid> + + <Grid item xs={12} style={{marginTop : "20px"}}> + <span style={{marginTop : "20px", fontWeight : "200", color : "#a5a5a5", paddingLeft : "10px"}}> + * Campos obrigatórios + </span> + </Grid> + </form> + ) +} + +const StyledFormControl = styled(FormControl)` + .MuiCheckbox-colorSecondary.Mui-checked { + color : #00bcd4 !important; + } + + .label { + font-size : 14px !important; + color : #666 !important; + font-weight : 200 !important; + } +` diff --git a/src/Components/UploadPageComponents/PartTwoComponents/CustomCircularProgress.js b/src/Components/UploadPageComponents/PartTwoComponents/CustomCircularProgress.js new file mode 100644 index 0000000000000000000000000000000000000000..617a8e70b6a022139e4ecd843fa792117a38515c --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/CustomCircularProgress.js @@ -0,0 +1,17 @@ +import React from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import CircularProgress from '@material-ui/core/CircularProgress'; + +const useStyles = makeStyles((theme) => ({ + root: { + color : "#666", + }, +})); + +export default function CustomCircularProgress () { + const classes = useStyles(); + + return ( + <CircularProgress className={classes.root}/> + ); +} diff --git a/src/Components/UploadPageComponents/PartTwoComponents/DisplayThumbnail.js b/src/Components/UploadPageComponents/PartTwoComponents/DisplayThumbnail.js new file mode 100644 index 0000000000000000000000000000000000000000..cc123a4c47254ea324aa5b6e68df5614e08bd4ac --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/DisplayThumbnail.js @@ -0,0 +1,114 @@ +import React from 'react' +import {StyledFormLabel} from '../StyledComponents.js' +import AddAPhotoIcon from '@material-ui/icons/AddAPhoto'; +import Grid from '@material-ui/core/Grid'; +import styled from 'styled-components' + +export default function DisplayThumbnail (props) { + let windowWidth = window.innerWidth + + const handleUpload = (e, selectorFiles) => { + e.preventDefault(); + props.acceptFile(selectorFiles[0]) + } + + return ( + <React.Fragment> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + { + props.onEditPage ? + ( + <b style={{fontWeight : "ligther"}}>Imagem ilustrativa do recurso</b> + ) + : + ( + <> + <b>Editando Imagem</b> + <span style={{color : "#a5a5a5"}}>(Deixe seu recurso completo, para que todos o entendam melhor.)</span> + </> + ) + } + </StyledFormLabel> + <ImagemCarregada container> + <Grid item xs={windowWidth > 990 ? 6 : 12}> + <div className="img-preview"> + <img src={props.thumbnail}/> + <div className="alterar-imagem"> + <input type="file" onChange = {(e) => handleUpload(e, e.target.files)} id="upload-file-thumbnail" style={{display : "none"}} + /> + <label htmlFor="upload-file-thumbnail" style={{height : "100%", width : "inherit", cursor : "pointer"}}> + <div className="interacoes"> + SUBSTITUIR <AddAPhotoIcon/> + </div> + </label> + <div className="interacoes" onClick={() => {props.handleDelete()}}> + DELETAR <AddAPhotoIcon/> + </div> + </div> + </div> + </Grid> + <Grid item xs={windowWidth > 990 ? 6 : 12}> + <div className="aviso-imagem-carregada"> + Sua imagem foi enviada, porém pode ser que demore alguns minutos até nosso servidor atualiza-la na página do recurso. + </div> + </Grid> + </ImagemCarregada> + </React.Fragment> + ) +} + +const ImagemCarregada = styled(Grid)` + .aviso-imagem-carregada { + color :#a5a5a5; + font-size : 12px; + font-weight : 500; + text-align : justify; + float : right; + margin-right : 20px; + + @media screen and (min-width : 990px) { + padding-top : 20px; + padding-left : 10px; + } + } + + .img-preview { + display : block; + max-height : 500px; + overflow : hidden; + border-radius : 10px; + position : relative; + + .alterar-imagem{ + position : absolute; + bottom : 0; + display : flex; + flex-direction : row; + width : 100%; + justify-content : flex-end; + background-color : rgba(0,0,0,.5); + + .interacoes { + cursor : pointer; + display : flex; + justify-content : flex-end; + align-items : flex-end; + height : 100%; + padding : 10px; + color : #fff; + font-size : 14px; + .MuiSvgIcon-root { + vertical-align : middle !important; + } + } + } + + img { + height : 100%; + width : 100%; + object-fit : cover; + border-radius : 10px; + border : 0; + } + } +` diff --git a/src/Components/UploadPageComponents/PartTwoComponents/DragAndDropThumbnail.js b/src/Components/UploadPageComponents/PartTwoComponents/DragAndDropThumbnail.js new file mode 100644 index 0000000000000000000000000000000000000000..f72f957dff64f132f68349fa66249bbbd574a10d --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/DragAndDropThumbnail.js @@ -0,0 +1,106 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import {DottedBox, BlueButton} from '../StyledComponents.js'; +import AddAPhotoIcon from '@material-ui/icons/AddAPhoto'; +import FormControl from '@material-ui/core/FormControl'; +import {StyledTextField, StyledFormLabel, OutroAutorTextField} from '../StyledComponents.js' + +export default function DragAndDropThumbnail (props) { + const [dropDepth, setDropDepth] = useState(0) + const [inDropZone, toggleInDropZone] = useState(false) + const [fileList, setFileList] = useState([]) + + const handleDragEnter = e => { + e.preventDefault(); + e.stopPropagation(); + + setDropDepth(dropDepth + 1) + }; + + const handleDragLeave = e => { + e.preventDefault(); + e.stopPropagation(); + + setDropDepth(dropDepth - 1) + if (dropDepth > 0) + toggleInDropZone(true) + }; + + const handleDragOver = e => { + e.preventDefault(); + e.stopPropagation(); + e.dataTransfer.dropEffect = 'copy'; + toggleInDropZone(true) + }; + + const handleDrop = e => { + e.preventDefault(); + e.stopPropagation(); + console.log(files) + let files = [...e.dataTransfer.files] + if (files && files.length > 0) { + props.acceptFile(files) + } + }; + + const handleUpload = (e, selectorFiles) => { + e.preventDefault(); + props.acceptFile(selectorFiles[0]) + } + return ( + <FormControl style={{width : "100%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + { + props.onEditPage ? + ( + <b style={{textAlign : "center", fontSize : "26px", fontWeight : "ligther"}}>Inserir Imagem Ilustrativa</b> + ) + : + ( + <> + <b>Imagem Ilustrativa do Recurso</b> <span style={{color : "#a5a5a5"}}>(Deixe seu recurso completo, para que todos o entendam melhor.)</span> + </> + ) + } + </StyledFormLabel> + <DottedBox + onDrop={e => handleDrop(e)} + onDragOver={e => handleDragOver(e)} + onDragEnter={e => handleDragEnter(e)} + onDragLeave={e => handleDragLeave(e)} + thumbnail + > + <AddAPhotoIcon className="icon"/> + <input + type="file" + onChange = {(e) => handleUpload(e, e.target.files)} + id="upload-file-thumbnail" + style={{display : "none"}} + /> + <BlueButton> + <label htmlFor="upload-file-thumbnail" style={{width : "inherit", cursor : "pointer"}}> + ESCOLHER IMAGEM + </label> + </BlueButton> + <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span> + </DottedBox> + </FormControl> + ) +} diff --git a/src/Components/UploadPageComponents/PartTwoComponents/EditThumbnail.js b/src/Components/UploadPageComponents/PartTwoComponents/EditThumbnail.js new file mode 100644 index 0000000000000000000000000000000000000000..35be2ce523737088ba7892dac513b255050d9925 --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/EditThumbnail.js @@ -0,0 +1,37 @@ +import React, {useState} from 'react' +import {StyledFormLabel} from '../StyledComponents.js' +import Cropper from '../../Cropper' +import { Button } from '@material-ui/core'; +import styled from 'styled-components' + +export default function EditThumbnail (props) { + const [crop] = useState({ + unit: "%" , + width : 100, + aspect: 9/3 + }); + return ( + <> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Editando Imagem</b> <span style={{color : "#a5a5a5"}}>(Deixe seu recurso completo, para que todos o entendam melhor.)</span> + </StyledFormLabel> + <div style={{display : "flex", alignItems : "center", flexDirection : "column"}}> + <div style={{maxWidth : "500px", maxHeight : "300px", padding : "20px"}}> + <Cropper src={props.tempImgURL} crop={crop} circularCrop={false} update={props.updateThumb}/> + </div> + <StyledButton onClick={() => {props.finalizeThumb()}}>SELECIONAR IMAGEM</StyledButton> + </div> + </> + + ) +} + +const StyledButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + background-color : #fff !important; + border : solid 1px #00bcd4 !important; + font-weight : 600 !important; + color : #00bcd4 !important; +` diff --git a/src/Components/UploadPageComponents/PartTwoComponents/EducationalStage.js b/src/Components/UploadPageComponents/PartTwoComponents/EducationalStage.js new file mode 100644 index 0000000000000000000000000000000000000000..0935c3aa5a92bed3646f4d1a2e692693543cc12b --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/EducationalStage.js @@ -0,0 +1,63 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import FormControl from '@material-ui/core/FormControl'; +import {StyledFormLabel} from '../StyledComponents.js' +import Checkbox from '@material-ui/core/Checkbox'; +import FormGroup from '@material-ui/core/FormGroup'; +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import styled from 'styled-components' + +export default function EducationalStage (props) { + + const [selected, setSelect] = useState(props.initialValue ? props.initialValue : []) + const handleSet = (event) => { + let newValue = event.target.value + + if(selected.indexOf(newValue) > - 1) { + setSelect(selected.filter(item => item !== newValue)) + } + else { + setSelect(selected => [...selected, event.target.value]) + } + } + + return ( + <FormControl required style={{minWidth : "30%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>NÃvel de ensino</b> <span style={{color : "#a5a5a5"}}>(Selecione uma ou mais opções)</span> + </StyledFormLabel> + <StyledFormGroup onBlur={() => {props.onBlurCallback("educational_stages", selected, props.draftID)}}> + { + props.eduStages.map(stage => + <FormControlLabel key={stage.id} label={stage.name} + control={<Checkbox checked={selected.indexOf(String(stage.id)) > - 1} value={stage.id} onChange={handleSet}/>}/> + ) + } + </StyledFormGroup> + </FormControl> + + ) +} + +const StyledFormGroup = styled(FormGroup)` + .MuiCheckbox-colorSecondary.Mui-checked { + color : #00bcd4 !important; + } +` diff --git a/src/Components/UploadPageComponents/PartTwoComponents/Licenca.js b/src/Components/UploadPageComponents/PartTwoComponents/Licenca.js new file mode 100644 index 0000000000000000000000000000000000000000..56454430d871c6765abb56a45655d341115231e2 --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/Licenca.js @@ -0,0 +1,90 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect, memo} from 'react' +import styled from 'styled-components' +import FormControl from '@material-ui/core/FormControl'; +import {ObjTypeBox, StyledFormLabel} from '../StyledComponents.js' +import RadioGroup from '@material-ui/core/RadioGroup'; +import Radio from '@material-ui/core/Radio'; +import {GetSubjectIconByName} from '../GetIconByName.js' +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import axios from 'axios' +import {apiUrl, apiDomain} from '../../../env'; + +function Licenca (props) { + + const options = [ + {name : "CC BY", description : "(Esta licença permite que outros distribuam, remixem, adaptem e criem a partir do seu trabalho, mesmo para fins comerciais, desde que lhe atribuam o devido crédito pela criação original)", id : 1}, + + {name : "CC BY-SA", description : "(Esta licença permite que outros remixem, adaptem e criem a partir do seu trabalho, mesmo para fins comerciais, desde que lhe atribuam o devido crédito e que licenciem as novas criações sob termos idênticos)", id : 2}, + + {name : "CC BY-NC", description : "(Esta licença permite que outros remixem, adaptem e criem a partir do seu trabalho para fins não comerciais e, embora os novos trabalhos tenham de lhe atribuir o devido crédito e não possam ser usados para fins comerciais, os usuários não têm de licenciar esses trabalhos derivados sob os mesmos termos)", id : 4}, + + {name : "CC BY-NC SA", description : "(Esta licença permite que outros remixem, adaptem e criem a partir do seu trabalho para fins não comerciais, desde que atribuam o devido crédito e que licenciem as novas criações sob termos idênticos)", id : 5}, + + {name : "CC BY-NC-ND 3.0 BR", description : "(Atribuição-NãoComercial-SemDerivações 3.0 Brasil. Esta licença permite compartilhar, copiar e redistribuir o material em qualquer suporte ou formato)", id : 12} + ] + + const [value, setValue] = useState(props.initialValue ? props.initialValue : -1) + const handleChange = (event) => {setValue(Number(event.target.value))} + + return ( + <FormControl required="true" style={{width : "100%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Licença do Uso do Conteúdo</b> <a href="https://br.creativecommons.org/licencas/" style={{color : "#ff7f00", textDecoration : "underline"}}>Saiba mais</a> + </StyledFormLabel> + <StyledRadioGroup aria-label="Tipo de Recurso" name="Tipo de Recurso" row value={value} onChange={handleChange} style={{justifyContent : "center"}} onBlur={() => {props.onBlurCallback("license_id", value, props.draftID)}}> + { + options.map( (option) => + <FormControlLabel key={option.id} value={option.id} + control={<Radio />} + label={ + <span className="title">{option.name} + <span className="parentese"> {option.description}</span> + </span> + } + /> + ) + + } + </StyledRadioGroup> + </FormControl> + ) +} + +export default memo(Licenca) + +const StyledRadioGroup = styled(RadioGroup)` + .MuiFormControlLabel-root { + display : block !important; + margin-bottom : 16px !important; + } + + .title { + font-size: 14px; + font-weight: 600; + color:#666; + padding-left: 2px; + } + .parentese { + font-weight: 200; + color:#a5a5a5; + padding-left: 10px; + } +` diff --git a/src/Components/UploadPageComponents/PartTwoComponents/SubjectsAndThemes.js b/src/Components/UploadPageComponents/PartTwoComponents/SubjectsAndThemes.js new file mode 100644 index 0000000000000000000000000000000000000000..aa50529d1679efd8156892f7f36e99ed684240e2 --- /dev/null +++ b/src/Components/UploadPageComponents/PartTwoComponents/SubjectsAndThemes.js @@ -0,0 +1,139 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect, memo} from 'react' +import { makeStyles } from '@material-ui/core/styles'; +import FormControl from '@material-ui/core/FormControl'; +import {ObjTypeBox, StyledFormLabel} from '../StyledComponents.js' +import FormGroup from '@material-ui/core/FormGroup'; +import {GetSubjectIconByName} from '../GetIconByName.js' +import FormControlLabel from '@material-ui/core/FormControlLabel'; +import axios from 'axios' +import {apiUrl, apiDomain} from '../../../env'; +import Checkbox from '@material-ui/core/Checkbox'; +import Grid from '@material-ui/core/Grid'; + +const useStyles = makeStyles({ + root: { + '&:hover': { + backgroundColor: 'transparent', + }, +}}) + +function StyledCheckbox (props) { + const classes = useStyles(); + return ( + <Checkbox + className={classes.root} + disableRipple + checkedIcon = { + <ObjTypeBox checked> + <span> + {GetSubjectIconByName(props.label)} + <p>{props.label}</p> + </span> + </ObjTypeBox> + } + icon = { + <ObjTypeBox> + <span> + {GetSubjectIconByName(props.label)} + <p>{props.label}</p> + </span> + </ObjTypeBox> + } + {...props} + /> + ) +} + + +function SubjectsAndThemes (props) { + const [value, setValue] = useState(props.initialValue ? props.initialValue : []) + + const handleChange = (event) => { + const newValue = event.target.value + + if((value.indexOf(newValue) > -1)) { + setValue(value.filter(item => item !== newValue)) + } + else { + setValue(value => [...value, newValue]) + } + } + + return ( + <React.Fragment> + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <FormControl required style={{width : "100%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Componente curricular</b> <span>(Selecione uma ou mais opções)</span> + </StyledFormLabel> + <FormGroup row style={{justifyContent : "center"}} onBlur={() => {props.onBlurCallback("subjects", value, props.draftID)}}> + { + props.subjects.map( (subject) => + <> + <FormControlLabel key={subject.id} value={subject.id} + control={ + <StyledCheckbox + label={subject.name} + checked={value.indexOf(String(subject.id)) > -1} + onChange={handleChange} + />} + /> + </> + ) + + } + </FormGroup> + </FormControl> + </Grid> + + { + + props.onUploadPage && + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <FormControl style={{width : "100%"}}> + <StyledFormLabel component="legend" style={{fontSize : "14px", marginBottom : "10px"}}> + <b>Outras Temáticas</b> + </StyledFormLabel> + <FormGroup aria-label="Tipo de Recurso" name="Tipo de Recurso" row style={{justifyContent : "center"}} onBlur={() => {props.onBlurCallback("subjects", value, props.draftID)}}> + { + props.themes.map( (theme) => + <FormControlLabel key={theme.id} value={theme.id} + control={ + <StyledCheckbox + label={theme.name} + checked={value.indexOf(String(theme.id)) > -1} + onChange={handleChange} + + /> + } + /> + ) + + } + </FormGroup> + </FormControl> + </Grid> + } + </React.Fragment> + ) +} + +export default memo(SubjectsAndThemes) diff --git a/src/Components/UploadPageComponents/ReactFileToUpload.js b/src/Components/UploadPageComponents/ReactFileToUpload.js new file mode 100644 index 0000000000000000000000000000000000000000..d7342d9c1c0b9484c719e1085f2bc43973a81f6c --- /dev/null +++ b/src/Components/UploadPageComponents/ReactFileToUpload.js @@ -0,0 +1,113 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect} from 'react' +import CloudUploadIcon from '@material-ui/icons/CloudUpload'; +import {DottedBox, BlueButton} from './StyledComponents.js'; +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig.js' +import AddAPhotoIcon from '@material-ui/icons/AddAPhoto'; +import axios from 'axios' +import {apiUrl} from '../../env'; + +export default function ReactFileToUpload (props) { + const [fileToUpload, setFileToUpload] = useState(null); + const chunkSize = 262144 + const uploadUrl = `${apiUrl}/learning_objects/` + props.draftID + '/chunk' + const [fileName, setFileName] = useState(null) + const [fileSize, setFileSize] = useState(null) + const [fileDoneUploading, setFileDoneUploading] = useState(false) + + async function onFileChange (e) { + const files = e.target.files; + if(!files) return; + + let newFile = e.target.files[0] + console.log(newFile) + setFileToUpload(newFile); + setFileName(newFile.name) + setFileSize(newFile.size) + + let total = Math.ceil(newFile.size/chunkSize) + let currentChunkStartByte = 0; + let currentChunkFinalByte = chunkSize > newFile.size ? newFile.size : chunkSize; + let chunkIdentifier = props.draftID + '-' + newFile.name; + let remainingBytes = 0 + + for (var i = 0; i < total; i++) { + let chunk = newFile.slice(currentChunkStartByte, currentChunkFinalByte) + let config = getAxiosConfig() + let formData = new FormData() + formData.append('_chunkFilename', newFile.name); + formData.append('_chunkIdentifier', chunkIdentifier); + formData.append('_totalChunks', total); + formData.append('_chunkSize', chunkSize); + formData.append('_currentChunkSize', chunk.size); + formData.append('_chunkNumber', i); + formData.append('_totalSize', newFile.size); + formData.append('file', chunk); + + try { + const response = await axios.post(uploadUrl, formData, config); + console.log(response) + if (response.headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + remainingBytes = newFile.size - currentChunkFinalByte; + if (currentChunkFinalByte === newFile.size) { + setFileDoneUploading(true) + } + else if (remainingBytes < chunkSize) { + currentChunkStartByte = currentChunkFinalByte; + currentChunkFinalByte = currentChunkStartByte + remainingBytes; + } + else { + currentChunkStartByte = currentChunkFinalByte; + currentChunkFinalByte = currentChunkStartByte + chunkSize; + } + } catch (error) { + console.log(error) + } + } + }; + + return ( + <div className="upload-container"> + <h2 className="upload-title">File Uploader</h2> + <div className="upload-form"> + <form id="file_upload"> + <DottedBox + > + <AddAPhotoIcon className="icon"/> + <input + type="file" + onChange = {onFileChange} + id="upload-file-thumbnail" + style={{display : "none"}} + /> + <BlueButton> + <label htmlFor="upload-file-thumbnail" style={{width : "inherit", cursor : "pointer"}}> + ESCOLHER IMAGEM + </label> + </BlueButton> + <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span> + </DottedBox> + </form> + </div> + </div> + ) +} diff --git a/src/Components/UploadPageComponents/SendInfo.js b/src/Components/UploadPageComponents/SendInfo.js new file mode 100644 index 0000000000000000000000000000000000000000..99d6a2ad0eda450e292fcdd87c77ec1cf2eef267 --- /dev/null +++ b/src/Components/UploadPageComponents/SendInfo.js @@ -0,0 +1,42 @@ +import React, {useContext} from 'react' +import {Store} from '../../Store.js' +import axios from 'axios' +import {apiUrl} from '../../env'; + + +export function SendInfo (fieldName, payload, draftID) { + console.log('fieldName', fieldName, 'payload', payload, 'draftID', draftID) + const key = fieldName + let value = payload + if (key === "tags") { + value = payload.map( (tag, index) => + index = { "name" : tag} + ) + } + + const putObject = { + "learning_object" : { + "id" : draftID + } + } + putObject.learning_object[key] = value + console.log(putObject) + + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + } + } + config.headers["Access-Token"] = sessionStorage.getItem('@portalmec/accessToken'); + config.headers.Client = sessionStorage.getItem('@portalmec/clientToken') + config.headers.Uid = sessionStorage.getItem('@portalmec/uid') + axios.put((`${apiUrl}/learning_objects/` + draftID), putObject, config). + then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + }, (error) => {console.log(error)}) + +} diff --git a/src/Components/UploadPageComponents/Stepper.js b/src/Components/UploadPageComponents/Stepper.js new file mode 100644 index 0000000000000000000000000000000000000000..f67809843a6b64c58808fcd9a655c87705579a92 --- /dev/null +++ b/src/Components/UploadPageComponents/Stepper.js @@ -0,0 +1,165 @@ +import React from 'react'; +import styled from 'styled-components' +import PropTypes from 'prop-types'; +import { makeStyles, withStyles } from '@material-ui/core/styles'; +import clsx from 'clsx'; +import Stepper from '@material-ui/core/Stepper'; +import Step from '@material-ui/core/Step'; +import StepLabel from '@material-ui/core/StepLabel'; +import Check from '@material-ui/icons/Check'; +import SettingsIcon from '@material-ui/icons/Settings'; +import GroupAddIcon from '@material-ui/icons/GroupAdd'; +import VideoLabelIcon from '@material-ui/icons/VideoLabel'; +import StepConnector from '@material-ui/core/StepConnector'; +import Button from '@material-ui/core/Button'; +import Typography from '@material-ui/core/Typography'; + +const useColorlibStepIconStyles = makeStyles({ + root: { + backgroundColor: '#fff', + color: '#00bcd4', + width: 36, + height: 36, + display: 'flex', + border : 'solid 3px #00bcd4', + borderRadius: '50%', + justifyContent: 'center', + alignItems: 'center', + }, + active: { + backgroundColor : '#00bcd4', + color : '#fff', + }, + completed: { + backgroundColor : '#00bcd4', + color : '#fff', + }, +}); + +function ColorlibStepIcon(props) { + const classes = useColorlibStepIconStyles(); + const { active, completed } = props; + + const icons = { + 1: '1', + 2: '2', + 3: '3', + }; + + return ( + <div + className={clsx(classes.root, { + [classes.active]: active, + [classes.completed]: completed, + })} + > + {completed ? <Check className={classes.completed} /> : icons[String(props.icon)]} + </div> + ); +} + +ColorlibStepIcon.propTypes = { + /** + * Whether this step is active. + */ + active: PropTypes.bool, + /** + * Mark the step as completed. Is passed to child components. + */ + completed: PropTypes.bool, + /** + * The label displayed in the step icon. + */ + icon: PropTypes.node, +}; + +const useStyles = makeStyles((theme) => ({ + root: { + width: '100%', + }, + button: { + marginRight: theme.spacing(1), + }, + instructions: { + marginTop: theme.spacing(1), + marginBottom: theme.spacing(1), + }, +})); + +function getSteps() { + return ['Select campaign settings', 'Create an ad group', 'Create an ad']; +} + +function getStepContent(step) { + switch (step) { + case 0: + return 'Select campaign settings...'; + case 1: + return 'What is an ad group anyways?'; + case 2: + return 'This is the bit I really care about!'; + default: + return 'Unknown step'; + } +} + +export default function CustomizedSteppers(props) { + const classes = useStyles(); + const steps = getSteps(); + +{/* const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleReset = () => { + setActiveStep(0); + };*/} + + return ( + + <> + <StyledStepper style={{backgroundColor : "#e5e5e5", borderRadius : "50px", justifyContent : "space-between"}} activeStep={props.activeStep} connector={<></>}> + {steps.map((label) => ( + <Step key={label}> + <StepLabel StepIconComponent={ColorlibStepIcon}/> + </Step> + ))} + </StyledStepper> + {/*<div> + {activeStep === steps.length ? ( + <div> + <Button onClick={handleReset} className={classes.button}> + Reset + </Button> + </div> + ) : ( + <div> + <Typography className={classes.instructions}>{getStepContent(activeStep)}</Typography> + <div> + <Button disabled={activeStep === 0} onClick={handleBack} className={classes.button}> + Back + </Button> + <Button + variant="contained" + color="primary" + onClick={handleNext} + className={classes.button} + > + {activeStep === steps.length - 1 ? 'Finish' : 'Next'} + </Button> + </div> + </div> + )} + </div>*/} + </> + ); +} + +const StyledStepper = styled(Stepper)` + padding : 7px !important; + +` diff --git a/src/Components/UploadPageComponents/StyledComponents.js b/src/Components/UploadPageComponents/StyledComponents.js new file mode 100644 index 0000000000000000000000000000000000000000..2bac9300c9e0085b20b308ad48c4714c1796faec --- /dev/null +++ b/src/Components/UploadPageComponents/StyledComponents.js @@ -0,0 +1,501 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from 'react' +import styled from 'styled-components' +import { Button } from '@material-ui/core'; +import TextField from '@material-ui/core/TextField'; +import FormHelperText from '@material-ui/core/FormHelperText'; +import FormLabel from '@material-ui/core/FormLabel'; +import NativeSelect from '@material-ui/core/NativeSelect'; +import { makeStyles } from '@material-ui/core/styles'; +import Radio from '@material-ui/core/Radio'; +import GetIconByName from './GetIconByName.js' + +export const StyledFormHelperText = styled(FormHelperText)` + .MuiFormHelperText-root { + text-align : right !important. + } +` + +export const DottedBox = styled.div` + align-self : center; + width : ${props => props.thumbnail ? "100%" : "320px"}; + background-color : ${props => props.thumbnail ? "transparent" : "#f4f4f4"}; + border : ${props => props.thumbnail ? "2px dashed #a5a5a5" : "2px dashed #00bcd4"}; + align-items : center; + border-radius : 10px; + display : flex; + flex-direction : column; + padding : 20px 0; + color : ${props => props.thumbnail ? "#a5a5a5" : "$666"}; + + .icon { + font-size : 40px !important; + color : #00bcd4 !important; + margin-bottom : 10px !important; + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + } +` + +export const BlueButton = styled(Button)` + &:hover { + background-color : #00acc1 !important; + } + color : #fff !important; + background-color : #00bcd4 !important; + height : 36px !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + font-weight : 600 !important; + min-width : 88px !important; + align-self : center !important; + padding : 16px !important; +` + +export const GrayButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + height : 36px !important; + font-weight : 600 !important; + color : #666 !important; + background-color: transparent; + min-width : 88px !important; + height : 36px !important; + margin-left : 8px !important; + margin-right : 8px !important; + .icon { + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + font-size : 24px !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + color : inherit !important; + } + + .button-text { + cursor : pointer; + line-height : 36px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + } +` + +export const WrapperBox = styled.div` + padding : 0; + margin-bottom : 15px; + display : block; + border-radius : 3px; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + background-color : #fff; + font-size : 14px; + + .inner { + display : block; + padding : 20px; + } + + .upload-title { + text-align : center; + font-size : 26px; + margin-bottom : 10px; + font-weight : lighter; + } + + .flex-column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + + p { + margin : 0 0 10px; + } + + .buttons-div { + padding-top : 10px; + padding-left : 15px; + padding-right : 15px; + display: flex; + flex-direction : row; + justify-content : space-evenly; + text-align : center; + } + } + + .strike-box { + display : flex; + flex-direction : row; + justify-content : center; + + .strike { + border-bottom : solid 1px #e5e5e5; + display : inline-block; + vertical-align : middle; + width : 40%; + margin-bottom : 2em; + } + + h3 { + margin : 20px 0; + font-weight : 400; + overflow : hidden; + text-align : center; + font-size : 14px; + color : #666; + padding : 0 5px; + } + } + + .enviar-link-texto { + padding-left : 15px; + padding-right : 15px; + text-align : center; + font-size : 14px; + margin-bottom : 5px; + + img { + height : 35px; + vertical-align : middle; + } + } + + .uploading { + margin-top : 30px; + + .upload-item { + margin-bottom : 5px; + + .item-info { + display : flex; + flex-direction : row; + justify-content : space-between; + align-items : center; + padding : 5px 0; + font-size : 14px; + + .icon { + vertical-align : middle !important; + font-weight : normal !important; + font-style : normal !important; + font-size : 24px !important; + line-height : 1 !important; + letter-spacing : normal !important; + text-transform : none !important; + display : inline-block !important; + white-space : nowrap !important; + word-wrap : normal !important; + direction : ltr !important; + padding-right : 2px; + } + + .file-status { + .icon-margin { + color : #00bcd4; + margin-right : 5px; + } + .MuiLinearProgress-root { + width : 100% !important; + } + } + + .icon-remove { + color : #666; + font-size : 20px; + } + } + } + + .warning { + padding: 40px 0 20px 0; + margin-top: 40px; + border-top: solid 1px #f4f4f4; + text-align: center; + + span { + font-size : 16px; + font-weight : lighter; + } + } + } +` + +export const InfoBox = styled.div` + background-color : #fff; + padding : 30px; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + margin-bottom : 30px; + border-radius : 3px; + + .cabecalho { + display : flex; + flex-direction : column; + align-items : center; + margin-bottom : 30px; + + h2 { + margin-top : 0; + font-size : 26px; + font-weight : lighter; + margin-bottom : 10px; + } + + .feedback-upload { + display : flex; + flex-direction : column; + justify-content : center; + text-align : center + margin-top : 20px; + width : 65%; + } + } +` +export const ObjTypeBox = styled.div` + height : 100px; + width : 100px; + border-radius : 10px; + background-color : ${props => props.checked ? "#00bcd4" : "#f4f4f4"}; + color : ${props => props.checked ? "#fff" : "#00bcd4"}; + + span { + padding-top : 5%; + display : flex; + flex-direction : column; + justify-content : center; + + .icon { + color : inherit; + align-self : center; + height : 48px; + width : 48px; + } + + p { + height : 28px; + font-size : 14px; + text-align : center; + line-height : 14px; + } + + svg path { + fill : ${props => props.checked ? "#fff" : "#00bcd4"}; + } + } +` + +export const OutroAutorTextField = styled(TextField)` + font-size : 14px; + width : 100% !important; + + .MuiFormControl-root { + margin : 18px 0 !important; + } + + .MuiFormHelperText-root { + text-align : left; + font-size : 14px !important ; + } + + label.Mui-focused { + color : #00bcd4; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 1px solid #00bcd4; + } + .MuiFormHelperText-root { + font-size : 12px !important; + text-align : right !important; + } +` + +export const StyledFormLabel = styled(FormLabel)` + b { + color : #666 !important; + } + span { + color : #a5a5a5; + } +` + +export const StyledTextField = styled(TextField)` + font-size : 14px; + width : 100% !important; + full-width : 100% !important; + + .MuiFormControl-root { + margin : 18px 0 !important; + } + + + .MuiFormHelperText-root { + text-align : left; + font-size : 14px !important ; + } + + label.Mui-focused { + color : #00bcd4; + } + + label.Mui-focused.Mui-error { + color : red; + } + + .MuiInput-underline::after { + border-bottom: 2px solid #00bcd4; + } + .MuiFormHelperText-root { + font-size : 12px !important; + text-align : right !important; + } +` + + + const StyledNativeSelect = styled(NativeSelect)` + .MuiInput-underline::after { + border-bottom: 1px solid #00bcd4 !important; + } + ` + const useStyles = makeStyles({ + root: { + '&:hover': { + backgroundColor: 'transparent', + }, + }}) + + export function StyledRadio (props) { + const classes = useStyles(); + return ( + <Radio + className={classes.root} + disableRipple + checkedIcon = { + <ObjTypeBox checked> + <span> + {GetIconByName(props.label)} + <p>{props.label}</p> + </span> + </ObjTypeBox> + } + icon = { + <ObjTypeBox> + <span> + {GetIconByName(props.label)} + <p>{props.label}</p> + </span> + </ObjTypeBox> + } + {...props} + /> + ) + } + + export const StyledDiv = styled.div` + display : flex; + margin-top : 30px; + justify-content : space-evenly; + ` + + export const OrangeButton = styled(Button)` + max-height : 36px !important; + color : rgba(255,255,255,0.87) !important; + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26) !important; + font-weight : 600 !important; + background-color : #ff7f00 !important; + margin-left : 8px !important; + margin-right : 8px !important; + ` + + export const GreyButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + max-height : 36px !important; + + background-color : transparent !important; + color : #666 !important; + text-decoration : none !important; + outline : none !important; + text-align : center !important; + + .button-text { + cursor : pointer; + line-height : 36px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600 !important; + font-size : 14px; + font-style : inherit; + font-variant : inherit; + padding : 6px 16px !important; + } + ` + + export const Background = styled.div ` + padding-top : 40px; + background-color : #f4f4f4; + color : #666; + + .container { + padding : 0; + margin-right : auto; + margin-left : auto; + + @media screen and (min-width: 768px) { + width : 750px; + } + @media screen and (min-width: 992px) { + width : 970px; + } + @media screen and (min-width: 1200px) { + width : 1170px; + } + } + ` diff --git a/src/Components/UploadPageComponents/UploadFileWrapper.js b/src/Components/UploadPageComponents/UploadFileWrapper.js new file mode 100644 index 0000000000000000000000000000000000000000..4219c73f7fe0b145115157da045a98947aea62bb --- /dev/null +++ b/src/Components/UploadPageComponents/UploadFileWrapper.js @@ -0,0 +1,306 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState} from 'react' +import LinkIcon from '../../img/link_icon.svg' +import ChooseLink from './ChooseLinkSection.js' +import {WrapperBox, StyledTextField, BlueButton, GrayButton} from './StyledComponents.js'; +import UploadMediaComponent from './ReactFileToUpload.js' +import FileUploadStage from './FileUploadStage.js' +import CloudUploadIcon from '@material-ui/icons/CloudUpload'; +import {DottedBox} from './StyledComponents.js'; +import {getAxiosConfig} from '../HelperFunctions/getAxiosConfig.js' +import AddAPhotoIcon from '@material-ui/icons/AddAPhoto'; +import axios from 'axios' +import {apiUrl} from '../../env'; +import DoneIcon from '@material-ui/icons/Done'; +import DeleteIcon from '@material-ui/icons/Delete'; +import LinearProgress from '@material-ui/core/LinearProgress'; +import Alert from '../Alert.js'; +import Snackbar from '@material-ui/core/Snackbar'; + +export default function UploadFileWrapper (props) { + /*----------------------------------------------------------------- + - Wrapper for file upload box + - has three different stages: + - Default: prompts user to select a file or a link + - Choosing Link: displayed when the user selects "ENVIAR LINK"; renders "ChooseLinkSection.js" + - file selected: displayed when the user has chosen a file to upload. this section shows the upload progress and lets the user delete the current object and return to default stage + - error: displayed when an error occurs during the file upload. + + - Props used: + - submit : called when the user clicks "ENVIAR" inside ChooseLinkSection; renders the alert snackbar to let them know the link was submitted + */ + + const [stage, setStage] = useState(props.prevFile ? "fileSelected" : "default") + const handleNextStage = (newStage) => {setStage(newStage)} + + const [fileToUpload, setFileToUpload] = useState(null); + const chunkSize = 262144 + const uploadUrl = `${apiUrl}/learning_objects/` + props.draftID + '/chunk' + const [fileName, setFileName] = useState(props.prevFile ? props.prevFile.name : null) + const [fileDoneUploading, setFileDoneUploading] = useState(props.prevFile ? true : false) + const [uploadProgress, setProgress] = useState(0) + const [attachmentID, setAttachmentID] = useState(props.prevFile ? props.prevFile.id : null) + + async function onFileChange (file) { + if(!file) return; + + let newFile = file + console.log(newFile) + setFileToUpload(newFile); + setFileName(newFile.name) + + let total = Math.ceil(newFile.size/chunkSize) + let currentChunkStartByte = 0; + let currentChunkFinalByte = chunkSize > newFile.size ? newFile.size : chunkSize; + let chunkIdentifier = props.draftID + '-' + newFile.name; + let remainingBytes = 0 + handleNextStage("fileSelected") + for (var i = 0; i < total; i++) { + let chunk = newFile.slice(currentChunkStartByte, currentChunkFinalByte) + let config = getAxiosConfig() + let formData = new FormData() + formData.append('_chunkFilename', newFile.name); + formData.append('_chunkIdentifier', chunkIdentifier); + formData.append('_totalChunks', total); + formData.append('_chunkSize', chunkSize); + formData.append('_currentChunkSize', chunk.size); + formData.append('_chunkNumber', i); + formData.append('_totalSize', newFile.size); + formData.append('file', chunk); + + try { + const response = await axios.post(uploadUrl, formData, config); + console.log(response) + if (response.headers['access-token']) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + setProgress(Math.round((currentChunkFinalByte/newFile.size) * 100)) + remainingBytes = newFile.size - currentChunkFinalByte; + if (currentChunkFinalByte === newFile.size) { + setFileDoneUploading(true) + setAttachmentID(response.data.id) + } + else if (remainingBytes < chunkSize) { + currentChunkStartByte = currentChunkFinalByte; + currentChunkFinalByte = currentChunkStartByte + remainingBytes; + } + else { + currentChunkStartByte = currentChunkFinalByte; + currentChunkFinalByte = currentChunkStartByte + chunkSize; + } + } catch (error) { + console.log(error) + handleNextStage("error") + return; + } + } + }; + + const handleDelete = () => { + if (attachmentID != null) { + + let config = getAxiosConfig() + axios.delete( (`${apiUrl}/learning_objects/` + props.draftID + '/attachment/' + attachmentID), config).then( + (response) => { + console.log(response) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + handleNextStage("default") + }, + (error) => {console.log(error)}) + } + } + + const handleCancel = () => { + console.log('cancelar request') + } + + const handleDragOver = e => { + e.preventDefault(); + e.stopPropagation(); + e.dataTransfer.dropEffect = 'copy'; + }; + + const handleDrop = e => { + e.preventDefault(); + e.stopPropagation(); + let files = [...e.dataTransfer.files] + + console.log('files: ', files) + if (files && files.length > 0) { + onFileChange(files[0]) + } + }; + + const [snackbarOpen, toggleSnackbar] = useState(false) + const handleChooseLink = (link) => { + let config = getAxiosConfig() + let payload = { + "learning_object" : { + "id" : props.draftID, + "link" : link + } + } + axios.put((`${apiUrl}/learning_objects/` + props.draftID), payload, config).then( + (response) => { + console.log(response) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + toggleSnackbar(true) + }, (error) => { + console.log(error) + } + ) + + } + + switch (stage) { + case "error": + return( + <WrapperBox> + <div className="inner"> + <div className="upload-title">Erro</div> + <span>Clique no botão para tentar novamente.</span> + <div className="flex-column"> + <div className="buttons-div"> + <GrayButton onClick={() => {handleNextStage("default")}}> + <span className="button-text"> + Voltar + </span> + </GrayButton> + </div> + </div> + </div> + </WrapperBox> + ) + break; + case "fileSelected": + return( + <WrapperBox> + <div className="inner"> + <div className="upload-title"> + {fileDoneUploading ? 'O arquivo foi carregado' : 'Carregando arquivo'} + </div> + + <div className="uploading"> + <div className="upload-item"> + <div className="item-info"> + { + fileDoneUploading ? + ( + <React.Fragment> + <div className="file-status"> + <DoneIcon className="icon icon-margin"/> {fileName} + </div> + <GrayButton onClick={() => {handleDelete()}}> + Excluir <DeleteIcon className="icon icon-remove"/> + </GrayButton> + </React.Fragment> + ) + : + ( + <React.Fragment> + <div className="file-status"> + {uploadProgress}% {fileName} + </div> + <GrayButton onClick={() => {handleCancel()}}> + Cancelar <DeleteIcon className="icon icon-remove"/> + </GrayButton> + </React.Fragment> + ) + } + </div> + </div> + <div className="warning"> + <span>Não se esqueça de preencher as</span> + <br/> + <span>informações sobre o recurso ao lado.</span> + </div> + </div> + </div> + </WrapperBox> + ) + break; + case "choosingLink": + return ( + <React.Fragment> + <Snackbar open={snackbarOpen} autoHideDuration={1000} onClose={() => {toggleSnackbar(false)}} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="info" style={{backgroundColor:"#00acc1"}}> + Link salvo com sucesso! + </Alert> + </Snackbar> + <ChooseLink handleNextStage={handleNextStage} submit={handleChooseLink}/> + </React.Fragment> + ) + break; + default: + return( + <WrapperBox> + <div className="inner"> + <div className="upload-title"> Enviar Recurso</div> + <div className="flex-column"> + + <div className="upload-container"> + <div className="upload-form"> + <form id="file_upload"> + <DottedBox + onDrop={e => handleDrop(e)} + onDragOver={e => handleDragOver(e)} + > + <AddAPhotoIcon className="icon"/> + <input + type="file" + onChange = {(e) => {onFileChange(e.target.files[0])}} + id="upload-file" + style={{display : "none"}} + /> + <BlueButton> + <label htmlFor="upload-file" style={{width : "inherit", cursor : "pointer"}}> + ESCOLHER IMAGEM + </label> + </BlueButton> + <span style={{marginTop : "6px"}}>Ou arrastar e soltar o arquivo aqui</span> + </DottedBox> + </form> + </div> + </div> + + <div className="strike-box"> + <div className="strike"/><h3>ou</h3><div className="strike"/> + </div> + + <div className="enviar-link-texto"> + <img src={LinkIcon}/> + <br/> + <span>Enviar link de um recurso de outro site</span> + </div> + + <BlueButton onClick={ () => {handleNextStage("choosingLink")} }>ENVIAR LINK</BlueButton> + </div> + </div> + </WrapperBox> + ) + } + +} diff --git a/src/Components/UserCardGamified.js b/src/Components/UserCardGamified.js new file mode 100644 index 0000000000000000000000000000000000000000..711b9ee433f6a13fcb6f6cbea4c120d8c5793233 --- /dev/null +++ b/src/Components/UserCardGamified.js @@ -0,0 +1,38 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext} from 'react'; +import styled from 'styled-components'; +import Grid from '@material-ui/core/Grid'; +import Card from '@material-ui/core/Card'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; + +export default function UserCardGamified (props) { + return ( + <Grid item xs={6} sm={3}> + <Card style={{backgroundColor:'pink'}}> + <CardContent> + Eu serei o card da pessoa + </CardContent> + <CardActions> + Learn more + </CardActions> + </Card> + </Grid> + ) +} diff --git a/src/Components/UserPageComponents/Avatar.js b/src/Components/UserPageComponents/Avatar.js new file mode 100644 index 0000000000000000000000000000000000000000..f1026a358b3b784ce81494ed1f502da63800c045 --- /dev/null +++ b/src/Components/UserPageComponents/Avatar.js @@ -0,0 +1,82 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext, useEffect} from 'react'; +import styled from 'styled-components' +import { Store } from '../../Store.js'; +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import noAvatar from "../../img/default_profile.png"; +import ModalAlterarAvatar from '../ModalAlterarAvatar/ModalAlterarAvatar.js' + +export default function ProfileAvatar (props) { + const {state, dispatch} = useContext(Store) + + const [currentAvatar, setAvatar] = useState(state.currentUser.userAvatar) + + const [hoverBool, toggleHover] = React.useState(false) + const handleToggleHover = () => {toggleHover(!hoverBool)} + + const [open, toggleOpen] = useState(false) + const controlModal = () => {toggleOpen(!open)} + + useEffect(() => {setAvatar(state.currentUser.userAvatar)}, state.currentUser.userAvatar) + + return ( + <> + <ModalAlterarAvatar + open={open} + handleClose={controlModal} + userAvatar={currentAvatar} + id={props.id} + /> + + <ProfileAvatarDiv onMouseEnter={handleToggleHover} onMouseLeave={handleToggleHover} onClick={controlModal}> + <img src={currentAvatar ? apiDomain + currentAvatar : noAvatar} alt = "user avatar" style={{height : "inherit", width : "inherit", border:"0", verticalAlign:"middle"}}/> + <ChangeAvatarDiv style={ {display : hoverBool ? 'flex' : 'none'}}> + <span>Alterar Foto</span> + </ChangeAvatarDiv> + </ProfileAvatarDiv> + + </> + ) +} + +const ProfileAvatarDiv = styled.div` + bottom : -55px; + left : 60px; + border-radius : 100%; + position : absolute; + width : 150px; + height : 150px; + overflow : hidden; + border : 8px solid #fff; + outline : 0; + cursor : pointer; + background-color : #a5a5a5; +` + +const ChangeAvatarDiv = styled.div` + height : 40px; + position: absolute; + width : 100%; + bottom : 0; + display : flex; + background-color : #000; + color : #fff; + justify-content : center; +` diff --git a/src/Components/UserPageComponents/Cover.js b/src/Components/UserPageComponents/Cover.js new file mode 100644 index 0000000000000000000000000000000000000000..2af5bd7473f2414f1e3a97e627ff01cf5b028b87 --- /dev/null +++ b/src/Components/UserPageComponents/Cover.js @@ -0,0 +1,68 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext, useEffect} from 'react'; +import { Store } from '../../Store.js'; +import axios from 'axios' +import {apiUrl, apiDomain} from '../../env'; +import {CoverContainer} from '../TabPanels/StyledComponents.js' +import IconButton from '@material-ui/core/IconButton'; +import PhotoCamera from '@material-ui/icons/PhotoCamera'; +import Tooltip from '@material-ui/core/Tooltip'; +import ModalAlterarCover from '../ModalAlterarCover/ModalAlterarCover.js' + +export default function Cover (props) { + const {state} = useContext(Store) + + const [currentCover, setCoverImg] = useState(state.currentUser.userCover) + const [tempCover, setTempCover] = useState('') + + const [open, toggleOpen] = useState(false) + const controlModal = () => {toggleOpen(!open)} + + const updateCover = (selectorFiles) => { + const objectURL = URL.createObjectURL(selectorFiles[0]) + console.log(objectURL) + setTempCover(objectURL) + controlModal() + } + + useEffect( () => { + setCoverImg(state.currentUser.userCover) + }, state.currentUser.userCover) + return ( + <> + <ModalAlterarCover + open = {open} + handleClose={controlModal} + cover={tempCover} + id={props.id} + /> + <CoverContainer> + {currentCover && <img src={apiDomain + currentCover} alt = '' style= {{width:"100%", height:"100%", objectFit : "cover" }}/>} + <input accept="image/*" style = {{display:"none"}} id="choose-cover-file" type="file" onChange={(e) => updateCover(e.target.files)}/> + <label htmlFor="choose-cover-file"> + <Tooltip title={<span style={{fontSize:"14px", overflow:"hidden", transition:"all .5s ease"}}>ALTERAR CAPA</span>} placement="left"> + <IconButton style={{position:"absolute",right:"0",top:"0",color:"#fff"}}color="primary" aria-label="upload picture" component="span"> + <PhotoCamera /> + </IconButton> + </Tooltip> + </label> + </CoverContainer> + </> + ) +} diff --git a/src/Components/UserPageComponents/EditProfileButton.js b/src/Components/UserPageComponents/EditProfileButton.js new file mode 100644 index 0000000000000000000000000000000000000000..4df7df2c7a5a6b4794ca5fd926d7440c77cc3ec1 --- /dev/null +++ b/src/Components/UserPageComponents/EditProfileButton.js @@ -0,0 +1,74 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React from 'react'; +import { Store } from '../../Store.js'; +import styled from 'styled-components' +import {Link} from 'react-router-dom'; +import EditIcon from '@material-ui/icons/Edit'; +import Button from '@material-ui/core/Button'; + +export default function EditProfileButton () { + const {state} = React.useContext(Store) + + return ( + <EditProfileAnchor to="/editarperfil"> + <Button> + {state.windowSize.width >=900 ? + ( + <React.Fragment> + <EditIcon style={{marginRight:"5px", verticalAlign:"middle"}}/> <span>EDITAR PERFIL</span> + </React.Fragment> + ) + : + ( + <EditIcon style={{marginRight:"5px", verticalAlign:"middle"}}/> + ) + } + </Button> + </EditProfileAnchor> + ) +} + +const EditProfileAnchor = styled(Link)` + Button { + box-shadow : 0 2px 5px 0 rgba(0,0,0,.26); + background-color : #fafafa; + position : absolute; + right : 5px; + bottom : 0; + margin-bottom : 20px; + color : #666; + padding : 0 10px; + text-decoration : none; + border-radius : 3px; + @media screen and (min-width: 800px) { + min-height : 36px; + min-width : 88px; + } + line-height : 36px; + border : 0; + display: inline-block; + text-align : center; + :hover{ + background-color : #fafafa; + } + @media screen and (max-width: 600px) { + max-width : 44px !important ; + } + } +` diff --git a/src/Components/UserPageComponents/SubmitterStatus.js b/src/Components/UserPageComponents/SubmitterStatus.js new file mode 100644 index 0000000000000000000000000000000000000000..47924373223205e9a81575cc957fbb4f371bce34 --- /dev/null +++ b/src/Components/UserPageComponents/SubmitterStatus.js @@ -0,0 +1,51 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useContext} from 'react'; +import { Store } from '../../Store.js'; +import CheckDecagram from '../../img/check-decagram-gray.svg' + +export default function SubmitterStatus (props) { + const {state} = React.useContext(Store) + + let text; + switch (state.currentUser.submitter_request) { + case 'requested': + text = "Verificando cadastro de professor(a)" + break; + case 'accepted': + text = "Professor(a)" + break; + default: + text = "Você é professor(a) e gostaria de publicar recursos?" + } + + return ( + <React.Fragment> + <p style={{fontSize:"15px", lineHeight:"22px", textAlign:"left", margin:"0 0 10px"}}> + <span style={{cursor:"pointer"}}> + <span style={{paddingRight:"5px"}}> + <img src={CheckDecagram}/> + </span> + {text} + <span style={{color:"#00bcd4"}}> SAIBA MAIS</span> + </span> + </p> + </React.Fragment> + ) + +} diff --git a/src/Components/UserPageComponents/UserInfo.js b/src/Components/UserPageComponents/UserInfo.js new file mode 100644 index 0000000000000000000000000000000000000000..0a45ac75dff68aeb5065a2610a9c8cdc75a14b37 --- /dev/null +++ b/src/Components/UserPageComponents/UserInfo.js @@ -0,0 +1,36 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useContext} from 'react'; +import { Store } from '../../Store.js'; +import {UserProfileInfoDiv} from '../TabPanels/StyledComponents.js' + +export default function UserInfo (props) { + const {state} = useContext(Store) + + const user = state.currentUser.username + const education = state.currentUser.education + + return ( + <UserProfileInfoDiv> + <p style={{fontSize:"28px", color:"#fff", paddingTop:"5px", paddingBottom:"5px", fontWeight:"500", backgroundColor:"#77777796", borderRadius : "5px"}}>{user}</p> + <div style={{fontSize:"14px", color:"#fff", marginBottom:"2px"}}> + <p>{education}</p> + </div> + </UserProfileInfoDiv> + ) +} diff --git a/src/Components/menulist.js b/src/Components/menulist.js deleted file mode 100644 index cb0703899148dc5386135228a18356a8eb72b8d8..0000000000000000000000000000000000000000 --- a/src/Components/menulist.js +++ /dev/null @@ -1,103 +0,0 @@ -/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre -Departamento de Informatica - Universidade Federal do Parana - -This file is part of Plataforma Integrada MEC. - -Plataforma Integrada MEC is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Plataforma Integrada MEC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ - -import React from 'react'; -import PropTypes from 'prop-types'; -import Button from '@material-ui/core/Button'; -import ClickAwayListener from '@material-ui/core/ClickAwayListener'; -import Grow from '@material-ui/core/Grow'; -import Paper from '@material-ui/core/Paper'; -import Popper from '@material-ui/core/Popper'; -import MenuItem from '@material-ui/core/MenuItem'; -import MenuList from '@material-ui/core/MenuList'; -import { withStyles } from '@material-ui/core/styles'; - -const styles = theme => ({ - root: { - display: 'flex', - }, - paper: { - marginRight: theme.spacing.unit * 2, - }, -}); - -class MenuListComposition extends React.Component { - state = { - open: false, - }; - - handleToggle = () => { - this.setState(state => ({ open: !state.open })); - }; - - handleClose = event => { - if (this.anchorEl.contains(event.target)) { - return; - } - - this.setState({ open: false }); - }; - - render() { - const { classes } = this.props; - const { open } = this.state; - - return ( - <div className={classes.root}> - - <div> - <Button - buttonRef={node => { - this.anchorEl = node; - }} - aria-owns={open ? 'menu-list-grow' : undefined} - aria-haspopup="true" - onClick={this.handleToggle} - > - {this.props.label} - </Button> - <Popper open={open} anchorEl={this.anchorEl} transition disablePortal> - {({ TransitionProps, placement }) => ( - <Grow - {...TransitionProps} - id="menu-list-grow" - style={{ transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' }} - > - <Paper> - <ClickAwayListener onClickAway={this.handleClose}> - <MenuList> - <MenuItem onClick={this.handleClose}>Profile</MenuItem> - <MenuItem onClick={this.handleClose}>My account</MenuItem> - <MenuItem onClick={this.handleClose}>Logout</MenuItem> - </MenuList> - </ClickAwayListener> - </Paper> - </Grow> - )} - </Popper> - </div> - </div> - ); - } -} - -MenuListComposition.propTypes = { - classes: PropTypes.object.isRequired, -}; - -export default withStyles(styles)(MenuListComposition); diff --git a/src/Pages/AboutPage.js b/src/Pages/AboutPage.js new file mode 100644 index 0000000000000000000000000000000000000000..a61ee5514cd8145732288af6edfea7f4e60c2074 --- /dev/null +++ b/src/Pages/AboutPage.js @@ -0,0 +1,881 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component } from 'react'; +import Grid from '@material-ui/core/Grid'; +import styled from 'styled-components'; +import Modal from '../Components/ModalAbout'; +import AboutCarousel from "../Components/AboutCarousel"; + +/*Importação de imagens para o componente*/ +import Agpl from "../img/sobre/agpl.svg"; +import Banner from "../img/sobre/banner-sobre-2.jpg"; +import Notebook from "../img/sobre/Imagem_Notebook.png"; +import Professores from "../img/sobre/professores.jpg"; +import Alunos from "../img/sobre/Alunos.png"; +import Gestores from "../img/sobre/Gestores.png"; +import Comunidade from "../img/sobre/comunidade.png"; + +import LogoPortalDoProfessor from "../img/logo_parceiros/logo_portaldoprofessor.png"; +import LogoBioe from "../img/logo_parceiros/logo_bioe.png"; +import LogoDominioPublico from "../img/logo_parceiros/logo_dominiopublico.png"; +import LogoTvEscola from "../img/logo_parceiros/logo_tvescola.png"; +import Safer from "../img/logo_parceiros/safer.png"; +import FundacaoLemann from "../img/logo_parceiros/fundacao-lemann.png"; +import InstitutoCrescer from "../img/logo_parceiros/instituto-crescer.png"; +import RedeEscola from "../img/logo_parceiros/redeescola.png"; +import Educagital from "../img/logo_parceiros/educagital.png"; +import EnefAef from "../img/logo_parceiros/ENEF_AEF.png"; +import Impa from "../img/logo_parceiros/impa.png"; +import Futura from "../img/logo_parceiros/futura.png"; +import Impulsiona from "../img/logo_parceiros/impulsiona.png"; +import InstPeninsula from "../img/logo_parceiros/inst-peninsula.png"; +import Telefonica from "../img/logo_parceiros/telefonica.png"; + + + +const Secao1 = styled.div` + height: 600px; + background-color: #333; +` + + +const Secao2 = styled.div` + height: 600px; + color: #666; + text-align: center; + font-size: 14px; + line-height: 1.42857143; + + .container { + + height: 100%; + width: 1140px; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + + + .conteudo-secao { + + h2 { + text-align: center; + font-family: Roboto, sans-serif; + font-size: 30px; + font-weight: 300; + margin: 0; + line-height: 1.1; + } + + img { + max-width: 250px; + } + + p { + margin: 0 0 10px; + } + + a { + + color: initial; + text-decoration:none; + } + + } + } + } + +` + +const Secao3 = styled.div` + height: auto; + padding: 30px 0; + background-color: #1ab9de; + color: #fff; + + .container { + + height: 100%; + width: 1140px; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + width: 1110px; + padding-right: 15px; + padding-left: 15px; + display: flex; + flex-direction: column; + justify-content: center; + + + .conteudo-secao { + padding-right: 15px; + padding-left: 15px; + width: 100%; + + h2 { + font-family: Pompiere, cursive; + font-size: 46px; + font-weight: 500; + margin: 0; + line-height: 1.1; + } + + h3 { + font-family: Roboto, sans-serif; + font-size: 26px; + margin-top: 20px; + margin-bottom: 10px; + font-weight: 500; + line-height: 1.1; + + + } + + p { + font-size: 15px; + fornt-weight: 400; + margin: 0 0 10px; + ine-height: 1.42857143; + justify: left; + } + + img { + max-height: 400px; + } + + + } + } + } + + +` + +const Secao4 = styled.div` + height: 720px; + text-align: center; + color: #666; + + .container { + + height: 100%; + width: 1140px; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + + + .conteudo-secao { + + + h2 { + text-align: center; + font-family: Roboto, sans-serif; + font-size: 30px; + font-weight: 300; + margin: 0; + margin-bottom: 30px; + line-height: 1.1; + } + h3 { + font-size: 26px; + font-weight: 400; + padding-right: 0; + padding-left: 0; + margin: 0; + } + + button { + background-color: #00bcd4; + color: #fff; + font-family: Roboto,sans-serif; + font-size: 14px; + font-weight: 500; + height: 36px; + border-radius: 3px; + padding-left: 16px; + padding-right: 16px; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); + display: inline-block; + position: relative; + cursor: pointer; + min-height: 36px; + min-width: 88px; + line-height: 36px; + vertical-align: middle; + -webkit-box-align: center; + outline: none; + text-align: center; + border: 0; + padding: 0 6px; + hite-space: nowrap; + text-decoration: none; + + + } + + p { + text-align: center; + margin: 0 0 10px; + font-size: 15px; + } + + .portais { + margin: 30px 0; + display: inline-block; + .itens { + + + display: table; + height: 120px; + list-style: none; + margin: 0 auto; + padding-left: 0; + padding-right: 0; + + li { + display: table-cell; + vertical-align: middle; + padding: 0 15px; + border-right: 1px solid #efefef; + } + + li:last-child { + border-right: none; + } + + } + + } + + } + } + } + + + +` + +const Secao5 = styled.div` + height: 370px; + background-image: url(${Banner}); + background-position: top center; + background-size: cover; + text-align: center; + + .container { + + height: 100%; + width: 1140px; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + + + .conteudo-secao { + + h2 { + text-align: center; + font-family: Pompiere,cursive; + font-size: 52px; + color:#fff; + font-weight: 500; + margin: 0; + line-height: 1.1; + } + + p { + color:#fff; + font-size: 15px; + margin: 0 0 10px; + } + } + } + } + + +` + +const Secao6 = styled.div` + height: 500px; + + + .container { + + height: 450px; + width: 1140px; + padding-top:50px + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + display: flex; + + justify-content: center; + + + .conteudo-secao { + + height: 100%; + width: 970px; + + h2 { + text-align: center; + font-family: Roboto, sans-serif; + font-size: 30px; + font-weight: 300; + margin-bottom:30px; + line-height: 1.1; + } + + img { + max-width: 250px; + } + + p { + margin: 0 0 10px; + } + + a { + + color: initial; + text-decoration:none; + } + + } + } + } + + +` + +const Secao7 = styled.div` + height: 592px; + background-color: #f4f4f4; + + .container { + + height: 100%; + width: 1170px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + color: #666; + + + .conteudo-secao { + + h2 { + text-align: center; + font-family: Roboto, sans-serif; + font-size: 30px; + font-weight: 300; + margin: 0; + margin-bottom: 10px; + line-height: 1.1; + } + + + p { + text-align: center; + margin: 0 0 10px; + font-size: 15px; + line-height: 1.42857143; + } + + .cabecalho { + margin-bottom: 30px; + } + + .card { + + height: 270px; + + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 50px 20px; + text-align: center; + + h3 { + font-weight: 400; + font-size: 24px; + margin-top: 20px; + margin-bottom: 10px; + line-height: 1.1; + } + + p { + line-height: 1.42857143; + text-align: center + font-size: 15px; + margin: 0 0 10px; + } + + img { + width: 114px; + } + + } + + + + } + } + } + +` + +const Secao8 = styled.div` + height: 230px; + + .container { + + height: 100%; + width: 1140px; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + + + .conteudo-secao { + align-itens: center; + + + + h2 { + text-align: center; + font-family: Roboto,sans-serif; + font-size: 26px; + color:#666; + font-weight: 300; + margin: 0; + line-height: 1.1; + } + + p { + color:#fff; + font-size: 15px; + margin: 0 0 10px; + } + + div { + display: flex; + justify-content: center; + margin-top: 30px + } + + button { + + background-color: #ed6f00; + font-family: Roboto,sans-serif; + font-size: 14px; + font-weight: 500; + height: 36px; + border-radius: 3px; + padding-left: 16px; + padding-right: 16px; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); + cursor: pointer; + min-height: 36px; + min-width: 88px; + line-height: 36px; + vertical-align: middle; + align-items: center; + text-align: center; + border-radius: 3px; + user-select: none; + border: 0; + padding: 0 6px; + padding-right: 6px; + padding-left: 6px; + margin: 6px 8px; + font-weight: 500; + font-size: 14px; + overflow: hidden; + + + + a { + color: #fff; + text-decoration: none; + } + + } + + } + } + } + + + +` + + + + + + + + +export default function AboutPage(props) { + + return ( + <> + + <link href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:300,400&display=swap" rel="stylesheet"/> + + <Secao1> + <iframe src="https://player.vimeo.com/video/231609051" width="100%" height="100%" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe> + + </Secao1> + + <Secao2> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + <h2>Um Pouco da História</h2> + <br/> + <br/> + <p> + A partir de uma iniciativa do Ministério da Educação, surge + em outubro de 2015 a proposta de reunir e disponibilizar, em um + único lugar, os Recursos Educacionais Digitais dos principais + portais do Brasil. Com o objetivo de melhorar a experiência de + busca desses Recursos, a Plataforma foi desenvolvida numa + parceria coletiva entre: Universidade Federal de Santa Catarina + (UFSC), Universidade Federal do Paraná (UFPR) e professoras(es) + da Educação Básica de todo o Brasil. Assim, a Plataforma MEC + pretende se tornar uma referência em Recursos Educacionais + Digitais, como um ambiente de busca, interação e colaboração + entre professoras(es)!<br/><br/>Faça parte deste espaço de + colaborativo você também! + </p> + <br/> + <br/> + <br/> + <img src={Agpl} alt="agpl" /> + <p> + Este programa é software livre, sob os termos da + <a href="https://www.gnu.org/licenses/agpl-3.0.en.html" target="_blank"> licença GNU/AGPL</a><br/> + Seu código fonte está disponÃvel no <a href="https://gitlab.c3sl.ufpr.br/portalmec/portalmec" target="_blank">GitLab</a> + </p> + + + </div> + </div> + </div> + </Secao2> + + <Secao3> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + <Grid container spacing={0}> + <Grid item xs={6}> + <h2>O que nos faz diferentes?</h2> + <h3>Espaço construÃdo por e para professores</h3> + <p> + Procuramos constantemente compreender a sua realidade dentro e + fora da sala de aula, no intuito de adequar a qualidade da + plataforma à s suas necessidades de busca por Recursos Educacionais Digitais. + </p> + <h3>Ambiente de colaboração</h3> + <p> + A Plataforma é um espaço onde você pode colaborar ao publicar + seus recursos e compartilhar os de outros autores. Além disso, + pode contribuir relatando suas experiências de uso com os + Recursos disponÃveis. Participe desta rede colaborativa! + </p> + <h3>Todos os recursos em um só lugar</h3> + <p> + Aqui você consegue otimizar o seu tempo! A plataforma integra + os Recursos Educacionais Digitais dos principais portais abertos. + </p> + </Grid> + <Grid item xs={6}> + <img src={Notebook} alt="Imagem Notebook"/> + </Grid> + + </Grid> + + </div> + </div> + </div> + </Secao3> + + <Secao4> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + <div> + <h2>Portais Parceiros</h2> + <p>Aqui na Plataforma você encontra os Recursos Digitais dos principais portais do MEC e de vários outros parceiros.</p> + </div> + <div className="portais"> + <ul className="itens"> + <li> + <a href="http://portaldoprofessor.mec.gov.br/index.html" target="_blank"> + <img src={LogoPortalDoProfessor} alt="LogoPortalDoProfessor" /> + </a> + </li> + <li> + <a href="http://objetoseducacionais2.mec.gov.br/" target="_blank"> + <img src={LogoBioe} alt="LogoBioe" /> + </a> + </li> + <li> + <a href="http://www.dominiopublico.gov.br/pesquisa/PesquisaObraForm.jsp" target="_blank"> + <img src={LogoDominioPublico} alt="LogoDominioPublico" /> + </a> + </li> + <li> + <a href="https://tvescola.org.br/" target="_blank"> + <img src={LogoTvEscola} alt="LogoTvEscola" /> + </a> + </li> + </ul> + <ul className="itens"> + <li> + <a href="http://www.fundacaolemann.org.br/" target="_blank"> + <img style={{align: "middle"}} src={FundacaoLemann} alt="FundacaoLemann" /> + </a> + </li> + <li> + <a href="http://new.safernet.org.br/" target="_blank"> + <img src={Safer} alt="Safer" /> + </a> + </li> + <li> + <a href="http://institutocrescer.org.br/" target="_blank"> + <img src={InstitutoCrescer} alt="InstitutoCrescer" /> + </a> + </li> + <li> + <a href="http://escoladigital.org.br/" target="_blank"> + <img src={RedeEscola} alt="RedeEscola" /> + </a> + </li> + <li> + <a href="http://educadigital.org.br" target="_blank"> + <img src={Educagital} alt="Educagital" /> + </a> + </li> + <li> + <a href="http://www.aefbrasil.org.br" target="_blank"> + <img style={{height:"130px",filter: "grayscale(1)"}} src={EnefAef} alt="EnefAef" /> + </a> + </li> + </ul> + <ul className="itens"> + <li> + <a href="https://impa.br/" target="_blank"> + <img src={Impa} alt="Impa" /> + </a> + </li> + <li> + <a href="http://futura.org.br/" target="_blank"> + <img src={Futura} alt="Futura" /> + </a> + </li> + <li> + <a href="http://impulsiona.org.br/" target="_blank"> + <img src={Impulsiona} alt="Impulsiona" /> + </a> + </li> + <li> + <a href="http://www.institutopeninsula.org.br/" target="_blank"> + <img src={InstPeninsula} alt="InstPeninsula" /> + </a> + </li> + <li> + <a href="http://fundacaotelefonica.org.br/" target="_blank"> + <img src={Telefonica} alt="Telefonica" /> + </a> + </li> + </ul> + </div> + <div> + <h3>Você busca Recursos Educacionais Digitais em outros sites?</h3> + <p> + Você gostaria que a plataforma tivesse os recursos do site que + você acessa?<br/>Deixe a sua sugestão pra que juntos possamos + avançar na integração dos mais variados recursos. + </p> + </div> + <div style={{marginTop:"30px"}}> + <Modal/> + </div> + + </div> + </div> + </div> + </Secao4> + + <Secao5> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + <h2>AQUI VOCÊ É PROTAGONISTA</h2> + <br/> + <p> + Construa conosco a plataforma e amplie sua rede de conhecimento + interagindo com pessoas envolvidas com experiências que ocorrem em todo o Brasil! + </p> + </div> + </div> + </div> + </Secao5> + + <Secao6> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + <div> + <h2>Aqui você pode:</h2> + + </div> + <div> + <AboutCarousel/> + </div> + + </div> + </div> + </div> + </Secao6> + + <Secao7> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + <div className="cabecalho"> + <h2>A quem se destina?</h2> + <p>A plataforma é aberta e destina-se a todos e todas que se + interessam<br/>pela relação entre a escola e a Cultura Digital:</p> + </div> + <div> + <Grid container spacing={3}> + <Grid item xs={3}> + <div className="card"> + <img src={Professores} alt="" /> + <h3>Professores</h3> + <p> + Encontre recursos digitais que se encaixem aos objetivos + das suas aulas! Aproveite para seguir outros professores, + coleções e conhecer experiências de uso! + </p> + </div> + </Grid> + <Grid item xs={3}> + <div className="card"> + <img src={Alunos} alt="" /> + <h3>Alunos</h3> + <p> + Você pode complementar os seus estudos com recursos + digitais que lhe interessem. Gostou de algum recurso? + Recomende ao seu professor ou professora. + </p> + </div> + </Grid> + <Grid item xs={3}> + <div className="card"> + <img src={Gestores} alt="" /> + <h3>Gestores</h3> + <p> + Desenvolva junto com o coletivo da escola ações e projetos + pedagógicos com recursos digitais importantes para o seu contexto. + </p> + </div> + </Grid> + <Grid item xs={3}> + <div className="card"> + <img src={Comunidade} alt="" /> + <h3>Comunidade Escolar</h3> + <p> + Encontre recursos digitais e materiais de formação que + contribuam para a aprendizagem e práticas educativas na + sua comunidade escolar. + </p> + </div> + </Grid> + </Grid> + + </div> + </div> + </div> + </div> + </Secao7> + + <Secao8> + <div className="container"> + <div className="container-secao"> + <div className="conteudo-secao"> + + <h2>Ficou alguma dúvida? Gostaria de fazer alguma sugestão ou crÃtica? Construa conosco.</h2> + <div> + <button><a href="contato">ENTRAR EM CONTATO</a></button> + </div> + + </div> + </div> + </div> + </Secao8> + </> + ); + +} diff --git a/src/Pages/Contact.js b/src/Pages/Contact.js new file mode 100644 index 0000000000000000000000000000000000000000..cf2b6458651e13aa36791ed17ee0c60f896c655d --- /dev/null +++ b/src/Pages/Contact.js @@ -0,0 +1,173 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React from "react"; +import styled from "styled-components"; +import Banner1 from "../img/banner-sobre.jpg"; +import InputFormulario from "../Components/ContactForm.js"; + +const Secao1 = styled.div` + width: 100%; + background-image: url(${Banner1}); + background-size: cover; + background-position: bottom center; + height: 250px; + color: #fff; + line-height: 1.1; + text-align: center; + padding-top: 120px; + + h2 { + font-family: Pompiere, cursive; + font-size: 52px; + color: #fff; + margin: 0; + padding-left: 0; + padding-right: 0; + font-weight: 500; + } + + h3 { + margin-top: 20px; + margin-bottom: 10px; + font-family: Roboto, sans-serif; + font-size: 30px; + font-weight: lighter; + } +`; + +const Secao2 = styled.div` + height: 708px; + background-color: #f4f4f4; + display: flex; + justify-content: center; + align-items: center; +`; + +const Secao3 = styled.div` + height: 127px; + background-color: #f4f4f4; + color: #666; + line-height: 1.42857143; + font-size: 18px; + text-align: center; + padding-top: 70px; + + p { + margin: 0 0 10px 0; + } +`; + +const Formulario = styled.div` + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 40px; + height: 560px; + width: 480px; + color: #666; + + form .inputBlock { + margin-block: 22px; + + } + + form .inputBlock label { + font-size: 14px; + font-weight: bold; + display: block; + + } + + form .inputBlock input { + width: 100%; + height: 32px; + font-size: 14px; + border: 0; + border-bottom: 1px solid #eee; + + } + + form .inputBlock.Message input { + height: 131px; + } + + form buttom[type=submit] { + width: 100%; + border: 0; + margin-top: 30px; + background: #7d40e7 + border-radius: 2px; + padding: 15px 20px; + font-size: 16px; + font-weight: bold; + color: #fff; + cursor: pointer; + transition: background 0.5s; + + } + + form buttom[type=submit]:hover { + background: #6931ac + } + + + h2 { + font-size: 24px; + font-weight: lighter; + margin-bottom: 50px; + margin-top: 20px; + text-align: center; + + } +`; + +function Contact(props) { + return ( + <> + <link + href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto:300,400&display=swap" + rel="stylesheet" + /> + <Secao1> + <h2>CONTATO</h2> + <h3>Quer enviar uma mensagem?</h3> + </Secao1> + + <Secao2> + <Formulario noValidate autoComplete="off"> + <h2> + Entre em contato para enviar dúvidas, + <br /> + sugestões ou crÃticas + </h2> + <InputFormulario /> + </Formulario> + </Secao2> + + <Secao3> + <span>MEC - Ministério da Educação </span> + <p> + Endereço: Esplanada dos Ministérios Bloco L - Ed.Sede e Anexos. CEP: + 70.047-900 - BrasÃlia/DF. Telefone: 0800 616161 + </p> + </Secao3> + </> + ); +} + +export default Contact; diff --git a/src/Pages/EditLearningObjectPage.js b/src/Pages/EditLearningObjectPage.js new file mode 100644 index 0000000000000000000000000000000000000000..2597832c9390ffb0d18167f05f0b7982e53d38d5 --- /dev/null +++ b/src/Pages/EditLearningObjectPage.js @@ -0,0 +1,392 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect, useContext} from 'react' +import {Store} from '../Store.js' +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl, apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import UploadFileWrapper from '../Components/UploadPageComponents/UploadFileWrapper.js' +import Alert from '../Components/Alert.js'; +import Snackbar from '@material-ui/core/Snackbar'; +import {GreyButton, OrangeButton, InfoBox} from '../Components/UploadPageComponents/StyledComponents.js' +import {getAxiosConfig} from '../Components/HelperFunctions/getAxiosConfig.js' +import {Background} from '../Components/UploadPageComponents/StyledComponents' +import LoadingSpinner from '../Components/LoadingSpinner' +import NewTitle from '../Components/UploadPageComponents/Forms/NewTitle.js' +import SobreORecurso from '../Components/UploadPageComponents/Forms/SobreORecurso.js' +import Keywords from '../Components/UploadPageComponents/Forms/Keywords.js' +import Autor from '../Components/UploadPageComponents/Forms/Autor.js' +import TipoDeRecurso from '../Components/UploadPageComponents/Forms/TipoDeRecurso.js' +import Idioma from '../Components/UploadPageComponents/Forms/Idioma.js' +import EducationalStage from '../Components/UploadPageComponents/PartTwoComponents/EducationalStage.js' +import SubjectsAndThemes from '../Components/UploadPageComponents/PartTwoComponents/SubjectsAndThemes.js' +import Licenca from '../Components/UploadPageComponents/PartTwoComponents/Licenca.js' +import { Button } from '@material-ui/core'; +import {LoadingDiv} from '../Components/UploadPageComponents/PartTwo.js' +import EditThumbnail from '../Components/UploadPageComponents/PartTwoComponents/EditThumbnail.js' +import DisplayThumbnail from '../Components/UploadPageComponents/PartTwoComponents/DisplayThumbnail.js' +import CustomCircularProgress from '../Components/UploadPageComponents/PartTwoComponents/CustomCircularProgress'; +import DragAndDropThumbnail from '../Components/UploadPageComponents/PartTwoComponents/DragAndDropThumbnail' + + +export default function EditLearningObjectPage (props) { + const recursoId = props.match.params.recursoId + const {state} = useContext(Store) + const [learningObject, setLearningObject] = useState({}) + const [objTypes, setObjTypes] = useState([]) + const [languages, setLanguages] = useState([]) + const [eduStages, setEduStages] = useState([]) + const [subjects, setSubjects] = useState([]) + + useEffect( () => { + const config = getAxiosConfig() + axios.get( (`${apiUrl}/learning_objects/` + recursoId), config + ).then( (response) => { + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + setLearningObject(response.data) + if(response.data.thumbnail) { + setThumbnail(response.data.thumbnail) + setThumbnailStage('done') + } + setUpdatedInfo({...updatedInfo, ['id'] : response.data.id}) + toggleLoading(false) + }, (error) => {console.log(error)} + ) + + axios.get(`${apiUrl}/object_types/`).then( + (response) => { + setObjTypes(response.data.sort((a, b) => (a.name) > (b.name) ? 1 : -1)) + }, (error) => { + console.log(error) + } + ) + + axios.get(`${apiUrl}/languages/`).then( + (response) => { + setLanguages(response.data) + }, (error) => { + console.log(error) + } + ) + + axios.get(`${apiUrl}/educational_stages/`).then( + (response) => { + setEduStages(response.data) + }, + (error) => {console.log(error)} + ) + + axios.get(`${apiUrl}/subjects/`).then( + (response) => { + setSubjects(response.data.sort((a,b) => a.name > b.name ? 1 : -1)) + }, + (error) => {console.log(error)} + ) + }, [, state.currentUser.id]) + + const [loading, toggleLoading] = useState(true) + + const [updatedInfo, setUpdatedInfo] = useState({}) + + const onBlurCallback = (fieldName, payload) => { + setUpdatedInfo({...updatedInfo, [fieldName] : payload}) + } + + const [snackbarOpen, toggleSnackbar] = useState(false) + + const handleDelete = () => { + let config = getAxiosConfig() + axios.delete((`${apiUrl}/learning_objects/` + learningObject.id), config).then( + (response) => { + toggleSnackbar(true) + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + props.history.push("/") + }, + (error) => { + console.log(error) + } + ) + } + + const handleUpdateInfo = () => { + let config = getAxiosConfig() + console.log(updatedInfo) + let payload = { + "learning_object" : updatedInfo + } + console.log(payload) + axios.put((`${apiUrl}/learning_objects/` + learningObject.id), payload, config).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response.data); props.history.goBack() + }, + (error) => {console.log(error)} + ) + } + + const handlePost = () => { + let config = getAxiosConfig() + console.log(updatedInfo) + let payload = { + "learning_object" : updatedInfo + } + console.log(payload) + axios.post((`${apiUrl}/learning_objects/` + learningObject.id + '/publish'), payload, config).then( + (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response.data); + props.history.push('/recurso/' + learningObject.id) + }, + (error) => {console.log(error)} + ) + } + + const [thumbnailStage, setThumbnailStage] = useState('default') + + const [thumbnail, setThumbnail] = useState('') + const [tempUrl, setTempUrl] = useState('') + + const acceptFile = (file) => { + const objectURL = URL.createObjectURL(file) + console.log('acceptFile: ', file) + setTempUrl(objectURL) + setThumbnailStage('editing') + } + const updateThumb = (newThumbnail) => { + setThumbnail(newThumbnail) + console.log('updateThumb: ', thumbnail) + + } + + const finalizeThumb = () => { + setThumbnailStage('uploading') + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + } + } + config.headers["access-Token"] = sessionStorage.getItem('@portalmec/accessToken'); + config.headers.client = sessionStorage.getItem('@portalmec/clientToken') + config.headers.uid = sessionStorage.getItem('@portalmec/uid') + + let fdThumb = new FormData() + fdThumb.set('learning_object[thumbnail]', thumbnail) + axios.put((`${apiUrl}/learning_objects/` + learningObject.id), fdThumb, config).then( + (response) => { + setThumbnailStage('done') + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + if(response.data.thumbnail) { + setThumbnail(response.data.thumbnail) + setThumbnailStage('done') + } + }, + (error) => { + setThumbnailStage('default') + } + ) + } + + const handleDeleteThumbnail = () => { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + } + } + config.headers["access-Token"] = sessionStorage.getItem('@portalmec/accessToken'); + config.headers.client = sessionStorage.getItem('@portalmec/clientToken') + config.headers.uid = sessionStorage.getItem('@portalmec/uid') + + let fdThumb = new FormData() + fdThumb.set('learning_object[thumbnail]', null) + axios.put((`${apiUrl}/learning_objects/` + learningObject.id), fdThumb, config).then( + (response) => { + setThumbnailStage('default') + console.log(response.data) + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + }, + (error) => { + console.log(error) + } + ) + } + + const chooseRenderStageThumbnail = () => { + switch(thumbnailStage) { + case 'uploading': + return (<LoadingDiv/>) + break; + case 'done': + return (<DisplayThumbnail acceptFile={acceptFile} thumbnail={`${apiDomain}` + thumbnail} onEditPage={true} handleDelete={handleDeleteThumbnail}/>) + break; + case 'editing': + return (<EditThumbnail finalizeThumb={finalizeThumb} tempImgURL={tempUrl} updateThumb={updateThumb}/>) + break; + default : + return (<DragAndDropThumbnail acceptFile={acceptFile} onEditPage={true}/>) + break; + + } + } + return ( + <React.Fragment> + <Snackbar open={snackbarOpen} autoHideDuration={1000} onClose={() => {toggleSnackbar(false)}} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="info" style={{backgroundColor:"#00acc1"}}> + Recurso excluido com sucesso! + </Alert> + </Snackbar> + { + !loading ? + ( + <Background> + <div className="container"> + <Grid container spacing={2}> + <Grid item md={4} xs={12}> + <UploadFileWrapper draftID={recursoId} prevFile={learningObject. attachments ? learningObject.attachments[0] : null}/> + </Grid> + <Grid item md={8} xs={12}> + <InfoBox> + <form onSubmit={handlePost}> + <div className="cabecalho"> + <h2>Editar Recurso</h2> + </div> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + {chooseRenderStageThumbnail()} + </Grid> + + <Grid container style={{paddingLeft : "15px", paddingRight : "15px"}}> + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <NewTitle draftID={learningObject.id} initialValue={learningObject.name} + onBlurCallback={onBlurCallback} + /> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <SobreORecurso draftID={learningObject.id} initialValue={learningObject.description} onBlurCallback={onBlurCallback}/> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Keywords draftID={learningObject.id} initialValue={learningObject.tags.map((tag) => tag.name)} + onBlurCallback={onBlurCallback}/> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Autor draftID={learningObject.id} + initialValue={ + learningObject.author === state.currentUser.username ? + 0 : 1 + } + initialOutroAutor={ + learningObject.author !== state.currentUser.username ? + learningObject.author : '' + } + onBlurCallback={onBlurCallback} + /> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <TipoDeRecurso objTypes={objTypes} draftID={learningObject.id} + initialValue={learningObject.object_type !== null ? objTypes.filter((type) => type.name === learningObject.object_type)[0].id : null} onBlurCallback={onBlurCallback} /> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Idioma languages={languages} draftID={learningObject.id} initialValue={learningObject.language.map((language) => language.name)} initialIDValues={learningObject.language.map((language) => language.id)} + onBlurCallback={onBlurCallback} /> + </Grid> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <EducationalStage draftID={learningObject.id} eduStages={eduStages} initialValue={learningObject.educational_stages.map((stage) => String(stage.id))} onBlurCallback={onBlurCallback} + /> + </Grid> + + <SubjectsAndThemes draftId={learningObject.id} subjects={subjects} initialValue={learningObject.subjects.map(subject => String(subject.id))} onBlurCallback={onBlurCallback}/> + + <Grid item xs={12} style={{paddingBottom : "40px"}}> + <Licenca draftID={learningObject.id} initialValue={learningObject.license ? learningObject.license.id : null} onBlurCallback={onBlurCallback}/> + </Grid> + + <Grid item xs={12}> + <div style={{display : "flex", justifyContent : "center"}}> + <GreyButton onClick={handleDelete}> + <span className="button-text"> + EXCLUIR + </span> + </GreyButton> + + <GreyButton onClick={props.history.goBack}> + <span className="button-text"> + CANCELAR + </span> + </GreyButton> + + <OrangeButton onClick={() => {handleUpdateInfo()}}> + SALVAR ALTERAÇÕES + </OrangeButton> + + { + learningObject.state === "draft" && + <OrangeButton type="submit"> + PUBLICAR RECURSO + </OrangeButton> + } + </div> + </Grid> + + <Grid item xs={12} style={{marginTop : "20px"}}> + <span style={{marginTop : "20px", fontWeight : "200", color : "#a5a5a5", paddingLeft : "10px"}}> + * Campos obrigatórios + </span> + </Grid> + </Grid> + + </form> + </InfoBox> + </Grid> + </Grid> + </div> + </Background> + ) + : + ( + <LoadingSpinner text={"CARREGANDO"}/> + ) + } + </React.Fragment> + ) +} diff --git a/src/Pages/EditProfilePage.js b/src/Pages/EditProfilePage.js new file mode 100644 index 0000000000000000000000000000000000000000..2d142d5932ada235c199b1e011ff168025afad35 --- /dev/null +++ b/src/Pages/EditProfilePage.js @@ -0,0 +1,163 @@ +import React, {useState, useContext, useEffect} from 'react'; +import styled from 'styled-components' +import {Link} from 'react-router-dom' +import Tabs from '@material-ui/core/Tabs' +import Tab from '@material-ui/core/Tab'; +import Paper from '@material-ui/core/Paper'; +import TabPanelEditarPerfil from '../Components/TabPanels/UserPageTabs/PanelEditarPerfil.js' +import TabPanelSolicitarContaProfessor from '../Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js' +import TabPanelGerenciarConta from '../Components/TabPanels/UserPageTabs/PanelGerenciarConta.js' +import Snackbar from '@material-ui/core/Snackbar'; +import MuiAlert from '@material-ui/lab/Alert'; +import {Alert} from '../Components/LoginModal.js' +import Grid from '@material-ui/core/Grid' +import CustomizedBreadcrumbs from '../Components/TabPanels/Breadcrumbs.js' + +export default function EditProfilePage (props) { + const [tabs, setTabs] = useState([ + 'Editar Perfil', 'Solicitar conta de Professor', 'Gerenciar Conta' + ]) + const [tabValue, setTabValue] = useState(0) + const handleChangeTab = (e, newValue) => { + setTabValue(newValue) + } + + const [snackbarOpened, handleSnackbar] = useState(false) + const handleCloseSnackbar = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + handleSnackbar(false); + } + return ( + <div style={{backgroundColor:"#f4f4f4", color:"#666"}}> + <Snackbar open={snackbarOpened} autoHideDuration={1000} onClose={handleCloseSnackbar} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="success" style={{backgroundColor:"#00acc1"}}>Senha alterada com sucesso!</Alert> + </Snackbar> + + <CustomizedBreadcrumbs + values={["Minha área", "Configurações da Conta", tabs[tabValue]]} + /> + + <div style={{justifyContent:"center", width:"1170px", margin:"auto"}}> + <MainContainerDiv container spacing={3}> + <Grid item xs={3} style={{width : "auto", fontFamily:"Roboto"}} > + <Paper elevation={3} style= {{width:"max-content"}}> + <ConfiguracoesMenu> + <h4 style={{marginTop:"10px", fontFamily:"inherit", display:"flex", justifyContent:"center"}}> + Configurações da Conta + </h4> + <StyledTabs + orientation = "vertical" + variant = "scrollable" + value = {tabValue} + onChange = {handleChangeTab} + TabIndicatorProps = {{style : {display : "none"}}} + > + <StyledTab label={tabs[0]}/> + <StyledTab label={tabs[1]}/> + <StyledTab label={tabs[2]}/> + </StyledTabs> + </ConfiguracoesMenu> + </Paper> + </Grid> + <TabContentDiv item xs={9}> + <Paper elevation={3} style= {{width:"100%"}}> + {tabValue === 0 && <TabPanelEditarPerfil />} + {tabValue === 1 && <TabPanelSolicitarContaProfessor/>} + </Paper> + {tabValue === 2 && <TabPanelGerenciarConta handleSnackbar={() => {handleSnackbar(true)}}/>} + </TabContentDiv> + </MainContainerDiv> + </div> + </div> + ) +} + +const TabContentDiv = styled(Grid)` + width : auto; + + .card-config { + padding : 40px; + margin : 20px 0 20px 10px; + border-radius : 3px; + box-shadow : 0 0 5px 0rgba(0,0,0,.25); + background-color : #fff; + text-align : start; + margin-left : auto; + margin-right : auto; + display : flex; + flex-direction : column; + } + + .content-div { + display : flex; + flex-direction : column; + align-content : stretch; + align-items : stretch; + font-family : 'Roboto', sans serif !important; + font-size : 14px; + justify-content : center; + line-height : 20px; + text-align : center; + color : #666; + } + + .h2 { + margin-top : 20px; + margin-bottom : 10px; + } + + .p { + margin : 0 0 10px; + } + + .h1 { + font-size : 30px; + font-weight : 300; + margin-top : 0; + margin-bottom : 10px; + } + + .h4 { + font-size : 18px; + margin-top : 10px; + margin-bottom : 10px; + font-weight : 500; + line-height : 1.1; + } +` + +const StyledTabs = styled(Tabs)` + .Mui-selected { + background-color : #f4f4f4; + } +` + +const StyledTab = styled(Tab)` + &:hover { + background-color : #6666663d; + } +` + +const ConfiguracoesMenu = styled.div` + margin : 20px 0 20px 0; + border-radius : 3px; + padding : 20px 0; + background-color : #fff; + text-align : start; +` + +const MainContainerDiv = styled(Grid)` + padding : 0; + width : 1170; + margin-right : auto; + margin-left : auto; + display : flex; + flex-direction : row; + align-content : center; + justify-content : center; +` diff --git a/src/Pages/HelpCenter.js b/src/Pages/HelpCenter.js new file mode 100644 index 0000000000000000000000000000000000000000..4151f5d7e5ff0d6921deed2be52f1b519343c055 --- /dev/null +++ b/src/Pages/HelpCenter.js @@ -0,0 +1,444 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; +import Grid from '@material-ui/core/Grid'; +import { Link } from 'react-router-dom'; + + + + +import Banner3 from '../img/ajuda/Banner3.png'; +import CardPublicando from '../Components/HelpCenter/Cards/CardPublicando'; +import CardEncontrando from '../Components/HelpCenter/Cards/CardEncontrando'; +import CardParticipando from '../Components/HelpCenter/Cards/CardParticipando'; +import CardGerenciando from '../Components/HelpCenter/Cards/CardGerenciando'; + + + + +function HelpCenter(props) { + return( + <div style={{backgroundColor: "#f4f4f4"}}> + <link href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:300,400&display=swap" rel="stylesheet"/> + + <Secao1> + <div className= "container"> + <img src={Banner3} alt="banner3"/> + <div className= "conteudo"> + <div className= "title"> + <h2>OLÃ! COMO PODEMOS AJUDAR?</h2> + </div> + </div> + </div> + </Secao1> + + <Secao2> + <div className="container"> + <div className="container-secao"> + <div className="conteudo"> + <div className="cabecalho"> + <h2>Tópicos de Ajuda</h2> + </div> + <div> + <Grid container spacing={2}> + <Grid item xs={3}> + <CardPublicando/> + </Grid> + <Grid item xs={3}> + <CardEncontrando/> + </Grid> + <Grid item xs={3}> + <CardParticipando/> + </Grid> + <Grid item xs={3}> + <CardGerenciando/> + </Grid> + </Grid> + </div> + </div> + </div> + </div> + + </Secao2> + + <Secao3> + <Grid style={{height:"100%"}} container spacing={2}> + <Grid style={{backgroundColor: "#333",paddingInline:"0" }} item xs={6}> + <iframe src="https://player.vimeo.com/video/231609051" width="100%" height="100%" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe> + </Grid> + <Grid item xs={6}> + <p className="titulo-sobre-ajuda">Plataforma MEC de Recursos Educacionais Digitais</p> + <p className="conteudo-sobre-ajuda"> + Construa conosco a plataforma e amplie sua rede de conhecimento<br/> + interagindo com pessoas envolvidas com experiências que ocorrem<br/> + em todo o Brasil! + </p> + <hr/> + <Grid container spacing={1}> + <Grid item xs={6}> + <p className="links"> + <br/> + <Link to={{ + pathname : 'plataforma-mec', + state : {value : '0'} + }}>O que é a Plataforma MEC</Link> + <br/> + <Link to={{ + pathname : 'plataforma-mec', + state : {value : '1'} + }}>Como foi construida a Plataforma<br/>MEC?</Link> + <br/> + <Link to={{ + pathname : 'plataforma-mec', + state : {value : '3'} + }}>Quais são os Portais Parceiros?</Link> + </p> + </Grid> + <Grid item xs={6}> + <p className="links"> + <br/> + <Link to={{ + pathname : 'plataforma-mec', + state : {value : '2'} + }}>Entendendo as 3 áreas</Link> + <br/> + <Link to={{ + pathname : 'plataforma-mec', + state : {value : '4'} + }}>Tipos de recursos</Link> + <br/> + <Link to={{ + pathname : 'plataforma-mec', + state : {value : '5'} + }}>Softwares especÃficos</Link> + </p> + </Grid> + </Grid> + + </Grid> + </Grid> + </Secao3> + + <Secao4> + <div className="container"> + <div className="conteudo"> + <h2>Não encontrou o que você precisa?</h2> + <span>Entre em contato com a nossa Central de Ajuda</span> + <br/> + <button><a href="contato">ENTRAR EM CONTATO</a></button> + + </div> + </div> + </Secao4> + + </div> + ); +} + +export default HelpCenter; + + +const Secao1 = styled.div` + height: 374px; + background-color:#00bcd4; + text-align: center; + .container { + height: 100%; + width: 1170px; + display: flex; + -webkit-box-pack: center; + justify-content: center; + -webkit-box-align: center; + align-items: center; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + + img { + position: relative; + left: 82px; + top: 41.6%; + width: 230px; + float: left; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; + + } + + + .conteudo { + display: flex; + justify-content: center; + + .title { + + } + } + + h2 { + font-family: Pompiere,cursive; + font-size: 35px; + margin: 0; + margin-top: 45px; + color:#fff; + font-weight: 500; + line-height: 1.1; + } + + } +` + +const Secao2 = styled.div` + height: 536px; + background-color:#f4f4f4; + text-align: center; + margin-bottom: 20px; + + .container { + height: 100%; + width: 1170px; + margin-right: auto; + margin-left: auto; + + .container-secao { + height: 100%; + padding-top: 50px; + .conteudo { + width: 100%; + text-align: center; + .cabecalho { + margin-bottom: 50px; + text-align: center; + h2 { + font-size: 30px; + font-weight: lighter; + color:#666; + margin: 0; + } + } + .card-ajuda { + + height: 360px; + margin-bottom: 20px + + + .card { + height: 280px; + padding: 40px 15px; + text-align: center; + font-size: 14px; + background-color:#fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h3 { + font-size: 24px; + font-weight: 400; + color: #666; + margin-top: 20px; + margin-bottom: 10px; + line-height: 1.1; + } + + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + color: #a5a5a5; + } + + a { + font-size: 15px; + color: #666; + text-decoration: none; + text-align: center; + + } + + img { + height: 62px ; + width: 62px ; + } + + } + + .card-rodape { + box-sizing: border-box; + + a { + border-radius: 0; + width: 240.5px; + font-size: 13px; + font-weight: 700; + color: #fff; + transition: .2s ease; + border: none; + height: 40px; + padding: 0 20px; + line-height: 40px; + background-color: #00bcd4; + touch-action: manipulation; + cursor: pointer; + text-decoration: none; + display: inline-block; + margin-bottom: 0; + text-align: center; + white-space: nowrap; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + user-select: none; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + } + } + + } + } + } + } + + +` + +const Secao3 = styled.div` + height: 375px; + padding: 0; + text-align: center; + background-color: #fff; + width: 1170px; + margin-inline: auto; + color: rgba(0,0,0,0.87); + + .links { + font-size: 15px; + font-weight: lighter; + text-align: center; + margin: 0 0 10px; + line-height: 1.42857143; + a { + color: #666; + text-decoration: none; + :hover { + color: #000; + } + } + } + + .titulo-sobre-ajuda { + font-family: Pompiere; + font-size: 30px; + margin-block: 40px + } + + .conteudo-sobre-ajuda { + font-size: 15px; + margin-bottom: 30px; + margin: 0 0 10px; + } + + hr { + width: 350px; + border: 0; + border-top: 1px solid #ccc; + margin-top: 20px; + margin-bottom: 20px; + + } + + + +` + +const Secao4 = styled.div` + height: 290px; + + .container { + height: 100%; + color: #a5a5a5; + width: 1170px; + margin-inline: auto; + display: flex; + flex-direction: column; + justify-content: center; + .conteudo { + width: 100%; + text-align: center; + + h2 { + font-size: 24px; + font-weight: lighter; + color:#666; + margin-top: 20px; + margin-bottom: 10px; + text-align: center; + } + + span { + font-size: 15px; + color:#777; + text-align: center; + + } + + button { + margin-top: 25px; + color: rgba(255,255,255,0.87); + background-color: rgb(255,127,0); + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); + outline: none;display: inline-block; + position: relative; + cursor: pointer; + min-height: 36px; + min-width: 88px; + line-height: 36px; + vertical-align: middle; + -webkit-box-align: center; + align-items: center; + text-align: center; + border-radius: 3px; + box-sizing: border-box; + user-select: none; + border: 0; + padding: 0 6px; + margin: 6px 8px; + white-space: nowrap; + text-transform: uppercase; + font-weight: 500; + font-size: 14px; + font-style: inherit; + font-variant: inherit; + font-family: inherit; + text-decoration: none; + overflow: hidden; + transition: box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1); + letter-spacing: .01em; + a { + text-decoration: none; + color: #fff; + } + } + } + } + + +` diff --git a/src/Pages/ItemStore.js b/src/Pages/ItemStore.js new file mode 100644 index 0000000000000000000000000000000000000000..ce8855c0306f2542b67b0f2db18bf2d0f1086a8b --- /dev/null +++ b/src/Pages/ItemStore.js @@ -0,0 +1,104 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ +import React, {useState, useContext, useEffect} from 'react'; +import styled from 'styled-components'; +import axios from 'axios'; +import Grid from '@material-ui/core/Grid'; +import Card from '@material-ui/core/Card'; +import CardActions from '@material-ui/core/CardActions'; +import CardContent from '@material-ui/core/CardContent'; +import Container from '@material-ui/core/Container'; +import UserCardGamified from '../Components/UserCardGamified.js'; +import StoreGuide from '../Components/StoreGuide.js'; +import ItemCarousel from '../Components/ItemCarousel.js'; +import {apiUrl} from '../env'; + +const SectionTitle = styled.h3` + font-weight: 100; + margin-bottom: 0; +` + +const StoreDivider = styled.hr` + width: 50px; + margin-left: 0; +` + +const StoreSection = styled.div` + font-size: 1.5em; + margin-top: 60px; + margin-bottom: 20px; +` + +export default function ItemStoreContainer (props) { + const [avatar_frames, setAvatarFrames] = useState([]); + const [card_frames, setCardFrames] = useState([]); + const [cover_frames, setCoverFrames] = useState([]); + const [badges, setBadges] = useState([]); + + useEffect(() => { + axios.all( + ['avatar_frame', 'card_frame', 'cover_frame', 'badge'].map((r) => { + return axios.get(apiUrl+'/' + 'user_items/index?item_type='+r+'&unlock_rule=purchase'); + })).then(axios.spread((avatar, card, cover, badge) => { + setAvatarFrames(avatar); + setCardFrames(card); + setCoverFrames(cover); + setBadges(badge); + })); + }, []) + + return ( + <Container style={{paddingTop : "2em", backgroundColor : "#f4f4f4", width: '100%'}}> + <Grid container + direction="row" + justify="space-around" + alignItems="stretch" + style={{ + marginTop: '2em', + marginBottom: '2em', + }} + > + <UserCardGamified/> + <StoreGuide/> + </Grid> + <StoreSection> + <SectionTitle>Bordas de avatar</SectionTitle> + <StoreDivider/> + <ItemCarousel items={avatar_frames}/> + </StoreSection> + + <StoreSection> + <SectionTitle>InsÃgnias</SectionTitle> + <StoreDivider/> + <ItemCarousel items={badges}/> + </StoreSection> + + <StoreSection> + <SectionTitle>Bordas de card</SectionTitle> + <StoreDivider/> + <ItemCarousel items={card_frames}/> + </StoreSection> + + <StoreSection> + <SectionTitle>Bordas de capa de perfil</SectionTitle> + <StoreDivider/> + <ItemCarousel items={cover_frames}/> + </StoreSection> + </Container> + ) +} diff --git a/src/Pages/PageProfessor.js b/src/Pages/PageProfessor.js new file mode 100644 index 0000000000000000000000000000000000000000..8a2783de2e3ce40c466d4747f56d2565bcd3d377 --- /dev/null +++ b/src/Pages/PageProfessor.js @@ -0,0 +1,169 @@ +import React, {useState,useContext} from 'react' +import {Store} from '../Store.js' +import styled from 'styled-components' +import Paper from '@material-ui/core/Paper'; +import PartOne from '../Components/PageProfessorComponents/PartOne.js' +import PartTwo from '../Components/PageProfessorComponents/PartTwo.js' +import PartThree from '../Components/PageProfessorComponents/PartThree.js' +import SuccessfulRequest from '../Components/PageProfessorComponents/SuccessfulRequest.js' +import ModalConfirmarProfessor from '../Components/PageProfessorComponents/ModalConfirmarProfessor.js' +import axios from 'axios' +import {apiUrl} from '../env'; + +export default function PageProfessor (props) { + const {state} = useContext(Store) + const [modalOpen, toggleModal] = useState(false) + const handleModal = () => { + toggleModal(!modalOpen) ; + } + + const redirect = () => { + props.history.push('/termos-publicar-recurso') + } + + const [registerInformation, setRegisterInformation] = useState( + { + teacher_cpf: '', + school_phone: '', + school_name: '', + school_city : '', + school_uf : { + abbreviation : '', + name : '' + }, + inep_code: '' + } + ) + + const [stepper, handleStepper] = useState( + [ {value : '1', selected : true}, {value : '2', selected : false}, {value : '3', selected : false}, {value : '4', selected : false}] + ) + const toggleStepper = (selected1, selected2, selected3, selected4) => { + handleStepper( + [ + {value : '1', selected : selected1}, + {value : '2', selected : selected2}, + {value : '3', selected : selected3}, + {value : '4', selected : selected4} + ] + ) + } + + const handleBuscarParteUm = (ufAbbreviation, ufName, nomeMunicipio, inep) => { + console.log('handleBuscarParteUm: ', ufAbbreviation, ufName, nomeMunicipio, inep) + setRegisterInformation({...registerInformation, + school_uf : { + abbreviation: (ufAbbreviation ? ufAbbreviation : ''), + name : (ufName ? ufName : '') + }, + school_city : (nomeMunicipio ? nomeMunicipio : ''), + inep_code : (inep ? inep : '') + }) + toggleStepper(false, true, false, false) + } + + const handleBuscarParteDois = (city_name, inep, school_name, state_name) => { + const uf_abbreviation = registerInformation.school_uf.abbreviation + const prev_state_name = registerInformation.school_uf.name + const prev_city_name = registerInformation.school_city.name + + setRegisterInformation({...registerInformation, + school_uf : { + abbreviation : uf_abbreviation, + name: (state_name ? state_name : prev_state_name) + }, + school_city :(city_name ? city_name : prev_city_name), + school_name: (school_name ? school_name : ''), + inep_code : (inep ? inep : '') + }) + toggleStepper(false, false, true, false) + } + + const handleParteTres = (phone, cpf) => { + setRegisterInformation({...registerInformation, + teacher_cpf: (phone ? phone : ''), + school_phone: (cpf ? cpf : ''), + }) + handleModal(); + } + + const handleCancelar = () => { + props.history.push('/perfil/atualizacoes') + } + + const handleFinalSubmit = () => { + //adicionar headers de accessToken + axios.post( `${apiUrl}/users/teacher_request`, { + city : registerInformation.school_city.name, + cpf : registerInformation.teacher_cpf, + inep_id : registerInformation.inep_code, + phone : registerInformation.school_phone, + school : registerInformation.school_name, + uf : registerInformation.school_uf.name + }, + { headers : { + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid') + }} + ) + .then( (response) => { + toggleModal() + toggleStepper(false, false, false, true) + }, (error) => console.log('deu erro') + ) + } + + return ( + <> + { + state.userAgreedToPublicationTerms? + ( + [ + <> + <ModalConfirmarProfessor open={modalOpen} handleClose={handleModal} + info={registerInformation} confirmar = {() => {handleFinalSubmit()}} + cancelar = {() => {toggleModal()}} + /> + <div style={{backgroundColor:"#f4f4f4", color:"#666"}}> + <div style={{display: "flex", justifyContent:"center", paddingTop:"5vh", paddingBottom:"5vh"}}> + <Paper elevation={3} style= {{width:"max-content"}}> + <div style={{paddingRight:"15px", paddingLeft:"15px"}}> + {stepper[0].selected && + <PartOne stepper={stepper} handleBuscar={handleBuscarParteUm} + handleCancelar={handleCancelar} + /> + } + {stepper[1].selected && + <PartTwo stepper={stepper} + info={registerInformation} goBack={toggleStepper} + handleCancelar={handleCancelar} handleBuscar={handleBuscarParteDois} + /> + } + {stepper[2].selected && + <PartThree stepper={stepper} goBack={toggleStepper} + handleCancelar={handleCancelar} info={registerInformation} + handleSubmit={handleParteTres} + /> + } + { + stepper[3].selected && + <SuccessfulRequest email={state.currentUser.email}/> + } + </div> + </Paper> + </div> + </div> + </> + ] + ) + : + ( + <> + {redirect()} + </> + ) + } + </> + ) +} diff --git a/src/Pages/PasswordRecoveryPage.js b/src/Pages/PasswordRecoveryPage.js new file mode 100644 index 0000000000000000000000000000000000000000..82038103ec38d07b3cedb99394d567b9f62b2f22 --- /dev/null +++ b/src/Pages/PasswordRecoveryPage.js @@ -0,0 +1,110 @@ +import React, {useState, useContext} from 'react' +import {BackgroundDiv} from '../Components/TabPanels/StyledComponents.js' +import {Link} from 'react-router-dom' +import Paper from '@material-ui/core/Paper'; +import styled from 'styled-components' +import FormInput from "../Components/FormInput.js" +import ValidateUserInput from '../Components/FormValidationFunction.js' +import {CompletarCadastroButton} from '../Components/TabPanels/UserPageTabs/PanelSolicitarContaProfessor.js' +import Default from '../Components/PasswordRecoveryComponents/Default.js' +import Success from '../Components/PasswordRecoveryComponents/Success.js' +import CaseError from '../Components/PasswordRecoveryComponents/Error.js' +import {Store} from '../Store.js' +import CustomizedBreadcrumbs from '../Components/TabPanels/Breadcrumbs.js' +import {apiUrl, apiDomain} from '../env'; +import axios from 'axios' + + +export default function PasswordRecoveryPage (props) { + const {state, dispatch} = useContext(Store) + + const [formEmail, setEmail] = useState( + { + key : false, + value : "" + + } + ) + + const handleChange = (e) => { + const userInput = e.target.value + const flag = ValidateUserInput('email', userInput) + + setEmail({...formEmail, + key : flag, + value : userInput + }) + } + + const [aux, setCase] = useState('default') + const handleChangeSwitch = (value) => { + console.log(value) + if (value !== "success") { + setEmail({key : false, value : ""}) + } + setCase(value) + }; + + const onSubmit = (e) => { + e.stopPropagation() + const payload = { + "email" : formEmail.value, + "redirect_url" : "https://plataformaintegrada.mec.gov.br/recuperar-senha#/alterar-senha" + } + axios.post((`${apiUrl}/auth/password`), payload).then( + (response) => { + console.log(response) + handleChangeSwitch(response.data.success ? "success" : "error") + }, + (error) => {console.log(error)}) + } + + + const components = { + default : <Default handleChange={handleChange} onSubmit={onSubmit} value={formEmail.value} error={formEmail.key}/>, + success : <Success email={formEmail.value} changeSwitch={handleChangeSwitch}/>, + error : <CaseError handleChange={handleChange} onSubmit={onSubmit} value={formEmail.value} error={formEmail.key}/> + } + + const switchFunction = (value) => { + switch(value) { + case 'success': + return components.success; + break; + case 'error': + return components.error; + break; + default: + return components.default + break; + + } + } + + return ( + <> + <BackgroundDiv> + <div style={{minWidth:"1170px"}}> + <CustomizedBreadcrumbs + values={["Recuperar senha"]} + /> + </div> + + <div style={{justifyContent:"center", textAlign:"center", maxWidth:"600px", margin:"auto"}}> + <Paper elevation={3}> + <CardDiv> + {switchFunction(aux)} + </CardDiv> + </Paper> + </div> + </BackgroundDiv> + </> + ) +} + +const CardDiv = styled.div` + background-color : #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding : 30px 60px; + margin : 50px 0; +` diff --git a/src/Pages/PublicUserPage.js b/src/Pages/PublicUserPage.js new file mode 100644 index 0000000000000000000000000000000000000000..2c38097a295c96674ee4935aa944af8a223181c7 --- /dev/null +++ b/src/Pages/PublicUserPage.js @@ -0,0 +1,249 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useEffect, useState} from 'react' +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl, apiDomain} from '../env'; +import CustomizedBreadcrumbs from '../Components/TabPanels/Breadcrumbs.js' +import {Link} from 'react-router-dom'; +import Grid from '@material-ui/core/Grid'; +import FollowButton from '../Components/ContactButtons/FollowButton.js' +import FollowingButton from '../Components/ContactButtons/FollowingButton.js' +import FollowersCountButton from '../Components/ContactButtons/FollowersCountButton.js' +import noAvatar from "../img/default_profile.png"; +import Button from '@material-ui/core/Button'; +import Tab from '@material-ui/core/Tab'; +import Tabs from '@material-ui/core/Tabs'; +import TabInicio from '../Components/TabPanels/PublicUserPageTabs/TabInicio.js' +import TabRecursos from '../Components/TabPanels/PublicUserPageTabs/TabRecursos.js' +import TabColecoes from '../Components/TabPanels/PublicUserPageTabs/TabColecoes.js' +import TabRede from '../Components/TabPanels/PublicUserPageTabs/TabRede.js' +import CheckDecagram from '../img/check-decagram-blue.svg' +import ReportButton from '../Components/ReportButton.js' +import {HeaderContainer, UserProfileContainer, CoverContainer, UserProfileInfoDiv, StyledTabs, CheckTeacherDiv, RodapeDiv, NavBarContentContainer, BackgroundDiv} from '../Components/TabPanels/StyledComponents.js' + +const RenderFollowContainer = (boolUserFollowed, id, followCount) => { + return ( + <FollowContainer> + <> + { + boolUserFollowed ? + ( + [ + <FollowingButton followedID={id}/> + ] + ) + : + ( + [ + <FollowButton followerID={id}/> + ] + ) + } + <FollowersCountButton followCount={followCount}/> + </> + </FollowContainer> + ) +} + +const RenderProfileAvatar = (userAvatar) => { + return ( + <ProfileAvatarDiv> + <img src={userAvatar ? apiDomain + userAvatar : noAvatar} alt = "user avatar" style={{height : "inherit", width : "inherit", border:"0", verticalAlign:"middle"}}/> + </ProfileAvatarDiv> + ) +} + +const RenderUserProfileInfo = (userName) => { + return ( + <UserProfileInfoDiv> + <p + style={{fontSize:"28px", color:"#fff", marginBottom : "2px", fontWeight:"500", borderRadius : "5px", textShadow : "0 1px 2px rgba(0,0,0,.45)"}} + > + {userName} + </p> + </UserProfileInfoDiv> + ) +} + +const RenderCheckTeacher = (submitter_request) => { + if (submitter_request === "accepted") { + return ( + <CheckTeacherDiv> + <p> + <span> + <img src={CheckDecagram}/> + </span> + Professor(a) + </p> + </CheckTeacherDiv> + ) + } +} + +export default function PublicUserPage (props) { + /*user info variables--------------------------------------*/ + const id = props.match.params.userId + const [userData, setUserData] = useState({}) + const fillUserInfo = (data) => { + setUserData(data) + } + /*---------------------------------------------------------*/ + + /*content control variables--------------------------------*/ + const [tabs, setTabs] = useState([ + 'InÃcio', 'Recursos', 'Coleções', 'Rede' + ]) + const [tabValue, setTabValue] = useState(0); + const handleChangeTab = (event, newValue) => { + setTabValue(newValue) + } + /*---------------------------------------------------------*/ + + /*content variables--------------------------------*/ + const [learningObjArr, setLearningObjects] = useState([]) + const handleLearningObjects = (data) => {setLearningObjects(data)} + const [collectionsArr, setCollections] = useState([]) + const handleCollections = (data) => {setCollections(data)} + /*---------------------------------------------------------*/ + + + /*Component Will Mount*/ + useEffect( () => { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + axios.all([ + axios.get( (`${apiUrl}/users/` + id ), config ), + axios.get( (`${apiUrl}/users/` + id + '/learning_objects'), {'Accept': 'application/json','Content-Type':'application/json'}), + axios.get( (`${apiUrl}/users/` + id + '/collections'), {'Accept': 'application/json','Content-Type':'application/json'}) + ]) + .then( (responseArr) => { + + console.log(responseArr) + fillUserInfo(responseArr[0].data) + + console.log(responseArr[1]) + handleLearningObjects(responseArr[1].data) + + console.log(responseArr[2]) + handleCollections(responseArr[2].data) + }, + (error) => { + console.log('error while running ComponentDidMout') + } + ) + }, []) + /*---------------------------------------------------------*/ + + return ( + <React.Fragment> + <link href="https://fonts.googleapis.com/css?family=Roboto:100,400,500&display=swap" rel="stylesheet"/> + <BackgroundDiv> + <CustomizedBreadcrumbs + values={["Usuário Público", tabs[tabValue]]} + /> + <Grid container spacing={2}> + <Grid item xs={12}> + <div style={{padding : "10px 0 8px 0"}}> + <UserProfileContainer> + <HeaderContainer> + <> + {RenderFollowContainer(userData.followed, id, userData.follows_count)} + {RenderProfileAvatar(userData.avatar ? userData.avatar : noAvatar)} + <CoverContainer> + {userData.cover && <img src={apiDomain + userData.cover} alt = '' style= {{width:"100%", height:"100%", objectFit : "cover" }}/>} + </CoverContainer> + {RenderUserProfileInfo(userData.name)} + </> + </HeaderContainer> + {RenderCheckTeacher(userData.submitter_request)} + <RodapeDiv> + <NavBarContentContainer> + <StyledTabs + value ={tabValue} + onChange ={handleChangeTab} + indicatorColor ="primary" + textColor ="primary" + variant = "fullwidth" + scrollButtons = "desktop" + TabIndicatorProps={{style : {background:"#00bcd4"}}} + > + { + tabs.map( (tab) => + <Tab label={tab} key={tab} + disabled={tab === "Recursos" && learningObjArr.length === 0 || tab === "Coleções" && collectionsArr.length === 0} + /> + ) + } + </StyledTabs> + </NavBarContentContainer> + <ReportButton className="report-button" complainableId={userData.id} complainableType={"User"}/> + </RodapeDiv> + </UserProfileContainer> + </div> + </Grid> + + <Grid item xs={12}> + {tabValue === 0 && + <TabInicio id={id} user={userData} learningObjs={learningObjArr} collections={collectionsArr}/>} + {tabValue === 1 && + <TabRecursos count={userData.learning_objects_count} learningObjs={learningObjArr}/>} + {tabValue === 2 && + <TabColecoes count={userData.collections_count} collections={collectionsArr} + />} + {tabValue === 3 && + <TabRede id={id} username={userData.name}/>} + + </Grid> + </Grid> + </BackgroundDiv> + </React.Fragment> + ) +} + + +const ProfileAvatarDiv = styled.div` + overflow : hidden; + border-radius : 100%; + bottom : -10px; + left : 20px; + z-index : 10; + box-sizing : content-box; + position : absolute; + width : 150px; + height : 150px; + border : 8px solid #fff; + outline : 0; + background-color : #fff; +` + + +const FollowContainer = styled.div` + padding : 4px 10px; + right : 0; + position : absolute; + z-index : 1; +` diff --git a/src/Pages/PublicationPermissionsPage.js b/src/Pages/PublicationPermissionsPage.js index 3dd4036cc1786176d9d3bfb0eb71722caab1281b..0c113cd2845698182acdc1ffde54c5bca393b889 100644 --- a/src/Pages/PublicationPermissionsPage.js +++ b/src/Pages/PublicationPermissionsPage.js @@ -15,142 +15,187 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {useState, useContext} from 'react'; -import Card from '@material-ui/core/Card'; -import CardActions from '@material-ui/core/CardActions'; -import { Button } from '@material-ui/core'; -import LabeledCheckbox from "../Components/Checkbox.js" -import styled from 'styled-components' -import {device} from '../Components/device.js' -import { Store } from '../Store.js'; -import IllegalContentModal from '../Components/IllegalContentModal.js' -import PublicationPermissionsContent from '../Components/PublicationPermissionsContent.js' +import React, { useState, useContext } from "react"; +import Card from "@material-ui/core/Card"; +import CardActions from "@material-ui/core/CardActions"; +import { Button } from "@material-ui/core"; +import LabeledCheckbox from "../Components/Checkbox.js"; +import styled from "styled-components"; +import { device } from "../Components/device.js"; +import { Store } from "../Store.js"; +import IllegalContentModal from "../Components/IllegalContentModal.js"; +import PublicationPermissionsContent from "../Components/PublicationPermissionsContent.js"; const CardStyled = styled(Card)` - box-sizing : border-box; - background-color : white; - max-width: 1700px; - padding-top: 52px; - margin-left:7em; - @media ${device.mobileM} { - width : 100%; - height : 100%; - } - ` + box-sizing: border-box; + background-color: white; + max-width: 1700px; + padding-top: 52px; + @media ${device.mobileM} { + width: 100%; + height: 100%; + } +`; const Styledspan = styled.span` - font-family: 'Roboto', sans serif; - font-style: normal; - font-weight: 500; - line-height: 22px; - font-size: 15px; - letter-spacing: .01em; -` - -const Styledhr = styled.hr` - color: #dadada; -` - -export default function PermissionsContainer (props) { - const {state, dispatch} = useContext(Store) - const [unavailableCheckbox, setCheckboxAvailability] = useState(true); - const [unavailableButton, setButtonAvailability] = useState(true); - const [radios, setRadioValues] = useState({ - radio1 : '', - radio2 : '' , - radio3 : '' - } - ) - const [modalOpen, setModalOpen] = useState(false) - - const closeModal = () => { - setModalOpen(false) - props.history.push('/termos-publicar-recurso') - window.scrollTo(0, 0) - } - - const handleChecked = e => { - setButtonAvailability(!unavailableButton); - } - - const handleRadios = (e) => { - let temp = radios - temp[e.target.name] = e.target.value - - setRadioValues(temp) - - - setCheckboxAvailability(!(radios.radio1 && radios.radio2 && radios.radio3)) - - } - - const handleAgreement = () => { - - if(radios.radio1 == 'Sim' || radios.radio2 == 'Sim' || radios.radio3 == 'Sim'){ - setModalOpen(true) + font-family: "Roboto", sans serif; + font-style: normal; + font-weight: 500; + line-height: 22px; + font-size: 15px; + letter-spacing: 0.01em; +`; + +const Background = styled.div` + padding-top : 40px; + background-color : #f4f4f4; + color : #666; + padding-bottom : 40px; + + .container { + padding : 0; + margin-right : auto; + margin-left : auto; + + @media screen and (min-width: 768px) { + width : 750px; } - else{ - dispatch( { - type: 'USER_AGREED_TO_PUBLICATION_PERMISSIONS', - userAgreement: true - }) - - props.history.push('/upload') + @media screen and (min-width: 992px) { + width : 970px; + } + @media screen and (min-width: 1200px) { + width : 1170px; } } +` - const redirect = () => { - props.history.push('/termos-publicar-recurso') +export default function PermissionsContainer(props) { + const { state, dispatch } = useContext(Store); + const [unavailableCheckbox, setCheckboxAvailability] = useState(true); + const [unavailableButton, setButtonAvailability] = useState(true); + const [radios, setRadioValues] = useState({ + radio1: "", + radio2: "", + radio3: "" + }); + const [modalOpen, setModalOpen] = useState(false); + + const closeModal = () => { + setModalOpen(false); + props.history.push("/termos-publicar-recurso"); + window.scrollTo(0, 0); + }; + + const handleChecked = e => { + setButtonAvailability(!unavailableButton); + }; + + const handleRadios = e => { + let temp = radios; + temp[e.target.name] = e.target.value; + + setRadioValues(temp); + + setCheckboxAvailability(!(radios.radio1 && radios.radio2 && radios.radio3)); + }; + + const handleAgreement = () => { + if ( + radios.radio1 === "Sim" || + radios.radio2 === "Sim" || + radios.radio3 === "Sim" + ) { + setModalOpen(true); + } else { + dispatch({ + type: "USER_AGREED_TO_PUBLICATION_PERMISSIONS", + userAgreement: true + }); + + props.history.push("/upload"); } - - return ( - <> - { - state.userAgreedToPublicationTerms ? - ( - [ - <> - <IllegalContentModal open={modalOpen} handleClose={closeModal} disableBackdropClick={true}/> - <div style={{paddingTop:"5vh", paddingBottom:"5vh", backgroundColor :"#f4f4f4"}}> - <div style={{}}> + }; + + const redirect = () => { + props.history.push("/termos-publicar-recurso"); + }; + + return ( + <> + {state.userAgreedToPublicationTerms ? ( + [ + <> + <IllegalContentModal + open={modalOpen} + handleClose={closeModal} + disableBackdropClick={true} + /> + <Background + > + <div className="container"> <CardStyled variant="outlined"> - <PublicationPermissionsContent handleRadios={handleRadios} /> - <Styledhr/> - <CardActions style={{justifyContent:"center", padding:"25px"}}> - <div> - <div style={{fontSize:"14px"}}> - <LabeledCheckbox disabledCheckbox = {unavailableCheckbox} - label={<Styledspan>Li e permito a publicação do meu recurso na Plataforma Integrada de RED do MEC, assim como atesto que o meu recurso atende aos critérios especificados acima.</Styledspan>} - handleChange={handleChecked} - /> - <div style={{justifyContent:"center",display:"flex"}}> - <Button disabled={unavailableButton} - style={unavailableButton ? {backgroundColor:"#e9e9e9"} : {backgroundColor:"#00bcd4"}} - onClick={handleAgreement} - > - <Styledspan style = {unavailableButton ? {color:"#666666"} : {color:"#ffffff"}}>Continuar </Styledspan> - </Button> - <Button style={{marginLeft:"45px", backgroundColor:"#e9e9e9"}}> - <Styledspan style={{color:"rgb(102, 102, 102)"}}>Cancelar</Styledspan> - </Button> - </div> - </div> + <PublicationPermissionsContent handleRadios={handleRadios} /> + <CardActions + style={{ justifyContent: "center", padding: "25px", borderTop : "2px solide #dadada" }} + > + <div> + <div style={{ fontSize: "14px" }}> + <LabeledCheckbox + disabledCheckbox={unavailableCheckbox} + label={ + <Styledspan> + Li e permito a publicação do meu recurso na + Plataforma Integrada de RED do MEC, assim como + atesto que o meu recurso atende aos critérios + especificados acima. + </Styledspan> + } + handleChange={handleChecked} + /> + <div + style={{ justifyContent: "center", display: "flex" }} + > + <Button + disabled={unavailableButton} + style={ + unavailableButton + ? { backgroundColor: "#e9e9e9" } + : { backgroundColor: "#00bcd4" } + } + onClick={handleAgreement} + > + <Styledspan + style={ + unavailableButton + ? { color: "#666666", fontWeight : "600" } + : { color: "#ffffff", fontWeight : "600" } + } + > + Continuar{" "} + </Styledspan> + </Button> + <Button + style={{ + marginLeft: "45px", + backgroundColor: "#e9e9e9", + }} + > + <Styledspan style={{ color: "rgb(102, 102, 102)" , fontWeight : "600 !important"}}> + Cancelar + </Styledspan> + </Button> </div> - </CardActions> + </div> + </div> + </CardActions> </CardStyled> - </div> - </div> - </> - ] - ) - : - ( - <> - {redirect()} - </> - ) - } - </> - - ) + </div> + </Background> + </> + ] + ) : ( + <>{redirect()}</> + )} + </> + ); } diff --git a/src/Pages/ResourcePage.js b/src/Pages/ResourcePage.js index 53569b8c10016a945537bfbfb5053fa31c7420cd..9ed188d5fd6539de5da9d98253e1921c5f91a3b2 100644 --- a/src/Pages/ResourcePage.js +++ b/src/Pages/ResourcePage.js @@ -16,16 +16,341 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {Component} from 'react'; -import AboutResource from '../Components/AboutResource' +import React, {useEffect, useState, useContext} from 'react' +import {Store} from '../Store.js' +import styled from 'styled-components' +import axios from 'axios' +import {apiUrl, apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import TextoObjeto from '../Components/ResourcePageComponents/TextoObjeto.js' +import Footer from '../Components/ResourcePageComponents/Footer.js' +import Sobre from '../Components/ResourcePageComponents/Sobre.js' +import CommentsArea from '../Components/ResourcePageComponents/CommentsArea.js' +import noAvatar from "../img/default_profile.png"; +import Snackbar from '@material-ui/core/Snackbar'; +import Alert from '../Components/Alert.js'; +import VideoPlayer from '../Components/ResourcePageComponents/VideoPlayer.js' +import LoadingSpinner from '../Components/LoadingSpinner.js' +import { makeStyles } from '@material-ui/core/styles'; +import AppBar from '@material-ui/core/AppBar'; +import ButtonAvaliarRecurso from '../Components/ButtonAvaliarRecurso' +import ModalAvaliarRecurso from '../Components/ModalAvaliarRecurso' +import ModalConfirmarCuradoria from '../Components/ModalConfirmarCuradoria' +import {getAxiosConfig} from '../Components/HelperFunctions/getAxiosConfig' -class ResourcePage extends Component { +function urlVerify (url) { + return (url ? url.indexOf("youtu") !== -1 || url.indexOf("vimeo") !== -1 : false) +} - render() { - return ( - <AboutResource/> - ); +export default function LearningObjectPage (props){ + const {state} = useContext(Store) + const id = props.match.params.recursoId + const [carregando, toggle] = useState(true) + const [recurso, setRecurso] = useState({}) + + useEffect( () => { + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + } + } + if (state.currentUser.id !== "") { + config.headers["Access-Token"] = sessionStorage.getItem('@portalmec/accessToken'); + config.headers.Client = sessionStorage.getItem('@portalmec/clientToken') + config.headers.Uid = sessionStorage.getItem('@portalmec/uid') + } + + axios.get( (`${apiUrl}/learning_objects/` + id), config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + setRecurso(response.data) + toggle(false) + }, (error) => {console.log(error);}) + }, [, state.currentUser]) + + + const [snackbarOpen, toggleSnackbar] = useState(false) + const handleSnackbar = (index) => {setIndex(index); toggleSnackbar(true)} + const snackbarText = [ + "Baixando o Recurso... Lembre-se de relatar sua experiência após o uso do Recurso!", + "Seu comentário foi publicado com sucesso!", + "Comentário editado com sucesso.", + "Comentário deletado com sucesso.", + "O Recurso foi guardado na coleção!" + ] + const [snackbarIndex, setIndex] = useState(0) + const classes = useStyles() + const [modalCuradoriaOpen, toggleModalCuradoria] = useState(false) + const handleModalCuradoria = (value) => {toggleModalCuradoria(value)} + + const checkAccessLevel = (levelToCheck) => { + if (state.currentUser.id != '') { + return(checkUserRole(levelToCheck)) + } + else { + return(false) + } + } + + const checkUserRole = (userRole) => { + return(state.currentUser.roles.filter((role) => role.name === userRole).length > 0) + } + + const [modalConfirmarCuradoriaOpen, toggleModalConfirmarCuradoria] = useState(false) + const handleModalConfirmarCuradoria = (value) => {toggleModalConfirmarCuradoria(value)} + const [reportCriteria, setReportCriteria] = useState([]) + const [justificativa, setJustificativa] = useState('') + const [submissionAccepted, setSubmissionAccepted] = useState('') + + const handleConfirm = (criteria, justification, accepted) => { + console.log('criteria: ', criteria) + console.log('justification: ', justification) + setReportCriteria(criteria) + setJustificativa(justification) + setSubmissionAccepted(accepted) + handleModalCuradoria(false) + handleModalConfirmarCuradoria(true) } - } -export default ResourcePage; + const finalizeCuratorshipFlow = () => { + handleModalConfirmarCuradoria(false) + let config = getAxiosConfig() + axios.get( (`${apiUrl}/learning_objects/` + id), config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + console.log(response) + setRecurso(response.data) + }, (error) => {console.log(error);}) + } + + return ( + <React.Fragment> + <Snackbar open={snackbarOpen} autoHideDuration={1000} onClose={toggleSnackbar} + anchorOrigin = {{ vertical:'top', horizontal:'right' }} + > + <Alert severity="info" style={{backgroundColor:"#00acc1"}}> + {snackbarText[snackbarIndex]} + </Alert> + </Snackbar> + + <ModalAvaliarRecurso open={modalCuradoriaOpen} handleClose={() => {handleModalCuradoria(false)}} + title={recurso.name} confirm={handleConfirm} setCriteria={setReportCriteria} + /> + <ModalConfirmarCuradoria aceito={submissionAccepted} reportCriteria={reportCriteria} justificativa={justificativa} open={modalConfirmarCuradoriaOpen} handleClose={() => {handleModalConfirmarCuradoria(false)}} cancel={() => {handleModalCuradoria(true)}} recursoId={id} + finalizeCuratorshipFlow={finalizeCuratorshipFlow} + /> + <Background> + { + carregando ? + ( + <LoadingSpinner text={"Carregando Recurso"}/> + ) + : + ( + <> + <Grid container spacing={2}> + { + recurso.object_type === "VÃdeo" && + !recurso.link ? + ( + <Grid item xs={12}><Card> + <VideoPlayer + link={recurso.link} + urlVerified={false} + videoUrl = {recurso.default_attachment_location} + /> + </Card></Grid> + + ) + : + ( + urlVerify(recurso.link) && + <Grid item xs={12}><Card> + <VideoPlayer + link={recurso.link} + urlVerified={true} + /> + </Card></Grid> + ) + } + + + <Grid item xs={12}> + <Card> + <div> + {recurso.thumbnail && + <img src={apiDomain + recurso.thumbnail}/> + } + + + + + <TextoObjeto + name={recurso.name} + rating={recurso.review_average} + recursoId={id} + likesCount={recurso.likes_count} + likedBool={recurso.liked} + objType={recurso.object_type} + subjects={recurso.subjects} + educationalStages={recurso.educational_stages} + viewCount={recurso.views_count} + downloadCount={recurso.downloads_count} + id={recurso.publisher ? recurso.publisher.id : undefined} + stateRecurso={recurso.state} + attachments={recurso.attachments} + audioUrl={recurso.default_attachment_location} + /> + </div> + + + <Footer + recursoId={id} + downloadableLink = {recurso.default_attachment_location} + handleSnackbar={handleSnackbar} + link={recurso.link} + title={recurso.name} + thumb={recurso.thumbnail} + currPageLink={window.location.href} + handleSnackbar={handleSnackbar} + complained={recurso.complained} + /> + </Card> + </Grid> + + <Grid item xs={12}> + <Card> + {/*todo: change render method on additional item info*/} + <Sobre + avatar={recurso.publisher ? (recurso.publisher.avatar ? (apiDomain + recurso.publisher.avatar) : noAvatar) : noAvatar} + publisher={recurso.publisher ? recurso.publisher.name : undefined} + id={recurso.publisher ? recurso.publisher.id : undefined} + description={recurso.description} + author={recurso.author} + tags={recurso.tags} + attachments={recurso.attachments} + language={recurso.language} + mimeType={recurso.default_mime_type} + createdAt={recurso.created_at} + updatedAt={recurso.updated_at} + license={recurso.license} + /> + </Card> + </Grid> + + { + recurso.state !== "submitted" && + <Grid item xs={12}> + <Card> + {/*adicionar funcionalidade ao botao de entrar*/} + <CommentsArea + recursoId = {id} + handleSnackbar={handleSnackbar} + objType={recurso.object_type} + recurso={true} + /> + </Card> + </Grid> + } + </Grid> + + { + recurso.state === 'submitted' && checkAccessLevel('curator') && + <AppBar position="fixed" color="primary" className={classes.appBar}> + <StyledAppBarContainer> + <div className="container"> + <div className="botoes"> + <ButtonAvaliarRecurso callback={() => {handleModalCuradoria(true)}}/> + </div> + </div> + </StyledAppBarContainer> + </AppBar> + } + </> + ) + } + + </Background> + </React.Fragment> + ) +} + +const useStyles = makeStyles((theme) => ({ + appBar: { + top: 'auto', + bottom: 0, + height : '100px', + backgroundColor : '#fff', + boxShadow : '0 1px 3px rgba(0,0,0,.52),0 1px 2px rgba(0,0,0,.24)' + }, +})); + +const StyledAppBarContainer = styled.div` + .container { + display : flex; + flex-direction : row; + justify-content : flex-start + margin-right : auto; + margin-left : auto; + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } + + .botoes { + margin-top : 2em; + display : flex; + align-items : center; + } + } +` + +const Background = styled.div` + background-color : #f4f4f4; + color : #666; + font-family : 'Roboto', sans serif; + padding-top : 30px; +` + +const Card = styled.div` + background-color : #fff; + box-shadow : 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + margin-bottom : 30px; + margin-right : auto; + margin-left : auto; + display : flex; + flex-direction : column; + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + } + + img { + background-color : #e5e5e5; + height : 270px; + width : 400px; + float : left; + padding : 0; + object-fit : cover; + @media screen and (max-width: 768px) { + height : auto; + width : 100%; + } + } +` diff --git a/src/Pages/Search.js b/src/Pages/Search.js index e514d0e5dc4a2be864a773f0e4c456e082b907f2..50234337bc6dc86c83545d9722f6febe3982c706 100644 --- a/src/Pages/Search.js +++ b/src/Pages/Search.js @@ -16,79 +16,259 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, { useEffect, useState, useContext } from 'react'; -import axios from 'axios'; +import React, { useEffect, useState, useContext } from "react"; +import axios from "axios"; +import { Link } from "react-router-dom"; +import styled from "styled-components"; +import Paper from "@material-ui/core/Paper"; // import ResourceCard from '../Components/ResourceCard' // import CollectionCard from '../Components/CollectionCard' // import UserCard from '../Components/UserCard' +import Breadcrumbs from "@material-ui/core/Breadcrumbs"; +import { apiUrl } from "../env"; +import "./Styles/Home.css"; +import { Store } from "../Store"; +import { Grid } from "@material-ui/core"; +import Dropdown from 'react-dropdown' +import 'react-dropdown/style.css' +import SearchExpansionPanel from "../Components/SearchExpansionPanel/SearchExpansionPanel"; +import ResourceCard from "../Components/ResourceCard"; -import {apiUrl} from '../env'; -import './Styles/Home.css'; -import { Store } from '../Store'; +export default function Search(props) { + const { state, dispatch } = useContext(Store); + const [results, setResults] = useState([]); + const [page] = useState(0); + const [resultsPerPage, setResultsPerPage] = useState(12); + const [order] = useState("score"); + const options = [ + + {value:"LearningObject", label:"Recursos"}, + {value:"Collection", label:"Coleções"}, + {value:"User", label:"Usuários"} + + ]; + const ordenar = [ + {label:"Mais Estrelas"}, + {label:"Mais Relevante"}, + {label:"Mais Baixados"}, + {label:"Mais Favoritados"}, + {label:"Mais Recentes"}, + {label:"Ordem Alfabética"}, + ]; -export default function Search(props){ + const [defaultOption,setDefaultOption] =useState( options[0]); + const [defaultOrder,setDefaultOrder] =useState( ordenar[0]); - const { state, dispatch } = useContext(Store) - const [ results, setResults ] = useState([]) - const [ page, ] = useState(0) - const [ resultsPerPage, ] = useState(12) - const [ order, ] = useState('score') + const collectStuff = (tipoBusca=state.search.class,option=undefined) => { + + axios + .get( + `${apiUrl}/search?page=${page}&results_per_page=${resultsPerPage}&order=${order}&query=${state.search.query}&search_class=${tipoBusca}` + ) + .then(res => { + setResults(res.data); + if (option != undefined) { + let aux = undefined; + for (let i=0; i < options.length;i=i+1){ - useEffect(()=>{ - dispatch({ - type: 'HANDLE_SEARCH_BAR', - opened: true - }) + console.log("Vamo dale0") + if (options[i].label==option){ + console.log("Vamo dale") + setDefaultOption(options[i]); + + } + } + + } + console.log(res.data); + console.log(tipoBusca); + })}; - const urlParams = new URLSearchParams(window.location.search) - const query = urlParams.get('query') - const searchClass = urlParams.get('search_class') + useEffect(() => { + dispatch({ + type: "HANDLE_SEARCH_BAR", + opened: false + }); - if(state.search.query !== query || state.search.class !== searchClass){ + const urlParams = new URLSearchParams(window.location.search); + const query = urlParams.get("query"); + const searchClass = urlParams.get("search_class"); + console.log(searchClass); + if (state.search.query !== query || state.search.class !== searchClass) { dispatch({ - type: 'SAVE_SEARCH', + type: "SAVE_SEARCH", newSearch: { query: query, class: searchClass } - }) + }); } - return () => dispatch({ - type: 'HANDLE_SEARCH_BAR', - opened: false - }) - },[]) - - useEffect(()=>{ - axios.get(`${apiUrl}/search?page=${page}&results_per_page=${resultsPerPage}&order=${order}&query=${state.search.query}&search_class=${state.search.class}`) - .then( res => { - setResults(res.data) - }) + return () => + dispatch({ + type: "HANDLE_SEARCH_BAR", + opened: false + }); + }, []); - },[state.search]) + + useEffect(() => { + collectStuff(); + }, [state.search, resultsPerPage]); + + return ( - <React.Fragment> - <h1>Search for {state.search.query!=='*'?state.search.query:'all'} in {state.search.class}</h1> - { - state.search.class === 'LearningObject' && - <ul> - {results.map((res)=><li key={res.id}> {res.name} </li>)} - </ul> - } - {state.search.class === 'Collection' && - <ul> - {results.map((res)=><li key={res.id}> {res.name} </li>)} - </ul> - } - {state.search.class === 'User' && - <ul> - {results.map((res)=><li key={res.id}> {res.name} </li>)} - </ul> - } - </React.Fragment> - ) + <div style={{ backgroundColor: "#f4f4f4" }}> + <React.Fragment> + <h1> + Search for {state.search.query !== "*" ? state.search.query : "all"}{" "} + in {state.search.class} + </h1> + {state.search.class === "LearningObject" && ( + <ul> + {results.map(res => ( + <li key={res.id}> {res.name} </li> + ))} + </ul> + )} + {state.search.class === "Collection" && ( + <ul> + {results.map(res => ( + <li key={res.id}> {res.name} </li> + ))} + </ul> + )} + {state.search.class === "User" && ( + <ul> + {results.map(res => ( + <li key={res.id}> {res.name} </li> + ))} + </ul> + )} + </React.Fragment> + + <Principal> + <BreadCrumbsDiv> + <StyledBreadCrumbs> + <Link to="/">Página Inicial</Link> + <span>Busca</span> + </StyledBreadCrumbs> + </BreadCrumbsDiv> + <HeaderFilters elevation={4} square> + <Grid container spacing={0} style={{ height: "100%" }}> + <Grid + item + xs={4} + style={{ + display: "flex", + flexDirection: "column", + justifyContent: "center" + }} + > + <div style={{display:"flex",flexDirection:"row"}}> + <div style={{ textAlign: "left" }}>Mostrar</div> + <Dropdown options={options} onChange={()=>{collectStuff(options.value,options.label )}} value={defaultOption} placeholder="Select an option" /> + + </div> + </Grid> + <Grid + item + xs={4} + style={{ + display: "flex", + flexDirection: "column", + justifyContent: "center" + }} + > + <div>Numero</div> + </Grid> + <Grid + item + xs={4} + style={{ + display: "flex", + flexDirection: "column", + justifyContent: "center" + }} + > + <div style={{ textAlign: "right" }}>Ordenar por:</div> + <Dropdown options={ordenar} onChange={()=>{collectStuff(ordenar.label )}} value={defaultOrder} placeholder="Select an order "/> + </Grid> + </Grid> + </HeaderFilters> + <GridBusca container spacing={2}> + <Grid item md={3} xs={12}> + <Paper elevation={4} square> + <SearchExpansionPanel /> + </Paper> + </Grid> + <Grid item md={9} xs={12}> + <Grid container spacing={2}> + {results.map(card => ( + <Grid item md={4} xs={6} key={card.id}> + <ResourceCard + name={card.name} + rating={card.score} + type={card.object_type} + description={card.description} + thumbnail={card.thumbnail} + author={card.author} + avatar={card.publisher.avatar} + /> + </Grid> + ))} + </Grid> + <button onClick={() => setResultsPerPage(resultsPerPage + 12)}> + Número de recursos mostrados {resultsPerPage} + </button> + </Grid> + </GridBusca> + </Principal> + </div> + ); } + +const GridBusca = styled(Grid)` + color: #666; + + h4 { + padding: 0 15px; + font-size: 18px; + margin-block: 10px; + text-transform: uppercase; + } +`; + +const HeaderFilters = styled(Paper)` + height: 60px; + text-align: center; + background-color: #fff; + margin-bottom: 30px; + color: #666; +`; + +const StyledBreadCrumbs = styled(Breadcrumbs)` + display: flex; + justify-content: flex-start; + max-width: 1170px; + span { + color: #a5a5a5; + } + a { + color: #00bcd4; + text-decoration: none; + } +`; + +const BreadCrumbsDiv = styled.div` + padding: 10px; + display: flex; +`; + +const Principal = styled.div` + width: 1170px; + margin-inline: auto; +`; diff --git a/src/Pages/TabsHelp/TabManageAc.js b/src/Pages/TabsHelp/TabManageAc.js new file mode 100644 index 0000000000000000000000000000000000000000..6caf56bae22264e70fb5aa0152502ccdc9fa370c --- /dev/null +++ b/src/Pages/TabsHelp/TabManageAc.js @@ -0,0 +1,274 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from "react"; +import styled from "styled-components"; +import Tabs from "@material-ui/core/Tabs"; +import Tab from "@material-ui/core/Tab"; +import Breadcrumbs from "@material-ui/core/Breadcrumbs"; +import Grid from "@material-ui/core/Grid"; +import GerenciandoConta from "../../img/ajuda/Gerenciando_a_conta.png"; +import Why from "../../Components/HelpCenter/TabsManageAc/Why"; +import HowToDo from "../../Components/HelpCenter/TabsManageAc/HowToDo"; +import HowToChange from "../../Components/HelpCenter/TabsManageAc/HowToChange"; +import HowToAccess from "../../Components/HelpCenter/TabsManageAc/HowToAccess"; +import Forget from "../../Components/HelpCenter/TabsManageAc/Forget"; +import CardParticipando from "../../Components/HelpCenter/Cards/CardParticipando"; +import CardEncontrando from "../../Components/HelpCenter/Cards/CardEncontrando"; +import CardPublicando from "../../Components/HelpCenter/Cards/CardPublicando"; +import { Link } from "react-router-dom"; + +export default function TabManageAc(props) { + const tabs = [ + "Por que me cadastrar?", + "Como fazer meu cadastro?", + "Como alterar minha senha?", + "Como acessar a conta?", + "Esqueci minha senha. O que fazer?", + "Gerenciando a Conta" + ]; + + const [tabValue, setTabValue] = useState( + Number(props.location.state.value) || 0 + ); + + const handleChangeTab = (e, newValue) => { + setTabValue(newValue); + }; + + return ( + <div style={{ backgroundColor: "#f4f4f4" }}> + <link + href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:500,400&display=swap" + rel="stylesheet" + /> + + <Secao> + <BreadCrumbsDiv> + <StyledBreadCrumbs> + <Link to="/">Página Inicial</Link> + <Link to="ajuda">Ajuda</Link> + + <span>{tabs[5]}</span> + </StyledBreadCrumbs> + </BreadCrumbsDiv> + <Grid container spacing={4}> + <Grid item xs={3}> + <Menu> + <h4>{tabs[5]}</h4> + <TabsStyled + orientation="vertical" + variant="scrollable" + value={tabValue} + onChange={handleChangeTab} + TabIndicatorProps={{ style: { display: "none" } }} + > + <TabStyled label={tabs[0]}></TabStyled> + <TabStyled label={tabs[1]}></TabStyled> + <TabStyled label={tabs[2]}></TabStyled> + <TabStyled label={tabs[3]}></TabStyled> + <TabStyled label={tabs[4]}></TabStyled> + </TabsStyled> + <br /> + <div className="voltarInicio"> + <a href="ajuda">VOLTAR AO ÃNICIO</a> + </div> + <hr /> + <div className="procurava"> + Não encontrou o que procurava? Entre em + <a href="contato"> contato</a> + </div> + </Menu> + </Grid> + + <Grid item xs={9}> + <Principal> + <div className="fixo"> + <img src={GerenciandoConta} alt="Gerenciando a conta" /> + <span>{tabs[5]}</span> + </div> + {tabValue === 0 && <Why title={tabs[0]} />} + {tabValue === 1 && <HowToDo title={tabs[1]} />} + {tabValue === 2 && <HowToChange title={tabs[2]} />} + {tabValue === 3 && <HowToAccess title={tabs[3]} />} + {tabValue === 4 && <Forget title={tabs[4]} />} + <div className="resultadosProcura"> + <span>Não era bem o que você procurava?</span> + <div className="subtitulo"> + <span> + Você pode navegar pelos tópicos de ajuda ou entrar em{" "} + <a href="contato">Contato</a>. + </span> + </div> + </div> + <Grid style={{ marginBottom: "50px" }} container spacing={2}> + <Grid item xs={4}> + <CardPublicando /> + </Grid> + <Grid item xs={4}> + <CardEncontrando /> + </Grid> + <Grid item xs={4}> + <CardParticipando /> + </Grid> + </Grid> + </Principal> + </Grid> + </Grid> + </Secao> + </div> + ); +} + +const StyledBreadCrumbs = styled(Breadcrumbs)` + display: flex; + justify-content: flex-start; + max-width: 1170px; + span { + color: #a5a5a5; + } + a { + color: #00bcd4; + text-decoration: none; + } +`; + +const BreadCrumbsDiv = styled.div` + padding: 10px; + display: flex; +`; + +const Principal = styled.div` + .fixo { + height: 40px; + text-align: center; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + padding: 30px; + margin-bottom: 30px; + color: #666; + + img { + height: 50px; + width: 50px; + margin-right: 40px; + vertical-align: middle; + } + + span { + font-size: 20px; + } + } + .resultadosProcura { + text-align: center; + margin-block: 30px; + padding-inline: 15px; + color: #666; + span { + font-size: 24px; + } + .subtitulo { + margin-top: 10px; + + span { + font-size: 15px; + } + + a { + font-size: 15px; + padding: 0; + color: #00bcd4; + text-decoration: none; + } + } + } +`; + +const TabsStyled = styled(Tabs)` + .Mui-selected { + background-color: #e7e4e4; + } + + .MuiTab-root { + text-transform: none !important; + } +`; + +const TabStyled = styled(Tab)` + padding: 4px 15px !important; + font-weight: 500; + font-size: 14px !important; + border-radius: 4px !important; + + &:hover { + background-color: #e7e4e4; + } +`; + +const Menu = styled.div` + width: auto; + background-color: #fff; + color: #666; + padding-block: 10px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + + h4 { + padding-inline: 15px; + font-size: 18px; + margin-block: 10px; + font-weight: 500; + line-height: 1.1; + } + + .voltarInicio { + padding: 4px 15px; + font-size: 15px; + text-align: center; + a { + font-size: 15px; + padding: 0; + color: #00bcd4; + text-decoration: none; + } + } + + hr { + border: 0; + border-top: 1px solid #ccc; + margin-top: 20px; + margin-bottom: 20px; + } + + .procurava { + padding: 4px 15px; + font-size: 15px; + text-align: center; + + a { + font-size: 15px; + padding: 0; + color: #00bcd4; + text-decoration: none; + } + } +`; + +const Secao = styled.div` + width: 1138px; + margin-inline: auto; +`; diff --git a/src/Pages/TabsHelp/TabNetPart.js b/src/Pages/TabsHelp/TabNetPart.js new file mode 100644 index 0000000000000000000000000000000000000000..743a8a70698247afc53df97c2e6573eede53d8a5 --- /dev/null +++ b/src/Pages/TabsHelp/TabNetPart.js @@ -0,0 +1,297 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; +import Tabs from '@material-ui/core/Tabs' +import Tab from '@material-ui/core/Tab'; +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import Grid from '@material-ui/core/Grid'; +import ParticipandoRede from '../../img/ajuda/Participando_da_rede.png'; +import How from '../../Components/HelpCenter/TabsNetPart/How' +import What from '../../Components/HelpCenter/TabsNetPart/What' +import CardEncontrando from '../../Components/HelpCenter/Cards/CardEncontrando'; +import CardPublicando from '../../Components/HelpCenter/Cards/CardPublicando'; +import CardGerenciando from '../../Components/HelpCenter/Cards/CardGerenciando'; +import { Link } from 'react-router-dom'; + + + + + + + +export default function TabNetPart (props) { + const tabs= [ + 'Como comentar ou avaliar um recurso?', + 'Que tipo de comentário posso fazer sobre o recurso?', + 'Participando da Rede' + ] + + const [tabValue, setTabValue] = useState( + Number(props.location.state.value) || 0); + + const handleChangeTab = (e, newValue) => { + setTabValue(newValue) +} + + + + return( + <div style={{backgroundColor:"#f4f4f4"}}> + <link href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:500,400&display=swap" rel="stylesheet"/> + + <Secao> + <BreadCrumbsDiv> + <StyledBreadCrumbs> + <Link to="/" > + Página Inicial + </Link> + <Link to="ajuda" > + Ajuda + </Link> + + <span> + {tabs[2]} + </span> + + + </StyledBreadCrumbs> + + </BreadCrumbsDiv> + <Grid container spacing={4}> + <Grid item xs={3}> + <Menu> + <h4>{tabs[2]}</h4> + <TabsStyled orientation = "vertical" + variant = "scrollable" + value = {tabValue} + onChange = {handleChangeTab} + TabIndicatorProps = {{style:{display: "none"}}} + > + <TabStyled label={tabs[0]}></TabStyled> + <TabStyled label={tabs[1]}></TabStyled> + </TabsStyled> + <br/> + <div className="voltarInicio"> + <a href="ajuda">VOLTAR AO ÃNICIO</a> + </div> + <hr/> + <div className="procurava"> + Não encontrou o que procurava? Entre em + <a href="contato"> contato</a> + </div> + </Menu> + </Grid> + + <Grid item xs={9}> + <Principal> + <div className="fixo"> + <img src={ParticipandoRede} alt="Participando da Rede"/> + <span>{tabs[2]}</span> + </div> + {tabValue === 0 && <How title={tabs[0]}/>} + {tabValue === 1 && <What title={tabs[1]}/>} + <div className="resultadosProcura"> + <span>Não era bem o que você procurava?</span> + <div className="subtitulo"> + <span>Você pode navegar pelos tópicos de ajuda ou entrar em <a href="contato">Contato</a>.</span> + </div> + </div> + <Grid style={{marginBottom:"50px"}} container spacing={2}> + <Grid item xs={4}> + <CardPublicando/> + </Grid> + <Grid item xs={4}> + <CardEncontrando/> + </Grid> + <Grid item xs={4}> + <CardGerenciando/> + </Grid> + </Grid> + + + </Principal> + </Grid> + </Grid> + + + </Secao> + </div> + ); +} +const StyledBreadCrumbs = styled(Breadcrumbs)` + display : flex; + justify-content : flex-start; + max-width : 1170px; + span { + color : #a5a5a5; + } + a { + color: #00bcd4; + text-decoration: none; + } + +` + +const BreadCrumbsDiv = styled.div` + + padding : 10px; + display : flex; +` + + +const Principal = styled.div` + .fixo { + + height: 40px; + text-align: center; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + margin-bottom: 30px; + color: #666; + + + img { + height: 50px; + width: 50px; + margin-right: 40px; + vertical-align: middle; + + } + + span { + font-size: 20px; + vertical-align: ; + } + + + + } + .resultadosProcura { + text-align: center; + margin-block: 30px; + padding-inline: 15px; + color: #666; + span { + font-size: 24px; + } + .subtitulo { + margin-top: 10px; + + span { + font-size: 15px + } + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + } + +` + +const TabsStyled = styled(Tabs)` + + .Mui-selected { + background-color: #e7e4e4; + } + + .MuiTab-root{ + text-transform: none !important; + } + +` + +const TabStyled = styled(Tab)` + + padding: 4px 15px !important; + font-weight: 500; + font-size: 14px !important; + border-radius: 4px !important; + + + + + + &:hover { + background-color: #e7e4e4; + } +` + + +const Menu = styled.div` + width: auto; + background-color: #fff; + color: #666; + padding-block: 10px; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h4 { + padding-inline: 15px; + font-size: 18px; + margin-block: 10px; + font-weight: 500; + line-height: 1.1; + } + + .voltarInicio { + padding: 4px 15px; + font-size: 15px; + text-align: center; + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + } + + hr { + border: 0; + border-top: 1px solid #ccc; + margin-top: 20px; + margin-bottom: 20px; + } + + .procurava { + padding: 4px 15px; + font-size: 15px; + text-align: center; + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + +` + +const Secao = styled.div` + width: 1138px; + margin-inline: auto; + +` diff --git a/src/Pages/TabsHelp/TabPlataformaMEC.js b/src/Pages/TabsHelp/TabPlataformaMEC.js new file mode 100644 index 0000000000000000000000000000000000000000..02ca0646d0f555f49a5d2a1e0d8f80cc1c3d7deb --- /dev/null +++ b/src/Pages/TabsHelp/TabPlataformaMEC.js @@ -0,0 +1,278 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; +import Tabs from '@material-ui/core/Tabs' +import Tab from '@material-ui/core/Tab'; +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import Grid from '@material-ui/core/Grid'; +import CardEncontrando from '../../Components/HelpCenter/Cards/CardEncontrando'; +import CardParticipando from '../../Components/HelpCenter/Cards/CardParticipando'; +import CardGerenciando from '../../Components/HelpCenter/Cards/CardGerenciando'; +import What from '../../Components/HelpCenter/TabsPlataformaMEC/What'; +import Understand from '../../Components/HelpCenter/TabsPlataformaMEC/Understand'; +import Which from '../../Components/HelpCenter/TabsPlataformaMEC/Which'; +import Types from '../../Components/HelpCenter/TabsPlataformaMEC/Types'; +import Software from '../../Components/HelpCenter/TabsPlataformaMEC/Software'; +import How from '../../Components/HelpCenter/TabsPlataformaMEC/How'; +import { Link } from 'react-router-dom'; + + + + + + + +export default function TabPlataformaMEC (props) { + const tabs= [ + 'O que é a plataforma MEC?', + 'Como foi construÃda a Plataforma MEC?', + 'Entendendo as 3 áreas da Plataforma', + 'Quais são os Portais Parceiros?', + 'Tipos de recursos', + 'Softwares especÃficos', + 'Plataforma MEC' + ] + + const [tabValue, setTabValue] = useState( + Number(props.location.state.value) || 0); + + const handleChangeTab = (e, newValue) => { + setTabValue(newValue) +} + + + + return( + <div style={{backgroundColor:"#f4f4f4"}}> + <link href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:500,400&display=swap" rel="stylesheet"/> + + <Secao> + <BreadCrumbsDiv> + <StyledBreadCrumbs> + <Link to="/" > + Página Inicial + </Link> + <Link to="ajuda" > + Ajuda + </Link> + + <span> + {tabs[6]} + </span> + + </StyledBreadCrumbs> + + </BreadCrumbsDiv> + <Grid container spacing={4}> + <Grid item xs={3}> + <Menu> + <h4>{tabs[6]}</h4> + <TabsStyled orientation = "vertical" + variant = "scrollable" + value = {tabValue} + onChange = {handleChangeTab} + TabIndicatorProps = {{style:{display: "none"}}} + > + <TabStyled label={tabs[0]}></TabStyled> + <TabStyled label={tabs[1]}></TabStyled> + <TabStyled label={tabs[2]}></TabStyled> + <TabStyled label={tabs[3]}></TabStyled> + <TabStyled label={tabs[4]}></TabStyled> + <TabStyled label={tabs[5]}></TabStyled> + </TabsStyled> + <br/> + <div className="voltarInicio"> + <a href="ajuda">VOLTAR AO ÃNICIO</a> + </div> + <hr/> + <div className="procurava"> + Não encontrou o que procurava? Entre em + <a href="contato"> contato</a> + </div> + </Menu> + </Grid> + + <Grid item xs={9}> + <Principal> + {tabValue === 0 && <What title={tabs[0]}/>} + {tabValue === 1 && <How title={tabs[1]}/>} + {tabValue === 2 && <Understand title={tabs[2]}/>} + {tabValue === 3 && <Which title={tabs[3]}/>} + {tabValue === 4 && <Types title={tabs[4]}/>} + {tabValue === 5 && <Software title={tabs[5]}/>} + + <Grid style={{marginBlock:"50px"}} container spacing={2}> + <Grid item xs={4}> + <CardEncontrando/> + </Grid> + <Grid item xs={4}> + <CardParticipando/> + </Grid> + <Grid item xs={4}> + <CardGerenciando/> + </Grid> + + </Grid> + + </Principal> + </Grid> + </Grid> + + + </Secao> + </div> + ); +} + +const StyledBreadCrumbs = styled(Breadcrumbs)` + display : flex; + justify-content : flex-start; + max-width : 1170px; + span { + color : #a5a5a5; + } + a { + color: #00bcd4; + text-decoration: none; + } + +` + +const BreadCrumbsDiv = styled.div` + + padding : 10px; + display : flex; +` + +const Principal = styled.div` + .fixo { + + height: 40px; + text-align: center; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + margin-bottom: 30px; + color: #666; + + + img { + height: 50px; + width: 50px; + margin-right: 40px; + vertical-align: middle; + + } + + span { + font-size: 20px; + vertical-align: ; + } + + + + } + +` + +const TabsStyled = styled(Tabs)` + + .Mui-selected { + background-color: #e7e4e4; + } + + .MuiTab-root{ + text-transform: none !important; + } + +` + +const TabStyled = styled(Tab)` + + padding: 4px 15px !important; + font-weight: 500; + font-size: 14px !important; + border-radius: 4px !important; + + + + + + &:hover { + background-color: #e7e4e4; + } +` + + +const Menu = styled.div` + width: auto; + background-color: #fff; + color: #666; + padding-block: 10px; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h4 { + padding-inline: 15px; + font-size: 18px; + margin-block: 10px; + font-weight: 500; + line-height: 1.1; + } + + .voltarInicio { + padding: 4px 15px; + font-size: 15px; + text-align: center; + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + } + + hr { + border: 0; + border-top: 1px solid #ccc; + margin-top: 20px; + margin-bottom: 20px; + } + + .procurava { + padding: 4px 15px; + font-size: 15px; + text-align: center; + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + +` + +const Secao = styled.div` + width: 1138px; + margin-inline: auto; + +` diff --git a/src/Pages/TabsHelp/TabResourseFind.js b/src/Pages/TabsHelp/TabResourseFind.js new file mode 100644 index 0000000000000000000000000000000000000000..f3d3a3f3aa9fb7a144f63eb4548f1eaed4df40e5 --- /dev/null +++ b/src/Pages/TabsHelp/TabResourseFind.js @@ -0,0 +1,298 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; +import Tabs from '@material-ui/core/Tabs' +import Tab from '@material-ui/core/Tab'; +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import Grid from '@material-ui/core/Grid'; +import EncontrandoRecurso from '../../img/ajuda/Encontrando_recursos.png'; +import HowToDo from '../../Components/HelpCenter/TabsResourseFind/HowToDo' +import HowToRank from '../../Components/HelpCenter/TabsResourseFind/HowToRank' +import HowToFilter from '../../Components/HelpCenter/TabsResourseFind/HowToFilter'; +import CardPublicando from '../../Components/HelpCenter/Cards/CardPublicando'; +import CardParticipando from '../../Components/HelpCenter/Cards/CardParticipando'; +import CardGerenciando from '../../Components/HelpCenter/Cards/CardGerenciando'; +import { Link } from 'react-router-dom'; + + + + + + + +export default function TabResourseFind (props) { + const tabs= [ + 'Como fazer uma busca?', + 'Como filtrar os resultados?', + 'Como os recursos são ranqueados?', + 'Encontrando Recursos' + ] + + const [tabValue, setTabValue] = useState( + Number(props.location.state.value) || 0); + + const handleChangeTab = (e, newValue) => { + setTabValue(newValue) +} + + + return( + <div style={{backgroundColor:"#f4f4f4"}}> + <link href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:500,400&display=swap" rel="stylesheet"/> + + <Secao> + <BreadCrumbsDiv> + <StyledBreadCrumbs> + <Link to="/" > + Página Inicial + </Link> + <Link to="ajuda" > + Ajuda + </Link> + + <span> + {tabs[3]} + </span> + + </StyledBreadCrumbs> + + </BreadCrumbsDiv> + <Grid container spacing={4}> + <Grid item xs={3}> + <Menu> + <h4>{tabs[3]}</h4> + <TabsStyled orientation = "vertical" + variant = "scrollable" + value = {tabValue} + onChange = {handleChangeTab} + TabIndicatorProps = {{style:{display: "none"}}} + > + <TabStyled label={tabs[0]}></TabStyled> + <TabStyled label={tabs[1]}></TabStyled> + <TabStyled label={tabs[2]}></TabStyled> + </TabsStyled> + <br/> + <div className="voltarInicio"> + <a href="ajuda">VOLTAR AO ÃNICIO</a> + </div> + <hr/> + <div className="procurava"> + Não encontrou o que procurava? Entre em + <a href="contato"> contato</a> + </div> + </Menu> + </Grid> + + <Grid item xs={9}> + <Principal> + <div className="fixo"> + <img src={EncontrandoRecurso} alt="Encontrando Recursos"/> + <span>{tabs[3]}</span> + </div> + {tabValue === 0 && <HowToDo title={tabs[0]}/>} + {tabValue === 1 && <HowToFilter title={tabs[1]}/>} + {tabValue === 2 && <HowToRank title={tabs[2]}/>} + <div className="resultadosProcura"> + <span>Não era bem o que você procurava?</span> + <div className="subtitulo"> + <span>Você pode navegar pelos tópicos de ajuda ou entrar em <a href="contato">Contato</a>.</span> + </div> + </div> + <Grid style={{marginBottom:"50px"}} container spacing={2}> + <Grid item xs={4}> + <CardPublicando/> + </Grid> + <Grid item xs={4}> + <CardParticipando/> + </Grid> + <Grid item xs={4}> + <CardGerenciando/> + </Grid> + </Grid> + + </Principal> + </Grid> + </Grid> + + + </Secao> + </div> + ); +} + +const StyledBreadCrumbs = styled(Breadcrumbs)` + display : flex; + justify-content : flex-start; + max-width : 1170px; + span { + color : #a5a5a5; + } + a { + color: #00bcd4; + text-decoration: none; + } + +` + +const BreadCrumbsDiv = styled.div` + + padding : 10px; + display : flex; +` + +const Principal = styled.div` + .fixo { + + height: 40px; + text-align: center; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + margin-bottom: 30px; + color: #666; + + + img { + height: 50px; + width: 50px; + margin-right: 40px; + vertical-align: middle; + + } + + span { + font-size: 20px; + vertical-align: ; + } + + + + } + .resultadosProcura { + text-align: center; + margin-block: 30px; + padding-inline: 15px; + color: #666; + span { + font-size: 24px; + } + .subtitulo { + margin-top: 10px; + + span { + font-size: 15px + } + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + } + +` + +const TabsStyled = styled(Tabs)` + + .Mui-selected { + background-color: #e7e4e4; + } + + .MuiTab-root{ + text-transform: none !important; + } + +` + +const TabStyled = styled(Tab)` + + padding: 4px 15px !important; + font-weight: 500; + font-size: 14px !important; + border-radius: 4px !important; + + + + + + &:hover { + background-color: #e7e4e4; + } +` + + +const Menu = styled.div` + width: auto; + background-color: #fff; + color: #666; + padding-block: 10px; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h4 { + padding-inline: 15px; + font-size: 18px; + margin-block: 10px; + font-weight: 500; + line-height: 1.1; + } + + .voltarInicio { + padding: 4px 15px; + font-size: 15px; + text-align: center; + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + } + + hr { + border: 0; + border-top: 1px solid #ccc; + margin-top: 20px; + margin-bottom: 20px; + } + + .procurava { + padding: 4px 15px; + font-size: 15px; + text-align: center; + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + +` + +const Secao = styled.div` + width: 1138px; + margin-inline: auto; + +` diff --git a/src/Pages/TabsHelp/TabResoursePub.js b/src/Pages/TabsHelp/TabResoursePub.js new file mode 100644 index 0000000000000000000000000000000000000000..8753044a17ebadde1539879d0c4d21d058d99565 --- /dev/null +++ b/src/Pages/TabsHelp/TabResoursePub.js @@ -0,0 +1,301 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, { Component, useState, useEffect } from 'react'; +import styled from 'styled-components'; +import Tabs from '@material-ui/core/Tabs' +import Tab from '@material-ui/core/Tab'; +import Breadcrumbs from '@material-ui/core/Breadcrumbs'; +import Grid from '@material-ui/core/Grid'; +import PublicandoRecursos from '../../img/ajuda/Publicando_recursos.png'; +import Why from '../../Components/HelpCenter/TabsResoursePub/Why' +import How from '../../Components/HelpCenter/TabsResoursePub/How' +import Which from '../../Components/HelpCenter/TabsResoursePub/Which' +import CardEncontrando from '../../Components/HelpCenter/Cards/CardEncontrando'; +import CardParticipando from '../../Components/HelpCenter/Cards/CardParticipando'; +import CardGerenciando from '../../Components/HelpCenter/Cards/CardGerenciando'; +import { Link } from 'react-router-dom'; + + + + + + + +export default function TabResoursePub (props) { + const tabs= [ + 'Por que enviar um recurso?', + 'Como publicar um recurso?', + 'Quais tipos de recursos e formatos de arquivo a plataforma aceita?', + 'Publicando Recursos' + ] + + const [tabValue, setTabValue] = useState( + Number(props.location.state.value) || 0); + + const handleChangeTab = (e, newValue) => { + setTabValue(newValue) +} + + + + return( + <div style={{backgroundColor:"#f4f4f4"}}> + <link href="https://fonts.googleapis.com/css?family=Pompiere|Roboto:500,400&display=swap" rel="stylesheet"/> + + <Secao> + <BreadCrumbsDiv> + <StyledBreadCrumbs> + <Link to="/" > + Página Inicial + </Link> + <Link to="ajuda" > + Ajuda + </Link> + + <span> + {tabs[3]} + </span> + + + </StyledBreadCrumbs> + + </BreadCrumbsDiv> + <Grid container spacing={4}> + <Grid item xs={3}> + <Menu> + <h4>{tabs[3]}</h4> + <TabsStyled orientation = "vertical" + variant = "scrollable" + value = {tabValue} + onChange = {handleChangeTab} + TabIndicatorProps = {{style:{display: "none"}}} + > + <TabStyled label={tabs[0]}></TabStyled> + <TabStyled label={tabs[1]}></TabStyled> + <TabStyled label={tabs[2]}></TabStyled> + </TabsStyled> + <br/> + <div className="voltarInicio"> + <a href="ajuda">VOLTAR AO ÃNICIO</a> + </div> + <hr/> + <div className="procurava"> + Não encontrou o que procurava? Entre em + <a href="contato"> contato</a> + </div> + </Menu> + </Grid> + + <Grid item xs={9}> + <Principal> + <div className="fixo"> + <img src={PublicandoRecursos} alt="Publicando Recursos"/> + <span>{tabs[3]}</span> + </div> + {tabValue === 0 && <Why title={tabs[0]}/>} + {tabValue === 1 && <How title={tabs[1]}/>} + {tabValue === 2 && <Which title={tabs[2]}/>} + <div className="resultadosProcura"> + <span>Não era bem o que você procurava?</span> + <div className="subtitulo"> + <span>Você pode navegar pelos tópicos de ajuda ou entrar em <a href="contato">Contato</a>.</span> + </div> + </div> + <Grid style={{marginBottom:"50px"}} container spacing={2}> + <Grid item xs={4}> + <CardEncontrando/> + </Grid> + <Grid item xs={4}> + <CardParticipando/> + </Grid> + <Grid item xs={4}> + <CardGerenciando/> + </Grid> + + </Grid> + + </Principal> + </Grid> + </Grid> + + + </Secao> + </div> + ); +} +const StyledBreadCrumbs = styled(Breadcrumbs)` + display : flex; + justify-content : flex-start; + max-width : 1170px; + span { + color : #a5a5a5; + } + a { + color: #00bcd4; + text-decoration: none; + } + +` + +const BreadCrumbsDiv = styled.div` + + padding : 10px; + display : flex; +` + + +const Principal = styled.div` + .fixo { + + height: 40px; + text-align: center; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + padding: 30px; + margin-bottom: 30px; + color: #666; + + + img { + height: 50px; + width: 50px; + margin-right: 40px; + vertical-align: middle; + + } + + span { + font-size: 20px; + vertical-align: ; + } + + + + } + .resultadosProcura { + text-align: center; + margin-block: 30px; + padding-inline: 15px; + color: #666; + span { + font-size: 24px; + } + .subtitulo { + margin-top: 10px; + + span { + font-size: 15px + } + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + } + +` + +const TabsStyled = styled(Tabs)` + + .Mui-selected { + background-color: #e7e4e4; + } + + .MuiTab-root{ + text-transform: none !important; + } + +` + +const TabStyled = styled(Tab)` + + padding: 4px 15px !important; + font-weight: 500; + font-size: 14px !important; + border-radius: 4px !important; + + + + + + &:hover { + background-color: #e7e4e4; + } +` + + +const Menu = styled.div` + width: auto; + background-color: #fff; + color: #666; + padding-block: 10px; + box-shadow: 0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24); + + h4 { + padding-inline: 15px; + font-size: 18px; + margin-block: 10px; + font-weight: 500; + line-height: 1.1; + } + + .voltarInicio { + padding: 4px 15px; + font-size: 15px; + text-align: center; + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + } + + hr { + border: 0; + border-top: 1px solid #ccc; + margin-top: 20px; + margin-bottom: 20px; + } + + .procurava { + padding: 4px 15px; + font-size: 15px; + text-align: center; + + a { + font-size: 15px; + padding: 0; + color:#00bcd4; + text-decoration: none; + } + + } + +` + +const Secao = styled.div` + width: 1138px; + margin-inline: auto; + +` diff --git a/src/Pages/TermsPage.js b/src/Pages/TermsPage.js index 65081cf7990a3c41dc15591dcefe2f3c44c546e4..7a168814b56a521e46b8a86e5dd2155b25e168f4 100644 --- a/src/Pages/TermsPage.js +++ b/src/Pages/TermsPage.js @@ -24,13 +24,14 @@ import Card from '@material-ui/core/Card'; import CardActions from '@material-ui/core/CardActions'; import LabeledCheckbox from "../Components/Checkbox.js" import TermsPageContent from '../Components/TermsPageContent.js' - +import AppBar from '@material-ui/core/AppBar'; +import { makeStyles } from '@material-ui/core/styles'; +import {Link} from 'react-router-dom' const CardStyled = styled(Card)` box-sizing : border-box; background-color : white; max-width: 1700px; padding-top: 52px; - margin-left:7em; @media ${device.mobileM} { width : 100%; height : 100%; @@ -55,14 +56,34 @@ const StyledSpanContinuar = styled.span` color: #fff; ` -const Styledhr = styled.hr` - color: #dadada; +const Background = styled.div` + padding-top : 40px; + background-color : #f4f4f4; + color : #666; + padding-bottom : 40px; + + .container { + padding : 0; + margin-right : auto; + margin-left : auto; + + @media screen and (min-width: 768px) { + width : 750px; + } + @media screen and (min-width: 992px) { + width : 970px; + } + @media screen and (min-width: 1200px) { + width : 1170px; + } + } ` export default function TermsContainer (props) { const {state, dispatch} = useContext(Store) const [checked, setChecked] = useState(false); const [unavailableButton, setButtonAvailability] = useState(true); + const classes = useStyles() const handleChecked = e => { setChecked(e.target.checked); @@ -76,41 +97,135 @@ export default function TermsContainer (props) { userAgreement: true }) - props.history.push('/permission') - - window.scrollTo(0, 0) + if (props.cameFromPublishButton) { + props.history.push('/professor') + }else { + props.history.push('/permission') + window.scrollTo(0, 0) + } } return ( - <div style={{paddingTop:"5vh", paddingBottom:"5vh", backgroundColor :"#f4f4f4"}}> - <div> - <CardStyled variant="outlined"> - <TermsPageContent/> - <Styledhr/> - <CardActions style={{justifyContent:"center", padding:"25px"}}> - <div> + <Background> + <div className="container"> + <CardStyled variant="outlined"> + <TermsPageContent/> + </CardStyled> + </div> + <AppBar position="fixed" color="primary" className={classes.appBar}> + <StyledAppBarContainer> + <div className="container"> <div style={{fontSize:"14px"}}> - <LabeledCheckbox label={<Styledspan>Li e concordo com os termos de uso da Plataforma Integrada de RED do MEC</Styledspan>} handleChange={handleChecked}/> - <div style={{marginLeft:"1em", paddingLeft:"16px", color:"#a0a0a0", justifyContent:"center",display:"flex"}}> - <Button disabled = {unavailableButton} - style={ unavailableButton ? {backgroundColor:"#e9e9e9"} : {backgroundColor:"#00bcd4"}} - onClick={handleAgreement} - > - <StyledSpanContinuar style={unavailableButton ? {color:"#666666"} : {}}> + <LabeledCheckbox label={<Styledspan style={{color : "#666", fontWeight : "600"}}>Li e concordo com os termos de uso da Plataforma Integrada de RED do MEC</Styledspan>} handleChange={handleChecked}/> + </div> + <div className="botoes"> + <Button disabled = {unavailableButton} + style={ unavailableButton ? {backgroundColor:"#e9e9e9"} : {backgroundColor:"#00bcd4"}} + onClick={handleAgreement} + > + <StyledSpanContinuar style={unavailableButton ? {color:"#666666"} : {}}> Continuar - </StyledSpanContinuar> - </Button> - <Button style={{marginLeft:"45px", backgroundColor:"#e9e9e9"}}> - <Styledspan style={{color:"rgb(102, 102, 102)"}}> - Cancelar - </Styledspan> - </Button> - </div> + </StyledSpanContinuar> + </Button> + <Link to="/"> + <GrayButton> + Cancelar + </GrayButton> + </Link> </div> </div> - </CardActions> - </CardStyled> - </div> - </div> + </StyledAppBarContainer> + </AppBar> + </Background> ) } + +const GrayButton = styled(Button)` + &:hover { + background-color : rgba(158,158,158,0.2) !important; + } + height : 36px !important; + font-weight : 600 !important; + color : #666 !important; + background-color: transparent; + min-width : 88px !important; + height : 36px !important; + margin-left : 8px !important; + margin-right : 8px !important; + + .button-text { + cursor : pointer; + line-height : 22px; + text-align : center; + color : currentColor; + white-space : nowrap; + text-transform : uppercase; + font-weight : 600; + font-size : 15px; + font-style : inherit; + font-variant : inherit; + font-family: 'Roboto', sans serif; + letter-spacing: .01em; + } +` + +const useStyles = makeStyles((theme) => ({ + appBar: { + top: 'auto', + bottom: 0, + height : '100px', + backgroundColor : '#fff', + boxShadow : '0 1px 3px rgba(0,0,0,.52),0 1px 2px rgba(0,0,0,.24)' + }, +})); + + +const StyledAppBarContainer = styled.div` + .container { + display : flex; + flex-direction : column; + justify-content : flex-start + margin-right : auto; + margin-left : auto; + padding-top : 5px; + + @media screen and (min-width: 1200px) { + width : 1170px; + } + @media screen and (min-width: 992px) and (max-width : 1199px){ + width : 970px; + } + @media screen and (min-width: 768px) and (max-width : 991px) { + width : 750px; + padding : 0 1em 1em 1em; + } + + .botoes { + display : flex; + align-items : center; + } + } +` + +{/*<CardActions style={{justifyContent:"center", padding:"25px", borderTop : "2px solid #dadada"}}> +<div> +<div style={{fontSize:"14px"}}> +<LabeledCheckbox label={<Styledspan>Li e concordo com os termos de uso da Plataforma Integrada de RED do MEC</Styledspan>} handleChange={handleChecked}/> +<div style={{marginLeft:"1em", paddingLeft:"16px", color:"#a0a0a0", justifyContent:"center",display:"flex"}}> +<Button disabled = {unavailableButton} +style={ unavailableButton ? {backgroundColor:"#e9e9e9"} : {backgroundColor:"#00bcd4"}} +onClick={handleAgreement} +> +<StyledSpanContinuar style={unavailableButton ? {color:"#666666"} : {}}> +Continuar +</StyledSpanContinuar> +</Button> +<Button style={{marginLeft:"45px", backgroundColor:"#e9e9e9"}}> +<Styledspan style={{color:"rgb(102, 102, 102)"}}> +Cancelar +</Styledspan> +</Button> +</div> +</div> +</div> +</CardActions>*/} diff --git a/src/Pages/Teste.js b/src/Pages/Teste.js index 38f6b4023ae3c9d8978f40b06474c06cc0a4215d..0652c42d9da86c1950f9dbdaae7f08fb4f40e772 100644 --- a/src/Pages/Teste.js +++ b/src/Pages/Teste.js @@ -16,661 +16,120 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React, {Component} from 'react'; -import styled from 'styled-components'; -import Grid from '@material-ui/core/Grid'; -/*Importação de imagens para o componente*/ -import Handshake from "../img/termos/handshake.svg" -import Pessoa from "../img/termos/Pessoa.svg" -import Email from "../img/termos/Email.svg" -import Seguranca from "../img/termos/Seguranca.svg" -import Aberto from "../img/termos/Aberto.png"; -import Fechado from "../img/termos/Fechado.png"; -import Arrow_down from "../img/termos/Arrow_down.svg"; -import Arrow_double from "../img/termos/Arrow_double.svg"; -import Arrow_O from "../img/termos/Arrow_O que é a plataforma.png"; -import Arrow_O_1 from "../img/termos/Arrow_O que é a plataforma-1.png"; - - -const Slide = styled.div` - -position: absolute; -height: 500px; -width: 1366px; - -h2{ - font-family: "Pompiere", regular; - font-size: 44px; - line-height: 120%; - color: #FFFFFF; -} - -h3{ - font-family: "Roboto", regular; - font-size: 27px; - line-height: 120%; - color: #FFFFFF; -} - -p{ - font-family: "Roboto", regular; - font-size: 20px; - line-height: 120%; - color: #FFFFFF; - text-align: left; -} - -.container{ - position: absolute; - height: auto; - width: auto; - margin: 70px 180px 90px; -} - - -.tmpl1{ - background-color: #00BCD4; - height: inherit; - width: inherit; - display: flex; - align-items: center; - - - .box-text{ - position: relative; - float: left; - padding-right: 10px; - padding-left: 10px; - } - - .box-image{ - position: relative; - float: right; - } -} - -.tmpl2{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #673AB7; - - .title{ - padding-bottom: 50px; - } - - .images{ - position: relative; - display: table-row; - } - - .arrow{ - display: table-row; - position: absolute; - margin-left: 15px; - margin-top: -15px; - } - - .circle{ - display: table-row; - position: absolute; - margin-top: -100px; - margin-left: 755px; - } - - .box-text{ - p{ - font-size: 18px; - line-height: 25px; - } - - position: relative; - - } - - -} - -.tmpl3{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #E81F4F; - - .title{ - position: relative; - padding-left: 10px; - h3{ - line-height: 40px; - } - } - - .box-text1{ - .text{ - padding-top: 20px; - } - - .content{ - display: table-row; - - p{ - display: table-cell; - font-size: 18px; - line-height: 25px; - vertical-align: middle; - } - - img{ - position: relative; - left: 0; - margin-right: 20px; - display: table-cell; - vertical-align: middle; - margin: 10px 20px 10px -10px; - } - } - - } - - .box-text2{ - top: -50px; - .content{ - p{ - padding-bottom: 20px; - } - - img{ - margin-left: -65px; - margin-top: 25px; - } - - .twoArrow{ - margin-top: -5px; - } - } - - - } - - - -} - -.tmpl4{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #FF7F00; - - h2{ - padding-bottom: 20px; - } - - p{ - font-size: 20px; - line-height: 25px; - vertical-align: middle; - } - - .box-images{ - height: inherit; - display: table-row; - padding-top: 50px; - } - - img{ - display: table-cell; - vertical-align: middle; - top: 40px; - } - - -} - -.tmpl5{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #1AB9DE; - - .title{ - display: table-row; - align-items: center; - - img{ - display: table-cell; - margin-right: 30px; - } - - h2{ - display: table-cell; - text-align: center; - vertical-align: middle; - } - } - - .box-text { - margin-top: 20px; - p{ - font-size: 17px; - font-weight: 15px; - } - } - -} - -.tmpl6{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #673AB7; - - .box-text-1{ - h3{ - margin-bottom: 20px; - font-size: 27px; - } - p{ - margin-bottom: 20px; - font-size: 18px; - } - - - .licences{ - padding: 35px 150px 50px 35px; - margin-top: 50pz; - background-image: url("../../img/termos/Entenda.svg"); - background-repeat: no-repeat; - background-size: cover; - p::before{ - content: url(../../img/termos/V.svg); - } - p{ - padding-left: 20px; - font-family: "Kalam", regular; - font-size: 24px; - white-space: nowrap; - } - .row{ - padding-bottom: 5px; - } - } - } - - - .box-text-2{ - background-image: url("../../img/termos/OrthogonalLineUp.png"),url("../../img/termos/OrthogonalLineDown.png"); - background-repeat: no-repeat; - background-position: left top, right bottom; - padding-top: 30px; - padding-left: 50px; - p{ - font-size: 15px; - padding-bottom: 15px; - } - - .licenses_type{ - margin-left: -20px; - font-size: 22px; - font-weight: bold; - text-align: right; - white-space: nowrap; - } - } - -} - -.tmpl7{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #E81F4F; - - .title{ - h2{ - font-family: Roboto; - font-size: 44px; - } - } - - .box-text{ - margin-top: 20px; - p{ - line-height: 20px; - font-family: "Roboto"; - font-size: 18px; - } - } - - .rodape{ - margin-top: 40px; - p{ - line-height: 20px; - font-family: "Pompiere", regular; - font-size: 28px; - text-align: center; - } - span{ - text-decoration: underline; - font-family: "Pompiere", regular; - line-height: 20px; - font-size: 28px; - cursor: pointer; - } - } -} - -` - - - - -const Slide1 = styled.div` - - background:#00BCD4; - height:500px; - width:1366px; - -` - - - -const Slide3 = styled.div` - - background:#e81f4f; - height:500px; - width:1366px; - - - .tmpl3{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #E81F4F; - - .title{ - position: relative; - padding-left: 10px; - h3{ - line-height: 40px; - } - } - - .box-text1{ - .text{ - padding-top: 20px; - } - - .content{ - display: table-row; - - p{ - display: table-cell; - font-size: 18px; - line-height: 25px; - vertical-align: middle; - } - - img{ - position: relative; - left: 0; - margin-right: 20px; - display: table-cell; - vertical-align: middle; - margin: 10px 20px 10px -10px; - } - } - - } - - .box-text2{ - top: -50px; - .content{ - p{ - padding-bottom: 20px; - } - - img{ - margin-left: -65px; - margin-top: 25px; - } - - .twoArrow{ - margin-top: -5px; - } - } - } - } -` - - -const Slide4 = styled.div` - - - background:#ff7f00; - height:500px; - width:1366px; - - position: absolute; - height: 500px; - width: 1366px; - - .container{ - position: absolute; - height: auto; - width: auto; - margin: 70px 180px 90px; - } - .tmpl4{ - height: inherit; - width: inherit; - display: flex; - align-items: center; - background-color: #FF7F00; - - h2{ - padding-bottom: 20px; - font-family: Pompiere,regular; - font-size: 44px; - line-height: 120%; - color:#fff; - margin-top: 20px; - margin-bottom: 10px - } - - p{ - font-size: 20px; - line-height: 25px; - vertical-align: middle; - font-size: 20px; - font-family: Roboto,regular; - color:#fff; - margin: 0 0 10px; - text-align: left; - line-height: 25px; - padding-right: 10px; - } - - .box-images{ - height: inherit; - display: table-row; - padding-top: 50px; - } - - img{ - display: table-cell; - vertical-align: middle; - top: 40px; - } - - - } - +import React, { Component } from 'react' +import Dropdown from 'react-dropdown' + +class ObjectArrayExample extends Component { + constructor (props) { + super(props) + this.state = { + selected: { value: 'two', label: 'Two'} + } + this._onSelect = this._onSelect.bind(this) + } + + _onSelect (option) { + console.log('You selected ', option.label) + this.setState({selected: option}) + } + + render () { + const { toggleClassName, togglePlaholderClassName, toggleMenuClassName, toggleOptionsClassName } = this.state + + const options = [ + { value: 'one', label: 'One' }, + { value: 'two', label: 'Two', className: toggleOptionsClassName && 'my-custom-class' }, + { + type: 'group', name: 'group1', items: [ + { value: 'three', label: 'Three', className: toggleOptionsClassName && 'my-custom-class' }, + { value: 'four', label: 'Four' } + ] + }, + { + type: 'group', name: 'group2', items: [ + { value: 'five', label: 'Five' }, + { value: 'six', label: 'Six' } + ] + } + ] + + + const defaultOption = this.state.selected + const placeHolderValue = typeof this.state.selected === 'string' ? this.state.selected : this.state.selected.label + + return ( + <section> + <h3>Object Array and Custom ClassNames Example </h3> + <div className="buttons"> + <button onClick={() => this.setState({ toggleClassName: !toggleClassName })}> + Toggle dropdown custom class + </button> + <button onClick={() => this.setState({ togglePlaholderClassName: !togglePlaholderClassName })}> + Toggle placeholder custom class + </button> + <button onClick={() => this.setState({ toggleMenuClassName: !toggleMenuClassName })}> + Toggle menu custom class + </button> + <button onClick={() => this.setState({ toggleOptionsClassName: !toggleOptionsClassName })}> + Toggle options custom class + </button> + </div> + <Dropdown + options={options} + onChange={this._onSelect} + value={defaultOption} + placeholder="Select an option" + className={ toggleClassName ? 'my-custom-class' : '' } + placeholderClassName={ togglePlaholderClassName ? 'my-custom-class' : '' } + menuClassName={ toggleMenuClassName ? 'my-custom-class' : '' } + /> + <div className='result'> + You selected + <strong> {placeHolderValue} </strong> + </div> + <section> + <h4>Options: </h4> + <div className='code'> + <pre> + {` +const options = [ + { value: 'one', label: 'One' }, + { value: 'two', label: 'Two'${toggleOptionsClassName ? ', classNames \'my-custom-class\'' : ''} }, + { + type: 'group', name: 'group1', items: [ + { value: 'three', label: 'Three' }, + { value: 'four', label: 'Four'${toggleOptionsClassName ? ', className: \'my-custom-class\'' : ''} } + ] + }, + { + type: 'group', name: 'group2', items: [ + { value: 'five', label: 'Five' }, + { value: 'six', label: 'Six' } + ] + } +] +`} + </pre> + </div> + <h4>Usage with custom classeNames: </h4> + <div className='code'> + <pre>{ ` - - - - -class Teste extends Component { - render() { - return ( - <div> - <link href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto&display=swap" rel="stylesheet"/> - - <Slide> - <div class="tmpl1"> - <div class="container"> - <Grid container spacing={0}> - <Grid item xs={6} > - <div class="box-text"> - <p>A Plataforma Integrada MEC RED é parte do Compromisso 6 do 3º Plano de Ação da Parceria para Governo Aberto (OGP-Brasil), que tem por objetivo “incorporar na polÃtica educacional o potencial da cultura digital, de modo a fomentar a autonomia para uso, reuso e adaptação de recursos educacionais digitais, valorizando a pluralidade e a diversidade da educação brasileiraâ€.</p> - </div> - </Grid> - <Grid item xs={6}> - <div class="box-image"> - <img src={Handshake} alt="handshake"/> - </div> - </Grid> - </Grid> - </div> - </div> - </Slide> - - <Slide> - <div class="tmpl2"> - <div class="container"> - <div class="title"> - <h2>O que é a Plataforma Integrada MEC RED e como ela está organizada?</h2> - <div class="images"> - <div class="arrow"> - <img src={Arrow_O} alt="Arrow_O"/> - </div> - <div class="circle"> - <img src={Arrow_O_1} alt="Arrow_O_1"/> - </div> - </div> - </div> - <div class="box-text col-md-6"> - <p>Uma plataforma interativa, colaborativa e criada em software livre, que disponibiliza conteúdos do acervo do MEC e indica conteúdos de parceiros com o objetivo de formar uma rede ativa de educadores interessados em usar, criar e compartilhar recursos educacionais digitais.</p> - </div> - <div class="box-text col-md-6"> - <p><strong>Repositório</strong> de recursos educacionais digitais que permite aos usuários cadastrados a publicação de seus materiais e <strong>Referatório</strong> que aponta links para conteúdos em sites externos.</p> - </div> - </div> - </div> - </Slide> - - <Slide3> - <div class="tmpl3"> - <div class="container"> - <div class="title"> - <h3>As recursos educacionais disponibilizados<br/> podem ser de dois tipos:</h3> - </div> - <Grid container spacing={5}> - - - <Grid class="text" item md={8}> - <div class="content"> - <img src={Aberto} alt="Aberto "/> - <p><strong>Abertos</strong>: recursos sem nenhuma restrição de acesso e<br/> com flexibilidade quanto ao uso ou reuso.</p> - </div> - <div class="content"> - <img src={Fechado} alt="Fechado"/> - <p><strong>Fechados</strong>: recursos com alguma restrição de acesso, uso<br/> ou reuso, como aqueles que, para acesso, há demanda de<br/> cadastro ou que têm licenças restritivas.</p> - </div> - </Grid> - - - - <Grid item md={4}> - <div class="content"> - <img src={Arrow_down}/> - <p>Como repositório, a Plataforma hospeda somente Recursos Educacionais Abertos (REA). Todo conteúdo inserido por usuários deve ser aberto.</p> - </div> - <div class="content"> - <img class="twoArrow" src={Arrow_double}/> - <p>Como referatório, a Plataforma aponta links para parceiros, e<br/> esses recursos podem ser abertos ou fechados.</p> - </div> - </Grid> - - - </Grid> - </div> - </div> - </Slide3> - - <Slide> - <div class="tmpl4"> - <div class="container"> - <Grid container spacing={5}> - <Grid item xs={6}> - <h2>Como se cadastrar?</h2> - <div> - <p>Para criar uma conta, o usuário deverá clicar no botão “Cadastre-se†na página inicial da Plataforma e fazer um cadastro utilizando um endereço de e-mail e criando uma senha.</p> - </div> - </Grid> - <Grid item xs={2} style={{alignSelf:"center"}}> <img src={Pessoa} alt="Pessoa" /> </Grid> - <Grid item xs={2} style={{alignSelf:"center"}}> <img src={Email} alt="Email" /> </Grid> - <Grid item xs={2} style={{alignSelf:"center"}}> <img src={Seguranca} alt="Seguranca" /> </Grid> - </Grid> - </div> - </div> - </Slide> - - <div style={{background:"#00BCD4", height:"500px", width:"1366px"}}> - <h2>O que publicar?</h2> - - <p>Conteúdos de cunho educacional e pertinentes ao assunto no qual estão inseridos, de autoria do usuário, de autoria coletiva (com consentimento dos demais autores) ou que estejam no domÃnio público. </p> - - <h2>O que não publicar?</h2> - - <p>Materiais ofensivos, pornográficos, relacionados a atividades ilegais, que invadam a privacidade de terceiros, que violem a legislação de Direito Autoral ou os Direitos Humanos. Propagandas, conteúdos com vÃrus, spam ou comentários abusivos.</p> - </div> - - <div style={{background:"#673ab7", height:"500px", width:"1366px"}}> - <h3>Direitos do autor e licenças de uso</h3> - - <p>Ao inserir um novo material de sua autoria no Repositório, o usuário deverá escolher um dos tipos de licença aberta disponÃveis na Plataforma:</p> - - <p>CC-BY</p> - - <p>CC-BY-SA</p> - - <p>CC-BY-NC</p> - - <p>CC-BY-NC-SA</p> - - <p>CC-BY</p> - - <p> significa que o autor permite que distribuam, remixem, adaptem e criem a partir do seu trabalho, desde que lhe atribuam o devido crédito pela criação original</p> - - <p>NC</p> - - <p> indica que as criações elaboradas a partir do trabalho do autor podem ser utilizadas somente para fins não comerciais (se não houver esta especificação, o novo recurso poderá ser utilizado para fins comerciais)</p> - - <p>SA</p> - - <p> quer dizer que as novas criações devem ser licenciadas sob termos idênticos aos do trabalho original</p> - </div> - - <div style={{background:"#e81f4f", height:"500px", width:"1366px"}}> - <h2>Respeitamos<br/> a sua privacidade</h2> - - <p>Além de solicitar alguns dados pessoais para o cadastro, a Plataforma coleta, de forma automática, os dados não pessoais relativos à interação dos usuários no sistema. Esses dados nunca serão fornecidos para fins comerciais, assim como nunca serão compartilhados quaisquer dados pessoais que possam identificar o usuário.</p> - <p>Os dados anônimos poderão ser utilizados para fins de melhoria da plataforma, transparência e para o uso em pesquisas.</p> - - <p>Dúvidas? Leia a Ãntegra dos <span ng-click="hide()">Termos de Uso</span> ou fale conosco por meio do <span ui-sref="contato">formulário de contato</span>.</p> - </div> +<Dropdown + options={options} + value={defaultOption} + placeholder="Select an option" + className=${ toggleClassName ? '"my-custom-class"' : '""' } + placeholderClassName=${ togglePlaholderClassName ? '"my-custom-class"' : '""' } + menuClassName=${ toggleMenuClassName ? '"my-custom-class"' : '""' } +/> +`} + </pre> </div> - ); - } + </section> + </section> + ) } +} -export default Teste; +export default ObjectArrayExample \ No newline at end of file diff --git a/src/Pages/UploadPage.js b/src/Pages/UploadPage.js new file mode 100644 index 0000000000000000000000000000000000000000..b37b9238f2b948b90ab935b77c1f24efb6afb38c --- /dev/null +++ b/src/Pages/UploadPage.js @@ -0,0 +1,167 @@ +/*Copyright (C) 2019 Centro de Computacao Cientifica e Software Livre +Departamento de Informatica - Universidade Federal do Parana + +This file is part of Plataforma Integrada MEC. + +Plataforma Integrada MEC is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Plataforma Integrada MEC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ + +import React, {useState, useEffect, useContext} from 'react' +import axios from 'axios' +import {apiUrl, apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import UploadFileWrapper from '../Components/UploadPageComponents/UploadFileWrapper.js' +import {Store} from '../Store.js' +import {InfoBox} from '../Components/UploadPageComponents/StyledComponents.js' +import Stepper from '../Components/UploadPageComponents/Stepper.js' +import {getAxiosConfig} from '../Components/HelperFunctions/getAxiosConfig.js' +import PartOne from '../Components/UploadPageComponents/PartOne.js' +import PartTwo from '../Components/UploadPageComponents/PartTwo.js' +import PartThree from '../Components/UploadPageComponents/PartThree.js' +import ModalLearningObjectPublished from '../Components/ModalLearningObjectPublished.js' +import {Background} from '../Components/UploadPageComponents/StyledComponents' +import LoadingSpinner from '../Components/LoadingSpinner.js' +import {Redirect} from 'react-router-dom' + +export default function UploadPage (props) { + const {state} = useContext(Store) + + {/*Object : link or file uploaded*/} + const [object, setObject] = useState() + + const [loading, toggleLoading] = useState(true) + const [draft, setDraft] = useState({}) + useEffect( () => { + if (state.currentUser.id !== "") { + const config = getAxiosConfig() + let payload = {} + axios.post( (`${apiUrl}/learning_objects/`), payload, config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + setDraft(response.data) + toggleLoading(false) + console.log(response) + }, (error) => {console.log(error)}) + } + }, []) + + const [activeStep, setActiveStep] = React.useState(0); + const stepperControl=(increment)=>{setActiveStep(activeStep + increment)} + + const [objectSubmitted, toggleModal] = useState(false) + const handleModal = (value) => {toggleModal(value)} + + const handlePost = () => { + if (state.currentUser.id !== "") { + const config = getAxiosConfig() + let payload = {} + axios.post( (`${apiUrl}/learning_objects/` + draft.id + '/publish'), payload, config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + handleModal(true) + console.log(response) + + }, (error) => {console.log(error)}) + } + } + + const handleSubmit = () => { + if (state.currentUser.id !== "") { + const config = getAxiosConfig() + let payload = { + "submission" : { + "learning_object_id" : draft.id + } + } + + axios.post( (`${apiUrl}/submissions/`), payload, config + ).then( (response) => { + if ( response.headers['access-token'] ) { + sessionStorage.setItem('@portalmec/accessToken', response.headers['access-token']) + } + handleModal(true) + console.log(response) + + }, (error) => {console.log(error)}) + } + } + + return ( + <React.Fragment> + { + state.currentUser.id === '' && + <Redirect to="/"/> + } + { + loading === true ? + ( + <LoadingSpinner text={"CARREGANDO..."}/> + ) + : + ( + <> + <ModalLearningObjectPublished + open={objectSubmitted} + handleClose={() => {toggleModal(false); props.history.push('/')}} + draftID={draft.id} + /> + { + activeStep === 2 ? + ( + <PartThree draftID={draft.id} stepperControl={stepperControl} activeStep={activeStep} handlePost={handlePost} handleSubmit={handleSubmit}/> + ) + : + ( + <Background> + <div className="container"> + <Grid container spacing={2}> + <Grid item md={4} xs={12}> + <UploadFileWrapper draftID={draft.id}/> + </Grid> + <Grid item md={8} xs={12}> + <InfoBox> + <div className="cabecalho"> + <h2>Informações sobre o Recurso</h2> + <div className="feedback-upload"> + <Stepper activeStep={activeStep}/> + </div> + </div> + { + activeStep === 0 && + <Grid container style={{paddingLeft : "15px", paddingRight : "15px"}}> + <PartOne draftID={draft.id} stepperControl={stepperControl}/> + </Grid> + } + { + activeStep === 1 && + <Grid container style={{paddingLeft : "15px", paddingRight : "15px"}}> + <PartTwo draftID={draft.id} stepperControl={stepperControl}/> + </Grid> + } + </InfoBox> + </Grid> + </Grid> + </div> + </Background> + ) + } + </> + ) + } + </React.Fragment> +) +} diff --git a/src/Pages/UserPage.js b/src/Pages/UserPage.js index 8e5da3b43aafa195457578183449ca4f6f51ee76..83acf71d2e65b3e60dc654cfb92a9ba0f54b6661 100644 --- a/src/Pages/UserPage.js +++ b/src/Pages/UserPage.js @@ -16,32 +16,187 @@ GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Plataforma Integrada MEC. If not, see <http://www.gnu.org/licenses/>.*/ -import React from 'react'; +import React, {useState, useContext, useEffect} from 'react'; import styled from 'styled-components' +import CustomizedBreadcrumbs from '../Components/TabPanels/Breadcrumbs.js' +import { Store } from '../Store.js'; +import Tabs from '@material-ui/core/Tabs'; +import Tab from '@material-ui/core/Tab'; +import Paper from '@material-ui/core/Paper'; +import ModalAlterarAvatar from '../Components/ModalAlterarAvatar/ModalAlterarAvatar' +import TabPanelAtividades from '../Components/TabPanels/UserPageTabs/PanelAtividades.js' +import TabPanelMeusRecursos from '../Components/TabPanels/UserPageTabs/PanelMeusRecursos.js' +import TabPanelFavoritos from '../Components/TabPanels/UserPageTabs/PanelFavoritos.js' +import TabPanelColecoes from '../Components/TabPanels/UserPageTabs/PanelColecoes.js' +import TabPanelRede from '../Components/TabPanels/UserPageTabs/PanelRede.js' +import TabPanelStatusEConquistas from '../Components/TabPanels/TabPanelStatusEConquistas.js' +import TabPanelCuradoria from '../Components/TabPanels/UserPageTabs/PanelCuradoria.js' +import axios from 'axios' +import {apiUrl, apiDomain} from '../env'; +import Grid from '@material-ui/core/Grid'; +import {HeaderContainer, UserProfileContainer, CheckTeacherDiv, StyledTabs, RodapeDiv, NavBarContentContainer, BackgroundDiv} from '../Components/TabPanels/StyledComponents.js' + import Cover from '../Components/UserPageComponents/Cover.js' +import ProfileAvatar from '../Components/UserPageComponents/Avatar.js' +import UserInfo from '../Components/UserPageComponents/UserInfo.js' +import EditProfileButton from '../Components/UserPageComponents/EditProfileButton.js' +import SubmitterStatus from '../Components/UserPageComponents/SubmitterStatus.js' +const GetHeaderConfig = () => { -const maindDiv = styled.div` - background-color : #f4f4f4; - color : #666; - font-size : 14px; - line-height : 20px; -` -const breadcrumbsDiv = styled.div` - display : flex; - justify:content : center; - padding: 10px; -` + let config = { + headers : { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Token': sessionStorage.getItem('@portalmec/accessToken'), + 'Client': sessionStorage.getItem('@portalmec/clientToken'), + 'Uid': sessionStorage.getItem('@portalmec/uid'), + } + } + {/*'Host': 'api.portalmec.c3sl.ufpr.br', + 'Cookie': ''*/} + return config +} export default function UserPage (props){ + const {state, dispatch} = useContext(Store) + const id = state.currentUser.id + + const [tabValue, setTabValue] = useState( + Number(props.location.state) || 0 + ); + const [tabs, setTabs] = useState([ + 'Atividades', 'Status e Conquistas', 'Meus Recursos', 'Favoritos', 'Coleções', 'Rede' + ]) + const handleChangeTab = (event, newValue) => { + setTabValue(newValue) + } + + useEffect( () => { + if (id != '') { + axios.get( (`${apiUrl}/users/` + id), { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Host': 'api.portalmec.c3sl.ufpr.br', + 'Cookie': '' + }) + .then( (response) => { + console.log(response) + + if((response.data.role_ids.includes(4))) { + setTabs([ + 'Atividades', 'Status e Conquistas', 'Meus Recursos', 'Favoritos', 'Coleções', 'Rede', 'Curadoria' + ]) + } + }, + (error) => { + console.log('error while running ComponentDidMout') + } + )} + }, []) + + const redirect = () => { + props.history.push('/') + } + + const [modalOpen, toggleModal] = useState(false) + + return ( + <> + <link href="https://fonts.googleapis.com/css?family=Roboto:100,400,500&display=swap" rel="stylesheet"/> + { + state.userIsLoggedIn? + ( + [ + <React.Fragment> + <ModalAlterarAvatar + open={modalOpen} + handleClose={() => {toggleModal(false)}} + userAvatar={state.currentUser.userAvatar} + /> + + <BackgroundDiv> - return ( - <mainDiv> - <breadcrumbsDiv> - <ol style={{listStyle:"none"}}> - <li><a href="/"><span>Página Principal</span> </a> </li>/<li><span>Minha área</span></li>/<li><span>Atividades</span></li> - </ol> - </breadcrumbsDiv> - </mainDiv> - ); + <CustomizedBreadcrumbs + values={["Minha área", tabs[tabValue]]} + /> + <Grid container spacing={2}> + <Grid item xs={12}> + <div style={{padding : "10px 0 8px 0"}}> + <UserProfileContainer> + <HeaderContainer> + <Cover id={id}/> + <ProfileAvatar id={id}/> + <UserInfo/> + <EditProfileButton/> + </HeaderContainer> + + <CheckTeacherDiv> + <SubmitterStatus /> + </CheckTeacherDiv> + + <RodapeDiv> + <NavBarContentContainer> + <StyledTabs + value ={tabValue} + onChange ={handleChangeTab} + indicatorColor ="primary" + textColor ="primary" + variant = "scrollable" + scrollButtons = "auto" + TabIndicatorProps={{style : {background:"#00bcd4"}}} + > + { + tabs.map( (tab) => + <StyledTab label ={tab} key={tab}/> + ) + } + + </StyledTabs> + </NavBarContentContainer> + </RodapeDiv> + </UserProfileContainer> + </div> + </Grid> + + <Grid item xs={12}> + {tabValue === 0 && + <TabPanelAtividades id={id} config={GetHeaderConfig()}/>} + {tabValue === 1 && + <TabPanelStatusEConquistas id={id} config={GetHeaderConfig()}/>} + {tabValue === 2 && + <TabPanelMeusRecursos id={id} config={GetHeaderConfig()}/>} + {tabValue === 3 && + <TabPanelFavoritos id={id} config={GetHeaderConfig()}/>} + {tabValue === 4 && + <TabPanelColecoes id={id} config={GetHeaderConfig()}/>} + {tabValue === 5 && + <TabPanelRede id={id} config={GetHeaderConfig()}/>} + {tabValue === 6 && + <TabPanelCuradoria id={id} config={GetHeaderConfig()}/>} + </Grid> + </Grid> + </BackgroundDiv> + </React.Fragment> + ] + ) + : ( + <> + {redirect()} + </> + ) + } + </> + + ) } + + +const StyledTab = styled(Tab)` + .Mui-selected { + border-bottom-color : #00bcd4 !important; + } + .MuiTab-wrapper { + border-bottom-color : #00bcd4 !important; + } +` diff --git a/src/Pages/UserTerms.js b/src/Pages/UserTerms.js index 411fdd623c1f375c51d1107ec011ccf5f92211d0..ad0dead21f5d83f11b46a41287905ec38f6763a3 100644 --- a/src/Pages/UserTerms.js +++ b/src/Pages/UserTerms.js @@ -46,6 +46,7 @@ const center={ width: "100%", textAlign: "center" } + const container={ paddingInline: "15px", paddingBlock: "20px", @@ -54,6 +55,7 @@ const container={ width:"750px" } + const secao2={ height: "100%", alignItems: "center", @@ -67,6 +69,7 @@ const AColorido = styled.a` text-decoration:none; ` + const ImagemSeçao2 = styled.div` font-family: Roboto, sans-serif; @@ -107,6 +110,7 @@ const ImagemSeçao2 = styled.div` } } ` + const Secao3 = styled.div` background-color: #FF7F00; @media (min-width: 1000px) { @@ -208,7 +212,7 @@ class UserTerms extends Component { return ( <div style={{color:"rgba(0,0,0,0.87"}} > - <link href="https://fonts.googleapis.com/css?family=Kalam|Pompiere|Roboto&display=swap" rel="stylesheet"/> + <BannerStyle> <h2 style={{width: "100%",textAlign: "center",marginTop:"0px", paddingTop:"6rem",marginBottom:"16px",fontSize:"52px",fontFamily: "'Pompiere', cursive",color:"#fff",fontWeight:"500"}}>TERMOS DE USO</h2> diff --git a/src/Store.js b/src/Store.js index c2e0f669847b6a71faf2f77f73dd079e27a8ab24..2d5aaa81d7419740f6f4a34618975773ea836cac 100644 --- a/src/Store.js +++ b/src/Store.js @@ -22,7 +22,7 @@ export const Store = React.createContext() const initialState = { searchOpen: false, - userIsLoggedIn : true, + userIsLoggedIn : false, userAgreedToPublicationTerms: false, userAgreedToPublicationPermissions: false, modalColaborarPlataformaOpen : false, @@ -34,11 +34,20 @@ const initialState = { width: 0, height: 0 }, - loginInfo: { - username : 'Horstmann', + currentUser: { + askTeacherQuestion : true, + id : '', + username : '', email : '', accessToken : '', - client : '' + clientToken : '', + userAvatar : '', + userCover : '', + uid : '', + followCount : 0, + collectionsCount : 0, + submitter_request : 'default', + roles : [] } } @@ -63,19 +72,19 @@ function reducer(state, action) { return { ...state, userIsLoggedIn:action.userLoggedIn, - loginInfo:action.login + currentUser:action.login } case 'USER_SIGNED_UP': return { ...state, userIsLoggedIn:action.userLoggedIn, - loginInfo:action.login + currentUser:action.login } case 'USER_LOGGED_OUT': return { ...state, userIsLoggedIn:action.userLoggedOut, - loginInfo:action.login + currentUser:action.login } case 'USER_AGREED_TO_PUBLICATION_TERMS': return { @@ -87,6 +96,16 @@ function reducer(state, action) { ...state, userAgreedToPublicationPermissions : action.userAgreement } + case 'USER_ACCESSED_USER_PAGE': + return { + ...state, + currentUser : action.set + } + case 'USER_CHANGED_COVER': + return { + ...state, + currentUser : action.currUser + } default: return state } diff --git a/src/env.js b/src/env.js index f3072030af819b06ffeee3edf0daa783c35c524e..1f221ee7772cbcd5478dcb68a32769645a7e862d 100644 --- a/src/env.js +++ b/src/env.js @@ -21,5 +21,10 @@ var apiDomain = 'https://api.portalmec.c3sl.ufpr.br', apiVersion = 'v1', apiUrl = apiDomain + '/' + apiVersion; +var simcaqAPIDomain = 'https://www.simcaq.c3sl.ufpr.br/api', + apiVersion = 'v1', + simcaqAPIurl = simcaqAPIDomain + '/' + apiVersion + export {apiUrl}; export {apiDomain}; +export {simcaqAPIurl} diff --git a/src/img/Bolo.png b/src/img/Bolo.png new file mode 100644 index 0000000000000000000000000000000000000000..509d2acae8705430a4707bb88fc07bd04ae33999 Binary files /dev/null and b/src/img/Bolo.png differ diff --git a/src/img/Pagina_vazia_Sem_publicar.png b/src/img/Pagina_vazia_Sem_publicar.png new file mode 100644 index 0000000000000000000000000000000000000000..34c77b8a07af865b2e1d53c058acccab5d311f8e Binary files /dev/null and b/src/img/Pagina_vazia_Sem_publicar.png differ diff --git a/src/img/Pagina_vazia_colecao.png b/src/img/Pagina_vazia_colecao.png new file mode 100644 index 0000000000000000000000000000000000000000..0dbf187a01d49f7df1d69780d18ceaf38f3c4efa Binary files /dev/null and b/src/img/Pagina_vazia_colecao.png differ diff --git a/src/img/ajuda/Banner3.png b/src/img/ajuda/Banner3.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ef4e07a32fb559bc56fa6fb708c996136d0277 Binary files /dev/null and b/src/img/ajuda/Banner3.png differ diff --git a/src/img/ajuda/Encontrando_recursos.png b/src/img/ajuda/Encontrando_recursos.png new file mode 100644 index 0000000000000000000000000000000000000000..29945370b3a73a2443a72a83933bf7c07507652f Binary files /dev/null and b/src/img/ajuda/Encontrando_recursos.png differ diff --git a/src/img/ajuda/Gerenciando_a_conta.png b/src/img/ajuda/Gerenciando_a_conta.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b1f2ea797f367a58d3f7bf86d9ff949303aef2 Binary files /dev/null and b/src/img/ajuda/Gerenciando_a_conta.png differ diff --git a/src/img/ajuda/Participando_da_rede.png b/src/img/ajuda/Participando_da_rede.png new file mode 100644 index 0000000000000000000000000000000000000000..747d8e7b8d0363044694dbe1a074a2edaa79a85e Binary files /dev/null and b/src/img/ajuda/Participando_da_rede.png differ diff --git a/src/img/ajuda/Publicando_recursos.png b/src/img/ajuda/Publicando_recursos.png new file mode 100644 index 0000000000000000000000000000000000000000..ea861e1461d148656d459e6421e782b032ab94aa Binary files /dev/null and b/src/img/ajuda/Publicando_recursos.png differ diff --git a/src/img/ajuda/busca_img.jpg b/src/img/ajuda/busca_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14b104c1d681312d31aadfa88e1b137392379715 Binary files /dev/null and b/src/img/ajuda/busca_img.jpg differ diff --git a/src/img/ajuda/filtros_img.jpg b/src/img/ajuda/filtros_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c729375e0e3047e589821308c7c9952f7df83737 Binary files /dev/null and b/src/img/ajuda/filtros_img.jpg differ diff --git a/src/img/ajuda/login_img.jpg b/src/img/ajuda/login_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..700149684a857b2069cb2f10a7d7cf162412cbe1 Binary files /dev/null and b/src/img/ajuda/login_img.jpg differ diff --git a/src/img/ajuda/recuperarsenha_img.jpg b/src/img/ajuda/recuperarsenha_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0dce269aa9827be92471994f0f76cba73de1fca Binary files /dev/null and b/src/img/ajuda/recuperarsenha_img.jpg differ diff --git a/src/img/banner-sobre.jpg b/src/img/banner-sobre.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa5d39fcdde21ae4740e41723f6be0322ef9add0 Binary files /dev/null and b/src/img/banner-sobre.jpg differ diff --git a/src/img/carousel/Icone_Ativado_dot1.png b/src/img/carousel/Icone_Ativado_dot1.png new file mode 100644 index 0000000000000000000000000000000000000000..d4615fc12547fede8d2968ebde275750ff99d327 Binary files /dev/null and b/src/img/carousel/Icone_Ativado_dot1.png differ diff --git a/src/img/carousel/Icone_Ativado_dot2.png b/src/img/carousel/Icone_Ativado_dot2.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a38a6f2356075498bec8855f55f725750fc02a Binary files /dev/null and b/src/img/carousel/Icone_Ativado_dot2.png differ diff --git a/src/img/carousel/Icone_Ativado_dot3.png b/src/img/carousel/Icone_Ativado_dot3.png new file mode 100644 index 0000000000000000000000000000000000000000..a88dcacc3c8c127de87556bc60e2f6f1853a27a8 Binary files /dev/null and b/src/img/carousel/Icone_Ativado_dot3.png differ diff --git a/src/img/carousel/Icone_Ativado_dot4.png b/src/img/carousel/Icone_Ativado_dot4.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b4dae4b8b5c2ca1af0beddbb027110417cbadf Binary files /dev/null and b/src/img/carousel/Icone_Ativado_dot4.png differ diff --git a/src/img/carousel/Icone_Ativado_dot5.png b/src/img/carousel/Icone_Ativado_dot5.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b16457cb8ae81959b4804f8242753e039bd1f2 Binary files /dev/null and b/src/img/carousel/Icone_Ativado_dot5.png differ diff --git a/src/img/carousel/Icone_Desativado_dot1.png b/src/img/carousel/Icone_Desativado_dot1.png new file mode 100644 index 0000000000000000000000000000000000000000..768dca2e0d2a5bfeab3879dda87b08616129e426 Binary files /dev/null and b/src/img/carousel/Icone_Desativado_dot1.png differ diff --git a/src/img/carousel/Icone_Desativado_dot2.png b/src/img/carousel/Icone_Desativado_dot2.png new file mode 100644 index 0000000000000000000000000000000000000000..95c279a584949313ece18c94bfe4d37ea0099645 Binary files /dev/null and b/src/img/carousel/Icone_Desativado_dot2.png differ diff --git a/src/img/carousel/Icone_Desativado_dot3.png b/src/img/carousel/Icone_Desativado_dot3.png new file mode 100644 index 0000000000000000000000000000000000000000..e051bf78d5aa4d47815667171787ba73b8f8f0ee Binary files /dev/null and b/src/img/carousel/Icone_Desativado_dot3.png differ diff --git a/src/img/carousel/Icone_Desativado_dot4.png b/src/img/carousel/Icone_Desativado_dot4.png new file mode 100644 index 0000000000000000000000000000000000000000..87566bfa863f13c8fa5ea8eed1d0cc3a45a2e1cc Binary files /dev/null and b/src/img/carousel/Icone_Desativado_dot4.png differ diff --git a/src/img/carousel/Icone_Desativado_dot5.png b/src/img/carousel/Icone_Desativado_dot5.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcb41a558c605c47816f75dd4955791aa890167 Binary files /dev/null and b/src/img/carousel/Icone_Desativado_dot5.png differ diff --git a/src/img/carousel/Icone_Grande (1).png b/src/img/carousel/Icone_Grande (1).png new file mode 100644 index 0000000000000000000000000000000000000000..ae07f5fd18dcd423d6c5fd687696912bd298e79d Binary files /dev/null and b/src/img/carousel/Icone_Grande (1).png differ diff --git a/src/img/carousel/Icone_Grande (2).png b/src/img/carousel/Icone_Grande (2).png new file mode 100644 index 0000000000000000000000000000000000000000..406ad3590086d9624d1f9d91f2c045e93eb36574 Binary files /dev/null and b/src/img/carousel/Icone_Grande (2).png differ diff --git a/src/img/carousel/Icone_Grande (3).png b/src/img/carousel/Icone_Grande (3).png new file mode 100644 index 0000000000000000000000000000000000000000..ba51d785fcaba6bf066520351a11b15c9028edc4 Binary files /dev/null and b/src/img/carousel/Icone_Grande (3).png differ diff --git a/src/img/carousel/Icone_Grande (4).png b/src/img/carousel/Icone_Grande (4).png new file mode 100644 index 0000000000000000000000000000000000000000..caff1e53e7c8f4fb0723d3e1700dc4935e9535e4 Binary files /dev/null and b/src/img/carousel/Icone_Grande (4).png differ diff --git a/src/img/carousel/Icone_Grande (5).png b/src/img/carousel/Icone_Grande (5).png new file mode 100644 index 0000000000000000000000000000000000000000..5ee6025af4e2b756aec222582594e4e190e052dd Binary files /dev/null and b/src/img/carousel/Icone_Grande (5).png differ diff --git a/src/img/cc_license.png b/src/img/cc_license.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb047a53b1ae83749aabc59ba93fbe4646d23f3 Binary files /dev/null and b/src/img/cc_license.png differ diff --git a/src/img/check-decagram-blue.svg b/src/img/check-decagram-blue.svg new file mode 100644 index 0000000000000000000000000000000000000000..15efed94c3126ed6e595231196466d12419253a9 --- /dev/null +++ b/src/img/check-decagram-blue.svg @@ -0,0 +1,3 @@ +<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M22 10.46L19.56 7.68L19.9 4L16.29 3.18L14.4 0L11 1.46L7.6 0L5.71 3.18L2.1 3.99L2.44 7.67L0 10.46L2.44 13.24L2.1 16.93L5.71 17.75L7.6 20.93L11 19.46L14.4 20.92L16.29 17.74L19.9 16.92L19.56 13.24L22 10.46ZM9 15.46L5 11.46L6.41 10.05L9 12.63L15.59 6.04L17 7.46L9 15.46Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/check-decagram-gray.svg b/src/img/check-decagram-gray.svg new file mode 100644 index 0000000000000000000000000000000000000000..a2415acd16d87f63695aa51800458ade254c530c --- /dev/null +++ b/src/img/check-decagram-gray.svg @@ -0,0 +1,3 @@ +<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M22 10.46L19.56 7.68L19.9 4L16.29 3.18L14.4 0L11 1.46L7.6 0L5.71 3.18L2.1 3.99L2.44 7.67L0 10.46L2.44 13.24L2.1 16.93L5.71 17.75L7.6 20.93L11 19.46L14.4 20.92L16.29 17.74L19.9 16.92L19.56 13.24L22 10.46ZM9 15.46L5 11.46L6.41 10.05L9 12.63L15.59 6.04L17 7.46L9 15.46Z" fill="#D1D1D1"/> +</svg> diff --git a/src/img/comentarios.png b/src/img/comentarios.png new file mode 100644 index 0000000000000000000000000000000000000000..8427d16029a99af4896d1d1ea0b16c7a76f88450 Binary files /dev/null and b/src/img/comentarios.png differ diff --git a/src/img/ecd.png b/src/img/ecd.png new file mode 100644 index 0000000000000000000000000000000000000000..46b6ccc37527909668b77dbcb1cfcd2b9eedf7c1 Binary files /dev/null and b/src/img/ecd.png differ diff --git a/src/img/facebook.svg b/src/img/facebook.svg new file mode 100644 index 0000000000000000000000000000000000000000..9f26683d6c6e48183deb7869d12add3da9324834 --- /dev/null +++ b/src/img/facebook.svg @@ -0,0 +1,4 @@ +<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M25 50C38.8071 50 50 38.8071 50 25C50 11.1929 38.8071 0 25 0C11.1929 0 0 11.1929 0 25C0 38.8071 11.1929 50 25 50Z" fill="#3B5998"/> +<path d="M31.2852 25.9792H26.8242V42.322H20.0655V25.9792H16.8511V20.2357H20.0655V16.519C20.0655 13.8611 21.3281 9.69922 26.8844 9.69922L31.8908 9.72016V15.2952H28.2583C27.6625 15.2952 26.8247 15.5929 26.8247 16.8608V20.241H31.8757L31.2852 25.9792Z" fill="white"/> +</svg> diff --git a/src/img/gamification/gem.svg b/src/img/gamification/gem.svg new file mode 100644 index 0000000000000000000000000000000000000000..4f083b2c9fc2fa8603aadfd86afbfdddc50458f8 --- /dev/null +++ b/src/img/gamification/gem.svg @@ -0,0 +1,17 @@ +<svg width="203" height="307" viewBox="0 0 203 307" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M51.5765 127.504L2.37646 102.604L51.5765 127.504Z" fill="#CA1818"/> +<path d="M51.7765 127.504L101.076 1.80389L2.37646 102.604L51.7765 127.504Z" fill="#CA1818"/> +<path d="M51.7766 129.304C51.3766 129.304 50.8766 129.204 50.4766 129.004L1.0766 104.104C0.576595 103.804 0.176595 103.404 0.0765953 102.904C-0.0234047 102.404 0.0765953 101.904 0.476595 101.504L99.1766 0.703867C99.8766 0.00386721 101.077 -0.196133 102.077 0.203867C103.077 0.603867 103.577 1.50387 103.277 2.30387L54.0766 128.004C53.8766 128.504 53.3766 129.004 52.6766 129.204C52.3766 129.304 52.0766 129.304 51.7766 129.304ZM5.7766 102.204L50.5766 124.704L95.0766 10.9039L5.7766 102.204Z" fill="white"/> +<path d="M150.277 127.504L199.777 102.604L101.077 1.80389L150.277 127.504Z" fill="#CA1818"/> +<path d="M150.276 129.304C149.976 129.304 149.776 129.304 149.476 129.204C148.776 129.004 148.277 128.604 148.076 128.004L98.8765 2.30387C98.5765 1.50387 99.0765 0.603867 100.077 0.203867C101.077 -0.196133 102.277 0.00386721 102.977 0.703867L201.677 101.504C202.077 101.904 202.176 102.404 202.076 102.904C201.977 103.404 201.576 103.804 201.076 104.104L151.576 129.004C151.176 129.204 150.676 129.304 150.276 129.304ZM107.077 10.8039L151.576 124.704L196.377 102.104L107.077 10.8039Z" fill="white"/> +<path d="M150.276 127.504L101.076 304.304L199.776 102.604L150.276 127.504Z" fill="#CA1818"/> +<path d="M101.076 306.104C100.876 306.104 100.676 306.104 100.376 306.004C99.1763 305.704 98.4763 304.804 98.7763 303.904L147.976 127.104C148.076 126.604 148.476 126.204 148.976 126.004L198.476 101.104C199.276 100.704 200.376 100.704 201.176 101.204C201.976 101.704 202.276 102.504 201.876 103.204L103.176 304.904C102.876 305.604 101.976 306.104 101.076 306.104ZM152.376 128.604L109.876 281.304L195.076 107.104L152.376 128.604Z" fill="white"/> +<path d="M51.7765 127.504L2.37646 102.604L101.076 304.304L51.7765 127.504Z" fill="#CA1818"/> +<path d="M101.076 306.104C100.176 306.104 99.2764 305.704 98.8764 304.904L0.176405 103.204C-0.223595 102.504 0.0764047 101.704 0.876405 101.204C1.6764 100.704 2.7764 100.704 3.5764 101.104L53.0764 126.004C53.5764 126.304 53.9764 126.704 54.0764 127.104L103.376 303.904C103.676 304.804 102.876 305.704 101.776 306.004C101.476 306.104 101.276 306.104 101.076 306.104ZM7.0764 107.104L92.2764 281.304L49.7764 128.604L7.0764 107.104Z" fill="white"/> +<path d="M51.7764 127.504H150.276L101.076 1.80383L51.7764 127.504Z" fill="#CA1818"/> +<path d="M150.276 129.304H51.7764C51.0764 129.304 50.3764 129.004 49.8764 128.604C49.4764 128.204 49.2764 127.604 49.4764 127.004L98.7764 1.30385C99.0764 0.503845 99.9764 0.00384521 101.076 0.00384521C102.176 0.00384521 102.976 0.503845 103.276 1.30385L152.476 127.004C152.676 127.504 152.576 128.104 152.076 128.604C151.676 129.004 150.976 129.304 150.276 129.304ZM54.9764 125.704H147.176L101.076 8.00385L54.9764 125.704Z" fill="white"/> +<path d="M51.8764 127.504L51.7764 127.804H101.076H150.376L150.276 127.504H101.076H51.8764Z" fill="#CA1818"/> +<path d="M150.276 127.504H51.7764L101.076 304.304L150.276 127.504Z" fill="#CA1818"/> +<path d="M101.076 306.104C99.9764 306.104 99.0763 305.504 98.7763 304.704L49.5764 127.904C49.4764 127.404 49.5764 126.804 50.0764 126.404C50.4764 126.004 51.1764 125.704 51.8764 125.704H150.276C150.976 125.704 151.676 125.904 152.076 126.404C152.476 126.804 152.676 127.404 152.576 127.904L103.376 304.704C103.076 305.504 102.176 306.104 101.076 306.104ZM54.6763 129.304L101.076 295.804L147.376 129.304H54.6763Z" fill="white"/> +</svg> + diff --git a/src/img/horstmann.jpg b/src/img/horstmann.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4e7e494f1615ddd3e2a650a2fc7099c8e4b3c1a Binary files /dev/null and b/src/img/horstmann.jpg differ diff --git a/src/img/how_to_reg-24px.png b/src/img/how_to_reg-24px.png new file mode 100644 index 0000000000000000000000000000000000000000..f378a7cef66b68d45211178a21847bb0ee1ec38c Binary files /dev/null and b/src/img/how_to_reg-24px.png differ diff --git a/src/img/img-16.png b/src/img/img-16.png new file mode 100644 index 0000000000000000000000000000000000000000..bae9507a3fbf5d58f54c77bcd76241a086c43a12 Binary files /dev/null and b/src/img/img-16.png differ diff --git a/src/img/link_icon.svg b/src/img/link_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..5f2d96763de83f27ecc3a3774c1570813419e7d9 --- /dev/null +++ b/src/img/link_icon.svg @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#F4F4F4;} + .st1{fill:none;} + .st2{fill:#1BB8D1;} + .st3{opacity:0.2;fill:#5E5E5E;} + .st4{fill:#3D3D3D;} + .st5{fill:none;stroke:#879AA2;stroke-miterlimit:10;stroke-dasharray:3;} + .st6{fill:none;stroke:#F07D1A;stroke-miterlimit:10;} + .st7{fill:none;stroke:#B5B4B4;stroke-width:0.5;stroke-miterlimit:10;} + .st8{fill:#F07D1A;} + .st9{fill:#FFFFFF;} + .st10{fill:#CBD4D7;stroke:#B5B4B4;stroke-width:0.5;stroke-miterlimit:10;} + .st11{fill:#1DB8D1;} + .st12{fill:#879AA2;} + .st13{fill:none;stroke:#879AA2;stroke-miterlimit:10;} + .st14{fill:none;stroke:#879AA2;stroke-miterlimit:10;stroke-dasharray:2.9932,2.9932;} + .st15{fill:none;stroke:#879AA2;stroke-miterlimit:10;stroke-dasharray:2.9723,2.9723;} + .st16{fill:#FCD7B2;} + .st17{fill:none;stroke:#F07D1A;stroke-width:5;stroke-miterlimit:10;} + .st18{fill:#5E5E5E;} + .st19{fill:none;stroke:#879AA2;stroke-width:1.5;stroke-miterlimit:10;} + .st20{fill:none;stroke:#879AA2;stroke-width:2;stroke-miterlimit:10;} + .st21{fill:none;stroke:#5E5E5E;stroke-width:3;stroke-miterlimit:10;} + .st22{fill:none;stroke:#879AA2;stroke-width:0.5;stroke-miterlimit:10;} + .st23{fill:#EEF0F2;} + .st24{fill:#EEF0F2;stroke:#879AA2;stroke-width:0.5;stroke-miterlimit:10;} + .st25{fill:none;stroke:#CBD4D7;stroke-miterlimit:10;} + .st26{fill:#B6DFE9;} + .st27{fill:none;stroke:#879AA2;stroke-miterlimit:10;stroke-dasharray:3.0202,3.0202;} + .st28{fill:none;stroke:#879AA2;stroke-miterlimit:10;stroke-dasharray:2.9409,2.9409;} + .st29{fill:#CBD4D7;} + .st30{fill:none;stroke:#B5B4B4;stroke-width:0.5;stroke-linecap:round;stroke-miterlimit:10;} + .st31{fill:#525252;} + .st32{fill:none;stroke:#1BB8D1;stroke-miterlimit:10;} + .st33{fill:#B53F8F;} + .st34{fill:none;stroke:#B53F8F;stroke-width:2;stroke-miterlimit:10;} + .st35{fill:none;stroke:#CBD4D7;stroke-width:1.4;stroke-miterlimit:10;} + .st36{fill:none;stroke:#1BB8D1;stroke-miterlimit:10;stroke-dasharray:3;} + .st37{fill:#D9D9D9;} + .st38{fill:none;stroke:#CBD4D7;stroke-width:1.8;stroke-miterlimit:10;} + .st39{fill:#FBFBFB;} + .st40{fill:#F07E1B;} + .st41{fill:#EEF0F1;} + .st42{fill:none;stroke:#F07E1B;stroke-width:1.5;stroke-miterlimit:10;} + .st43{fill:none;stroke:#E6007E;stroke-miterlimit:10;} + .st44{opacity:0.4;fill:#05080A;} + .st45{opacity:0.6;fill:#05080A;} + .st46{display:none;} + .st47{fill:none;stroke:#E6007E;stroke-width:3;stroke-miterlimit:10;} + .st48{fill:none;stroke:#E31E17;stroke-miterlimit:10;} + .st49{display:inline;fill:none;stroke:#010202;stroke-linecap:round;stroke-miterlimit:10;} + .st50{display:inline;fill:none;stroke:#C11718;stroke-width:1.6;stroke-miterlimit:10;} +</style> +<g id="BG_1_"> +</g> +<g id="BG"> +</g> +<g id="Cards"> +</g> +<g id="Camada_11"> +</g> +<g id="Elementos"> + <g id="ic_x5F_inbox"> + </g> + <g> + <g> + <g> + <path class="st29" d="M12.3,50c-2.8,0-5.4-1.1-7.4-3.1l-1.8-1.8c-2-2-3.1-4.6-3.1-7.4c0-2.8,1.1-5.4,3.1-7.4l11.8-11.8 + c2-2,4.6-3.1,7.4-3.1c2.8,0,5.4,1.1,7.4,3.1l1.8,1.8l-2,2l-1.8-1.8c-1.4-1.4-3.3-2.2-5.4-2.2c-2,0-3.9,0.8-5.4,2.2L5.1,32.4 + c-1.4,1.4-2.2,3.3-2.2,5.4c0,2,0.8,3.9,2.2,5.4l1.8,1.8c1.4,1.4,3.3,2.2,5.4,2.2c2,0,3.9-0.8,5.4-2.2l8.2-8.2l2,2l-8.2,8.2 + C17.7,48.9,15,50,12.3,50z"/> + </g> + </g> + <g> + <g> + <path class="st29" d="M27.7,34.5c-2.8,0-5.4-1.1-7.4-3.1l2-2c1.4,1.4,3.3,2.2,5.4,2.2c2,0,3.9-0.8,5.4-2.2l11.8-11.8 + c1.4-1.4,2.2-3.3,2.2-5.4s-0.8-3.9-2.2-5.4L43.1,5c-3-3-7.8-3-10.7,0l-8.2,8.2l-2-2L30.4,3C34.4-1,41.1-1,45.1,3l1.8,1.8 + c2,2,3.1,4.6,3.1,7.4c0,2.8-1.1,5.4-3.1,7.4L35.1,31.5C33.1,33.4,30.5,34.5,27.7,34.5z"/> + </g> + </g> + </g> +</g> +<g id="Camada_7"> +</g> +<g id="Guides2" class="st46"> +</g> +<g id="Especificações"> +</g> +<g id="Guides" class="st46"> +</g> +</svg> diff --git a/src/img/loading_busca.gif b/src/img/loading_busca.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ce6d59693025fbd428c063f7f565a858c20d4db Binary files /dev/null and b/src/img/loading_busca.gif differ diff --git a/src/img/logo_google.svg b/src/img/logo_google.svg new file mode 100644 index 0000000000000000000000000000000000000000..a939ddc19ab24537dcd45e107724c7f55431a89a --- /dev/null +++ b/src/img/logo_google.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"><defs><style>.cls-1{fill:#4285f4;}.cls-2{fill:#34a853;}.cls-3{fill:#fbbc05;}.cls-4{fill:#ea4335;}.cls-5{fill:none;}</style></defs><title>btn_google_dark_normal_ios</title><g id="Google-Button"><g id="btn_google_dark_normal" data-name="btn google dark normal"><g id="logo_googleg_48dp" data-name="logo googleg 48dp"><path id="Shape" class="cls-1" d="M18.64,10.2a10.341,10.341,0,0,0-.164-1.841H10v3.481h4.844a4.14,4.14,0,0,1-1.8,2.716V16.82h2.909A8.777,8.777,0,0,0,18.64,10.2h0Z" transform="translate(-1 -1)"/><path id="Shape-2" data-name="Shape" class="cls-2" d="M10,19a8.592,8.592,0,0,0,5.956-2.18l-2.909-2.258A5.43,5.43,0,0,1,4.964,11.71H1.957v2.332A9,9,0,0,0,10,19h0Z" transform="translate(-1 -1)"/><path id="Shape-3" data-name="Shape" class="cls-3" d="M4.964,11.71a5.321,5.321,0,0,1,0-3.42V5.958H1.957a9.011,9.011,0,0,0,0,8.084L4.964,11.71h0Z" transform="translate(-1 -1)"/><path id="Shape-4" data-name="Shape" class="cls-4" d="M10,4.58a4.862,4.862,0,0,1,3.44,1.346l2.581-2.581A8.649,8.649,0,0,0,10,1,9,9,0,0,0,1.957,5.958L4.964,8.29A5.364,5.364,0,0,1,10,4.58h0Z" transform="translate(-1 -1)"/><path id="Shape-5" data-name="Shape" class="cls-5" d="M1,1H19V19H1V1Z" transform="translate(-1 -1)"/></g></g></g></svg> \ No newline at end of file diff --git a/src/img/logo_parceiros/ENEF_AEF.png b/src/img/logo_parceiros/ENEF_AEF.png new file mode 100644 index 0000000000000000000000000000000000000000..fddea853a3a12fbca00a872ca14e09406e3d5cc0 Binary files /dev/null and b/src/img/logo_parceiros/ENEF_AEF.png differ diff --git a/src/img/logo_parceiros/educagital.png b/src/img/logo_parceiros/educagital.png new file mode 100644 index 0000000000000000000000000000000000000000..833769267d9b581976f035747ec11af63ed7f075 Binary files /dev/null and b/src/img/logo_parceiros/educagital.png differ diff --git a/src/img/logo_parceiros/fundacao-lemann.png b/src/img/logo_parceiros/fundacao-lemann.png new file mode 100644 index 0000000000000000000000000000000000000000..a44b6149f67898d3646da16c6fb33e9af126c7cf Binary files /dev/null and b/src/img/logo_parceiros/fundacao-lemann.png differ diff --git a/src/img/logo_parceiros/futura.png b/src/img/logo_parceiros/futura.png new file mode 100644 index 0000000000000000000000000000000000000000..72e0fd5b66df75353a3468f58e142b82d2a4e85a Binary files /dev/null and b/src/img/logo_parceiros/futura.png differ diff --git a/src/img/logo_parceiros/ic_bioe.png b/src/img/logo_parceiros/ic_bioe.png new file mode 100644 index 0000000000000000000000000000000000000000..1bc47c707ab283e3965d1a38cc203455e441645d Binary files /dev/null and b/src/img/logo_parceiros/ic_bioe.png differ diff --git a/src/img/logo_parceiros/ic_default.png b/src/img/logo_parceiros/ic_default.png new file mode 100644 index 0000000000000000000000000000000000000000..3829583aa25b35d1c8eaf94ada77dd7013f8132b Binary files /dev/null and b/src/img/logo_parceiros/ic_default.png differ diff --git a/src/img/logo_parceiros/ic_diaadia.png b/src/img/logo_parceiros/ic_diaadia.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee86dee5a83c880699d529310cc2011e6bf838f Binary files /dev/null and b/src/img/logo_parceiros/ic_diaadia.png differ diff --git a/src/img/logo_parceiros/ic_dominiopublico.png b/src/img/logo_parceiros/ic_dominiopublico.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd2832af0396b94880172914e0a500ba20b6fc7 Binary files /dev/null and b/src/img/logo_parceiros/ic_dominiopublico.png differ diff --git a/src/img/logo_parceiros/ic_escoladigital.png b/src/img/logo_parceiros/ic_escoladigital.png new file mode 100644 index 0000000000000000000000000000000000000000..ce05b1f8d10ea8815b3931991db4d9197c9c5ed6 Binary files /dev/null and b/src/img/logo_parceiros/ic_escoladigital.png differ diff --git a/src/img/logo_parceiros/ic_nute.png b/src/img/logo_parceiros/ic_nute.png new file mode 100644 index 0000000000000000000000000000000000000000..40eb4474b28fbc62eb9756f704c63c5ad47bc597 Binary files /dev/null and b/src/img/logo_parceiros/ic_nute.png differ diff --git a/src/img/logo_parceiros/ic_peninsula.png b/src/img/logo_parceiros/ic_peninsula.png new file mode 100644 index 0000000000000000000000000000000000000000..b425b05142256d7857b2cbb82b324dbd146cbad2 Binary files /dev/null and b/src/img/logo_parceiros/ic_peninsula.png differ diff --git a/src/img/logo_parceiros/ic_phet.png b/src/img/logo_parceiros/ic_phet.png new file mode 100644 index 0000000000000000000000000000000000000000..5758157be9a5b4a451e8681e79654f775f55c703 Binary files /dev/null and b/src/img/logo_parceiros/ic_phet.png differ diff --git a/src/img/logo_parceiros/ic_portaldoprofessor.png b/src/img/logo_parceiros/ic_portaldoprofessor.png new file mode 100644 index 0000000000000000000000000000000000000000..df0eccf7c3bff1016f8033ddfa38430ba146005d Binary files /dev/null and b/src/img/logo_parceiros/ic_portaldoprofessor.png differ diff --git a/src/img/logo_parceiros/ic_tvescola.png b/src/img/logo_parceiros/ic_tvescola.png new file mode 100644 index 0000000000000000000000000000000000000000..e8488a8ff8f22c1ac419317e369176f12ef80fb2 Binary files /dev/null and b/src/img/logo_parceiros/ic_tvescola.png differ diff --git a/src/img/logo_parceiros/icones.ai b/src/img/logo_parceiros/icones.ai new file mode 100644 index 0000000000000000000000000000000000000000..d54d2505ea8b5adaf80471bffef6a0f6e3e205ad --- /dev/null +++ b/src/img/logo_parceiros/icones.ai @@ -0,0 +1,1042 @@ +%PDF-1.5 %âãÏÓ +1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 22 0 R 37 0 R 60 0 R 74 0 R 89 0 R 107 0 R 125 0 R 141 0 R 157 0 R 173 0 R 189 0 R]/Order 190 0 R/RBGroups[]>>/OCGs[5 0 R 22 0 R 37 0 R 60 0 R 74 0 R 89 0 R 107 0 R 125 0 R 141 0 R 157 0 R 173 0 R 189 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 27416/Subtype/XML/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c111 79.158366, 2015/09/25-01:12:00 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:stMfs="http://ns.adobe.com/xap/1.0/sType/ManifestItem#" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <xmpMM:DocumentID>xmp.did:748fc865-cf1b-6d40-a0f1-1f75821450ff</xmpMM:DocumentID> + <xmpMM:InstanceID>uuid:4bb38d49-3b0c-4af7-9e9d-adca1199c051</xmpMM:InstanceID> + <xmpMM:OriginalDocumentID>xmp.did:748fc865-cf1b-6d40-a0f1-1f75821450ff</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"/> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:748fc865-cf1b-6d40-a0f1-1f75821450ff</stEvt:instanceID> + <stEvt:when>2016-10-06T17:18:17-03:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CC 2015 (Windows)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + <xmpMM:Manifest> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stMfs:linkForm>EmbedByReference</stMfs:linkForm> + <stMfs:reference rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\google2-01.png</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </stMfs:reference> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stMfs:linkForm>EmbedByReference</stMfs:linkForm> + <stMfs:reference rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\banco_objetos.jpg</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </stMfs:reference> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stMfs:linkForm>EmbedByReference</stMfs:linkForm> + <stMfs:reference rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\dominio.png</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </stMfs:reference> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stMfs:linkForm>EmbedByReference</stMfs:linkForm> + <stMfs:reference rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\logo_1__2_.png</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </stMfs:reference> + </rdf:li> + </rdf:Seq> + </xmpMM:Manifest> + <xmpMM:Ingredients> + <rdf:Bag> + <rdf:li rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\google2-01.png</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\banco_objetos.jpg</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\dominio.png</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stRef:filePath>C:\Users\Quintas\Desktop\logo_1__2_.png</stRef:filePath> + <stRef:documentID>0</stRef:documentID> + <stRef:instanceID>0</stRef:instanceID> + </rdf:li> + </rdf:Bag> + </xmpMM:Ingredients> + <dc:format>application/pdf</dc:format> + <xmp:CreatorTool>Adobe Illustrator CC 2015 (Windows)</xmp:CreatorTool> + <xmp:CreateDate>2016-10-06T17:18:17-03:00</xmp:CreateDate> + <xmp:MetadataDate>2016-10-13T19:27:22-03:00</xmp:MetadataDate> + <xmp:ModifyDate>2016-10-13T19:27:22-03:00</xmp:ModifyDate> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>256</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYqtkkSNC7mijqcVJY9qH5g+V7H+9uXY+CROfDxA8cujgkXAzdp4cf
M/YUiufzi0NGpBDPIPH01H65Fy0aSTr5+0OEcrPw/akl1+cmrl6WVrb8T09ZHr2/llywaQdXEn7R
H+GPzH/Hm4fzR87zCsdjYsP9WQfrmxOmh3lgO29UeUYfj/OVm/MTz+BX9HWNOvRv+q+D8vj7z+Pg
2DtbWfzIfj/OWL+a3meFx9dsrVV/a9NXJp9M3zx/LRPItg7ayj6o/L/pJM7b849JbiLi3mQ7c2WN
eNe9P3hOQOkLbD2gxfxAj4ftZBY/mH5Wvf7q5df9aJx4+APhlUsEg7DF2ngycj9hZFHIkiB0NVPQ
9Om3fKXYArsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirTuqIzsaKoJY+w3xU
lhPmb8zNO071ILP9/crVT9pKEch+1GR1GZOPTk83T63tjHisDeX48nmV5rfmLzDcqksvryb8E4xJ
2BO4CfyZmiEYB5bLrc+pNX9yfaR+VerXVHuz6C+FEfx/lkHhlU9SByczT9hZJ7y2+X62Zab+Vfl6
3FbpPrTfOWPx/lkPjmPLUyPJ3WHsLDH6vV8x+lklnoOk2QpbQemB/lufH+Zj45SZk83Z49Jjh9I+
9GiCIdF/E5G2/hDfpp4YFpabeE9V/E4bXhCFvNE0y8jMdzD6iHqOTjsR+yR44RMjk1T08JcwxfUv
yp8v3A/0Nfqh+cknh/NJl8dVIc3VZuwsMvp9PzP6WOSeVfOXl1mm0qfmm1RxgFe3+7Gf+c5d4sJ8
3A/KarTbwNj/ADf033pxoX5oQSTC11aP6vL3epfsW6Rx06Uyuem6hzNL21GR4Z+k/P7gz6CeKeJZ
Ym5RtWhoR0NO+YpFO9BtfgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYql+ua3ZaRYyXV0
3EKDwWjHkwUsB8IaleOThAyNBp1GeOKJlJ415r8+ajrUjW8Z9Oz5HjH8LV+0AalFb7LZscWAR36v
G9odrzykxjtH+3yV/Kn5eX+rGO5uP3VoxBr8LVB4ns6t9lsGXOI7BGg7InmqUto/2eb1/SdC03S4
fSs4vTHf4mPcn9ot/NmvlMy5vY6fSwxCohH5ByHYq7FXYq7FXYq7FXYq7FUm13yppOsRFbmP95+z
JyfbcV2Vl/lyyGUx5OFqtBjzD1Df4/rYFLp/mPyVP9Ytm9fTR/eLSJOooN2Mj/bkzK4o5Pe6Mwz6
I2PVj+A/WeZeiaFrtlrNktzbNUbBxRtm4hiPiC/zZiTgYmi9Fp9RHLHiimWQb3Yq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FUn81eYYND0p7uTd2qkQ33cozL0Vv5e+WYsfEacXWaqOGBkXhHmLzDdat
dy3d03wAsUWg2XkzAfCq1pyzaY4CIoPC6rVT1OT3nb5/DvYffa4/rAQGio1SfGhPiMtp6nsnsMQA
nk+r+w9C9+/Knz3Y6zo9vpzvxvbSJIuFGNVjSNK1CKv2m8c1eowmJt384U9BzGa0Pe6haWcRluZP
TQdTRj3A7A+OVZc0YC5Fsx4ZTNRDFNS/MrToSVtV9bwarL4dmjzS5+3ccdo7/P8AU7jB2JOX1bfj
3sav/wAydVkRuH7oAfa+Bv1x5q8nbeWe0dvl+p2mLsXHHnv8/wBbGb38ztRUlWveRFfh9JR49/Ty
UDrMm97f5rlR7PwD+H7T+tLW/NPVlaqS9O/FP4x5kx0uo6z+wMjosP8AN+0oi2/OLXImHOXko7cY
x+qLL449SP4/si1T7Nwnp9p/WyTSfzwBKrdrQbVNfl/LDlw1OohzHF8g4WXsSB+k/j5vRNH88aJq
YAjl4yN0TjIele5Rf5cy8PaWOZrkfj+p0ufs3Lj3rb4frT8Go2zYOvbxVpgGWhFQcUEPONa8tX3l
u/OtaN/c1rcRfD9jkZX+KRnPRANhmZDIJjhLzmo0c9LPxcX09R9p533Mw8ra/FremC5TZ0PpyjfZ
wisw3Vf5u2Y+XHwmnc6LVDPDiH4KcZW5bsVdirsVdirsVdirsVdirsVdirsVdiqG1LULbT7Ka7uH
VIoULksadO335KMSTQa82WOOJlLkHg/nbzbPrWoSu7BbKFmEQ+EgqrOVbkFU/ZbNphxCI83hdfrJ
6rLwx3F7fM197zvV9U9djFEaxg7kd+o8MvAeo7F7I8Eccx6v7PNKsk9Gi9MuL63vYZ7IH6xE6tHx
UNurAjYgjqBlWbJCESZkAMo4zPYC3tkf5v3iaUiXpWC835EvGx+3UfCsdPs0zi9b2jKRrADId/8A
aPe7XS9i73P8faxVvMtxrN3z3lUfamoFH2dtuK/y0zndZgmBxZT6u7b9Dv8AFijAVFMoNI1m7iL2
FjLdU/kU06/zUp2OY+l0OTMfSDTHNqseP6pAJRe/l5+Zd+xrpEix/wApktx4eLKe2dXpezRiGw3/
AB5uKe1dP/O+/wDUgZPyn/MJBVtGkP8AqyQt+pzmb4cu5A7U05/i+9A3P5f+dbYEy6LdgDqViZx9
618MHAe5tjrsB5Tj80oudN1G1JW5tZYSOokRlpT5j2yJDkRyRlyIKGxZK9teXFu3KJuP0A/rB8cp
y4IzFSCXoXlL82r3TmWK8asG/wDKP5j+zGT1OY0YZcP0eod2zrtV2djy+R/Hm9n0Hzt5e1mNTbXs
Xqmv7rlvsT/MFrstc2WHWwnsfTLuLzGo7Py4uYNd6fVGZjgtOiupRhVWBBHscUEWw3UdJvtB1T9L
aXG0trK3+mwKASFZzJI9WLt0UCij5ZkxmJCi6bLglp8niYxcT9Q+0nqyjTNTtdQtkmgcEkD1E3DK
1ASpBAO1fDKJRILtcOaOSNhF5FtdirsVdirsVdirsVdirsVdirsVdiryP8z/ADe9zMdKs5FNsNpi
jfaDCNx9liDvXqMz9NircvI9udocR8OJ26/Ye95/F5V8x68y22m27BGIDTukvpivwmrIrfzA5kyy
xjzbuwNAP72Xw+w9yf2X/OPGutGGu7y2DEA0jlk2qB/NBlJ1o6PYeKEPr35HXGlWMt3JqNsiRqzU
kmILcVLUFYVqTxynJ2lGAs/j7W3AJZJCIDDbSD0ZPqunwm6vCePNF9TeoX4SnxfapTOf1GTJqpWb
EO7f7RuORep0+lhgjcqtC6hp2uRTcLq2nRz3lSQdgf2hmyw6GGOPFKgHFy9qcR4cf4+RZLAING03
nLTn36VPxe/H+bONnGWu1HDDl+z49zsDk8HHcjv+1n35efm55a9AWF5H9Sn7zcYooju77s0tem3T
rnb4uyxgjUfx9jyGqnLLLiL1e0vbO7j9S2mSZP5o2Vh1I/ZJ8MiQQ4VK+BVrIjgq6hlPUEVGKQUo
1Tyh5d1JGW4sYOTVq4ii5b17lT45ExBb8eryQ5E/MvNfN35HI6y3WiSBXHJvQkNAR8TUVYoevQDK
pYe53Ol7araf4+ZeN3ljeWUxhuoXhkHVXVlPQHowHjmOQ9FCYkLBtQxZpjpOuX+mXCzW0rIVr0Zh
1BH7JX+bMfNpxPcbHvYyiJCju+gPy/8AzIsdbiW2uXEd2K05FRXd2/akZjRVyzS6og8GTn+O95Xt
Hsw4/VD6f7PJnubN0q10R0ZHHJWBDAitQdsUEWKLE54bjy/ra3Mbf7i7tgsiEn4JJJORIA4IAETM
gHjjXV1RidPlsf3cvvJ+XJlkMqSxJLGao6hlI3qCKjpmOQ7WJsWF2KXYq7FXYq7FXYq7FXYq7FXY
qkPnLzDHomkSXFf3xp6ailT8ag0HJT0bLcOPiLg9oasYMZl1/aHhOnwTalqttbuzSSXMscZYkk/E
QvU16DNpI0HgMUTlyAHnIh9A+X9GtdL0y3t4o1V1jQSOFAJYIoJJAWteOamczIvo2mxDHjjEdAPu
Rt3cw2ttLcTMEjhRndmIAooJO5p4ZWTQtyYRMiAHhnm7zDrPnTX/AND6QJDZrL6TOnqFKCRoyxMb
SLTjIN6ZgSickt+T1Olww02Pjl9X7Ph3PQPJH5Y6VoVvHNdRpcX5AZ3cI4DEITxLRqwoy7ZlwxgO
n1vaU8pobR/HmgPzJk0eiWkNpAbk15yLGnIU9NhuN+maTtvtAxj4cTuf2Hvc3sbSWeOXL+0JFqH5
QXut6PFNFcejdfF+7kdlj+2BuBEzfZXM3sDTjTx4pD1H9rX2nr+OfCPpH7PN5br3kPzPoch+s2kh
UdJY45SvQftMi/zUzrYZoydcJAo7yh+ZnmDy9eRF55Li0VgZYZWkf4firRfURa/F3yOTBGQRKAL3
nyl+Zvl3zBAnGdbe6IAaGZokblRa0X1HNKvTNdkwSi0SgQy9WVlDKQVO4I3BrlDBvFXYqwjzz+We
meYLZpLeNLe+FODqEQHdAeREbt9lNsrnjt2Wi7RliO+8fx5vnTVNJvtMumtbyJopVpUMrL1Ab9oK
ejZikU9fiyxmLCDwNqN0rVbvTbpLi2kZHWtOJYdQR2K/zZTlxCY82MoiQovqLyb5ntde0qKeN1Mw
RRKgIJrwUtsGc9XzM02fjjvzDxGu0hwzI6J/mS4SXeYdPS+0m5hI+MRuYiOofgwUjY775OEqLTnx
DJExKR+Qtb+sQz6VMWNzYSPCC5/YhCR9zXr7ZZmh173G0cyLxy5x+4bMtyhz3Yq7FXYq7FXYq7FX
Yq7FXYq8W/NLW3vdYFrHLytrf7KK1ftpGx5AEjqNs2WmhQt4rt7VGeTgB2j+kBLPy8s/rHmuwJFV
ik5H6FZh2P8ALk85qBcTsjHxaiPkXvgoBTwzVPoDzf8AM3zBeXMsPlrSiWubxljmKciVSUyQtX02
JABI6rmNklxHhDuuztOIg5Z8h+wp55E8jWPl/T43ZA9/KqvPKwUsGZU5ANwRvtJXfLYQoOJrdbLL
L+iyW9uktbWW4kICxIzmu32QT3p4Y5cghEyPQOHigZyER1eUaJb3HmTzCJJ6tH/uw7kD90QOvP8A
kzitJCWrz2eX7Pj3PY6qcdLgoc/2/DveuRoqKFUBVHQDbO4AA2DxhJPNQvtMsL6P07u3jnXwkRX7
g/tA+GSEiOSgvLfPH5IaddW8t5olYbpFLC3+FY2ICgAJFCSdlP05mYtURsW2OXveM32l+YvLd+RI
k9pLG20qiWMHix6MQh6pmcJRmG4EFn/kf87tRsDFZayPrFrVVE3xPIPsLu0koFKAnpmNl0oO4a5Y
u57boXmbR9btUnsbiOTkATGHQuKgHcKzfzDMCeMxO7QYkJrkEOxV5v8Amx5Ai1XT21GyiH12GlVR
RV+TRp+yjMaKp75VkhbuOy9cccuGX0/2vnogg0IofDMV61rFLO/yr84z6LrcdvK/+iXBWNlYmg5y
Riu7Kv2Vyn6J8Q+Lr+0dKMuM94/UX0fbXEdxBHNGQUkUOpFDswqOmbSMrFvFyiYmiqEAih6HrhYv
HrzUm8s/mosLMy22qUfiDRa3F4RyIqg6J75nRjx4/d+pwtTDhlHIPKJ+96/FIskSSKaq6hlI8CK5
glzAbFrsUuxV2KuxV2KuxV2KuxVDajdraWclwxACU3PTdgPEeOGIsteWfDG3zfe3k15cvczU9SSn
KlabAL3J8M3MRQp80y5TORkeZZl+U0IbXi5H2KEfTHJmNqj6Xc9gRvNf45F69qd4tnp9xcsR+6id
wPEqpanUeGarNk4IGXcHu8OPjmI95YZ5L0E3uqXXmK+UtJLLILUOK0jZ0mQrzBpSppRsx9KLHGeu
7stfn4IjFHpz+0M8zMdQwX8xvMBigGnQNRn3kIO/Eh0ING/hnOdua3hj4Y6/tD0HYujs8Z/HIq/5
caSLawa7daSTU6j+RpF8B45Z2FpuGHEeZ/a19tajinwjkP2MzzfujdirsVSXzB5P0LXbd4r62Qs4
I9YJGZBUMKhmVt/iJyyGSUeTISIeHeefyY1LSZJbrSQ11Z/EwT4pJAPjbpHEq/ZUZn4tUDsW+OS2
G6N5m8xeWr4G2llheFvjt5GlVCVYVDIGT+ShzIljjMMzEF7r5D/ODTNahittSZLW/oqsSUjRmoim
nOVmNWY5rs2mMeXJx5Y6ekZita10V1KuAVPUHfFINPmL8y/LI0PzBIkScbeTj6YpQfDHGT0VR1bM
PJGi9r2dqfFx78/2liGQdgvhleKVJUNGRgykbbg17YJCwgh9KflR5j/S3lyOORwZrYLEQTVqRxRi
u7MerZbpZ2CO54/tbT+Hkscj+ss3zLdU8L/PsNb+ZdNvoyUkSGBQ67EUlmaoIp4eObHR/SQjLj48
Uh5H7nrHkW+a+8naPcsSzvaxhmJqSUXgSTU9eOYWYVMtWn/uwD02+WyeZW3OxV2KuxV2KuxV2Kux
Vhf5r3gi8sS2x63PGn+wljbwzJ0o9Vum7dyVpyO/9YeJ5snhGf8A5ROP0xIvc0/4hLmJquT0Ps+f
3h/HQsz8/wB6qW9taHpLMlfkwdfDOV7YzcMYx75D9L6X2RiuUpdwP6GR6OirpNkq/ZWCID6EGbTT
f3cf6o+51uoP7yX9Y/e1q96llptxcsaenG7L7lVLU6HwwanKMeMyPQH7l0+I5JiPeQ8TvruTUNUk
mff1pTxG3RnJA6Dxzz7NlOXISep/S95ixjHjAHQfoe4afai2tI4R0Sv4sT7+Oeh4cfBEB4HNPikS
iMta3Yq7FXYq7FWJ+dfy70bzLbOZU4XgU+nNVzQ0enwh0X7T1y7FmMGcZkPnfzl5H1XyzfOk61t+
R9KWqCo5MF+EO56JXfNniyiYciMgWT+Qvzh1HRylnqbevZCvE0VOP22/YiZjVmGVZtMJbhjPHb6A
0jWLDVrRbqyk9SJq70ZehK/tBT1U5rZRINFxyKedfnvpay6LDegfFBy5H/XkhUd/4Zj5hs7vsTLU
zHv/AGvA8xnqmV+QvIt35pviit6drHvJLQN9lkBHHmh6Pk4QtwNdrRgj5vW/LPlW38l+YIbaGf1h
eRqrfAVoZZFU9Wk/33mLOfhakD+dED5l0+bOdVgJIrhP3D4d70jNs6B4L/zkTOv6ZsoP2vq8Un0c
5xmx0Q2Lfh5M2/I67abyZbxE7QqQo+c0vt7ZRqx6nBx7ZJx7j99l6JmK3uxV2KuxV2KuxV2KuxV5
f+dNy4/RkCmin1/UHj/dEZnaMc3lvaSZAgO/i/3ry/M15RmP5XXHpeZoY/8AfrUH0Ryf1zH1I9Lu
uw51nA7/ANRZF+ZF4x1OCP8A32FYfQ8g8M8+7dyfvAPxzL7J2Jj/AHZP46M38rXqXWhWjg/3UUcb
fNY1r2HjnQ9n5RPDE9wA+wOh1+IwzSHeT95YV+YvmD15f0dEfgjNX2/aBdD1X+Oc/wBua3iPhjp+
0O97G0fCOM/jkWJaJF6usWMf89xEv3uBmk0kbyxH9Ife7nVSrFI/0T9z3jPSHz12KuxV2KuxV2Ku
xVB6rpVlqllJaXaepDKrKwqw+0pX9kqejZKMiDYSDT5o8/8A5a6h5YlMy/vbE/Zk+FegQHb1Hb7T
5tcOcTcmE7SXyv5w1jy7diexkov7cfFDy+FgN2V6U5nLMmMSG7KUQXq3mX8xtI80/l/qEdfTv09G
kXxt1uVP2uCL9lK5p9VgMYuR2ZEx1Efj9xeMZrXsn1D+WehppXle1AFHnRJm37vDHXu38uZmMUHi
O0c3HlPl+spJ5t1Gvm+zof7oxJ/wMze2ct2ln/wqPlX+6Luez8P+DS87/wByHoNtKDZRTMdjGrk/
7GudTiNxB8nmsgqRHm+ZPzh1kan5wnINVtQ1uPlHPL7L/Nm600ai34xQZx/zjxOfT1GLt+5/XOco
1o5OrqtRPz4fue1Zr3KdirsVdirsVdirsVdiryD84XJ1S1XsvqU+lIs2Gk5F5D2jPqj8f968+zLe
aTjyddC2806ZKTQfWEU/7M8Pf+bK8wuJc3s6fDqIH+kyr8wZfU1tSOhhBH0yPnmPbh/f/D9JfeOx
P7i/xyCV2HmDUrK1ktoJOMcoYMKKftAL3U+GYOHW5McTGJ2Puc7Lo4ZJCRG4S53aR2djVmJLH3O5
zFJJNlyQKFBN/KKcvMFl/kyxN90i5ndmC88fePvDhdomsMvcfuL2zPQXhHYq6uKuxV2KuxV2KuxV
RurWC6t2gnXnE9OS1I6EEbgg9RhBpXzr+Zv5XTaC7X9gvLTzTkKgcf7tB9uR2NWc9s2eDUcWx5uT
CdvOIv7wf59sGuP7o/jq7Ps4fvh8fuKNt2jEymQ0Tep38PbOfhEyNB6bLLhjb6u0zzBo9zoYnsJ/
Uhhgop4utOEYP7ag9CMy8944knoHg4xMp13l5ZfXn1rzGZj0Nzsfb1SfAeOefZsvHqL/AKX6Xt8W
PgwV/R/Qn/n78xrHRvLcenWz89QntxGUow4q8TpWpjZTRl8c9H7PwmUIk8qH6HjMkLyS95+989XV
xJcXEs8hq8rs7H3Y1PSnjm6Apm9i/wCceGpc6gvj6P6p8wtbyDqsn+MH8dHuea5yHYq7FXYq7FXY
q7FXYq8i/OOJl1K0cjZ/UofkkQzYaTkXkfaQeqHx/wB688zLeZXQyNHKki/aRgwPuDXEhlE0bZJf
6omopayAjnDbxwv81qT2HjnmvtHglHPdbH9cn3D2R10MulEQfVH9EYoTOeerdiqc+UJFTzDZ1NOU
saj6ZFzP7MlWePvH3hwe0ReGXuP3F7ZtnoLwjsVdirsVdirsVdirsVdiqncW8VxC0Mo5RtTkKkdD
XthBpXzV+ZnkOPy3qgktyPqs32F7jgkYPV3bq+T1Wo4oV1eg7GHFInu/awadqLTxyHZ+K533ftdl
2pmAx8Pf+xOvKFlcNeG4oViVacqbEhlNPuzE9pu0I48Xhg+qX3ESDgdl6YynxHkP2Mr1GURWUzk0
ojb/AOxJzhNDjM80QP5w+96DUS4YH3F5vcv6lxI9a8mY/ea569gjw44juAeMyG5E+allzB7R/wA4
8ofXv2/4w/qnzB1vIOomb1B8v1Pcs1zlOxV2KuxV2KuxV2KuxV5p+dFnI8Om3KAcIfX9U71+IxKv
bM3RnmHmfaPETGMu6/t4XlWZzyLsVV7WcxyAE/CdvxGaTtzs/wDMYiR9Ud/kD5PUey3bB0moAkfR
I18zHfmO5NAQQCOhzzGcDEkHmH3HFkE4iUdwRbsi2IzR5xBqtnMTQRzxsf8AYuDl+lnw5YnukPva
NTHixyHeD9z3kUOekvnrsVdirsVdirsVdirsVdirjir53/OjWxfeYfqsTckg6gGv24om7E+GYuU2
Xrux8PDjs9f1lg+seWtW08QPcQsFuOfpni/7FK9VHjm20cowx2fxu67XZvFyUPxszDS7FLO0jiAo
1By+fEA9h4Z5l2jrDnymR5Wa+Zek02EY4AJd5svRBYemD8ch4kd6MrDxzbezOkOTPxdI7/EGLh9q
ZuHHXU/qLBs9KeXdir3v/nH3TZY9Mub1qcJvT4UrX4HmU12/jmu1ktwHURH+EZD/AFfuev5guU7F
XYq7FXYq7FXYq7FWJ/mdYNdeVbl442kmi4emqjkfimjrsAT0GX6aVTdV2ziM9PKue33h4Xm0eAdi
rsSLSDRtHWVzWkbHfsfuGcL7Q9jkE5YDbr9p6B9U9kPaMSAwZTv0v/NiBvL9CNzjn0gLkYq4YdVI
I+jEGigiw9w8vammoabFOrVY8uW9f2mHifDPRdFnGXGD+ObwOswHHkITPMtxXYq7FXYq7FXYq7FX
Yqgda1S30vTZr24YLFFxqagfaYL3Kjq3jgJptw4zOQiHzNoVje+bvNiK4LG4r6r/ABELwhPGpIkp
X08w4jiL2eecdPi9363qf5jyaLM1tZwRRs9rz+ILGQPU9NuozUdr9qGMfDgefP7D0LrOydESfEn+
OYYa7qiFm2Cgk/RnKwiZEAdXoyaFsB8x6ibu+YA1SOqjw+Fm9z456f2BoPAwAn6pb/MB5TtHUeJk
8h+1Kc3zr3Yq+n/yY017PyRYytT/AEmPmKeBkkYdh/Nmp1Urm6zHH1Sl3n7iQzvMZudirsVdirsV
dirsVdiqjeWy3Ns8DAFXpUHpsQffwwg0WE4cQp8239jNY3clrNT1I6cqVp8Shh1A8c3MZWLfM8+I
45mJ5hD4Wp2KtqSpBGxGQyYxOJieRbcOaWOYnE0QUxtboOArH4v9r3zzztrsSWGRnAXD7uZ6B9h9
mfaeOpgMWQ1kG3v+kdZEkklE5zT27Nfy98xi0uDY3L0hk+wxOw4h2PVgBUnwzoOxNdwS4Jcj+0ui
7Y0XHHjjzH7HqANRXOweTdirsVdirsVdirsVdirx/wDO7zeEgXRbaTd6+uFPgYpV+y36xlGaXR6D
sbSb8Z/HMJF5CEXl/SpNQKg6jcU9EMAePB3Rv5HFUfsc1Gt7QGGND6vx5uzz4Tnnw/wBTmnlnkMk
rF3PVmJJ2FO+cfOZkbLtIwERQY55n1hbe3NvE3759moeikMOxB6jOm9neyjlyeJIekfeOE9zq+0t
YIR4RzP7WFMxZixNSTUnPRYxAFB5om2skhEadaSXl/b2sQrJPIka1rSrsFHQHxwE0GrNKoH3Prny
bpx03yppNk324bWIP/rFQzdh3PhmlyyuRLh4hUQnOVtjsVdirsVdirsVdirsVdirxz82NCe01VL+
KICC6rVkXZfTSNPioABUnbfNjpZ2KeN7f0vDMTA2l+igx3yj5e/TmsQWjlltyw9Zl2YLRm2JVh+z
3y3Lk4RbrOz9H4+QRPLq9C1D8ntIMBNlcTicD4RK6ca0PXjFXrTMSOrPV6LL7O469JN+df8AEsA1
7yZrOkOxlhaSFa/vUV2WgrvyKKOi5lwzRk89quzcuE7ix8f1JECytUbEYcmKOSJjIWC4uDPPFMSi
akEfbXgYBX2Pj/tnOE7Y9nzjJni3j3fM9A+rezntdHKBizmpcr/0o5mXvRscjxuHQlWHQg0Ph2zl
ATE2HvyBIPU/JvnGK+iFreOqXC9GYgA1Lt1ZiTQDOy7L7UGQcMz6v7fN5PtLs04zxR+n+zyZhm9d
I7FXYq7FXYq7FUq8x6/Z6Hpkl7dOAqUotVBNXVdgzL/N45GUqDfp8EssuEPm101HzDqb6hqJYB6c
h8XZOHw8+f8AIO+c/ru0xDlvL8eb3WHAMceEMkLEgL0UdFHQV9s5TJllM2S3RiByTHQ9CvNWulhh
Q8DXlJRuI2JG4Dfy5kaTRzzSoOPqtXHDGywX8z9Oi0/zRNbxV4LyArTtNIOwHhnq3Z+COPEIx/Gw
ePlmlkPEWI5nMXYqz38nvKzaz5ohnlST6tYlbgSqPgMkU0R4MxVh0bpmNqcnDFxNSbqL6cRFRFRd
lUAAewzUsQG8VdirsVdirsVdirsVdirsVS7X9Gt9Y0uaxnFUl413I+y6t2K/y+OThPhNuPqtPHNA
wPIvM/y3X9G+aJNPlNXJUA+NYnbtX+bxzN1G8beX7Hj4WoMDz/YXrua97Ba6K6lWFVIoR7HFBFvO
PPf5eRyiXUdPWj0aSVKk1Pxuxq7/AC7Y/mp4t+cXV6vsTFnBMdp/E/prm8rngkhlaOQUdSQRsdwa
ds2en1MM0bi8brdDk00+GY+79vcrW940ezbr/n7Zo+1OwIZvVDaX9nm9T2D7XZdMeDJ6ofAVz7ok
8ymMUoYckOcDqdLPBKpCi+s6LX4tVDixmx8f0gdzNfLHn6e0At7795F2fZafaPRUJ6kZtuz+2ZQ9
M9x/b3BwNd2QJ+qGx/Hm9G0/VLPUIvUtn5r32YdyP2gPDOrwaiGUXEvM5sEsZqQReXNLsVdiqB1P
WbDToy9zJxIFQKMa7E/sg+GY+fVQxC5FyMGmnlNRDxvzVrDa9fiaUfuY/wC6Tw5KobcBT1XOP13a
08u0dh+PJ7HQ6EYY+aWUGad2DJfLPk661WQSy/Bbd22NftDoGU9Vzbdn9lyzGztH+3zdVru0o4RQ
+r8eT1ew061sIFgt04Itdqk9ST3J8c7TDgjjjUeTyGbNLIbk+W/zRvBdecb5gfhSSVfunk9h45vt
OKiG6A2Yll7JWtLWa7u4bWBeU07rHGtQKs5CgVJA6nATTGcuEW+rvy90B9I8s2MU4pdNBEZB/KTE
gK7MwNCvXNPmnxSLhR33PVk2UsnYq7FXYq7FXYq7FXYq7FXYq7FWF+c9IW0vYPM0CVlspFkuN+qV
jQ9SR9gHouZOGdjh73Tdo6cRkM45xNn7B93kyjSdQh1HToLuI1WVEY9diyhqbgeOUSjRp2eDMMkB
IdQjMi3OIBFD0xVifmzyLZatG80Q4XVCQfiNTRj3dR1bMHLpjGXiYzUvv69W+Rhmh4eUXH7unR41
qmjXmmzGK4Tiw91PYHsT45s9F2pHKeGXpn3c/wBFcnh+1vZ/Jphxx9WPv2Hd5k8ygo5GQ1U0OZup
0mPNHhmLDqdF2hl00+PGaPw/SD3o6G+U7Pt7/wC0M4ntH2anDfHuP7O+T6f2P7bY8npzek9+57+6
PuTGzvri1lSe2fhIpqrUB3+TA5zMZTxS22kHuv3eaHfEsjtPzC1yFQsjerTvSNfDwTNlj7bzR57/
AC/U6/J2Pily2+f60U35m6oVoIqHx5J/1Ty49v5O77v1NQ7Dx9/3/rS298869cgqJvTRtivGM7Gv
fgPHMXL2vnn1r5fqcrF2Vhh0+/8AWkU08szl5G5MxqTQDc79s1spmRsuwjARFBVsdPur6YQ2yc3P
aoHYn9ojwyeHDLIaiN2GXNHGLkXofl38vIYCJtQ/eMK/u91/mHVH+WdToexIx3yb/jyLzWs7ZMto
bfjzDOERUAVRQDtnQgU6Em0FrepwaVpk19O3GKHjyahP2nCjoGPVvDJwjZpQLfHeoXb3l9cXT/an
keQ/N2LeA8c3kRQpzAoDCpL238jvJP7s63dwcXLUgl51qlIZVHFX+ncZr9Xl6BwZ5OOVDkHtgAAo
OgzAS7FXYq7FXYq7FXYq7FXYq7FXYq7FVO5t47i3lgkFY5VKON+jCh6Uwg0xnESBB6sGjW58p6ww
PxaVdSEnoOBkfr/uxzRI8yTWQebpAJaTJ/tcj95+J5BnNvcRXEEc0R5RyqHQ7ioYVHXMYindwkJA
EciqYGTsVQepaVZajD6N1HzX5sO4P7JHhlObBHIKk24s0ocnnfmD8pyay6a+/wDvun+qOryfPL9N
lnj2JsOh7S7Hx5vVD0y+J7u8vOtS0m+02cw3kfpyDtyVuwP7JPjm3hMSGzxefTzxGpBQhneI/Cdu
4zC13ZuPUxqQ3+P63Y9ldtZ9HMGB9PUbfpB70bFfRtQNsf8AP2zitd7N5cdmHqHwH3yfTey/bXBl
qOX0y+J7u6KKUhhVdxnO5MUoGiN3ssOeGSIlE2C0jq9wlum80hConSpY0G/TrlmLS5Mh9IZzmIiz
yZzoP5dXE6Rz3zemrBW9OgOxoeqv883el7Bkd5/j5F0Wq7aiLEPx9j0Ow02zsIhHbR8E8Kse5P7R
PjnT4cEMYqIp5vLnlkNyKKy5qWu6opZjRR3xV88fm/8AmIutTnS7F62SfbNPtVEUg+0isKMp75s9
Nh4dy5GOFPL1RnYKu5OwGZjOcxEWeT078rvy4k1K/hvr1P3UZWVEqOitGwaqyA9CdqZi6jNwig6m
er8eXDD6X0Na20dtbxwRiiRKqL16KAO9fDNWTbkxjQpVwMnYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
VC+soby2kt5hVHBHfuCOxHjhiaLDJjE4kFh4e+8qXlHHqaPK+7fCPT5N9qg9SRuMceZG0x5uo9Wl
l/tZ+z7zyDMLK9try3juLd+cUihlahGzAEbEA9DmOQQadvjyCYsclfAzdtirsVQeqaTY6lB6N2nN
O27DuD+yV/lyUZGPJpz6eGUVIPMfNH5WT28clzpZ9RUUsYtl2AX9p5PmczcWpvYvLa7sIxBlj3/H
mXn1xaz20rRTLwdSQwqDQg07V8MywbednAxNFu3vLm3Dei/DkCDsDsfmMhkwxnzDfptZkwm4Gvkn
HlHzJDoV5Jcm39WaVizycyv2mVjtxYdVzGOij0egj7VZ5REZ7ge7/iXo9h+bOiTAC6X6udqmsj+H
8seVy0sujmYu38Uvq2+f6k+g87+V5xWK95f88ph+tMqOGQ6OfHtPBLlL7D+pVuPN3l+3iMst1xRa
VPpyHqadlwDFItv53F3/AGF4x+Yf5k6rrqvp+lR8LI05PVDypwcbSRqwoynvmfg04juVPaemhvKX
2S/U87g8vzsayniPDY/qbMq3A1HtLjH0C/n/AMS9H8gflr+kJVnljpa7cmr1FUPQSBvsnMbNn4fe
6/BHNrZXk/u/h+ijyL3LS9MtdNsorS2XjFGqr1JrxULX4ix6LmtlIk2XpMOGOOIjHkEVkW12KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVp40kQo6hkYUZSKgg7dDigi+bGtR8ry28/17R3+ryK/qzQK
SiOASzALGu5Ow3OXRyXsXXZdEYnix7Hn+KdZebhFP9U1W3ltpB0ndPTiIBC/akbr1PyxOLqE49dR
4cgMT38h9rI4poZV5ROsi+KkEfhlRDsBIHkvwJdirsVQd/pGnX8ZS6t45ainJkVj37sD45KMyOTT
l08MgqQBYTrv5T2Vzzk05/RlNSEYqqV3PRIyepGZMNURzdHquwIy3gaP47gwHWPI3mDS2f1YGljW
v7yJJGWgr3KL/LmXDNGTz2o7LzYjuL91/qSBgVYqwow2IOxBGWuBKJHNrFi7FUVp2mX2oz+jaQvK
/cqrMBsTvxB8MjKQHNuw6eeQ1EW9L8p/laIh9Y1gI5PSIb0pyG6yR/I5h5dT/Nep7P7CEfVl3/B7
w9JjjjjQJGoRFFFVRQADboMwnpAANguxS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FU
Jf6TYX8TR3MKPyBHMqpYVBFQSDvvkoyI5NWXDGYqQYvc+XPMmnO82kXpljFOEFxLKw8D8MajxJy4
ZInmHWy0mbGbxyvykT+hSTz3rVjJJHrGj3LcaUls7aQxmor9qRx4jD4IPIrHtGcTWSEveI7faUVb
fmh5YmUF5TB7StEh/wCTmROnkHKx9oYZcpD5j9aIP5jeUQKnUIR85of+a8j4Eu5y4zieRCCu/wA2
vJluCfriSkdo5IG8f+LB4ZIaeZ6NggSxrVf+cgvL8AZLG2uJZRXizJG0ddx1WavWmWx0curMYiwL
zF+dHmPVw8UcccMLVACCVDQ8hvSVhWjZkw0sYpOKFepiMWqarLcGQqzl2qwIcjc18cyKDp9fodJI
EkxifLhHezew8r6/eyrHFYTqHrSRopAgoCdyFPhlUssR1eKxdn5pmhE/I/qZxoX5Rzlo5dTlUL8X
OONjXuBs8XyzFnqu53ml9nzsch+X7Q9A0ny1oulJxtLWNW7y8Iw569WVV/mzElklLm9Fg0ePEPSB
8gmmQcl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqctvbzCksSSA9Q6hv
14QWMog8wkl95F8rXacW063h94oYVPb/ACD4ZYM0h1cWWgwnlED3AfqSS8/J7ytPC6J6iM3Rh6Ip
Q+0WWDVSaT2bHpKY+P7Ekk/IfRiTxlanuyV/5M5Z+cKBosg5ZJ/6YtJ+QmjV+OVqd6Mn/VHH84WY
0mX/AFSf+mKa2H5KeUreLjIrysTy5MIWPQbVMQ22yEtXItkdIa3nM/5yeaf+XXlGy+zp8M3vNDC3
h/kDwyuWeZ6shpIdRxe/dkMVtbwikUSRgdkUL+rKiXIEAOQVMDJ2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2Kv/2Q==</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>48.000000</stDim:w> + <stDim:h>48.000000</stDim:h> + <stDim:unit>Pixels</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Yellow</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + <illustrator:Type>Document</illustrator:Type> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> +endstream endobj 3 0 obj <</Count 1/Kids[7 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[0.0 0.0 48.0 48.0]/BleedBox[0.0 0.0 48.0 48.0]/Contents 191 0 R/Group 40 0 R/LastModified(D:20161013192721-02'00')/MediaBox[0.0 0.0 48.0 48.0]/Parent 3 0 R/PieceInfo<</Illustrator 192 0 R>>/Resources<</ExtGState<</GS0 193 0 R>>/ProcSet[/PDF/ImageC]/Properties<</MC0 189 0 R>>/XObject<</Im0 194 0 R/Im1 195 0 R>>>>/Thumb 196 0 R/TrimBox[0.0 0.0 48.0 48.0]/Type/Page>> endobj 191 0 obj <</Filter/FlateDecode/Length 1243>>stream +H‰lWIŽ7¼×+øæ0™L.WÃÁ|ð–|è±!ùÿ€#VõȺYÌ}!ëå·×ôòñµ¤Ÿ>¼¦£äÞF¯ˆþö‘¾}9^~ù½¤/ÿ%•Ô¦þûóø||}Oø#ý RmœW£QOúzŒ< ¦åJK,EÉu@Íýíxùõ¤ÿŸT?45ýKõMd²(qÉÜZK½dhXÊ«/ÞŽq–ÉX?Ž[]y–ŠõÕ¼–ªãÍÆŽ ÷ã¤ÄóqQdÁÜž¶´Û¨à¡´5m|‡{ý8¨«'!ôlY†Šû± ñ|œ„08Äû3M@o‡ä!dk*!€‘¬zÁíß&œî„‰Î’„ÍÜr®îgD7‘¡•™å¤¨R˺ðv卵þ]7ø”©AÛ5±áëuöÉꂺV$-”UÖâB]ü Þ®ŠôÍ)œø]ÞÔÌ}¢àjÍ,µ>×?½œ(ó´ØP²âäzº¬Ž"kÒÇ!CH@ÐÚJ!Øzé+$&·²7QžMJh/)xt‚…“3œ¥C$õ\à Ìo™W -é,RÀe$~®uÁ˺ÁàMòÞŽ;\Ö¨š Ú<,�³´-½]›=[P Ws¡zExxÄ4|@ÎøÚ~|œ«ì°¡ÔL[AÂì@:jˆ¶$çñè<‡ñnµwÕ +&Û(Å2aós±Œ¼¦DµÌL:B“®ê€þ]0'¬«š×A šªóñŽB5—¥XÛµ8ÿ‚=àCáä¶÷.˜Ê— ª&ã5‚ŠhÎxª©! +Ä´µèZmF੽’K£Ø@ÅÞukèŠx‡adY›{tÎna#7ewE”Ÿ$ððŸ›ÑåUGt¶@Ÿˆd³ ¯µà6tLg0a-Ofª].|ò96‡-ï`yç4J¹®g§Q¡:¨¶´“Ïu9{Ï]› +xY#÷,•7j2L”>N¤¬ñ¾ªë"XMtkW“6foWiaGZi± Ñتí"—˜FiÁíx<a³’ý|Øç#›ùÛUø´¡¶Œ¹Ýd] ®=�xwÕã‚Ús.dÈÏvŽ,;AæÔ·8Ö߃gÒHYéÏ ®’¡RY£H&ƒMW›KTl‹Á9ÇV7V¯1ÐZÌLÖ>¯FX¥É¹h¼ô&&Š–TÛõl†à˜Ñµ©’�vBŒpÀ /[NèÞë>íb9çQ9¢§/³ÛïVå3Q'ÒŽ€qy‰z®‘'DOAi;%(¥Ù=]@ï °z´’Ѧˆ4xÙ€|„:TÿêtFÃ+«ÌN\×àÀ"_…ÚCZï¾U3iƒO•èéÑìµéy@\4eCëhøiSQNˆ+©Xë’å >ãŒÆ¡Óí:«Ké׺§Äó¨±òŽöã0cŠ.œ¸G‰v÷3²DÚn׎#5iuz"Yïv(«fï¬1`@u¸�±Ewþµ{£i{-»{—Ù¿k8Xƒ:r¯ñÜÅ‚1‡w.LÕŽÛ©*«M»“_76¸x4ÜDZ›~ÛÂN»ƒi(îŠsò@ý#ü#áçøRùO€�êµjÖ +endstream endobj 40 0 obj <</CS/DeviceRGB/I false/K false/S/Transparency>> endobj 196 0 obj <</BitsPerComponent 8/ColorSpace 197 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 6/Length 54/Width 6>>stream +8;Xp,*=NntbilQcrP\BEq:Dh)?b\efqXp)5l`h#3lMpqi!97E),l~> +endstream endobj 197 0 obj [/Indexed/DeviceRGB 255 198 0 R] endobj 198 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 194 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/DecodeParms<</BitsPerComponent 4/Colors 3/Columns 630>>/Filter/FlateDecode/Height 201/Intent/RelativeColorimetric/Length 30600/Name/X/Subtype/Image/Type/XObject/Width 630>>stream +H‰ì×gsɆá_|Ò¯½ö®½É9GåÊ9€’@H€„È”³sÎÞýpºçíº‡¬ã$\OÕUOÍLÍ÷»^{k§>J‡ÌvP-…4}¢f¦ýã´åj4Ø?[Vƒ¢5Ÿz¦©ˆ:“Æ–ƒ`ÿ·Ö6¶Ô64P“«¾…T+š«ëíŠ:UL}³Ê®¨³WÖÙªèO]e-WQÃÖ&«¨ÉÕDÊeÕÖʪó¹S©¸]Ù`‚Ô“[&åÂÍò:E™â†ÉºëYµù\»ÍÔX¸%\U]¹ÉT+nTÉ.›UÊ.]ÏqT0 W®–W¸óù\.;grIqöÒrÆäâÓ²·ÉŸ†ó²[œS½õûY±š›ä7ÃÙ_O§¸ëYr'Í®‘_Ȇ«äçß…ä7ÃrœüJ.ÿDN)ŽéŽžºÄcNrGO^<ú÷cÖæÈϲ‹GN\8râ<ó_Å…ŽŸÿáø9æ?†ŸÈYòoÉ¿˜cg¸£gþ©úÇÑÓÜŠ•õÍÒ³¶¹ü l˜dde#³úŬ¬“tkù,‘å’*,³ªH¯&³V +X\*bA–Ê+‘Z¶’I$¹x1±EkÑYÚ,a!’H‡µÕ-E)m…p|)¤â_bKó1¾¡X*KêRóÑd0’d›Yd‚‘Å9m s\r.¼h2’-À¼™?h’ >2'3&³$6ò¢^Ö”ÁÇy|Q·Æã‹÷ŒµÉé°lÂÊš)¯ÞÐø3opy˜ ·0æž“N*F&f%fXã—Í:]§Ë/sŒ1Ǩß1êc†4ƒÌˆa†Vô3N®O˜&½ŽC\÷·‡›êäº ÄÃt‘~Og–›éе÷M*z'Û„ ¡‡kÕ´0Ýã²æ.—ÌÞi#¶®©c”4¶«ÚFHC+WÏ s-B¡™8»³¶ÙYcwÔÚl«‰m¨º‰«²éØs#3ÈTê*˜®¼a€”ÕkêúU}wj¹ÛBïÒs³Zq£Št“ë•Üû¿þ.9o?óþ¯Ïî÷Áðöý‡7ò®ˆ×Ÿèí{æUQoÞYzI^”E½z+{nxù¦€g/ +yúâÍ“ç¯-=ÎçÙ+æQaO_=T¼ž¼|`òø…ì¾¥G/î™=W<|~7׃çûÂ3ÙÞý§f÷¸]ÕÎ]ÃÙöþc³=nKµ¹÷hc÷ÑfŽ‡d}›[˵õ€Yͱ²y_¶¼¡[¿ÇdLÖî’´jiuß$µ¢YÞ#IÕbfW¶Þ‘%KB<µ-‹%·dÑE²iYØ…†u&×ÅÖȼ&5¬’¹ˆb6¼B*hYæ›f‚MšLÏqÞYÙ +âO·?Éù’“’‰™EÕÂÄ47®syI‚ŒM £aÄ×ÄÈð$çÔ9&¢Šñr‘ð 4ýÌhˆé3ŒÌ3½Ã† Óãœ#Ý×54K:uƒ¦}@hðsýÓÊôq-½BsÏ4±ws6C—WÖÔÉíݽ_rvÛ¿÷ìÔÞݶ?Ñ®°Uľ¥ÍƒÙØ.lÏd}‹ì°¶YĪÉÆŽ¥•|Ö·ÉrA™µ\[LzUµ²)[Ê#µœkC–ÌXX4¤×eK¹ÖH"•7$±äªÙâ +ÍYPD–™Hb9, ÅsÄ2Ì|,mŒ*æ"d‰Ì†MR$RøçM’>fds‹º2=«ð ¯?ÁvJåñÇen7鋹}1Û™˜{šïätT6á5D˜qÔàÒŒyÂ[wÈdt’Éš'êñ q +sŒÃ%f™ÁÑ\f`DèöËúœ\/çãB¦{hƤkpšt’ƒ—tôs횶¾)³^ÓÊôp-=n¡›kÖÙ»[פÐÉL4uqÒÈ´s †6âªo긱º2Z«©iv®Z®¶ Uœ³²I¨häʈC7T^Ï•i¾N¾jÝ +¶ìs9x÷Ë—¿²#‹ãž¥Ü&¦3Ÿ|õÜ) _1ó¦S/¦IÞz®m‘LAæ’r›Œ¹žË²TV]—™š)ÑjYRÍ*‰'³¤€*rK*Ò™#¬Æ4’È0áx&$™åˆ¦5KA•S5©Ö% „’„5Tf”TJê"§ÇtÚDÄ4AxI%Ù˜úã$'©1ÙäŒàž‰2RR#2£¤ãSaâ"ª:ʪÓz:o22ÁI1 ç¸Ê5GôªÎ’œ¤L1Õù‰žTŸLJê7$ä&U„Õ()é7L‘ö>ŽzÚJ1•õ¸ …µ¹{ÒÄÞ¥`U•éau íBiê[ÇHi%µ-#„·•çu˜©6Øœ¤JSisT6q‚ÒVž×AR¦ùæ¹DaQØÿ§°ì·(¬Ud¿“ÂZDV6}˜ +»`YXïá(ìXÁÂŽ”ta +Ö"²‡¯°5y +«Ý°(, +‹Â¢°(, +‹Â¢°(, +‹Â¢°(, +‹Â +(, +‹Â¢°(, +‹Â¢°(, +‹Â¢°_¨°…EaQX…EaQX¶ °(, +‹Â¢°¥RXÊ+ +[*PX…EašóŠÂ¢°(, +û¹òŠÂ¢°(, +‹Â¢°(, +‹Â¢°(, +‹Âb(, +‹Â¢°¥UØ1öpVä…EaQX…EaQX…EaQX…EaQØÒ¢°ù +kW…EaQX…EaQX…EaQX…EaQX…EaQX…EaQX…EaQX…EaQXÖª°¦¼¢°(, +‹Â¢°(, +‹Â–…EaQX…=´…-CaQX…EaQX…EaQX…EaQX…EaQXöë6ˆÂ¢°(, +‹Â–ha7QØC]XÜ°(, +‹Â¢°(, +‹Â¢°(l)@aQX…EaQX…EaQØ/ZX9¯(, +‹Â¨°”W…EaQX…Eaqâ°(, +‹Â¢°(, +ûÍs‰Â¢°(, +‹Â¢°(ì!¢°(, +‹Â¢°(, +‹Â¢°(, +‹Â¢°¥…EaQX…EaQX…Ea-óŠÂ¢°(, +{¡°–…-–W…EaQX…EaQX…EaQX…EaQØ藺¦¼¢°(, +‹Â¢°(, +‹Â¢°(, +‹Â¢°(, +‹Â~Ï…íGaQX…EaK²°"¯(, +‹Â¢°(, +‹Â¢°(ìa+¬Y…EaQX…Eaqâ°(, +‹Âþý:júÌã�ÎìlÇmÕz®Š Øé?ÐN÷˜ýmgº;ëzpŸ¢rÔ£¶×ŠœÚz`=Q$$ÜÈ ƒ„#„„#!B$$á]»³º³;⾓¯Æ.A¤”~™÷|'ùæyžoxx^χ¶š–v^„5 0xœÞr$ƒ–ë‚O +K +ûSÛC +K +K +»„…5›FLÚN6…‰væ¨ PÞðð®ó+,ÑXoA|Ægƒ,),),),),)ì¢Ö4d~ØÓÚÎŒfùúçÿmGþö¿ ü}'Ë7 &2JÝ&×¼°zx:ðRIn@©R·+:ÅͲ¦æ–&i‹°®‘+ò"ÛpùB4@J•ª§D¼êÌã˜3[a-1Iag%l—ºˆ}ußka»ñšˆ¾o%¬õæbÖŽWRØÅ&,Á+)ì¢Ö8(¡gPVP~³Š¶Þ‘¶ÑiA³a|øéÄXïHYö!}ƒSCJšaôñÜ„íךšeU^aqin>‹ž‘ÍÈÌÉÈʵ&3;oÒ¼l™K´/xPTÁæÔŠ¤r¥ªVêƒo(,dïí×££¸¹EÞÑE +;£°¸9¯r¥º¥]Ù$mklj54‹›…õ’jn-‡+¬âðKË«JÊÙHE·š'ÄýA¨AR'–Š¥mÒ¶Ž6¥š +ÏAX±T.‰ñÄÖ5),),)ì’Ö04ÒÁåÓ7»Ð·¤oùh!⼶љºv#eùZʲUÔk_wÞ[ è©«K…õ›œÓ\è[mù£;n•s¸†á‡³3Ù,k‘3+'?;·`ÎAw„§€UTZQÕ(‘¶ %í$¼öhû+«jÐRçä1em +t!…JXÜlïèfWóŠJÊY…¥ùÌ"L–`â)ˆXëÒ¼J.Þâ4•Ï,ÄBa©8<¨Û +=ÍÕ.Ò¥QXE—–+¨Ç ™–3Xe5Ÿ––vÉk}Ìܾ޽SR%ü¢,_“êà@{5ëÏŸW†¨‰•$%w02•™Y–d+Ò ×oÖ_½Æ9v¼Ì/�Íèk7¥88¤ýz¥ÜÍ[ÍC½Sg78ÝüôwÌÖàÈ謄5˜†ªkøØ!§¡»·5³Ò\âÊÖwvkôÆ¡i„ëÑØÚ—ù Þ¡1)ì¤Âv¨z‹K+‰éµœ‹æ|4z/1ZIåm«B…ªvaå½’üdÛþ‘Ô‰[À.),)ì’Ö–×%/¬apXÓÚžîòñ;*i›¶PÌ•éêºMyŸý±!&VSÉíÑüËhúÏ“Çž½˜âç¿ÿ~úlôš¡±A*“ÝJ,÷ñg¸|ŒÚ–òþj\iŽ[ÞŦ;o»ç¼-Ôݳ®± “3«¶©¹5,vHÔ#ˆ§¸R¨ô»÷R*1¾¶}íÚ`÷FIÛÐ$…˜–bÖ^Xn ¸´Â"Åë.W®^Sõh§Aö—+¬¥€-`ÙΘÝAˆXbEÆ-ÇL'%\æƒHÜÞ©Q¨´S«ÔÛÌð¬ø‹—8¼zàK +;aù¤°¤°‹GØá‡íE¥éÐj~kC'šæð«¼?üIQ•Ï|:<bÕsŒÈØ�ûüùØä{ÕÌÖݱ`LNgpŽŸÈýô÷©xʼŸ 27:ܾó|Lœ¦O§7¾¡°²üÚº”4Úµë7ãâ.ž +?sô؉ àÀÀ}î‡—§§·›«ûÙ³‘¯Ù¥1üüö…ùêhÄ™³ß}ùƤä{)¸ŸWð�ûݾ ÄË+«»5}¨X' +Ë**±zÁÓYùü¯x7‘ÂN¬a•ÝÚ +v €Ã<c¶‰ §gdcòï§Rï§Po''&ÝMLJ¾t÷¼bbÑ�ל܂|f!Ñq"¸X”´856·)&”±fa»Æ›ÇDû#G¾>!mëBRXRXRØŸµ°ò’òôÍ[çKX”–”VS?\_îíÛÇå=ÑÆÆ^ª:%¦ožWÜþïé³'ºuiY… uå:ʲUfjçéWÈÜäüån· ÐrÅ€ièÍ…ÕLÚ~}tt¬››‡————7<%Tµ¼5ÇÛÛw¾=wÞ*,êÙ={öúøø¡ vuuÇÜ =pâ›°KW°KÛíÞØ‹ËP™Ú!‹·|a¶h¢¼ÂÎÙ#ÏGGHa' +Ûe)c,N5ñ¾?ýcÇ¿9|ø«‡‡"þþ{pLJJ¾O¬–ãÊÕöí:tèÈ×G‡Ÿ>#02²'y±‚x[Ív¨ú&Ô°½MRyFVñÇ�©qºÂãú’'ãSRØ%)¬=¯¤°‹NØÒÅ&,ÍÉ%í½•9Ÿ|&N¸ö£No-WçÖ)*\âçéÈC#³lÏ^ªÃ +êš oÿ‹@Ø#®î»Ü<šše³1˜†êÄÇPº…œ +À¦};)™FÏÈ+`±9Üj._"miWvñjED¥i.3éYØQOŸ>SÁ®ÎÉ+¸{/åò•„ˆˆ³µ;vìòôò>>&%†í×Ù¢’²Þ~½-²xé×UÕðiéiTzTt,FÆ W~0 ÏUX{d—’°ˆJ£k”´¸ººyyzãœãííc9yº»y¸îvÃqhïÞýHPPèa¯&\Gc|º{—+Ennîh€ã°S§¯ßH¤Ñ3m×ÁɇÍá·+{l…E]}\A=þÐåVâÿ€@Œå"ÉjØRXRXRØ¥%,l¥,_Kû`M}lü“Ã;„u²Ô>{üO£TVî·'ÕÁ²r¾Ò[ +»s·›xöÂ"ÆÁa…²K"kíèêÖôéŒC#†ÁaC!zL»i#Â"؇±-Ÿ‹ŒÂ°†¡´ï×;U=²Vy}£„UXwÁËË'0p?ê&¢8µ"+¬kD/Û2o\XXøþ _?__0QZÁÖgV«3ŽÉãøÆ?°Ó4¶š;ga;Õý]š”T&ÙÛÛ÷Øñ“ñ¾¿{Ÿ’Ëd×8<‘@$Ô‰ùÂFæƒbbæ!,õó¸}ç>‡'ddæÞ¸uç\dLpÈž^îîž7$ä‹K—°Êhl[Ì¢½µ’%„E”jÝí;)ÁÁ¡A÷蘸ßfåu +a[Ç5P±eW&W“Â’Â’Âþ|…¥nØLwrFÇ<}´À¶Nt?O´}¨ºãVs=ûSkŽÁI‰–¨+í‚%R«°¬"ûmd”V7𲽃 /F�ÇæáQ¸Æ*,>v*°Z‘Mgd±9\|Ik «T©+«jhôŒØ¸‹Ø¨AFJ*µG«ëÓ§Œövª{[åQC›“Ï,DÍÅÈÈ6'+oyQ›¢-RXâ£ve·DÖÎáÕ–”±sXŒÌ"˜ +fa‰@ÔØ®TMŠì› Û×ÙU÷ê{ûˆ¦ÏУèîÕ«4zÛ¾ÊnmqY%±jÿg¿ÎcšLó8€»l6ûÇÆÌl¼fg'ëdœ¿&³ÙÌf’ì&3*åPä]VÔUnäðAE@9-Ж +½¸ïA)Ж´”¶”«(N²;ÉÎfÌŽî·¼ðòZÑ ˜—üÒ´oßçíï}ò|Þ/!,ž^ŠKDzÓ¸Î�âdžŒãzÓ$ܬmlcp¯Ä'zyy{{ûfe3Éõ²&Y.¿[*Wióª‡kZ1ÃÉ7oœ�ÐÁ!á½2ÍòÂö«Ú»zëÚ$åÕè +KÆáñQÄÌ44wt÷*m¥…¥…¥…ÝÂ:îÎûù¯Š?üx¬£“0n]lµ) û㜒+*®È³ìŽk/ìBUm…홶t1aQ#”2[Æ,uzc!‡w û'¦®Ä'ôÉÈ$[U[ÏåÍ;»BçexEŒY´z�I*±1ãâèl_„ìÒ~Ų«+,ÎÁ¯@üšúf¸¿N4FíŠlœ@á…È®\Xji+•ÖPVYc#,/ÀeÕ:#QpSÃÉø‰Q�Ú~_š“W€ÅMHL*ˆÉž±.]=2•ÖC•ƒÆö.)L$.›—_PUÓô W‰ãàuQajÈkÄ9Õõøç!f`©™ˆÊ»z¨ÈÒÂÒ®PØZØõ–í°‹µyËÃĤ§ÿþÞŠÚ3»àu¶æ¡ºöÞgŸ³~±Ù®„´ÀÄW–tvbjº§OV"ócA^FfNâµë‹xE"¯\VQÝ'WŽNL-më$âm׃^ÕEwé…›6Pk‡g]Eaq‚jP_ßÔZÈ)æñ_Þš ÕÙŸPXT}c+oæÙfa©ju†±>…æÆÔ´;Äc^Ùœ+ß$¨u#Î6¶Ü'™p«ëZH^ +^{åÚªÚ&ÄUë´¬`É„â ++¬sÈÒÂÒÂÒÂÚ¹°¬-ìM¿ÔŠÄH‹v]—rö‰ÑÄ?~a¶Ða·½;aP ’{àÊ…%jÜò¸»§Ë»Gl×E\¾ŸB¥ÁX\A0j®%%ž4-‘aqV×6€0ꞌkb, +±‹(¼'¿ÅÆ~'#kÈ0b4/cÿa]*HRaëÂÆø”ÆXf~qÔ²zÂÖ5¼š°D!Õªt¦ÊÚÆâ{B¢Ut!.¯²¶©uVXÜ 3íéq¤¢ºqÑ«ÐX£«¨¬ŠWü’%£Î@ÏÎeËTZXZØ7OØü7NXÖ¯·•þñOÓ*ÝE×ÅŠ³â¼üd‡…Ûv¾Â"ɪ‡vHòÜ=D´Š+ˆË*Iao$§89974·-Œ±¸ÎàATVÉ¥ìÕبKJE¹yìô;™.~q.8ìì¹ø«‰èDZ +:õ.²Â‚Wiÿ�:¡òŠ{Á‘¬fÊí´Ø¸‹Á!áÁhìlÈ”4B|›Ç*ôô<‚ç ƒy®„E)µ&õÐHyU-¹4‰×®GÇ\”«ô6ÂBC§ƒŒÔô,·éµë¡W°™¼æ0Y˜ +bf°dÁ!a7o¥’kÊ.äzyÍÍçÈTô°¯.l-,-ìš Ëz{÷Ý÷ (ŸÛmt]PÏf˜-‰Ã¶:p·8n|a!‹(Âzyy'&ݘ|4=26Q]×0/ìÍgg×úÆaéÕ<.š³˜Vùì¢è˜þþÇÝÝ=òpsswu=Ä`¸;v¼°IWH{î\h`àÉ>¹r™ûz‚×~¹ +“áGK…’ŒÌœ°ðHoo_tu軵17<<€´M +ëï�e�¨ý k„°umäð[·ÓþÖÖ)EŒ%…%VÁp¾–i#ìÀ ±[:€o©3ƒY9!¡~~Ç0'óKæäIœIëããy>öAŸº_IKKk§Â²ÞÞ*øìóMˆWj˜íé—ÿä“œm;–Gv]„}aåJ g.TâÍQoß°°Ëã'VakÛô‚°³éURAM¯r-)ÙÅÅ ¶ìÒG¼¼CBï|“p#9%%5CÉ°ç‚Caîý=ËÄØ×{e/¤W¼/âGFEã.<fsqv…&‘Ññ ×’®ßL¿›I¸O‹®Â#¢Ôº!ãèj"1WE¼at…ÂÖ7µ“YÝØ°ª¶Y3d¦ ++•ácb/½ ¬ÆÐÕóBzµÎ—u>ÆÅÕÍcnÉ||ýã.}5>áúí´j†õõõ‰è–*iaiaiaíSXÖ–íÜÝï=^"½>·Ë?¤W›&ÅŒ»Ø»–Av]„‘FóØJ„—Ò~•<lÀe)aš[©ÂèòÊ*¯BqyLììÒžžG°Q#ݼ•ÖÙÝ3 Ò"TNLMë†M%BÉÂœèz ý …×è6éuúÌY@†Æp#`"¿€ÓÙ-U¨Ñјy|ª_¡&æ"ìùÍЛšžÌ˜•›¯[±°•5³KÃ/ÝÍÈÞÿÕ._8¨](llÜeRX…Æ •iJ…eÔ™ÁùÁ!aîî˜×£^>ÙLv}3æf@®VéÌݽ¶Â†Ft÷Ò¾©ÂvÑÂnhaÙÛvïûø[îù¼êtC…Lfžüåæ2ÅbÉ¿¾ûΦa|,‰þâ蘽óÝ¥]ka…’“A§ýý†Mæ•;6ù¨±¹LCìƒáâç`™þv¡°'g„!d€mli'u&ÒktL`Å^íá~8éÆM½qtÜ2=2f1NÍ“¥Öêï Ä«*¬Vo’”WQ),â:Å@¿«€32þÈ8jÅ8È`FŸÒ>ź‹ŸËÊÉ;|Ø+#‹¹BaU:SyUÝüÒ$§<ÈÈÌÎ{‰°êa¨Ü&½þ=ˆ˜<›eå²åjƒræ|¹J/SÉTúÖ·´°´°´°CØ{r7m®¬^ŠWƒÁøÅÞî°ÝÁÑaÓÏ6ÙÏ“É´‰±øøÃOÏ…‡;9:íس(²k/ì©Óÿ€+Eb„½úvêä»ÐÐðE3,ƒáÌã—Âb B5ˆ-—üiìçq.éõË/¿âpù°Õhž k „š]=TDðzæÌY4†‚8u-³°Ggk}„m™6›‰I[©°:S¿R+”T÷X"_‰Oprr~©°Cs[7oî["½†„†»»{zxxzyyóe°U®–¶PZXZXZØ $ìŽ=¬Í[úÒÒ¼>[\ض¶¶½|ðÑï?úôŸ^¸x9=#ënföºWjúÝƦ–E¶X¦þz`¿ï{¿]¯«Tk_öÔJ…5[ÇBObl‰Pu>{rBbÒä£éå…ÅX›œxýÆ-WH8†#SOfrëÄZ +:õF4C6†ŠŒŠvss¯˜–¦ÖNÓ˜eÞÖõ¶¡¹ûZÂ"ÀvõÈÈÄÒ`œ\¾pP?º”°àµW¦ÁS—,"âüÌÌxúøøÕ4´©t#V[‰¢…¥…¥…Ýh²Þz§lÿÁ§ßÿçÙb–�«½£ãÃ}û~·woàÉ ‘¤ˆ=ö¥‡Ò¾¥zEom}'þ7ïÿýz j*=ã�îôCgÚé‡v¶ÝQ×êzÇÕnÛ™~Þý¶v•[.à $‚ ŠˆÊÍ+*ÈE®"á&„î$D!$!÷€ˆX§;ÕÝÎ궅þ“#‡cHbt‹sfžq˜ä=ïyÎûÆ÷wþEkAXµÖð~ÂÂÊnIy £8œ�g×’Òr´jGX\«Tiù¥äÁ›Ë-ðöößþ}'>±€uÁ„Õ>ÆPm'%߀øà”�5lÉëb‹ËÛ:%ï)¬Ú(lí$¯Íãò|}9nnŒúF‘B=jSX¥¾uæŽæ•à¥Ë‚ڻ׫²¦fy¥…¥…¥…]nÂæ¯^Ë[µö;~Ú¯Ta7mÞW>s/záì•öö[íyjjúÕ«Ÿ,ÖŸœn®]Ï[pa5z#Ž¾w ÿJûÈF)©é»wïuqq“ôÝǵv„Åå]bò¸Æ6 a±<˜Lvꌉ§ÿ\,ahMmÃLL«ä— d«ïÔMZáu1„UjÞWX•aP¡-¯¨.){½/€+ïëë×Ú!‘«Œ¶„•wî+C@yè+Ãd²JË«åªÑ7x¥…¥…¥…]nÂæýìW½ ×m¥×¹ÂFEÇ.a‰¶Áç[7oÙZøæ³/5a#ˆÔÆšEm?ƒ‘éð;Ž w4ø¸|Dí;öx²±©…<®‹ø¥îîLðŠ”j½al¾°åLXxWU]KöîуÁ¼ž”ŠaÖy%…ZâÂ*ÔÆ!…¶¾QH}·‰ˆŒÂ3†Šè ±),Êâm +{Š¿’(Sk +û€––ö}…áu!„å~ºZð·o_þëùÇ*ìóç/,柶mK[·‘·$……Q3vKúÝȧÃ:'$&™1b¥gd3Û–úüÂ….ή=Ò¾ÑñI[¼Â+Õd·ó+,¬L©+Dcx¨Óá‘hùnDcx‹°†G=’~’¼¥&¬\e)uâÞXmlÁ¬wEî6.-#G©£v„%ߦ—±2A]’‡C +½%¯ofXQ‡„|›¢…¥…¥…]‚Âæ¬X1RZ6m—×å+,Ñy||üªÍ›ŽlqâSq„õ9D +;XÇŸŒO<U€LPSÇ7'5*¯™Y9û÷`³=qÎ÷HzÇ&&Á«ãÂ&§¤9;»?yö^QP¾³GJ6€?Ž›Oaå*]¥à)왳ѻv¹¤gfÇ'5¶x5‹ÞjëIG ¬÷‚›™«Ö?²¶bpßÀpíÝ&&•ÄU¸üDh‹å±k—scsÁ¨ƒÂFž‰vÞår=9]¡³`)¢pëYaŠðS¡…¥…¥…]:Âr?YYëÆøÏËWSSï"lÌ2V¯7üvå§ùã—¹¿_Ï[<aŽíÛç¥3ÂÕ§ ÖeŠ&a+Iœ½ä1K|L½‘áé¹'¼««{JjÚÄÓg¯v„”m³'9¶‰s8�´á+»vbH>B½;Ú>u:iq^„%ª¦®ä €Ç?pà ¸w@g·%¬é*ýX´¿hÆ}\ÈÍ/ôññ[0a³sòöìÙwéò5™R;#,†åIÿ`M鉨‡KPágÀ+“ÉFŸ*ýøBgGXÙˆ¡ª¦ž\< V¦µCŠ�kSXÓÚ–öžâ™ ‰˜¯ßñZXZXZØ¥!ìšÏ¹¿øµ²¢òÖBØÈ3QËHX¼<üøãËoþúͶۣ7m)Z³8ÂbÅN„žrscôö?è‘öÝŠZÑ<ŸrH’¶¢.\¼Œ³¼â’Óá*s¾UX㣉a…ŠWTBø…ÅÍGÇ'QÆGO¨E|Ò-îÃùL•‚Só(¬nôqG·”j%Š:TZ£~t!×¢0Db�¹€¦*¯,ä—;½0Âæóø†çÎ_VêˆÉï?”ÃÊêڻťs_ŠpaTLƒÁb³=±}õ-r•ñ-Â*õ¢v1ueò¸¼–¶žAµLi„³ +ÝCùëTè0Ûý‡ÊFa»ÅÏÆ$¬Ï!ZXZX…%x¥…ýpÂr·Z°Óù§ï˜za·:9âÆçE·ÕAaÍ5œ’òÙ¦ {¿ø"ßñk—W…¥¶J"±Î ä€ôÌ쀀@$ ðêîÎŒŠŽ˜äÕŽ°Ð1¶IØJœ¸#¶¬±©¥SŒTHT{—óàŽs›°g£bç7ÃĪšº¹UU×66‹Ú»$]â^sõµ´v",–ヂLX¼=v5!©Kr÷^KY…€V÷.—Ëóó;Ln\IY•R3&Sêì‹oAaum9'ñ#AU +jëš…] XÔÞ#ê76· îܵÚ�ö—Ãñ§…¥…uXX:Ã~XaoøùÃŒ,GìrÍ‹D·nþzÇŽ¬ux",Jg{#‚Ù(¬·«°¤y܈È(d6˃ÅòpqvMLJQªµ¼Ú1V¥5jê,îBË&Ü‹Ë^—5å‰Â´.Å#õHçMX$ÓA9ì¶ÖX9ñÖA–ÆpyhhXèÉ'¬±KÜ_Rv›ìWTbêÇFKØ;°‹å:wþ¢——76…›•“§Ôšx%…ÚvP®Å�éÀ01›õ-›];+Srâäñ“TaûiaiaiaCØüÏÖñ>Yùê‡;`?a +ÅW_µþË?$lØT¸PÂ>žü‡}aq2£p†gdÞÈ>€•ÍöD:zôX³¨müÉ3ÌcÁ«…° ‰ÉTa‰;¬PÝHË4Ú·«YF“òæèôº± +Á¥ø«û÷{·utÏ—°(ýècakGöÍ\´íÈ»ÇÜÆðÃC€=ú@¦ü@ÂvKÞèÁFŸ&[Í{wåj¢÷A_l¶áÎôãø×7Š”šQ’W”Li@}CX·YaQ²Cmƒ03ûÖ;U[¬Lȉ0ÿÀîÞÁ™†–ö#–àu9 +›÷Ëß´‡Güï¿&>za§¦¦_¼øžÅbmܱ=p‹ß¼ ,¦ohB‡„§Haå•Õ8cqÞ¦¤¦GÇÄ9UYæÜŠhÃd²sr¹r¥b"Îå3‹Ú:‹ø¥˜³]¸ïêâF…¿y…Å8r³næšîhÎYDÔ2µT! v36îBBBz#š<2î5‹ÐÃ| «…‰ZãÕk‰‘QùE¸¯ÆðV Oy6+û2>„)AÁœÃâÞLøA„•Ü'3¬UîÑÆíªš‚Ââó.1˜llvm×NçËW;Åý$¯aõÒþ¡B~ ñR„gwscP…Tèî©._IˆŠ‰ËåòY™|?"ò,P&¶åïÄËë`§ø-,-,-ìb +‹�»jíh{Ç´cv¹Kô¸i›ÓÎíÛ‹JX”alÈfdÝ„t×’âã¯ÅÄž9qÒÇ×~yÌÀŠÐÊfy ·æÜâÊG4ðqt|ÒÌ«ua5zc“°s^ONÝ»w?¢¿¤Œ*,‘d‘°pøc@Tt\rJÚÍ[Ü[¹ù9”JÏÈÐÁÇBöìÙ‡608îÜE|q–í± +Tß©›Ga5ú1|¨Té¯^»Ž·Ç¬§edåPÃè35-3&ö<ò §ç“½ïÿì×{PSWpfÿØÙîììÔº+ *ZÄý£]ûÇζU# ˆŠVå¡E@PEm} ""ï‡<Ã#Þ/’„„„$„ÇPw;;mµu•ÙormPP‘Ã|î=÷Üù'÷æs»÷ TŒ¹ëççyº»ïmhš#aÙ\a½˜¢ðÅKQ.¯4‰Éi˜êÅ//ùøøíÚåF˜£þ¸„„E0Êk½Êîž>-¯Za`Š2Ÿn†Ã>Gu…åhåzÃOÖ¸ðÈ3Q¸Þ¸‰+sãn¡C‡}Õ+³ÓyÏž½X49€É@ùÚmDX",Ö€Â&-6ÎýקÿýŸÑ…$ìåË——[˜¸ÎZo5,Ò?8ÜÁáÚmÛngGX0up؉`ƒF³ßºu›ûž½À—Y^Õ-”¨†F ã/¶þº°²2… +î¨ivr¡(Të +‹sÑRZVxì“O>Ãw/¾º!©«›»›&ض·wÀLÐŽ`¨ÍŸm 8 ý1±šFÌêõ +K!+–*ðÁyxxmÞ¼‹ƒKÀd¨Y¹ív‡ºÛA³Ç|Î_ŒF7ÀÑöíónní˜a5Q´sºãâ“¢Î]8!9y64,„í÷>ˆ÷"L‹ƒ`Ùmm·ŠŒÊ/,å +{(]E2]^u…E„’þË_]ÇYêwª§"Ïé +K!ÛÑÕ“’žíé¹VÆŽ¦^·q+ãøbev8àåêd„eªî×7³g*¬.¯DX",ö…MøãŸk‚¦_À¾ÂæçÓMÌLÿf³îºÙŠ} ‹Ð‹ƒŽõôò:v<"âô•+Wsréíì.ªÞÔÔãlTX ²C¹ù°6…„œDO]^u+YjnaÝŽÿ"8äÐ!ß½{½ðE¯bu\w{zîóõ={'¾…Õ”+«ë0Oß#¨›¤ +Õd¼ÎZX +Y©\gË*jðvtìÔ³îîÚ‰/¯ýG†…E$$¥±\•–‘}ØÇ£–`—âõµ‹"T(QàŸ8GÇç–AvîÃz ëí}0èxpBrzs[§@,‡|”®àuJaái}kÿþƒ¸L”±f5O(ÓVl7zÊ€#£´:ê|´Àq°NŒ‹feðqãÈÇ÷è‰ÐðÛq‰ž¨ïN|2ôõóÏÈ.dóz;¸b",–k(aãŒÄ¹ùMX«ý½¿.¶¶Ywf…eª…¥•Ê•B‰T$‘ +Ž™|häáàð·C#mX_"¬Ùþ!L¾¦îD¦˜LX³ýƒ#òþ!6‡ÿ ©µ¢ª¶¢º¦Øåð„8â1ˆL¡Â”„bOУP OÁë««uV¦À…AÃoÚؘ³¢šYQƒ”WÕ54µrù"t@Ä2%$•);yB®�›Z^çBX ÉæŠnÅÆ{øÜËËÖ¯ÐpT PµQ^ßØ +=E½Êî9æHå¥Â"¼±¥#4µtjyÕ–ÃW‡r¶»GÉ披Ze5ôâ2zq9~—WÔ4âCãŠú¸BY'_Âæ‰9ÝÒféÈÀ+–K„5 °wŒ~øöáèöûïøÝÞYc³î¸åÊ4= K %íSBXlôS-ê£ýêLiëTÂj餀ž‚W*U}JtÆ)ÃÚ`·O9¨9ªÒ‰º3ÊÌ9V1:ËUè¤Ò‹ÈUêCR…XSPKi;§ÂRÈ"%{¾8Êpå-‚C(Hµ¶N_X®�£IQðb[ËëDa_-艀cä—³(XµQ“ÊC‹„âõ¶žK„Â&-Yšiùþ“GGG°¸Ø|dni¾jµïª÷ÓM–éAXµr%Š±"³°¸´ª¦^$–>çõ5 ;ýPhN]^U[Uúv²hxõtbæBXgµ2*ã`©°TtyLXT² ¦cÂwêØŠh´Ã+–K„5”°‰Z\á¹ïé“ÿ=[`Â>zôxÃÆ +?ðX½:ÙT5lŸRUPT’ž™q?ÁFVn~Dy}5,vN…Õ…Uoªaå÷¶sD,¶ ³»ƒÛ3ÆÙñÂJZÙüf÷—Åi%Âa‰°6á÷‹šÏDMßÖÂ6ÌoaúéçNN–kV»¬^“0÷Âöcd¨ª;[ìVÕÖãY",v¬°]iW·¬¹•SRVWÀÈÊ¡gçÒŠ™um8ôÜÙçÂJ°ÛÞ%*¯ªG7<™ÙèÙÔÊ¡%ÂDX&vÁ{Ïè·ü¬lˆ9caçy ûó“'ÞX¬ZõéÚµw–®H_<çÂÖ64Žö~v^ÜÝ„ë7na‰°ã„…¡í]B³2ó~N†&Ô=Cm—”7³º:º„ÜžŽ.˜(¨¬mÌÎ-Ðv£zâkiçY",–ka㌄ŌYÛÉá|øÑGV+WÎSaŸ>}±ÜÊòŸk×ÆêEغ†¦‰ÂÞOܼyk«£`˜K„¥ÂöÕ5¶ææeŒ½atõDèE%%ÌÊ"F9j[õ¥Ã«¶½ˆ aÕu.–K„Õ¯°IKÌR›(êêg!¬@(ÜôñÇ–VVóQX +Ù«W¯-3_ñ÷¬cÌÌ3%콤-[l“RÒ†Fˆ°DXí-lݺu²dŒ-o'†z…»ý5êÜN",–«oa—¦üÅTYß0aÂlÚ4…Å%dee›˜-]om}c™!…µµµ‹¾tepø!–K…QZùR^§“û9ù±wâ·mÛά¬çð%DX",VÿÂ*Þ.a[¦-,“Yfljbacsu¹…¡„MHJuvÞuéòWDX"ìa™•n•Y<Ù¹ôГ۷ӮݸG„%ÂaçK ÛÝ-Ø°qã›&ljúýé×°¥¥LSc‹õÖÅÅ•K„Õí-íܬ\zVN>ˆ¤ŸHÕ¤Ó|pká¬k×oººî¶ßápõú-",–«waÍ’ß3–×ÖÏBØAöî¢Ež^xðQ<B·×•1+^3²ròèEýªé\%¬±©±Õz›³æ–™DX"ì›!¬Y¡¬¾‰u:2*<"24,ÂûÀç€ò°_ÜÝÜ3S׳8 +šñº°ËÕÍÙyf_TRÉáKˆ°DX"¬>…M6YvÏÈHÄ(™©°”P &&&%5•ÕÎneµEb¡°çÕ#‰ûä +…²_¡˜YäråwßýwttZ×B »ÄÄØÊÆ&ØŠK„}s„íHÙ<ñ™¨‹[·ØÚÛ;:::9:îÜnGCBÃÂï%$çä€QJ[m¨š7%-óü…h//oœåìä‚ÓOEžcu +:yb",–«waÓGŸ…°RàìéÓgÚ]ƒÿL“×qž˜‡ÂbL"ìÛ*,Gƒl'_ŸêpÌ×ÏÿdxdjzNCs{ø鳨gýüü/_ù:!)%)%INMOLJ½s;øD¨‡‡§““aqké6 ¯lîx^‰°DX"ì\›ðλ-¾9¯ó=óWXL¦O©Kû¤r%†¥¨ýUFµgaç°²üÿ³_ï±M]wÀó×öÏÔMÝþÈB”×Æ›&mê„N…†4e”ŠŠ˜ +]WÐD„ ¼_k $BâgÇvìÄÎÓ±?âë÷ûÛyºu…I¥C[º¯}Iæø'q ¬7úɺ9÷Üs~çØ:Ÿû³û¬Î�Ââ˜l>ƒÕ‹vfïÞ?lÚ˜»eËÖ;v¾½³pçÎßoË/ «Ýüü‚¼¼m[·¼Q|ì#._¬3»µ&x¥„}Ñ…È+%ì‹!ì—ÓÅ…»ÿý¯'ÿIºúûÿˆTX¥ÑêlNC]=¯KÞãîóÇ4NÏáò"\ÞÈ>36¢Ùí9 »;0ÛÂFß5ÛûR.l0ÌU-Âhóªs]ƒ¨èHÉž={Á+~BÛQÛîÚ·ï½²s—Ei¯Þ®·x£‘”°!^)a)a)aS(lUú\ÎúŸ?yüÕ(%ìt…íövx$"ÐH>Žë™éÕ0Á&ã^-£IܼÁ+T¨4Lv=:Ü«¡ƒcÖ0saqMÚñmNÑl3„…Åîv¸}}!¯1 nê„ þ‹Ü¾|šnKX˜lîP‡¶)ÖêÄSA²ÍvÖhëÕšzu&|ª \˜u&TEt#Á aƒj²f‡ßdï“õüF Y_]Ëb°¢VT¬¸[qAò: a¡3ZÂû¨u;%,%lbai”°…ET¤¥=~øä<wõž±°MMÍ3¶?Ôîõ,6G·RÝÚ.m–´5ð…¨1…MI[G—\a0[]^jÏ +ë¶9Ü°°†‚Ð-á%*®Á+ 1Ù¼0[dÂ’ ÍduÈzT¢æ—L xx ¥®ž‡å7KÚ€Çêtº}$Í)–¼kwÁ;ŠÐ·Kå"1™ID`ÿ›ÄmD¢È‰°¤˜@P5IÚ¤\¾kdÕq#ÖÎzºv‘¤U*Wz³Óhs›ƒÔzS"¬ÁâÁ'at¨µ–N¹ªIÒÁå‹Øõ<6‡‡à4‚ÁÔ¯›[¥ + 8Ž#›¼°½CIXd +-á%<¡˜×(ˆZš[»ºZ…ƬÒÂY;%,%,%lRÂÎ˸•–6 ïþzv„ýú9Fâ?:ñ“ùó§',¶Ñß?@èPç-JEˆ^]"ÈÜÂ5Tâ76Eà8Õ¶Sa4©giéð^Érysá_ä‰Â“D6IaÑý\¡æò„5´ kŒÈ„œ%tV ‰€GíÒî^ÓzüƒÓ–¬UÕ„¾SÖÃklÂD<b·ÿ—ÕÓV-à a1‰ìT…ET¬*ÂXahøŒÑ_{ðK§1qviRc´„9; aV/¡·wuk *}š‹\iì4Byò…b8K"›Œ°°UEXZ;ºwpŠˆí þ˜™L6W$îè”jS©µQÂRÂRÂN*låw^Ò\¸4ÂbÌ/¿|üðá£ç_|ñðóÏÿh×ë ¯þæÕœ9Y«VMEX²nUõjQ¬á@’çÈ>~#“ÌÙ]Þ؃³8|ppÿ?öŒ"ºÁˆÓeç?.=íòúúCÉ‹q0©T®@UHâ2é2£WM¾ ¨T†i‹nøTôê¸c»=¥4ÈÎ]Ý* ›¼°¸‹OÞ,‰ñ³©.|ìgáqH¢Ñ[Hd§$¬ÁêÑèí-í2ìhÀ)¯ö¨ @vRa5§\©gsx ^!Ƈ -ªE¦Ô«BÈRÂRÂRÂ&öÎÓ…o¦\XøÙg;pàÀºŸ®]»nÝÊÕkV®y¦ñÊšµ™ÙÙiñþ~ðRVÎòìÕ«rV½ryA&-9a±{6‡«YÒFV¦Ó8x§',êÓ–vit‹É[Ûwl×-èI +Ëdq¢…½v½üõ×·vu+àubaCEî€Z£#k·™¯”¤VÖ£ö†’¥«Öh6·Ìh·CS-N‡'Œ°¸…ÎâÖÎII20;«ŽK¬@6Ia !^e +ä¡r¤3§™ò¯ã +‚šœ „Õ\í]*úØIr#Š’v¹˜6JXJØHX’×g&lUú\Ö/~ùÐM)²V¥R/^²xyÎòe+r~••» cӳ܌…›3…Gnæ¢ß-ÌÜ“‘ùNFæžÌ¬½K²?^˜…M¨MŸ\XT¯“%TÔ¤àà ö,„‰+,@´9ܨG¢çÅÑýщҼ¼|b4ÛÆ…åpù1WEeÕ† ›ZÛ¥þû yr÷DÍ-ô3~Ú#½É7“¶GE¤d·13dœÝíO,,ÚÕ„‘äpá¤G|¡8„©wRaÑ®39Eâ¶)‘/à{-ƒ£ÑÛt¦Ø¢zí”kB§>ƒÍ勺Õ&åd¿íÂ’¼RÂRÂ’Â?ôc_‡4µe,F3M?[¿>{åŠüeËsÐæe|¢v<æ"ÜÃ$!ìàðHRªº†>¦)ìÑcLJ +ÛPÇ,`ïTÝÛµëmÛÞ|oÿûýCH^ñH_-,æÊÍ}†Æè‰Ëkÿ°Åîæò…ÑÓ¥$ªªiZˆâL ,n9<~“ª°ö¿–ß,9~2°¶¯ÝJ =uoPQCg[¾ÄÂm^aæòR¶ÿLv}IÉ_îÜ¥cºhaÁ«L©ŸÉk^Ø^‡¬WIØ)a)a)ac;/ãöw¿¯<{n4u¼’Âz½}6n\”“³qvíØ\ßÌH,,Zz =còÃ<<&í\]C÷Ý}~xhøÁßã ëõ„ÍÑg ?yòT~~Á–-o4ŠÄÁ‘qaQF÷Ça›»ióÝêÚx¢zu¸}uõüÄç-æÅPˆèñ V[×®—Ÿ>sΊ'¬»¯ßâp#ÿI‰‰™FÌmGËÍO+7mÌíêV;<˜ÂÚ]þn%1éT¼I'];î)>Æâð'";AX´¨4&VwRïâ¥sÞÒSgvíÞÓ«³FgT kç44&˜.™Ÿ1ùxGWïX%K ûÎ+%ìl[•>µzÝ“Ç_Ž¦¬ŒÅPýs÷îÝ™K—æ-]F›Uaç,¸;gþÔbb> „Å¿=ª^:£..¯¡ãŽÍi� +8ÉËoVܸYQ~ãôƒÜÄïù‹Wúóý8¢€µ»¼1¹ÁÉVX¸+//¿èÈQ‡»Ç…mëèŠ~„Åi@ {ùʵá1…u{"IÚ°œÿX×ÕkŸ”½päȱ¢¢£d€œä/_û´â6ƒìóqlÎŽ;ÅAdcñjuxêy‚Ä9¸TÞ©¾xù꙳狋KÆÓ(>ZRqûnĆ“¾¶ù·ŸÜ¨põ Dkwù4:sâRŽœôVeÕ…KWO9{øp19ãᢣ%ÇO «×ˑΈz÷ /;wáÀûRkÍ&›7ZX4ö¨tÌ„¼’û‹›·*/\ºRzªlü+8\T|âä©è} +{ºìÍü¨Ukr…ó +p%m²Z:3Þzñy¿ç·0lp]‰¨ æÜÜÚ¥Ô’•l$¯”°”°ßfaiiLfž©-c:”¹dɯrrfIت9óoïåêÿ²_§OmÜgÀó¶ÓÉÔui‰íØÍøÊ? n§NÚc$Â&`îÓŒoƒÁÜØsâˆÓ€q1÷}‰C ]HHHBÂØÉ›¾¨S_ý¢ Š¢Ýe\¬ÎtRyža@ÖþŽÝçóûîÜ]±{_ÅÇŸ¼míÙW¶u[ÅΗD'¬Î°"’ÈÐaèúQUumvNþ7‘ÑÁ ÏÛÛååuÊß?ðô™sIÉ©å•Õ54ƒ(´hÃÊSJaµË+C£”ónÖ}Ë ¶¹µ _#x%„£¶áÁÉ“_'$&éOɼjtƪ«Ì½U\RÍýü==½ÜÜØÀÅre2X..L—ã>Äƃ‚BââÉCaœ=Nœð,*-SëŒéU¦lmk§åÕdk——u/',쌯¯?†Z_†“Éb0X_}é”–~‡î ¬³³KZÆ]¥f™,¬XªlyØN÷ˆ‰—•uÊÇÏ<)“¹¾w&¦öð8‰§~&'·€ü¬qóoÆÝb³O€!±Lm%,‘^±ì Ö€ª¬ª£!¡á˜Ó¹¹º¯íË`ºº¸0Øl¼iVSÿ ,ûDë£.…°àu”/¬kh&p$¿]9yx{×ÞdoŸÀÀ«×b+¹<^ÅáÁ\X|gïðø´]X»°va…-}ÿ7ýÑçm.lrrÊÞýû;:òvÚ^Ø2lá×ÛÆÓ3tCÆq¾q|â-ëÉäÔ4§ìÞ‡ªõ;@),xU©µZÚ6è{HsÁht…^wü8ãرãHj®,74|''g´ß/—–UR"‹nõ::{ô†'ddAgËÿ“€«ÎED¢Õû©4Zs€E!öNÎÌÁ}r“÷ò>…”·¼b-¬Zk*É—˜çBëFJug{`F"l ¬@Òk×c“’Ó`JQ '-ãNBbrTTöîãã†L'=ã.4D”+5V¼ÊÔMÍ´é·ÿ•š–é}Êw›mºÛ¸±-4ìô¥+דR3ïf#s•UpÉצgd‘…•+—úG7Ø;B\ø鳘…Ÿôf<ìÊÈÉ/ÎÊÎK¼zíFÜ™³XÎKµ¦¤ù“qꚢÏ_<æäéÄr¥°b™)½ÖÓ¦WâþãV›pw—x +Ȇ‡Ÿ½~#>.þö½û÷óŠh3,IØ)¡¢½»šênã’ìû¹nî {m¿–³óq§¯œ0|¯Ùð¬¯;z†€¬]X»°ï.lÙÏHزwÕýã?– ¯m‡,„åVW´{÷AGÇ<$GÛ +»kO™Ãvi}ã›Mýûþå«p/¯KíÁª*è„5®ŒŒñ){>Ï”§boÞBÓ#:~‡æå>î잙Ή%‚9ªñAKFæ]„ÇÔôL«le*¯ ð©—ôÀÑ’Wü)U¨êƒÆZœ,-‡b ¦¨¸tyeÕÌ+‘aÂyòD&†„„ž<#gØΞ~ÊbÍ`+88ŒØ#~"@a/=}ƒØ#–§PiÖ%ÜI3³b˜EÙ‡q*Àš‘•KË–ÂâÂöŽî x…€ÈhòX°Ã/ø³²ºvx§‰y¡D!Q,*µj±«wÀ +Ž „•-`Á¸Ãº™Ö;)¦¶šqXQiùàŸ?#š›Wˆ¤*™R+Q@L¥@$çψG&fZÚ[†s||ý¡s[{e†ÅÓsR}zÅýÇ).((Ô}ýþã]Š¹p™ËkìâLÌN +$“³R¡tqF¤¨[{UÞJ؉™yÄ]Ê[_P|Êǘ+$ôtÉt´³o,ë~APpž Þ=Ê7Ù\}Cü±)kdÿ…µâÕ.¬]Øÿž°øóË’ºzÆX54<¼mûv›¼w¥M…ålÝÖîíûêÅ‹M ^¿~óüù÷þâ‹ÝŸñ>xC#ì’Þ€èA×ú®^½ÄŠVÏbºÆ\¸ÔÑÝ‹¼ixò—ë+æÆÕgˆ™”Q”èiˆ]gV8¬,�¡°É)éh€žž^S‚9èf%¬p^VGŠQø$""*00ØJXØ9±”DL›0Ño±ÈN¹P,Õž`–Å%=Q*n½ôDitƾîz0Äà˜8¢*ªj@¡™W|¿£«—ŽW\˜“Wèë@hbãwöÂS˜VëðQrÕþ$6V¡†Èt‡¨¸ødRìúܹÈú¦‡2å’\¥Ãå…5/_D%j^Ž?ñáÚ54µšŸÆ©ox�˜p}|üºûGͼ66·Ñ½c¨Ô´Lwö bã8ÎeÜÉîêË—„Rõì¼rV¼ /ÀÖѨ%?tJañåÇÝÖçójƒÙîxL—._ŸžŸ.ðg哳òi¡?³s‹CBÃ>²ØN,Cc³VÈÚ…µû-,ÌrØþÐ…õâŸÏ„Õjuïoù„½¼ÿÓª]¶¶è½÷Ô;6wÀUÏž}ëðÁ‡ÿrä³ü?án³8Ή$•\eÏO¼ŒÆKðZRZ&_PAReʘC£tâøúú×ðêõÆUKaQÝ4ý?&æÚþØ8…J¯Y +‘+›Z¬ú6–ýMd4 1¬~k)ì’~¥½³‡<VRZîçHÄFÑÓ?HÌeAê¥Tÿ¤@'ÄÖ°b¯ç×Þ +lpdBµžaÁ뚎W´ñܼB‚x{ò¤g[{'Sjôð”\ÿ‘°°sb9¥ø0%5ƒxÄnnî ‰)SBÄU£‹–eÖ’Ú¡´º¦žXFyeõ•«7°x{åZ,¢®HºHjÛÚ»èx5½f)ÄL÷?êQGT“¨&X"Q&ao/ì䬬±ù!ÕÉíAJj:æÂR/\¼:8&0¥]©¹øíê¾IÉi ÛØüh„/”Ø…µkÖ\…`«£ËV1öõeo¶:8ptÿô�—4Ýæìow4þáO¯^®i¹9a»ºº?ܱã£#ãÐábª‹ŸÝ}îÔ7s¦ôŠ¶YUÍ[}öŽÞV¢àõðØ#p<4ô4ÔFº´äl5·>"uÂFŒÐ kë »F·l%¬B¥!_ˆ~x3.áoýråéw–V"SR$ê›BCÃÝMq&:ú‚€é”¶R +‹Á§¢ àPD_"2¬¬ì\auÁD0¾6'–ÂJe°à¬{9„˸<2òüð&âê»+W.õöS- +‹9ŒÄÑ¢ ˆ³ ÆUKd^)…EI•Z^C3nn Éh6†b¸0;{†æåšõ�»882YU]KùJ n'¥bv\Žkão%ÁV¡tñ[ßAØi¡bpt +{$ﺼ‚„/cÒžœ)|ÔRØugåȧ÷rŠ’SÒè_ÅåU×6Û…µ…°cva6Â"ƶºº¿ü×ÆØß=ú»#G|²™°»öp~±EÞܲé“�.ÌÈÌÜ»oßÏC¬Úµ‡,¬Z«omk§ìüQQ1hž..ÌòŠ*Þhªx%„˜œ¡K+ø<2ê<Êh!,8”äŒN˜›_qì°Z,ÕJX”Rý7ûuÔä™ÇÜ?ö˜Ù÷h[;‹nUª+rØÙiwgvfgvÇ])Š„U¤‹"ëxÑ**÷}„pV¹ ‚BBBî„H�©ý«×v»ãî^‰˜÷…ºçu~“AyÞ÷}ž'¯¿ÏómhbS ïìì"Cî˜"„ŸœîâpÉÊ`ð¤"y…‡Ÿ‘â’ex%‹Â%Íì6__?"¡0© ”Õz¿ƒr[°Ìbf©/ÁÜéè3b\¨T.aëê2lumùép*òTôÜÑ‚q(5-°J•ãó¼®TX”X>–œ–5ÇëüÚ9 +©¥J‘Wá°¼¦Ž"HH¸‘H¤Wwwä”Là8,ѼÀ«ÂÞÐ]QEñCL¬šÁðÈÊ-UƒWJayB|Ê‘g™¥wn%¦±&ö¼ˆYZßÜÁ´°´°´°F¼˜¿Ú¨¨«·VŒÅ}NEEmݱÃÕnwÍ›,«Ø ›Ü=¾ùü‹§°cçÎÝŽŽ±ÛÞ*ûi†ˆ2•šÜ~Ñ7rònE~d:{îüÌì¤Wðºayá2Â"$†œ!€Õ(ìˆD^FJ—袗.ÇCØ“aD€%‹Ë›Ù÷ÉÂ&§¤;;¿'‰+!¬f\ßÒÚF^fIiEpð ¯9a=¹¼~#Í…IäêÚú¦òÊ»-÷ÚÕ:½Zg˜ãuþ·Cbʇ •øû¼^‰ÿX¢Ð¼ZKXð:8,%ë€]ÊÈ̈ñ치Q™f¯æ«Ð"ÉvqøŬ +&«’ÃÈTÏxEʵmÝäƒ 1ôÌlH^ñ ^Gå:ð*U[EØay]£éé‹Ø¥P¬:"2šÃˆäËK”@¤¨kjÏ/(^*É&%§÷ðļ´°´°´°ÏüzíÚ¿ìýæ‹/Wí—‰eiié›·nýënûì-["ìíuë5µ–Ø©©é÷\\~ggçä蘲e[© …°b©Ý‰Ü¯®'ÜDÏ÷óèíãvçyµPX(z2<(ø„D¦4 +;a˜éŠÈ�Ý©<uÚí {NnþRÂâZö½v²°©é™È°<Á !,2¦\¥kl!ÌÌÊA{G€ÊÍ»½Àëj„EáB<H‹'NL¶…mi5¤±ÛŸ<<=½Ž'b/Á«…íë¤|tLì%¤NO¯<èäÈÕ‹x5/âp‰T¥Cá±LcvX¢^já…Å,?ÿcX»»#)%°¼ZKXЉW¨òŠ3^l›[ÀDÎ%x]VX) +Ȳۺ)ßjÜ3¿ (¿°Œ?¨ …}É…ç•v%„ fdY%Æâ&lvë†×ýŽ½Cêo·Y.,�¶;çnþtõÂòøü=o¿mçàðÖü&…‘ȨNÝ™³Ü܉‰Éú…ôj¡°x +«¬28øCdF‰\µXØž¾~rÌÁø —8½¸YÂfdå<èÞÜÚ4 aGeª;è·/ŽD£>w>ý6äDèÐð(†Y"¬±^àu\?4"%Ÿaˆy^¾òƒq憆†ÄA96a]aj]w/ßd‹ˆï" OONËÄ°y5[X¨º¸Œ¶‹Ã£°˜�Þ,ÄÇ^¼"’<çÕZÂÍòJÓc†¥¤f`Õ‡{÷ðDÆ�û¢�hG¯‚j9 ÿ_ZÛ{úd´°´°´°D17ÙTÚïy"•[Ž,î •ÊÞy÷Ý›7_ûÅ«Ì/úÉÏWY?^_¸îg¬M6vëS&F o³yó.GÇ»ì*Ì,""ÊÕÕ©¥ujfÖZÂ2Yå¾¾~Á!šdØ®î^2È ÀÛÛG$–L¦)…Óé›Zî‘ùÈÎÉGm¹÷\X±TAf¶"Cedæ`¼ZYXN/Ÿòü� ±@SíìæÎ¥WðºÂ>ìê!d–”8lokÛC…fb-„E5±ÛÈ/¾ˆ[‰)°ÕÓÓ+"âto¿hD:fäՊ–UP›p3 ßø¹óq"‰ÆÈëJ„íÀ§¬¦¾™rEññ×Ò2ò0€––ÖXEë_m9ìýï/¿²Ä2£hb±8)5--—šÖ·êJIëOKŸXâþÓ§ÿýöÛÿÄÆÅm·µÝáän»£Ì¬[]}ùQ84Œ4OØþ%…-b–¢¯†…Ejuz£°“Sï·?¤ÖÏ/ 22J*ÇSÂNN©4ãõ-dasòn£Ùâ†ÇÂ*)… <Œerù˜ÉZ‹j¹×NÞL2:úvÃÃÃqr\?óŒ×5¶ƒJØâ’2wwÆÉ°…zBªÔZ]X±ll@$®m ;%¬ò //XÏö.®X®]ÌëZ{ãf¶¨ °T(VBØNŽ€òÝÎ/(:êãÛÃ÷öKiaiaÿÂæÿ„E®ûé`F–å1–@ÖŠ,™ „ýúëíýÛÞ]»í¶99%¾¹½t~±+öníÕø÷ýÝÙ0ýx1¯ß),¦hDB),žéæƈŠŠž™ýŒàu9aY|àñÒ¥FK),®•ÊU”=üvQ‰/@_^X4êSQÑö»Žéô¸áZ1kêÉ3DóöÜùX‰BMŒ\#a»8\ +æJ+¼úÄ]¼‚‘k$,_(®"íùÜk–I-Ò³òÄŠq‘Dý=ëⲿ¾©c–°(ZSgc‰WŽÁð`·s¸-,-,-¬±˜ðº®³Ë*Èþ@ +káóû_ÙðŠƒ“ãì³·le-!,üªo2éhD™Ùyû÷»ê& “†i³„•‘y%8;sö„MNIŸšùÔ(ìÄÔã™`QùIMYy„M¸qS3>±”°Â¡ÊxXXTòþû~™¹“S³„°2åå2Ñíýýán@v-„…†dÙñ/·’R<<1‡v÷jt†ç¼®LXTk[¹Ï“…•«Æ¹¼Šo¤ªútô™‹—®ªÖLØ^þÙ¸ùSÍ?Ákxxo@<,Õ˜+lÿÊ„É(ß œ»öísnní\°\¤¾±•RX<=;É*haiaiaWñkoTîùýç3_d±˜˜Û·l휽vÙ-¬ÔDX€¨Ð74³)2«Hõ‡°“æ +¡=0 ðàA÷²òJÃôìsa 3.Ÿ$ì\+ ½ž°´°úéŽÎnò…˜<«¬200øƤÉéO!, +ð5³ÛÈË,-¯ + +:aa†]t¡^=®7 /-öâeð©œ~ו +Uhš)ú<¥°BÑ(~EÞ¥¬ì¼«]Wi-vT¡+B[’°å$aïÖÔvwgddåÖañ×Þ~QÕŠC‹©°"yu]#%²8¹5²;¬.ìáÃÞ×’ùƒJZXZXZXSd¹±úOþêÉg/²X‡Óãàè`ï`¿ÛÉñÂö·Êv€,¬aföA'9BÎ)€–u§ºvjfÖ,ay!¹¡fdå9rtÿ~Wáà0T],¬`p˜vpIÂĸ¸Kª±q²°¸P¡Ö’§=WÏÜÁüÇ'§ añC‡KÉq~Aq/O ÓO¯NXŒK•8}z¹|¡\¥]ŒìÿØ/× &¯4ŽwöÓîÌvvfYwÛî¨íV¨•à§ýº_º«Õ*w´õBÕZ[¨t¨õ¶³º^AQ" ×� !$BHÈ…\IÈ•$„›º3;c»³ºvuÿÉ©iLÞ¼„§:›ÌÞyó¾ç=çyÎ9óüÎ4¤4\'ÿvfÆ÷ZÚ;'&g( KƒW›Ë«Ò(ÙNØq›mcuQ.Jù•«³Íþ7¦à +M߀’«tF³#˜°r¥.|PöÓœýï®ß SêÄÀ.°½ýbÊ\Bõð›(VG‹ºú–Q£}¡„Å_‰LÛܺ ~ÂÖdff=~R¡öÇ'l{Œ°Ïa}{¥ï¾ÿº÷ðE†,ðzïþýôŒô„·Ö$1þ˜XµlE]d‹«Fo¬or±ô2ÚDIXïÌœÅîlë (æ(A‡KKËؽ{¯Ý b΋ûq›3Üè+úÅ…cãVÄ@ø®“'RÖ¯Üܼ¢¯ƒw®ÉW“ÕÎq¢ö6ð@Z.ˆ°à#Ž`("!‚µ‚,ˆÙÉæ†[¤Š$2‡gzA„E\YœÈ„ÝBX«Ã#”RÎ>áôðf»ÙîYaÑÆlsó¾}âO7üþA“Í ¬R3Fyº8_|1+kë˜Å¥'xš°Z“C¦Ò#æðD ;j°‰¤ŠHÛ£±©M:¢Ï…¢$,îk‡O5ó¬+×’“S~yH#lŒ°1ÂFPÕK?åfdÝ»ûÍ +Yàõþýçåå-_±<1‰±:‰qìõß×/ý!ÁpÂQV!”²ëµõªQí4ZÒ–tb²ØšÛXáõ‡á‚‚ÂääÔ²ò +ù¯DÀVGW7%2˜×ë†G”VÇ„Ãíqº'á[f«B¥¢Á+Þ~öyAá—Ef«“pòLßêá÷S~…¡ë›€¡1ÐÑ×~È‚ÂèÐêpJeè08r@¼·o�ä%„jE’áðAQ“«™µý" i añ +-µF3›Û —UÌZPæìù!V?fƒ(—¦ñfKS+K"SÌŽq»Ü¤',a«Zgâpù OžX0‡ +µoAXŸ?³wrz(—qŽ¨ z³SOlì|„EWT>Šo)³ðöd¨‡7Û©Ž"÷d3««[$UÊTcK$ÂúÿZÄÚ.NocÅÌã qèБ”äÔ'Ï)41ÂÆa›ÿïës²¿øq²^4È>òÿÊÊÊââ‰ñkÛB²£$¬wvN2$äïXl£ÉB¦Ôû˜È?hfÖuÂãKQg"U3<aQ�ý¢©™[î' O*Ñ–ÝÍcsyìnb# ¨xù…99ûµzS€°¸ÑÇ)Pà�4ERýظkrš´ yh±»†äJØÕ›ÍaÜhhYdÁDµÖé�ƒ+—קPë�P´„ìÐĤ=ÄÕúam²:ÅR9"Œ”;!ìaa dEb +ÐVê`sE¹Þd'œ5Û\Áòa×÷l5„’–6Š0@åÕjtê·±.á`ÄAÁD._8¢6ú9;¡79Ò¼O¾¿JÍX_èŸ1êÜÑÛ™³Å[¶¼LØQ£½G êMǵÅæ DbÙ¨Jçãl@ *„‰LÓÍ6·FÜÞØo;vìJMM+¾x>7FØac„¥QõK?ëNIûöö²õîÝoŠŠŠ–üz‰¯IŒ¬·V×,]Q agæ.¥‹$UÈèâôŒjõ@-ì¤Õî—cÂlµ«µú~ª( I'ùù÷í˱؜“S³á„5[(’4ŸD3JpÅ;rì/N£syg a!·wvD¥¥ ýã-òE1çp{ÅRÙˆJ£ÖÔ½J£–+ûÄ0>8D¢<>¬«¿¹nÝzØ[§gÚY——ÇÒÐôÖÑÅôJ|#*Õ:ѨnhDÕ'w²¹ˆŠþh¡™57>ø`[8a‰º{øóæŽ`ZY]ÀÙ€xxxdT¦Ô@C#j°’Ó#À;U'ÔFòô™s»²w›¬ßÛXãøDSsÄ# É7ìž`°_4,VKej ‘\'Ü^ak['¥_z}¾¤tëÖ»vÌA냬ÁÖÉáÑëßWØÀ͸iëàtuó9=}<˜Ít°y˜UòŠfèÓgÎãô¸yÓæöN¾\=#lŒ°1ÂÒ‹ùr\×ÆÍÿp8}}ø\s–XW»Ý±}ÇŽUñ«“«Ö&¥¬^}õw+ëÂò¢$,„{…JƒN_~Qm`'‚Ÿš×Nvï'Ÿš-öpÂB“Ós€©·O/a߶m»\1ê"¬ßÉÎö +„QÆLˆ9HÌ[ê/•Ulܸéry¥{jŽÖ`²ÒŸ@Ã…Œå 7¶¶®a׮ݔ„…ÕƱdÑ$¦D:Ç*oxwã€ø{‹+,mÃ|Ëú˜qòEî,L8{£¡%„°r•±µ½+Êt–k‰æDç›óÙïÉÈÈÂ~"e*sŒ°1ÂÆ;¯®ÿò75/ÇY[Ûÿó໇ϥ™%lu»=¥¥¥¿}íUàuMcucg|BÍÒåáx¥!,4=w[ Í[Rj'_Ñ6Öéö©-¨ÛHæΞ+Ù²åý!™2Œ°3&‹ãZuÍÓBYoëê}õ6--£è«Ãžé[ ¬}bÒáö*TZ¼}ƒDÎÉÙôø_ž™pÈ +„â«×˜˜ŸE}^.«HNNMIImeq6â÷‹eYég¾òóÃ?ª½Ñ¤"¬_öA©ºòZõ¢gA‘WNN^FzfzzfYsdô #lŒ°1ÂÒ¨æÕe5q¯H}ýàÛ>?föÑãßÌÌlqqÉ;zgÅÊo3ã×&%2Eo¼Y³l%^é ë™s¸<î³(€ó–@Ö`² åÓ“µô|ñÅ´´tñ<„°žˆ¥ò¯½ÙÔºˆUaCù33·$'§”]¹êò{XÖY——ÓÃ'ÍžÅÁô8°°hbr6œ°>ÙÝå•Ugη´u,b$è Û¹3;+këÆ ï ‚~ëׄqÜYŬ}XžüÚº¸È+•LÉLX•Îª6ØË®T—\¸ÔÚÞ¹XY#ÌvaaÜkfFVvöž>ш\mŽ6FØa ×–WÿäçoÄÛØœïîÝô£šYÖ;wþ.“ɳ?ÎŽ[·òõ• kÞNHbüqÍšýoÆ3ÁPÚdiá‰Fg¨¨¬Zt + }öyÁ'´„…¦foóø}Å%¥M-¬hb@JR4µ²ÊÊ+×ýy}߀Ø35BXÈ;s{`p('7¯ôR9!ãS–wÔÛªêš={÷ÁË äîÙ³Ïh¶9ÜSÁ„5['Nœb^¯C̋”ð° assèÆ,‡‡’°Ð¥²Êü‚BfMÝÓSÄp¾ä"ÎPZjúá#ÇΩ€…Æ,Bñð©ÓgÞ¢p–bÅ[Ú¯×ÖÃÃ_¸¬1ÚC «·ázêÌ…ÜܼòŠkˆáiVœÌüå² +�Ë•åKœÅéSh¬²ÿ²_fAM¥Y÷aªæ¥gìj«Ë ÜEìé©y˜ª©é™ª¶Y‘}GÖ°%²i«ì »Dö@ØAe±£laaM„¶ìªž—ž§žùß|1"‹íÌC7©S©ä»÷~gùnßù÷I· »MØmÂnYÌîÑ)üýÎï<}dOÄs?ÿ¿ôìV}är…@ °¶±Ñ?¬ôäqã3‡ÏÿÅÈ(øèqÁÁÃ¥:zï“®›$,lqéûÊÛ5QÑq5uõÐ6àCëA´£âÒ +7wO/Ÿõ +WÎ'%§Ç…¢(²›–añví]DZ]½‰;µ&þâÛþèñš„…)T‹âgý¶¶öð%*.«V绥ÆKÀŠ Ë+«#£cœ\ÐiW&ƒÕÔü`V¹@áõ5aa³Ïç{Ä}<^pb%!?LE’ö§¢¢RÄ©:—”»¸ºc’y60¼&aÇÕ›˜-•ZYÙÄÄ&znuÌ ¹ã NùÖÖ¶P¯L&›ëø¤W2*“¯&,lyU‡‡Wn^AÍÖKå› æ«w@ +@êÛ+×",lïàDRŠ€Ã±ÍÎͧÂØJâšã•ñ/…ÚØØ‘ãf³9¹ÂÒgƒÀë/ ìÈ6a· û›%,e:z…Ÿ~ž»cG’m°»ç‡ÿE¨÷¿ë«W?çäæ~ñåüô`ë1CƒÆgþjtÚî¤Aœþ‘r½Í°u“„þ^,¿¬¼]íîî‘–.@c¡p¹Q"ZMïVV|#1eµLCSJNICûõòö•Ê¦Ö!,¬jaIXXÄ`°œBî$%§ÝdBlR&ÈLMˈŠŠ âƒhÛ&&¥j1Þã’h4saAñÜÂòš„…Á×´\™~ó‹ÅñöæâtñuÙG:-\FWG„ê6-c}�‘–‡Ê…å¼®",NG¤“~þ¬l¢câsò„udŠØÐ#eµÓì\app<úrÊÊ«ÈãøÆVá—¯¢ ®n»zz'gçÖ$,ì´b¾íQàHg0/_¹š•“:¯>µµá®v„ƒÎŠp¦8P¤lɹ�‡!¡—‡Ç§¥“ +-¼ŽŒÏÀdÓsMÍm¶¶=¼“Sfì³ùÜ©©IT’ž‘é爯]ÔÆ-\Bå±þ>ÂÈ+îµtòø¡x»0ŠÄÄÄ#ñ¢’r¼¢$*M0ê¿Ä{ÕíZaaq† ó2åP)[³YLM÷;û†¦^· »MØßaGïíýH„ÕØ®=©;w%:: +E¢¹ÅÅÕóÄíÏoéÔ•Ïâ⋦{÷âããOèêë0:}ü¬ñ‘³ÆçN +=z,]ïp±®^Ƀ/Ûã½aaP²%¥ålŽ¥¯¯?pY^q?‘]ZZ‰šê‹Ë¢cãý‚ eÐùíìbãnT«e&îINI·wpâ°-}|ýÊùõ K «œ_limãúú;gB£YXX0èt&º"14RÆa1Ù¸ŠÖŠ&IÚ#i‰hÝ\¿�<…Æ»aåÊyÅܬ¥µÝÛ‡kfFsvvÅ„—•‡Mum=ÉQ“NN^Aü¤pø¥Ú,Û’ÒL6¿Õ/}£^ß!,Q²c²i ùÜ×ßXZ^ðññ »Œ)"7¿°²ªFËcu]}íÈUAfNDTÌ¥àP8…z‚GpÉ`aŠKHÄ,„�n¢ª¸Ü�éÄìû4¬Æ€àÁÄ,“Åf2YnîaaWJJ+ÖÄ¢*-«º•™Ê`¼!‰Ãt&"ŠJ%£“Àë¨lvMªm¶«§? €obbjoïÈåú£b)©7E%Dœ¾Iüuµ…E)i7¯] + +⻹]$IÁy®RÓx÷@mõ"+%M08:½&a‰ ŒL‹ûÆjï6{yùž71ÅàÙ°ð+( ÅÐRs§†ù¢A6*Ï¿"“òâx§Ó‚ÌüŽîþ§2 ^Ý„Õ‚ì6aë„]~)½ßZ´ÿ`ÑþJX]ýbhÆÏödýîÛ;lþù ¶P2§RýøZØnéóÓOÿ~±´$—Ë%’¡††F¿/ÿü§]ŸïÒ=x@ïè}CƒSFF_>mehräX¾®¾Z´êoR´jG¾ï€§cC d¥²ÉˆÈh€spt ‹ˆˆŽ‹O ÷bbã¯^‹ðåú£á£á ߢÿà›nÁÀ¢ 3ÛÎÞÀâP‹˜øÍiP¦‹K/•ëâUc*œàÒ÷ÝOžææÀ¬——DÌÛÛÁ`15=£®¾qF17<*£šci¨òôò¡"¡3+ªj×',10}qùU󃶘؄mff:åÈÝÁÑÉÙÅ2gWdA5pYðmÕ78¢œ_ÒÆë;„…Í(TÏU/G¤P£”TÏ šÂÑÉeÅ£‹‚¡<Rt宩ƒÉöôô\Æd3ááß"`R»ºú&HT +¯ë–ˆÙ)¹ +8ÎÎ+ÀVTV¿+'±ÌÙ“H{%ƒ‰£â‡—K§eÓʱ 9ðºa‡¥3£2ùø”²µ½;:&ÁÝÝÓÂœnaA§¦&{¢ÖëT›ÊÁBš~þ<QIe—xÐÉÙïÉwº¹y´wŠ×'lŸd¢hrpd·5?|{׈ÍÍÍqäLÔ–2u<êAŽÃ~»ò¬¬qZFÎcñv÷¯Æ믛°Ûv›°o"N‘eßKØZéê—êèeíÕ ßù™ÕÞ}_›žwòôŒŠ‹ËÉϯohèxÔ)—+Tªy-›˜˜ìèxÔÕõ¸¨¨('77&&&(ˆÇ±´üÛWß»÷]½“Ç>tÖØÀøŒ‰¡¡ïñq‡Ž +*þ`Õ9‡Ž93ØaûÖ',5TÎÍ??gÑÿMMiæj9©Q”Lu„¡ó˜›ÓÍLiA¼K5uwG¥²¥—¯êî6à6´P܉KÐ_“3rØÍvBgåJÕØøÄÀЈÆÆ'gfqyé%�ªÆñ2¤««;€ekç`©nÈvvO{Á² KŒÜÙ-î½s·ñ۫׬l2ØgNQ€ÁP§LedÁÀ¢‰Éyw7›™>•‘gÎ-¼®EØS¨ª}’ÑÖö®¬œ|/˜A§ +õÆ#c…¹tªæt33~òÖûâ^ 0 +ë—ŒÅ'$ßœ3¹xÑl…› ,ìØÄlãw-P‘ïªWBX-ŽŽ.()Ò§©Ç~p(DkKûãþáqÙÌœ†–8ëìî«®kŠ‹Ovs÷À¶ê·ëM©ñR¡ê‚S¯–•µ-’™-llnë~*™PHÆfZÚºyüPªhf4\½w¿îVãuMÂë•Èpu`dª³g ®¡%#3ëtÁÒ +u¦¸¿ÊÌiæL&Ë/€—’–Y×ð�I÷ M=÷Kµðú_öë5(ªóŽãø»¾èL;M;c¢r ÚÔéL;™É$Ž3¾NUX@±F/ML2ŽiccÕ4kÐÆhbƒUX. +ËmYAŠ€H/€,ì.{–]a½�Þ/Í›þÏyvg{‘«,üf¾³sxžg–7ûáa!ì,ÖárÞ¾{ñ³=Y?úéd+:›¶ o~ÔÉ—ç=gÞ–Wæ)—†‡ÿ:<,,lÞÏÂçÿ$|þK’~>'*r΂ÈWFωY8?6fñ¢Øß¾öËe¿zíí%K—,ù`ÑbšUÿM|«xU£rÃÇ«Xî¼È”·–%®^C__MÍ-A…¥zíN:Fó¬ÝÙ¾ª&3+çŸûRwîúìÓ;wü}E4û¤=v¾ú9èè¿Å®µõ9HF#×Y¬)Í9™Ww©¾Ï5À¯÷:F%,‹nrŠ±c]=vצïàÿ ý…HÛÚºú€¬\Xk7_W3ý +úc&óÅïëÏ”Ÿ-,.IWfÏÈTkJËÎT\k¸ÁYºm<îN:Oïb¶ŽJX³°Ð'éq¶ôzC§'²KO—kˆ]r³Oä•ž®¨¨¬&‹ÂIz%X9k¯Éb£8k¥ÛN‹]E3騄5uÚÎVÖ¨ +Š}òÊ„Í9‘GCå¶?Ñ”•_kÒѸj²Òo±ÌÝz®«Ý›×ç–ÕFΚºô\·³Ñó…ºkšÒ³E%g”ÙyGÒÒ¤ÏÍW¨ËÎVÕ5j tŒÎ´:ƒ¥EO¨™p$d[7Û:º(zÐÑz÷ü²št&þd]H×ZÈÍsÕ—+kê+«ùÎU××^j¢uRµ±…kК®7wÐèJÇ ,„åÂÒ—¼¥µ½ð¥Ù?~éDXÔä9+jóâŽED¹05:fïÂWwÇÄ~»x‹¬E‹·¿º(%&voLìþ蘃bŽD.T +oW{VõÃkDFTÌ; +D’7o~¯Moìu¸‚ ++ÍΨu tÞìæ,]f+¥Dª£P„U›@)Úu/ŽIX1‘Ô‘‘‰ô©ÎWמ8©ª8WÕ¤Õ‘yõ-¬P/‹¾î.›ÝÅp§÷ÊT³°²:…kùËy1BvýØÝG»œÕ&Æx•ÔÍòâ5˜°t@§çŠKJŠÔ2UÅh÷Ðá#4QþëàaRÕHªšn²ÚÅÆ$¬NLÏ×f¤{º(šOÛ…ˆT^Uþ@gK»Yë]s›WZ>n²´îiWÇñ˜º3Ñ¢0±Ê‚°v¶Ë#Û?Øe4•ßñó—óæF4SPÞ¼•PþÜà©<‡ó&éÃÌ ÏŠˆþê7¯¯OHJþ#}U¦gdú` +ËbnJ“©¤I–QØcw±ˆBZ§°>óë„k¶ÚX\°&JØÆæ6bTÊk~¡:3ûä±ãÊ£ÇÒÓ•YÄ놛WJÞ“²¯ÕÐiàº&IX1Q½j7³Û<AŠѬ*ddAXa}æ¸e2™w½³~ûoîys鞥ËfQo-Ûý»ßøörú†LZ½&>N±nÝŸŒ\çx„W“)ìÈ lPaš[eªò‹~ýMJÊ>²5í?é”23'íèñ¬œÜ:ƒ›¬ÂBXŠÂòÈövtZ÷¦H^»îqŠŠÄYÕÊø„+âÖ¬Yûeêþv£ÉîðÍ+„}Âj[Å%¥Ra)2—O}Êý $litz³8ÆBXa!¬Y×@¯ÝyõZC‘Z£ÌÌÎÌÊ™ì”Aʦ15e(³ +ŠÔ—¯^'ãüN¯vö Ë=uº<¿P-CÖgtìlUÉÒa§·°-ÂN±°”ÝÙOÎ:û§&GÐ\SÝSŸs ×á +Ä+„•Â^ojQ?°…E%ëÖ¿›zà CÂBXa_T½A³;§ ¤BØÙ-,«²ú"h±Æ7¬ÅJ)Ûà B‘˜˜¸ª©Eoຠ,„³°ŒWa!,„ñÂÒLz,=3C™_¨..)-RŸb±çܼÂteöß>Ý™”´zÕªdzÕ¶™ ,„…°ÂBXTØŽN[ÍÅúw7lÚºuÛç_ìý2õÀ>¡Ï÷¤ìرó£¶&¯Y›˜D¶._¾òзßqÖ^½È+„…°ÂBXaýD)±5uW¶}üI\œ"ne¼B‘˜Dу">!^hÓ¦÷²N¨ÈP:a!ìŒÖ‹W;Í‚°6„„eÈ6·vkNøêÐ_þº}ãÆ?oØ°ùý-îþLJ¿ý®¨¤ìÒ•&ÎÚÇx…° ¬›Wa!,„…°¡&¬7¯A…¥Œfº¤GX!C,a‹.´Ñ.³ÂBXa!,„…°£ÖÓM¡ág)¬ÂBØé#l„…°6$…n…ÕCXa!,„…°ÂBXa§EÂBXa!,„…°ÂBX¢Âºy…°ÂBXjÂŽàÂBXa!,„…°ÂBXa!,„…°vÆ +Ëx…°ÂBXrÂzx…°ÂBXa!,„…°ÂBXIÂBXa_tvF +‹ÂBØq{ÂBXa!,„…°ÂNÛ ,„…°ÂBXa!,„…°ÂŠ¼BØi„…°ÂBXa!,„…°ÂBX*AXa!,„…°“"¬À+„…°/JØ`¼BXaý ++ò +a!ìôÂBXa!,„…°ÂBXaCKXÆ+„…°/JØÑñ +a!,„…°Â†BÂBXa!,„…°ÂBXa!l¨a!ìÌÖ'¯ÂBXa!,„…°ÂBXa!,„«°„…°vl¦eAXa!,„…°ÂBXa!,„…°ÂBXa!,„…°¡„…°S,¬¯ÂBXaCGØñò +a!,„…°ÂBXa!,„…°vºa!,„…°ÂN °n^!,„…°ÂBX‹ÂBXa!,„…°¡„…°6D…õð +a!,„¦AXëOXß¼BXa!,„…°ÂBXa!,„…°ÂÎDa¥¼BXa!,„…°ÂBXa!,„…°ÂBØé„…°ÂÎva^!,„…°ÂBXa!lHa!,„…°ÂBXa!,„…°³UØï!ìx4ÕºälB½€ö�ùƒoõðñÏg2ƒ&Ó_þèì O1ÑéASš_:-Ý,S°¼1íbÉéänÊ2øi„žVi2@‡%óêSÒVC'K§÷ʨ<™¤ZÍÞÉ$½ÑjjjÒyÕØâ¶ƒÕ 5Jc’Š•ôj“žºÒ(I*v¹¡Ï#é%Yض²˜¤bÞ^ÑÕy{*Ú"íÂe1mÇÓfYLÒ꺬*1&©PåŦÊZwR¥«q'ñ´ª¨ö®ê:ËCê5ÖRå’zºÂ’¨Z/ÍCêewÿuç!õ’,·¤be¬:Va)ŸHj¾S>M-KBêiþHuÃ:Lj•»B¾l1ÑV·§žT•,¥ê%õTJjúÉŠtª¬å,§åGݹU=šu†JóôäÙ¡Õгèéÿ?}6ÑÉïmO¨§þz4λ{¸¡'>{@=ò¼>G÷>¹ÿÈ´ûð±´{¬Ô¿î>ºsè®ÿh÷¶¬{FvëÞCßÝu7x'PÔí’î³úeÝ’çôsàžww¥9ú}×ç»#×yÛ+‡»žÿ³/<m%A�Ç?ñµÜRè½7÷nƒÁ¦¸à†{ï½cCÊÕ|ˆÛõì[¿}~g@wR餟þšÑhX÷ŸÁ»O1>}Vïߢnïÿ@ºÈÖèÿÚ¬Vï7¾æ-§û+ÒÕùê¬Zû_µ5Ðü*¬rãƒ@©~ÏW¤jD¡vGå«}F¥Ÿ#zùJ5W&²¥[¾L‘ê"iP R ßIrðœë$²ídnH<ÛŽ ϶@,ȦšÑt3’¢ œÄB ª‚q"�b5àU±hõ†Ç©°Ê¾0æåxB ÜAÂ�Åk?( ÎÂÁ±ûòoØ< {ÜÄ%ç•AÎÁuXT +±8“vFÙAâÔ†™9'Wqp|‰ÄLà‚Šã9a°bzKèÎ-8 ñiÌ ØéÝ}KúwíÛ¯¥Ï×z’î8í±×GéôæÃnG5¨öcÕÇkuÍnèŒQEãTêâÊõ¶¸h•Æ*VÅTZ¡&£,./ÔàË•Äe‹ .)Ôy"ÍJRåKf* ‘aÄÓe©ˆ +$‰H²ÈHÂqN¢Š³b…À@Ë#h>�ˆäÑ!$çgý‘pö†åCB ¼AQià 0Ü~$E¹n$×ê5ð%Œ„Ówz”ÃâwÌáŽÛ96ˆÙ\QÔ+äš/zéÄ.ˆuî`Ù‘°•Ym„±z…Ár< +�óÀÉâç;>7„3qŒŸáñòéOgÀ«3{Ù 4'¬cP›•éš02”àäS舜Ò9d:;"Z»T3¨Ö&Õ`Α;T_¸<Pò]ì+°=ήü|Àº#clKlI½éô`æÓ=•ñÚÀœ<Îñ( ¥ÿèê!Ó*í”ã¡“BmC>JeT¨Œ¨2†A¦Ò3”â¤*K?¤ÔK:ÔQ…þHŽ¯Gr-8䓉;jþɾ„±'Q‹;*°+pHì*…†¶ö•[CŠ16÷ä"v‰ ÙºÀ6"¥ÖDH¨Õ›ÔÑ +µÁXƱubIÜÁâk•±°ºæVöçø–÷À,µÄ˜YÜ¥fwß#|;à5Ï·ývŽxƒm ÍbÓB›Ó3›¨¯Áµ^½'¦À;j¼oÁÚê c’X˜œÆ&¦W&^cχ–‘_^˜ZB~f=›Z|öû‰zÀ¬&ç‘ï‘ ÆwsÄsÆß�\wÁ +endstream endobj 195 0 obj <</BitsPerComponent 8/ColorSpace/DeviceRGB/DecodeParms<</BitsPerComponent 4/Colors 3/Columns 126>>/Filter/FlateDecode/Height 110/Intent/RelativeColorimetric/Length 10226/Name/X/Subtype/Image/Type/XObject/Width 126>>stream +H‰ìW‹WSGþO* ˆ²•ãúÀòy +ˆ«¬¶>VDDí]¥¢+¸€U«‡UK[«TP$7ï„ Ï„ÈÛ�H„„ä&¹¹¹a' ¹Ä ž£U£[¾3gÎܹÉß|óÍ7¿™™YÀ°€,`XÀþo¡GLRµ¶{RÕ,WÜõždÔm{HÛTF\YNð©$x уLò€Hž$âÒJ‚_yU@q[íµö¦@Ô¢˜�ÿVi´ÄÝSù4�HdzÅùÂd*gMÉ‹@°1Lt‹µÇñÊöÖ‹HXõ˜1¿oi«èh~.SÃFwOîc„ÅbšPÿ,xšQß´™ÂX^Eœå"9S½”m Ñ·r¸ê2O²Û…ù]]y¢Ú„gš'ø»éÜh"}}%´”0·Ë ÄP +=µ®þjc{ÿ˜ÒÝsý(€Y,° }2<–A¯ 3–Cζ…äM>§Q6²Y[š‹Ÿõó +±V+…áq½AeD¦“ÖdÒ›ÍÔ>¢CL2 Æu°T«ÔjŠÿŠº÷qj×Òh¾4Š7ò!‘6Pé‡<ÞÀø±ÃÜM€{ Òû‡v‘ÙV}ÎÚ…µñ9º…Wmg»K£6þi~L&T©®uuïihâ°Á‚z‰ñú£¾ÉÔô_Šÿ)Ø@ì<À©]ZEÀ½Ú‹LÚÄeg´ +JŸ=U«˜ßù¸0Š>V(®õõînlð¡@ˈ¤dVÍŽµþ/q�o9Ì©[M¦Î‹dÒF(¼M¥š4½×�ÀÀ0$Mi¬ú_A$íç=æ?¶¼çqÝ°©°¾€ÿäsˆìåй•Á«¾ñ¬_n0˜?ìÄÁújL&®\ôïG§®„ ìºæg“Sï{Ý?0&”%–ìdp“æRÁàjvaO÷ NëÞØ€Kàó}(äp•+…&÷†ô®€ æ+MÂ�2 ·_:5퉀7>þuþ*€0ú¦5ùÝ]«Yô Ú•6‘\£swP“Óð~“/ r\yHgÐ~+Þ¿Ÿ¿)´(ÊSŒsÙ¾drzM½lúS%ߌY#òÌj’ýRc½®ºU–—÷ÈŒ¾yÞb6Yô*‹z›èÇdæçõæn2*|€¶–¢m¥hG…¹Ÿ…0y¦°LË-ˆnæVHâ”°ÝA ¥2:'”¨ùÓË9kÅ#±Tî0ÞU!y¿ïßyåܾÛý¢á™y¬à©…ņÙ6¢Ãd"S'„Ôß0B'w·Ã×7ê.yÃy‹¬åâgº‹‹49žªs‹•g—(³½§òWk‹·Ê¿Fع¦Ö{æ¡:L#sù¸Kc>”rK,^ÇfÆ°8Àö‘·Ð‰ûP'‰¤1m´µíQY%ÿLú1=¦ðØÖË·rªä£*0õWò€™1å Òô«±ò°¾$¾ì§ËóÐ9± x–døõî_+LlnÙÒ” + +h<Ù,LÞ^dú«¯Eî‰ðŠÌ£Ô83o}]À{ô(J‘JýYŒH‡> ùTÎi…«".~T•xüfÚÖ¢£1…€yP¿|ãl…L2aÁ\&ŽYØ,iÖW¦mÃ…ËgÙÎ[ØÖ^ðP[2˜¾²%)„·%²:,šË +Šcmuk›hm€WÕá1µ‘QàÇCßlPmÒßÿíe€MdÁÌ8ÏxÌówŠaÕò±°jn�¡C>lLjš¯Šºf¯HiYY% ÝNxzt(GA±=æ,yÚ,ÖóRĦå¦. +|o.ßÓJµCá Öþà1~Ú§#ecÍæ(+ÃVnÃq €6ÓVìö~¼Æ¢&"êéÞ@iæ +ío)h'Œt‰ÜEØÖ,–Ɖ‰~mV[»ñãöíÏݽ€p«à!¢Où£¸“·ÇÙ©ž-Ñsu֗Ť;üñáqc'ÝP‘ª+øàY™½D“ãç}fçØøà‘•c6³pzItìL~ß¹ÓVƒ…í }·A_qófâ �ùõŠ(^Mqw ûxO[ò ÄšÉ@ÖrqaKö/© —_à<Úu r¿¸ *<¤½ºÞ*ì/ëÜ»X·&×ÓÎüt®gïµ6©ÇáÆ´³ú"ÛxÛ¾N«0ûŠiÿ{p?*²ó«õškáHÝu‹~Êe +Îæo Ÿ¯÷g2Êú>N»oÿª¡Á‘·ïÚ½ý¨Ãjœ•OÄ槤=;½Zu~‰ô_¾à äÚ¬[r̸º•ùùTIy¥œW¯uÁÃRýØ8(ðˆTÝݧhh®¢ôþt[q†ÿÅÁšøÝœÍI¸àqñÛLɱ@ÛÆ?;8îqìæÑÌUðûÍ£Bàü3.9Ջ䃽A•I×±¬ç#n`öµ�÷ŽcM-vÎA½²¤üà?~´1ü"ó¶G`û§ãsH™8»tøøŠ¶€p@-(¡iGйÕä—ÌЂ¡Î§!NŽÅ†¨¦&íâ_ÿh;•S—|ˆ–ètàÆáž?×i««Ã£{öù«ŠÂMݸ/¼,ÛÁÇÙNÉ€8³u`Jã&Ž_³v<Í!ÉÖSu{zqzì‹ÞSˆç6çÏrŽÄŽd®�Æ‹°: =(þ^èޒ؃=ßúÁëò¼ô„lzlfÞ©ç2´K~‚L©•C÷5§d‡&ιS ®y‡Ù^qBc[wMä#eö´sþ÷ñ!”FcV‡0»µÝ`Bß5…o‰ª¾AOÒì ø|HÞÔÄËGc³v_Ïzp§€RvYz…~;—PøMiá}©k¬‡f•ŠŠäüˆ“§¢/”ØÌõ‚ïÍò¿{ºHÔЧō£²½~OšË)0Ûp>‚âšÂ9›A©E^ÿåQŽär+†Þ"ªwà3»Û“PVÿ^‘yú^UIthÂE¡@<få°ìb°à´¬xÎŽC%ÉçN&€Ppig¦ø»UÀÞeç}J9jß#7¿¯êï赆ù)ßKï¼3/îÓ´vàNoÛ^‡íÌå¢øBؽ¨.:Brb•¾®ØŽË(.F×®Rf¶º•ªwOå›�sI(²§î€ö%é[RÍPߘٌ¹Ø&�*Ë®¥5Ƈùr#wtäÈÛºzZ‡h÷nŸ/çœH²ùÌ"èpRFÌÒ6ÎÃb6àÜkñAp‰g~„à€n>r +˜3pÎí™öT?Ðqù +ÜZ1t|±8cKõ_5ŠáÄWùWYþOt´ÛiuN÷é3?ŒãqÇQ$ ¨ƒ´8í2Œ¢‚ŠJ«•f‘}QhteÔ°4û.H@0ÙS•ª"s«*)*UQq¼ç:áñê¾[ß»ï»ßÅ°(™<BÚ‚â_SáËß«—Q’)/ïWÚ“]áOL36–.ñÙ_Z³}ïÐÝGˆJm_IL«ÛëÔ‘+AF\\æΑCÁ‚øˆƒÙ¥wë•ãSüöÓÆ«¿ìy²ã¸®§¿å\„økYÅ×!SkÝ7]ú é¬vYÊŸíï”[J*Do¾šÎÓ¿"k¥ +«ä#:Ú]jÂbœ,È’ìØ&rójØ8Y׈#ÈÌ×á(’@v¬ñ+ÍùâbiÔ‘[!Û’8øŸØšóµB™Agfó?Gü0“Nè¢T·]ŠßJA-˜©³ŒÚ§èHâµq2Ù}ëâC˜ß¨Ki>V×øµÒþåÄ{ì$Õ¬xZÚ¡b/`bžj5îÚ)rón8av^C`ò|Àܽžš6ª`ÒlB¤â®Œð'g¾%€’£±Ô ñt^ûËAÿu Úo ‹¬ÚàC'y%¯£î«ëÕw~%ªÙüÀ¾²æAÏÛE÷ºú>*€1Œ N7Ižþ ebcVZ'Gd‡B=•ƒˆ™§×šaKžŸ)êæk«ñ¾*¶Œ4êÍMÕ7¯„þ3•£NáDî§Vùãn›“ùÙó`ÆáÑקÃ!:óEl©ï�š‹¶_ÖéDYœ×Ù¿µ*CXÜ“3MRò9´àöR1Áxù’â”Þ„wû¦QópvzÕ†M§¦:º§�ÏX_fšâV _48¯1¥Ô¿®íN9ûþ1¯„ËYÂ;uiþaOã„Z&oø×½œ2ŸÖÿëÏ7x¼ Ý„©®ìEÜMX›œ'{7ÿÝÄ$3°‹¾//{61Á-p®iÕûî‘ì‚l‡pmÎ5—›37’Ÿø>Ü8[ºÂg"f´¡\|;Ä'‰&šÿ{'DÉ}õ¼ÓH‘›Ûm³ä?€¯xZý|‹ðJ;çÍ—@¼Ù]™s’@-œRËø‘T¶í=”!•™ÿÕÛ)½Ÿ¤ð‚Zq§VË x¦ëâñVec³Ó·Û«8†åá~È#¾8aÖÓ¦y¯«xÐ}4—bþ8šöá Çqëªp cÃpñ|B«Õv9nFá¬ØóŸR›Ž#ȼŒÒR›sTÌïÑÉc»ÓÖ$ÜíÒ~. 󶼾&Û)ä‹ö¿l‚þÎ)BU‰IvíȹOðØÞ”ð=‰|ô¬·ræÅÙë&yMpb¨{ì~Jå¿kþù-0§ºà•VÍ¥,›«#Ðõ¼ðÞÃ'yKó‹7{(ÒÏbÚI—á†ú¥m;q3»û#°ûC1üBK‹ƒäíÏЙÞje/ÃõÊþóûZÎ^2sYˆ4C +R ¿Øü»;a˜˜�àͤ·È%}ñ!÷‚=ãÙàŸÞ™rãrÁH¿« dmOZ–3Ôο)ðe{½Mí5ü�ègÄ¡ì_ö¤üõÆ+AÌ?þO¶nõÔ²¢"ºieŠltW'‡+uy!þ*i'`$ÛŸ�·CÇ + o•\‡Âÿ´9ŒÞËŠbϤáûoBµµ3CùW?~¥ÓiÙÏ郘ßPzêý+yC2Cø4Û{‰7ÿô6-7Nq¾Žþ~>ÿˆ nCDní°ëZ¼°V>ª˜‘ñÔø¶´$¹·Ç©sÁQuêöÁëi¸áDFèß!÷ƒ’4F.2§Â‡%6gpø›Î¦ œìT܉/ûÕ7ÍŽ¼YC¶%æD—ô·bÖY›«^ß›]FåZG»Ö‹/uÚ<E¿K91BØq{pÆÕúf—Ь8qU&g0§©z¨Ì~6òÖ¡&MÒ&}ÿ�ß(¬½Ð”ô#™ð‘‹àbîÚÊüvÌCz7ŠÚ/ý;‹ÝöÄGæ¼(~ ¥ÿ:íYQVõB°[D÷³|yI]‰÷FUñ N<ôó^R9lt`WRHuýGvum:]^@S]Õ�ø+Ÿ–fØXh*¹0uÝ—‘‘ì'¡Ÿ@$•$Œ˜o¬5ñÀ=ü”fk9\|á -Õø°-;üOíHÉK.WŽOÁíàx†§ah¤ñÀ1;Ȭ„¯d~õßcW¼øßw-ôgÜêä{o5º/†:i:=Õ·ÛyžÊyyÚ£Òrg§¹(”Ÿ¥0ƒu MWÿÙN"Ÿ¶ +ë¹Ä“ýŠËI—ó¤ì¯GѲ3–y‚mw[Ì(÷Ôp\~!Zä6£m*Yö…—ó‰0X0ínUtòwÿ=ª˜>_Áé̲þáy£ø)VÜÿ†ÍðÔ)-/ÞècÖ ½bcÚ´ò;Tû…Czª1F-2g{šþ²9fl®`wb~‚”™…ǽٲçœÿõâ[µ:ãgðö«6ø°…%M2Ðj)J+:¬3ž@j¯ó·K>ó€¾\þûÒnt÷ÌÅO±8i+Í0lü— +‹ãº»˜xI¶1æ;Dx’ÿ:ÖWeŠYj¤Ä$äÑ觾Dœª mÑšPßT6ø!Û’²~+é{Ç>©Éº¦êM;èj¬ú³î˜½9Eòÿ J˜þ“¹£÷ߤ=nMˆ‘·P’}²ßÃuçòj?‚mr§Ú%Ì‚V]”¶äùÙœYqÚðÞ|{»1r±‘¦šè¥hm²mJwÚwj‡môhΖúÞÈ÷ì´O=Aÿ‡È¬+k5ê-ô»@õÏÜ}Y+ ~Ó¡S&ŸÝ3ÃÝ$¯§z½).´Œs·Ü':–[X秗9rž…|IqÐk© +AÈ0uï,T5§¯™¶hgÁ«$Ãÿ'’j�ùÈŦ«Ë°ž +¶tù…3wšÁ¡ì¦œ{8Ã<ä8î•—R1öæ=”]«Þ�ÄB1¼€^Uÿðy“÷Gí-¡ƒo1_[õ?cïØ,î‚K´%–ö¼!9oTk˜5”Ï3eV:Û©QRäÛP7`ÐCTøD)K@6§I?âCu¸B½*M2¤ž„±ßÊ>þ.s€ùÁBàrÁĨp‘sÔ^s©äÄ'…Þo®éFLÈsÏŸ’‡Q¿'PÓÚÁ¼ŽŠMÉ6%|Éò·pd÷S*À O»Ý‘ÛÒÌÊ´!µÖöŒ°¡ŸnϪ¤j¬ÁGe¦k#™<æ[´:ÂF‹1³žz±‹IzʶšgCl œë§ŒÅ¹µ'}’Ù´ìwnwzAÖ‹jO¶’o=eÕé™×’tSìrR�ק2ÇG”1Á·)?±ôQºŸÏnQª¾Ð'H¬<§ÀwàÿMiIáè((fhHM‰?PØ.2g¸aÝO Í0Zv–î›È„´—Wsƺ9°š;ÿðÛþb˜†n >êaç|n±Âõ;ªÆë™û®·¥3/ZtH~�6ú?ÞËÄ«‰,ãÿ +‚ £¶N÷8=:Új‚ .ˆ¶Úî ˆí6 +HXˆ¨´Èf(YØdhTDPQ6}•-{*a^åÕò*©„D`î©Sç¥êUêÕW·¾û»e!ÀóÁq¹L!¸_yÆùºÆá¹oÏ'TƒªÆDY[ ó<¶ä6Ô‹•JüÛŒ°²C…¼’`>5&c÷ª4“ÞwaU̘zÊ:f½–œ˜ªº”nu½ðWÀ=m‘oëBüOÛ*]N~j§.ĺ_K6ÃT‘?¹ª Ö¦ÚÏAÇ’¨oºÓÙ»•ƒƒß¬áÈoiGLžÏt{þ¶Ê +Pd±OOE¨¥@K§÷ôAiæ!}y‹êføðr® ¥ +:–H‰vÖŽS`»:<ÈüÒýÞƒ]CðV ÃoRA="•�äÖýy0òLêZðœ}ï–÷÷Ïf…BH){X!É9۱̼Æ>‘:›‰håÍH“!ô?e¹§Xy’:ÈzJ_…îµfj½;¥k¨n»¼ÿÍoËU <Þ=iÜ&ÖÎ÷š{2/¹@‘t¤WšãA%’¨àÊ»gÍ!)Ùí ¶ÊõôΣò¤· CÜsuo•eø:9„à:™Oxð|Yž§=µ„Õ=ømŸ�uUcÍgÿƒñ WC6_,´u† _lëtÁ.* ÈóÑ¥à‰ð%dæ,(>ãFx;©6îWö„Ï;M(éíû†%ElÏ£gMYIOcÀ�M†Ó©®1vÚjàOÐê“ÅÀ‘i6Ù WXô*ê,¦ÄªžÔû¼sc“7VØÌõû€í“Âr+|ìD/»¶èѱ}‘é<G}ÞáBbyÿ€©’•=DÂÓ<I7S`o] L*OG-ÅeçPèΞöÒ{çiF†T"’UýÐÉë ‰”77zU=5”èï0lE¹å@ MâÁãðx’$‰nv—“ž ÍÓRFt²¹òwä%~ºý3šä(OŠPå6ÿU3½£ÖqVßÖÌzJ÷B°›©r?”/´u Ø�óÙÛ!¢ÄË_'ÉÀíþ+Ã\Ïk©lÜM÷jçç{'¦X܆ù,<¾“|b,ÌBÄ„&µðæú +5¦˜FÜðuSX L`½ük}Óó_=JlAΧnøíœ]T2ÊÍ·çÊßèäá,xaíïÛBt‘†Ú¯OÀzCªÄhi¼ä1õçoS½ZD®™¡6‡ày|̵VuéíèY}—0Ý#pÜ-(.ßê|X}ì¦ÓÞö@ÃóÛ®•{ÛO†˜S0ÉYXxj;Â3ˆø¤ò?Å>h7QQc,vQ^ÒÀR²óÐoÁ’Ÿ™èÒžá0šÃö#¬°ÖRSî>+ž× L"ý›P²/¯‚{8Ð7âöŸê»º”²J°_³¸±×[×dÐœ_›œ=0)žÛ¢q±ª†ÄH&X +xèW`ÃϪ¼±Ýd8ðC0‡YÈËæàIÃÌ©ËüZ§X瀘jï¬vÿçÉuN¯ÎeD �I^qño¸ø/ȽT¶|ºüýé´È¨òžšÁ)‡ÈÀÚ·2¥rnTf‹„úfDp=ÕV³íÉàvr—“x‰rŽuPú`ŸZ6¥¥¤îMM¥÷K�~\¥¨xñtËnðO·¸vñ +;[ú8'Sx»¦8 ¤á$ÿèدðs ÔÖ›#®1ÑM&èhzTv÷ió$±çÑß‚æ”5?;<éäH˜¥ˆT›I˜ø&‰_õ¼ÑÕgFõáñ31©¬9:ÖÖg{OH‡†U˜êù½ûCAK˜y²àKÀŠ ~h»J°%òÓÕ=.õc«IJšƒ©9Ÿòyá9BjLzŽf¼:÷~fÜŽ‰Ps’$iç!^×ZQõH?}«K9¬„‰þ”Wl?�1¾%.TMôNýéJ#b ÿù;}C‘œ§Å§ª_RuWÿüHN„X¡\•Ã×6ƘáBë³Êb7‹ òÚðá+�{iÆÕØ—©ÒHPg½Pk�£=ýq ŽñŽåö{¦:ºÔ’¯òâËâK„$qŸi¾´:d×E 6*8´w*çÁ8 ðÙ”L>]g‰Í-ÃÑz-óç9gÞhŽúÌ"Äs ÛG/W6ñÕ*ŒU1Ö"k’5±ž•OTñ†VÓ‹‰'µ÷Ä1«DË ¶Ê:¾ÏÇ!œµ{¢ÞÅñ]×ýJ_|³¤ÆGÕà n8h’HªÔF}¢Oêä.£žCg>xLiÖaµt.IxFóï)(…µµÂùÀÈ«7ÊöJÉÑ2$Ò,òÝùÿÇ9Pì4긿^;¿åFÿ¤h_ Í3”ÚÔO¤±µäz¤]m‰\5…X 4œsÂ,”ïéóp]Ç6üƘ’d`¨ÖÇwøuNa1Ò–—’¸µÄJ(�æ˜ /Ý}ž0sý°{¿¤¾ ¡Í_D661‘’Ù̲m@üSiW>D}² ™üf’øuªá6“|cFtÔš�*…òKŽ°|ë |åîÃyÉÒÔâÐ…ZÐ5lI’¤AÙí¹'vDÇ—ÔªæºËÓeÝhßÄZ[uª�Ï’Ÿ{,=¸ƒ€|2ùa¦…YÈ„çÔâ}2RÁÊöò\눸»·Æë½tƒsãE/QÊ.qø":Õ!€…-úË×á‚S°^ÍžßèfU[Ïhj\€fÍíÅs‚'©VÈû®¸pMYÉâ!«ò`¾… ˆl%b‹^®¨NP+¤únjR3Å*ëx˜Sú³žðŽcÑ€ì"Ê؉ÁBÉÃýÁñ3úžó‘{¼ãDâY.̤¸þú=–<›ahs£H©§ÆärAO[Õ‹•Å…,¦$à9dÝ*½ùËx˜ñ¼Ððqñ—)^ßW+eð¬`£ºÕA驘lkjçZºÎ±jÛÆÑ d‰7C•—¦¹ª¾vþ¬ôqŠ¦IÒž¶Ty`5…u³O “¼èE<Úؼ¬ú"¡k—Ë3¿tîYeSOt¸´ñ6dßM¿ã:jA¶-sŠoü]Ù«V)Ñ{Pž5XK€bJôþjDÙz‡7»m‡.Ù |EÛ»$y+Öß�&g¼ôÝ£¥3ÙIq©7rèÈí–‘±YkirÜzßÝØKÌÇJ•Jk¦VwˆD‰ŸÛþQ$d*o?ä¦Å&í‹°AYü¸58êè·iýx£o¦Z¥êæþ×Áµé·Žú[AÙñ„çÐÊKï9aÏáü’¬ê³.1:öŽ¾¼ŸÊxöþÿœð0z§D‹óp=W<èì˜fê@åV7Ôw¸$ÛZÀOo)/ëdÚÕwÑ?Njè‚îbbV)þŠV‹†u„•<§u2\‹0Çšê¼Nvx®œ6G*;YkÂÌ¥é®Xï[ê[ËO}vÆù:ÌmOÚð¹hõ8ûeCÏм©k(ÀS¥·¶áæ'nS“LO@ž}b¨íÞ“x»œ&ÿãúÛ>NÌücç@¸5$jªÒɲªúëÕ˜\ë¯kÐO•Ôyï§Þ[>Ã~‹5©ŽÔtÈðV²</Õxõ?*L•q«„’Z“Þ´à0Û=œ¢Ò+êæ\RãcX,ñª©1òꥦë4µrðCmQ¸{Zà^–V«»</#0ŧŽL~¨ ÈFIâ/Šš ‹Z2Ð@é[žZ6©l-§œ¼fAB#ƒÛÁÇ%/ýûUâÕÔ•‡ÿZ àxëR§S<Ó3Óñ83Ök- 8*X(„SgÔÊéÔºT‘°e±ìȲEÉB¾$„°²¿¬ç†„LjÔezò{Þyy¹÷¾û¾û»ßïûÝ„5‹è©Ô +mÑ-¢‹È;TOg¾ÊŸS¨½Èäk fÌöáºPc_‰g*V�‡â¦ï +Š.h(³§Ý5òƒÉõÇñ¹µùŸ«îú£Í0<úʈW*¿Ãk�L:óX³�a?Ò:²Ìålî«YÑ+,žX¸Ÿ\îjÝ‘vñ‹ìίO™—�–Ìâ7Q*''A’uªÝÈ/´1óû‹Â.Vݶ?ÅAyvëâ+nð²Bå÷ÞC§µ¥C¸OŒÏ1–.¬š³Òe‚V,¦ØÄ(ÒŠQf†U³1Û؉pÑ¥ïX-NýÖëk& +³Ó€†—&¬cŠ\x…E²¥×D Z±“>µÁøÖGáŲ2†É<ÒùKÛ“} Ê,hUTEåþ{°H! ¥–M…4”fÇñÑ8i2¸I€ŠHIÆŽ{¦nœ‰WJ�³ÀH½m¨a¼Z“®;¥5»î·6<Ъ`ݸƒæ¥»ô¡QAe÷];Òð$Q¾õ¤nÍSâ�2éöà ì¨Ænù·É>¼È×´~O+ü,¹<u¹e8G ˆÜV›SŠ;#¾ÿ{g‰¶W^~(ñÓ¡ú¡½Xð³ —±í†EÂ[1=Æø øjÖð®´Ÿ;›[ÇÛ:_&œ94²·¥™:7·É!ÖhÓ+Mü–ÙŠ¨‡…Qûˆ•Ž¯•ÿ]¤šÈêtRÞ±å{Úuhß‹tkÑ ½À7V|av¬èU/72B/o<%ÖèˆL˜d/qæ5�é»ÆåýíYGLfqñáhêTœ»\sÇÊ?b;Qæ?¬6·{x2}—-ÿêPÒmsAˆ¶¬Ñn{þŽ.ë}}ÕióØcÐëq]’Åla¶$Í°Tš¸í9Üe½Á»¤ySJu,ƒyŽÁªÕ›qÚèÌ+gÜŠ†Ö§ˆò“‘ÌÚNò£èª;?D +0{]ÔÆAŽì§#k·þQŒÍ½¼råÀ´¹WŒ²ŽéˆÔŸ=ÿàîSö¨lÙ[Dmú—b™Ý‰l¶ÒhôTþ á`@ £”Œ½à¤Ñ?l|ä(>ëú^ƒÉ/<?–ñæî»Zòm´¿£¸¬mø—™ßjuA+0úEžÞ>7-Ëû® x¤}}sêëü+íôŽiÉVÐå]°æ¥ñ,ÖnÖlÞÀ^¢¯ŽÒëZžLBÛÙÜ„–}D…@ü\_|õáNöŸ–îÿN•¾Sso‡üFˆ0aÿhJ¤‚I…!•ë¾{Z‰|Q…»IH>–‰®•W}ûÁ›¥±tü¨ðM‘÷kÁ•.%²9©¼ÞrùßÃÑ�6‰2+9ÍdìjyŒx»ó\kï5’ÂWÒKó ŸŸïý>M=!òô"×u‘YË\Ç#Únó# ™fŸHÁ…”? +"“ÉÂI/³³Å�‘ŸÂæ|ÛÛÓ霾ú•„üÈ—@º2ы݉|$þך?…´¯ª*¼ (“Å¢.Ì‹µZxCÂm0›-‚þiìuü¥#ˆ¶œ‰Æþ#µx~u�‘Š”ö©/pñÆÑ·(Kéæ|Ig,ÝW|“ÀÃ"¦`büÏOŸ8qî´AM”Pj[X×óÄ.èÿ\*t°»·˜M–îöÁ;_•^:š–=üíO¡9•!åu"˜*’Á ‹7ë·!fÔšÿðzO<}Ö+—'ìIiÑ@G?üÏAˆÿ¿wvØõß%ø‘D쿺 PªPj;82ɼž†süガ‘Ñx|Û¡ÌÊÙ•»‹ñAu„Àb�‰h·²R2‡;,ÝF…êëAc0a‡G?ik8.”ÜøáÍX ô¿‹z}‘p"ª›±§µypO²îK· ±¬¨'Ræà°ÒoofnK®qzR8Bé6ò¼’«ùú¯Ó‘%3ßôòöµµ¸UžunÝΑ:qbÒd·ŽŠ·‚I…ê +›‹åóËÀpþÒán÷Hn4pä²ÛÃCûÛ[ݳ¦}4(Î=ciÌá¥ÿ{…Ù�Ä ÑenÏáVj£X¼ ƒ,.ÚŽÀ)xêcƒÎl®Oÿ“Å(<âüíÊï¤6ÈÏÕk‹Ý(šs«¾yÛ�¨h½P”ÔͺHcÔ +E"¥zc¸óN�G‰&•^§±Ô’¬Åΰ[²ÒL$•ðÇç5:o~Þ¶‡\oÀö'³8§ººÒ8}s‹–M˜p§èžÈ8‘J;sRñqq¸ã—?ÄV[îV‚N3è¹ýÃÀzmrO{Pè %Ã| ?¡Í-áÍO²ŸsEK +µÞL&“¶ÀN©=ÃZ``Ȥ3È¥ª^º�ŸO½_z-2/åx¦½,:‚‰;™ùY2î]2 q8r,›•Ó7$ÕBoñ«·ŒfS2ãö(Áõ„¿–5¤T·áÚØMŒV¯p¸Šß?5>0 JαÞÉÆÞÆŸiei?&”ª§'}šn#ÜÖ?Å$ÅÄDdŸ¼T�dÇŸL +!’±£côÙyÈô‹“ûo ¸—!ý |¹dT°§TOØ]‚Í®<t·üÄÏ^-½Ts!ïËSÙ ê!¦:ÉJuFìɬgrN_Ìû¦ðàÍÒ?ü·zw ¡d„Ï[’IuÛbÖ4�A bU]Ó³XÞP +½ûÓI©¨{¿¿·¨öƒ‚Àês«>Ê©´5 éûó«ÿÝNK¡ÒRŸ2qœÁÎ)ɤ7Z,>º%€JH”êáysz®ubêñø$Y Wpß5) zF¡ÖMo{™>øàƒ>øàƒ>øðæð?�˜> +endstream endobj 189 0 obj <</Intent 199 0 R/Name(Layer 1)/Type/OCG/Usage 200 0 R>> endobj 199 0 obj [/View/Design] endobj 200 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 193 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 192 0 obj <</LastModified(D:20161013192721-02'00')/Private 201 0 R>> endobj 201 0 obj <</AIMetaData 202 0 R/AIPrivateData1 203 0 R/AIPrivateData2 204 0 R/ContainerVersion 11/CreatorVersion 19/NumBlock 2/RoundtripStreamType 1/RoundtripVersion 17>> endobj 202 0 obj <</Length 1437>>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 19.2.0 +%%For: (Quintas) () +%%Title: (icones.ai) +%%CreationDate: 10/13/2016 7:27 PM +%%Canvassize: 16383 +%%BoundingBox: 25 25 75 75 +%%HiResBoundingBox: 25.9999999999973 25.9999999935353 74.0000000000036 74.0000000000009 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%%DocumentFiles:C:\Users\Quintas\Desktop\google2-01.png +%%+C:\Users\Quintas\Desktop\banco_objetos.jpg +%%+C:\Users\Quintas\Desktop\dominio.png +%%+C:\Users\Quintas\Desktop\logo_1__2_.png +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 111 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 26 26 74 74 +%AI3_TemplateBox: 49.5 50.5 49.5 50.5 +%AI3_TileBox: -256 -346 356 446 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:17 1 +%AI9_OpenToView: -663 289 1 1103 725 18 0 0 182 216 0 0 0 1 1 0 1 1 0 1 +%AI17_Alternate_Content +%AI9_OpenToView: -663 289 1 1103 725 18 0 0 182 216 0 0 0 1 1 0 1 1 0 1 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%%PageOrigin:0 0 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 203 0 obj <</Length 12101>>stream +%%BoundingBox: 25 25 75 75 +%%HiResBoundingBox: 25.9999999999973 25.9999999935353 74.0000000000036 74.0000000000009 +%AI7_Thumbnail: 128 128 8 +%%BeginData: 11916 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDD8FF +%A8AFFD0484608460FD0684A9A8FD6AFFA9AF84846060353C1336133C131A +%133C1336133C3560608484AFA8FD60FFA8AF8460353C13131319133B133C +%35605984608460846060353C1335133C133C3584A8FD5CFFA8843C3C133C +%133C353C3C6084AFAFFFAFFD07FFAFFFAFFFAFAF603C353C356060AFFD57 +%FFA9AF353C133C133C35606084A8FD15FFAFAF6060353C136084AFFD53FF +%A984353C133C1360608BA8FD1BFFAFAF8460353C6084AFFD50FF84601335 +%133C358484FD21FFA884353C356084FD4DFFAF5A3C353C356084FD27FFA8 +%60353C60FD4AFFA884353B133C3560A8FD29FFAF84353C35A8FD47FFA860 +%353C133C3B8BAFFD2CFFAF603C35AFFD45FF8460133B133C60AFA8FD2FFF +%843C3584A8FD42FF843C133C133C53A9FD12FFCFCFCACFC9CAC9CFC9CFCA +%FFCFFD13FFAF60358BFD41FF603C133C13352F537DFD0DFFCACFC9C9A0C2 +%C1C198C1BAC198C199C199C2C2C9C9CFFD10FFA8601384A8FD3EFF603C13 +%3C133653534C77A2FD0BFFC9C8FD04C1BAC1BBBB99BB9999939A939993BB +%99C2C1C9CAFD0FFFAF603584AFFD3CFF8435133C133528534C4D4C777EFD +%07FFC9C299C198C198C198BB93996F936F946F946F946F936F946F9999C1 +%A0CACAFD0DFFA8601384FD3BFFAF60133C353653774D534D774D777EFFFF +%FFCFCFC2C1BAC1C1C1BAC1BB99939A939A6F9A939A6F9A939A6F9A939A6F +%9A939999C8C9FD0DFFAF8B3CAFFD39FFA860133C1335534D4C534C4D4C53 +%4C537DFFC9C299C198C198C1BAC198996F946F946F936F946F946F946F94 +%6F946F946F946F9393C1C2CACFFD0BFFA8843CAFFD38FF60133C19365377 +%4D534C774D534C534D77A0C1C1C199BCBBC1BAC1999A6F9A949A6F9A9394 +%6F946F946F9493946F9A93946F9A939493BBC1C9CFFD0BFFAF603CFD36FF +%CB84133B13354C4D4C534C4D4C534C4D4C76999993996F9398C198C2A1CA +%A8CAA8FFA8FFA8CAA8CAA1A19A9A6F946F936F946F946F946F946F9993C2 +%A0FD0BFFA88460AFFD34FFAF3B3C133C53774D534D534C774D534CA099BB +%939A709A99C1C1C8CAFD0FFFA8CA9B9A6F94939A6F9A939A6F9A939493C1 +%C2FD0CFF8B60FD33FFAF353C13352F4D4C534D7753774C534C9999996F94 +%6F77709F98C1A0FD13FFA8A16F946F946F946F946F946F946F99C2CFFD0A +%FFAF6060FD32FF603C133C355377A8A8A9A8CBA8A97D9A999A6F9A70534C +%A0C1C1757777A9FD13FFCA9A9493946F9A93946F9A93946FBBC2CFFD0AFF +%A86084FD30FF843C133B137EA2FD07FFCAC293936F9B77774D7698C19953 +%284D4D7EA2FD13FF9A9A6F946F946F946F946F946F999FCFFD0AFF8460A8 +%FD2EFFAF60133C1360A9FD07FFCFC3939494C3CAFFA9A899C199764D774D +%534D787EFD13FFA19A6F9A939A6F9A939A6F9A9399C2FD0BFF608BFD2EFF +%84133C133C84FD07FFCAC3939370CACBFFFFFFC9C198C277534C534C4D4C +%5353A8FD12FFA19A6F946F946F946F946F946F99A7FD0AFF8435AFFD2DFF +%3C3C133C60FD08FFCA93949ACAFD04FFCAC2BAC2CAFFA27E4D534D534C53 +%53A2A8FD11FFA89A6F9A93946F9A93946F9A93C2CAFD09FFA96060FD2CFF +%843C133B1384FD07FFCA939376CAFD04FFCFC998C1C9FFFFFFA8A877774C +%4D4C4D4C777DFD11FFA19A6F946F946F946F946F9493C3CAFD09FF7D5A84 +%FD2AFFAF60353C133C84FD07FFA0949AFD06FFCFC1C1C1FD07FFA87E4D53 +%4D534C7777A8FD10FFA19A939A6F9A939A6F9A939499CFFD09FFA9598BFD +%2AFF84133C133B13AFFD06FFA19A9ACAFD06FFC2C198C9FD08FFA8A85353 +%4C4D4C534D7EA8FD0FFF9A946F946F946F946F946F939AFD09FFA85335FD +%2AFF603C133C353CAFFD05FFCA9A94CAFD06FFCAC1BAC2CAFD0BFF7D774D +%534C534D777EFD0FFF9A9A93946F9A93946F9A6F9AA1FD09FF7D5384FD28 +%FF843C133B133C3BFD05FFCAC36FA2FD07FFC998C1C2FD0DFF7E7E4C4D4C +%534C4D53A8A9FD0CFFA26F946F946F946F946F946F9AA8FD08FFA2285AA8 +%FD27FF8B353C133C3560FD05FFCF9AA1FD08FFC1C1C1CFFD0EFFCBA85353 +%4D534D5353A2A8FD0BFFCAA1939A6F9A939A6F9A939493C9FD08FFA2532F +%AFFD27FF353C133C133C60FD05FFA09AA8FD07FFC9C198C8CFFD10FFA97D +%774C4D4C534C777EFD0BFFA19A6F946F946F946F946F939ACFFD07FFA84C +%2F5AFD26FFA83C133C353C138BFD04FFCAC2A1FD07FFCAC2BAC1C9FD13FF +%A27E4D534C534C777DFD0BFF9A9A93946F9A93946F9A6F9AA1FD07FFA877 +%2984FD25FFA884133B133C133C60FD04FFC9A0FD07FFCAC998C19FCFFD14 +%FFA8A253534C534C4D53A8FD09FFA16F946F946F946F946F946FA0A8FD06 +%FFA84D4D59FD26FF353C133C353C35AFFFFFFFCFC1CAFD07FFCAC1C1C1C9 +%FD18FFA27E4D534D534DA2A8FD07FFCA9B939A6F9A939A6F9A939493CAFD +%06FFA8774C59AFFD24FFA83C133C133C133C84FFFFFFC9C2C9FD07FFC2C0 +%98C1C9FD19FFA87E4D4D4C534C77A2FD07FF9A946F946F946F946F9A9BA0 +%A0FD06FFA84D4D53A8FD24FFAF133C353C133C358BFFFFFFC8C1CFFD06FF +%C9C1BAC1C1FD1BFFCBA853534C534D777EFD06FFC46F9A93946F9A93A1A8 +%FFC9C8CAFD05FFA8774C5384FD24FF603B133C133B133C60FFFFCF9FC1A7 +%FD05FFCAC298C198C1CAFD1BFFA8A8534D4C534C5377A9FD04FFA1946F94 +%6F946F9AA8FFFFCA9FC9FD05FFA84C4D4C84FD24FF60133C353C133C3584 +%FFFFCAC2BACFFD05FFCAFD04C1C2FD1FFF7D534D534D7777A8FD04FF949A +%939A6F9AA1FFFFFFC9C1C9FD05FF7E534D5335FD24FF353B133C133C133C +%60FFFFCAC1C0C3FD04FFCFC1C198C1BAC8FD20FF53534C4D4C534D7EA8FF +%CA9A6F946F939ACBFFFFFFC9BAC8CAFFFFFFA87E4C4D4C59A8FD22FFAF3C +%133C133C353C1360AFFFC9C1BAC9CFFFFFFFC2C1C0C1BAC1C8FD21FF7D77 +%4D534C534D7EA8FF9A946F9A6FA1FD04FFC2C1C2FD04FFA953534D532FAF +%FD22FFAF133C133B133C133B35FFFFC998C19FCAFFFFC9C198C198C198C9 +%FD22FF7D534C4D4C534C53779A6F946F93A1FFFFFFCAC298C2CAFFFFFF7E +%534C534C5984FD22FFA83C353C133C353C133CAFFFC2C1C0C1C2FFCAC2BA +%C1C1C1BAC1C9FD23FFA8774D774D534D77709A6F9A94CBFFFFFFCFC1C1C1 +%CFFFFFA87E4C774D532FAFFD22FFA8133C133C133C133C13AFCFC898C1BA +%C19FC1BAC198C1BAC198CAFD24FFA2774C534C534C946F946F9ACAFFFFFF +%C2C198C2CAFFA8A24C4D4C534C5384FD22FF843C133C353C133C353C84FF +%C2C1BAC1C1C1BAC1C1C1BAC1BAC1C9FD25FFA8774C534D776F9A939476FF +%FFFFCAC8BAC1C1CFFFA84D534D534C5353AFFD22FFA8133B133C133B133C +%1360A8C898C198C198C198C198C198C199CAFD26FFA2774C534C946F946F +%7053A8A8C999C198C1A17E4C4D4C534C4D4C5384FD22FF843C133C353C13 +%3C353C3CAFC2C1BAC1C1C1BAC1C1C1BAC1BAC1CAFD27FFA8784D776F9A93 +%9A4C774D779AC1C1C199774D534D774D534D5353AFFD22FFAF133B133C13 +%3C133C133C60C8BAC198C1BAC198C1BAC198C1C1CAFD28FF7E7770946F94 +%704D4C5370C198C1BA994C534C534C534C4D4C5984FD22FF843C133C133C +%353C133C1360A0C1C0C1BAC1C1C1BAC1C1C1BAC1C9FD29FF7E9B6F946F76 +%4D534D9AC0C1BAC199774D534D534C774D532FAFFD22FFAF133C133B133C +%133B133C137C98C198C198C198C198C198C198C9FD29FFCA76946F704C53 +%4C7698C198C1989A4C4D4C534C4D4C534C3584FD22FFAF3C133C133C353C +%133C353C35A0C0C1BAC1C1C1BAC1C1C1BAC1C9FD29FFA89A939A70774D77 +%99C1C1C1C0C176534D774D534D774D5335FD24FF133C133C133C133C133C +%133C58C1BAC198C1BAC198C1BAC198C9FD29FFA16F946F704C5376C198C1 +%BAC199774D534C534C534C534C35A8FD23FF60133C353C133C353C133C13 +%3C7BC1C0C1BAC1C1C1BAC1C1C1C2FD29FF9B946F9A77534CA0C0C1BAC1C0 +%9A4D534D534C774D534C535AFD24FF603B133C133B133C133B133C133599 +%C198C198C198C198C198C2CAFD27FFA89A6F949BA84D7698C198C198C14C +%4D4C534C4D4C534C4D4C84FD24FFAF353C353C133C353C133C353C13839F +%C1BAC1C1C1BAFD04C1FD28FFCA949494FFFFA299C1C1C1BAC199774D774D +%534D774D534D5384FD24FFA83C133C133C133C133C133C133C357C98C198 +%C1BAC198C1BAC1C9FD27FF9A946F9BCBFFA0C198C1BAC198764D4D4C534C +%534C534C4D28AFFD25FF353C133C353C133C353C133C353C35A0C0C1BAC1 +%C1C1BAC1C1C9CFFD25FFCA9A6F9AA8FFC9C1C0C1BAC1C09A4C534D534C53 +%4D534C774D59AFFD24FFA860133B133C133B133C133B133C131A349FBAC1 +%98C198C198C19FCAFD24FFA8A16F9376FFCAC298C198C198C1704D4C534C +%4D4C534C4D4C4D53FD26FF843C133C353C133C353C133C353C133C59C1BA +%C1C1C1BAC1C1C1C9FD25FF9A9493CACFC8BAC1C1C1BAC199774D774D534D +%774D534D774D7EFD26FFAF133B133C133C133C133C133C133C133C589FBA +%C1BAC198C1BAC1CAFD23FF9B946F9BA8C9BAC198C1BAC199774D534C534C +%534C534C534C5359FD26FFAF60353C133C353C133C353C133C353C133C58 +%9FBAC1C1C1BAC1C0C8FD22FFCA9A6F9AA1C9BAC1C1C1BAC1BB764D534D53 +%4C774D534C774D5353AFFD27FF843C133B133C133B133C133B133C133B13 +%3C589FBAC198C198C198C9CFFD1FFFA8A16F9476C39FC198C198C1989A4C +%4D4C534C4D4C534C4D4C53287EA8FD28FF3C3C133C353C133C133C133C35 +%3C133C133C58C1C0C1BAFD04C1CFFD1FFFCA9A9493C2C1C1BAC1C1C1BAC2 +%77534D774D534D774D534D774D537EFD29FF60133B133C1360848B603C13 +%3C133C133C133C349FBAC198C1BAC19FCFFD1EFF9A946F9998C1BAC198C1 +%BAC1A1774C534C534C534C534C534C5353A8FD29FF843C133C1360AFFFFF +%FFAF843B3C133C133C133C35A0C1C1BAC1C0C1C2FD1DFFA1946FBBC1C1BA +%C1C1C1BAC1C9FF77534D534C774D534C534D53287EFD2BFF353C133C60FD +%06FFAF60601335133C133C357C98C198C198C1A0CFFD1AFFA29A939998C1 +%98C198C198C1A0FFA8774C534C4D4C534C4D4C534C5384FD2CFF353C35AF +%FD09FF84353C353C133C355F9FC1C1C1BAC1C1C9CFFD17FFCAC299C1C0C1 +%C1C1BAC1C1C8CAFFFFFF77534D534D774D534D774D7EA8FD2DFF85133C84 +%FD09FFCFA8583B133C133C13357BC1BAC198C1BAC2CAFD15FFCAC298C1BA +%C198C1BAC198C8CAFFFFFFA8774C534C534C534C534C4D53AFFD2DFFAF60 +%3584FD0BFFCA7C5F353C133C133B58A0C1C1BAC1C1C2C9FD13FFCAC8BBC1 +%BAC1C1C1BAC1C1C9CAFD04FFA953534C774D534C774D532884FD2FFF843C +%35FD0CFFC97B59133C133C1335347C98C198C198C19FC9CAFD0DFFCACFC2 +%C198C198C198C198C19FC9CAFD05FF7D534C4D4C534C4D4C53287EA8FD30 +%FF603CA8FD0CFFCFC27C353C353C133C355F9FC1C1C1BAC1C1C2C9FD09FF +%CFFFC9C8C1C1BAC1C1C1BAC1C1C1C2FD08FFA24D534D774D534D774D7EA8 +%FD31FFAF3584FD0EFFC2A0343C133C133C1335589F98C198C1BAC199C8C2 +%FD05C9A0C2C1C198C1BAC198C1BAC198C2C9FD09FF534D4C534C534C534C +%7784FD33FFAF3CAFFD0EFFC9A0583C133C133C133C357C9FC1BAC1C0C1BA +%C1C1C1BAC1C1C1BAC1C0C1BAC1C1C1BAC1C1C9CAFD09FFA8774C534D534C +%774D5359FD34FFA96060FD0FFFC9A07B3B133B133C133C13597BC198C198 +%C198C198C198C198C198C198C198C198C19FCACAFD09FFA87E4C4D4C534C +%4D4C5353A9FD35FFA86060FD10FFCAA083353C353C133C353C59A09FC1BA +%C1C1C1BAC1C1C1BAC1C1C1BAC1C1C8C9FD0CFFA953534D774D534D5359AF +%FD37FF846084FD11FFA783353C133C133C133C137C7BC198C1BAC198C1BA +%C198C1BAC19FC9CFFD0CFFA853534C534C534C5353AFFD39FF846084FD11 +%FFCFAE5F60353C133C353C135F58A099C1C0C1BAC1C1C198C2C9CFFD0EFF +%77534C774D534C535984AFFD3AFF606084FD13FF8460353B133C133C133C +%3559759F99C198BB99C3A8FD0FFF77534C4D4C534C2F3584A8FD3CFF8460 +%84FD14FFAF603C353C133C353C133C35847DA19ACAFD10FF77774D534D53 +%53591360AFFD3EFF846084FD14FFAF8460133B133C133C133C1335355A84 +%AFA8FD0BFFCBA9774D4C534C532F363584A8FD40FF846084FD15FFAF8B3C +%3C133C353C133C133C133C3C6060AFAFFD08FFA8FD04532F5A353C358BFD +%43FF846060FD16FFAF603C133C1335133C133B133C133C133C3560608460 +%8460602F351336133513193584A8FD44FFAF8B608BAFFD15FFAFAF606035 +%3C133C133C353C133C353C133C353C353C353C133C353C133C60AFFD48FF +%AF5984A8FD17FFA8843B3C1313133C133C133C133C133C133C133C133C13 +%3C133C84FD4CFF848460AFFD18FF84843C3C133C353C133C353C133C353C +%133C353C356084FD4EFF84845984A8FD18FFAF8460353C133B133C133B13 +%3C133513133584A8FD51FFAF608484AFFD18FF7E7E3536133C353C133C13 +%3C356084FD56FF84605A6084AFFD11FFCBA2A277774C532F35133C131313 +%3C3584A8FD58FFA8AF6060356084A9A8FFFFFFCBFFFFFFA8FFA8A87EA277 +%774C534D534C77533C133C3C6084FD5EFFA88435603535355A597E597E77 +%7753774C4D284D4C4D285328532835356060AFAFFD62FFAF8B6060355A35 +%5A2F2F2F532F532F532F2F2F5A595A598484FD6AFFA8AF84AF8484606059 +%6059605984608484AFA8AFFD75FFAFFFAFFDFCFFFDFCFFFDFCFFFDFCFFFD +%FCFFFDFCFFFDFCFFFDFCFFFDDDFFFF +%%EndData + +endstream endobj 204 0 obj <</Length 47758>>stream +%AI12_CompressedDataxœÜ}g{Â8³èýü>Oþ$$t°éBÇô@€@ +Õ”PL0l9îo¿’ÜeÏÝsv÷ÍXž‘F£iš‘îÍ–;=¡F¤ÛïÁL7ÿ¹¿ÏîÈážÚÅLègSiµ:ÐûüÉÖ´›ð°ƒÒ¥HŸmÙ!wô‚ÚÄLxÔãcžð}ÛËa±Ùi»Éf‡?¶û ~^Œ© I{†;¼žîÁCóâ~¯ÃC¦pÌ65j¨ÍpóǦÿ[„ü?ü1C6“Åf–¡þŠ™|Aø_þŸM’–5ðD…Â~ñþ ø×x0áHö…€sÔø°&7ûÆŽ“4¥VÔŽŽ™²7¦ÚpžM]rµ¢þ4eVÃñRü±X‘t,û|¥Å>Yê|æHz¹§¶Ÿ3ŠšHŸÃ=Û;èTm;nÆTŸý{ŠöülušO¨õb³ ôᮨÕÇû}_Ÿm›.û°ß`B×ý ÷£ùM—p_?sX¬&χõˆsã8úÝßG$y¥-�Yàgô{¸_ZƒŸZä~fP±I³üŠþµ}4ÉÙ1`Œ/;yGm×ÃݼíÁÿÂðû°M®·+ÀBh²QOÐÄÀþ׌5qû‚!“Û™üàC bLþ± ÿŒ™ž³²„Hïö-†cþ²š‡¹{Ý,ö s¨(C‰5!Wà ±" qá/Û¢=ÜÍÈ=`_juØ£eá±�jW‡“ã€x¸Ÿ¤Ú�\›=èu1íÿÁ,ÇþlÃÃl»h¿¾%7mªƒ†ä…�ÿG¢�/Žc€óÁÒÁ#LO">“,>®w¸ð—C˜^íÉÝšCzuùÍ¤Ï +r"ÁDX ŽaÈG ÀZõÝ"Æ2Ü/ìßÂ>S„ùƒˆí‰0‹Ç£>,ê‹ý…!<Á>#¿°Ô³¾Ãà'Î×ÏÖD«óÔZp$`èYj F2N.X"`]²O…/è�qز¤a8ðkcVõ®ßgæY¤ßXÀÃÂŽ:lK›)uó#Ý;äHpÀÔSH“ñk´RMíÝp`€ï| ²·v€9r +D…‰y^f~Íoþ WÔ–~gÚØX 7à =àV€'C0N$lHîßÀ³±u}åþßPŸ�ïmYP/PYÿ4ˆAU]lŽ@ ߆»ýŸÔn 'LPÑò/RbkIîÇs9Lö׳¡6†û9ÐyäfBóT`¾ +t†³ÆüfdäÙájµ˜í†ÛùblÊìôÜÔ¦¨]á9Iü=‚ošY¸Lw›ú†Ï1V¶!ìÌ;ÿblü[J˜ÀÃÿIX8Âä'À *‹P³MëÏ!`øêbdˆ[¯GÔjA¯yèâ_`Ù,Æ+²õ7½' IµÖuN‰FÒG<ØŸO¢Ò?NÛt±™�8ÃbO +k“Zo¡ùmj͇[QˆkÙ@‘ªi,·Û€.c”"ꣳøá2c©}1=ªï�6»ÞC“¦°ñ‚¿ {í&Û!¨–%Ýù†¦&AµÂgÀ²ò¡ÿ ½Ša&Ñ¿×ï”yÍäýßÀ×¹ù·²¡þÜ o¦Ë†Ú˜xØnò>פɚ¤‘*äÛx9ÖnäOøZv4½‰iÂülGcð²m�Üäí,èÅhÅ�U�ÒÚì$ ™!½‹ °g¿£–¤©>Ò$0—p-GJÔäe( }*Ž6 DÆ´ÉO§Èó"§¶ò!,«úŽm ;˜[Œ¡‹0ÜýmŠŠRÀmS€±'lý°§ˆ¼æ ]8I3_í¥>Jóæ?˜ÇðaXq<‚…‚pŒžh$ä…"A`Òñ0ü#˜Ø¹ˆÏç‡æqÈû©ˆbx4„E`ñaô‹/Àñp(Ƃ༧FÖÂLïÃoeðéÇ„GM¦5ÕL_˜irž6!ÁÿOààÉ©éÑtó“M44(0!°6¸]K†àù£ QÎô^öBÑ8ÛÀï˜�™fŒW´AÁ‰;‰ó4'–ðáó›údÂÌ%D#̤"I•(ŠS”‡¤N/í#+ïzCö"xgŒM4&„æ À;ù¿È1ò½™‡Ä±,û�¿«ý—X˜µëíJf˜©ÎЗóuqÓûþ‚–Y8ˆÇ2‚Eü°:Ð +GC_0èžc @¿`>ü‘P �k)À|Ñ`4âó‡xJ¨/#åU„3sÎøPâq"A„¿HŒëëƒÆpœY’lctíÑÉ#BˆšïÿgA*jŒÁÿ2BŸùž¦¼ª�¨d’ Ã49SWâó±"!¨ÿÃý€ÉUÃÀvšZå†{À]÷}/÷äAøU´¶Ðïµê35!U?šlWÐÀ ŒÁÝbtØ“4Z4 qz·þ·‚¹Q»ñ|±šìÈ Û +hÖ ÿþÙÿ½%ÙǶ‡ Ýÿc¸£EšTÜöáêÀ7†h•† %Øvlohé×ÿñ¤æi„J+j¼$'†ÈÄ5uý+8Z -ÜÈ Ï´Èý3Š›_“).' +®Mc¤X¦7´2ŒÌôÿwF8](Äþ0.`ÛÃÃqŽCÿâïeÑ=„¶Ô¡`çÔÿŽuÓ‚žæ¿«?ÿ»–2=ýó_Àßÿ$9½ZŒÿ÷ˆqàŒxü, Eƒx8ä7y›äp¥1ü?“ýÜÐü³-ÿR<öDpô¯øWá°î0çäb67$rø¦ÿŠâ~0á@8„aÁ`0àÓè_ÆÖò¿ex˜‡™F<ŒEáˆîðþ64¼¿ÿ-Ãã[ªãQ{`‰TÉéžÙî74¼ã—þ5F’¦-ê°“([éj‚õ‹CÙx.øLò‘õ<åS•q†¸ù¿b` +%Ü£ì .q¤”34Ìã—þ7ô¥Æ~7ÜÐÛ!€86&¥/ü[8Cg”‹ÍžÜ†cƒqqóÿ!#ÜP5¸9òêQú¿b”¶;ýcDšOíúß6Vý¢Ý ƒ+4þ×èo}õôßëŸK%ý¿¢KÔv¿X/þíÏü«:\þE?Öä~8î‡WèLôâÎÜMØ#C+RÔý +ýA¶éR&Ž¨ánbC©dÂMÂêÕm:Û‘ü¸t„! ú�¾-·ÆTÀìm¹Õ.ḩ±#ir÷ij“íQ¾Øp´X-öœöçì2˜‚žÞ‘C&gEÉV’YO‰N³½f·E‘þ|9ô9t jòû&Ê+—¸-\WØ\ŽÚ&k2“Ç!0Áí‰×Íb&Œ›D6œsé& À|zy“\µ©&ƒ—éHƒ¢p`豓ÿ(ßðkøs=Fä†ñQ#'‹ÃÚ$äÀM¿Í‰Ò MlŽ5¹cæso:ˆqÆT#鹩9¤Bae“ûŠ“¼R?ì·‡½ÞKÏzÇý«7³ÌnP[˜‚èRä˜�ðöN�Ê0ÑpµàT\˜S¾“íÂ#gjzKíåﮇ4Ç)þ7°íp"Ò§é’)}ØSü9·èMË 5^R€&3&¥RÞ6jÚ·`6èÅú°Šˆäe± �-&&Z@ô|õ…ï“,|ÕvÚ£X€îI�ŠD{{FQ‹”ncAð‰O‹x3eW‹©M™¸• £(YÖ3ôÛâØ%ÏžòVE˜®OmŠâÐœ_µu–\Ä’1¨Õ0K6"ÖRnH¬(jÇ%È1Rm‹â2ÛáX¶PÚ«6nò¤F¢\£eF`_ȇ4šÄ“©3.Igý¾p(¬5º«ÛTÔß@0Vë/j+épã*Õ|xPuúà8óíumð½&ä"É‹˜JÏ`Ïæø‘2“7o‡+AF}¦H€Ùj½µò…£VDuÊ`XÔ@[±@^-"À+Nof+ýÖˆ4òæêüƒš3{P…œ¨¹À?jTGÍD¼£Åg¨˜wlLѦÈÜ[¦KÄaµât[ˆžª),™³Õ"WÅá¼^‚†RŽ+wµ¶U +ðT×’Öâm¸ïQ+HóiÊ«þáf¿0=9¤b¢†@q` ’D¶ÞQ¦p�ÁÃè;.ý6_ŒçC‹Rn?Jšæ×#rrÔ”×’¶0ŸØ4´ C•Û5rl +VˆÄ~=ž³#;5‡}¸`eCåTlת¦Ìp¼„ +~31e•µ)ßô•&MLõXš½wä~(CgÞ„…G]µ3&( D‰rSÁïT¦†ÒX¸wà ²–ÁWK›ñê0!M﵆Ú2�¥Ž2sfòó/eòŠ[Õ†ce[BÜèm±™PÒrʈšH9DJ˜ÉÖa4¥V°X‚ø³Ø…gG.mm’:“‡Úþ}ÌGtò$Óß‚[%0—˜Am m"Ó'†ŽLpïqöÁ©È‚ç¾è翱÷h“È4Ù˜ÆqŽ=ñE\Î8ê4:Ã? ·¨" ©Tç5µyÐy-̽æ;éµÈ‘cä-n¢ß’Ìyè$TEÑ©÷Æ ;é5\…»t^óñ–:%‡“;l7BŸMx%CÎ^;ñ°QL àZRŸä\1¶¢h‘¾ÑvÒêÛýßÐS¢yE† +ÍÚpÍiA½g +Vq2|E臦-Ù5SmÞνÁä‰ûÐ9°÷`ZVÆß`ýÔ=ÿŽ&}Q1‚d»öQ±¥ü¡8 +#n £rþ¯-µÛC_\P÷¸Š5¸åâ…Ôänsò˜JòÆúùc +fþeÚ‘30Ùü+˜(h$~g‡Â0î?Pý½i4\‰<Ìärñ) g©IÂÀË$ò;ÃÍ‚ž +ˆ}'M¯•Ô£*d+ˆ-ä°…£6R›ÚŠQ÷ù”Ì! +û$n,k¢"AÂÑ Î ‰úü¦ˆëƒ~#ê \ú†œeQh·´™µÈ1µÑõõd/‹Í"àç Ãb;CHk¸çˆ™4XCí=žF—rèl†â!óS8ŒóóŽò¨ÈN¸E–xjÀR¦É=¤Ý„²_ð�a{¡öMfZÕÆé?çæÃ+ì“z¨‘g´Ø¯‡P”…°™þŠÛogë¥hrBM§&¥J°PTÚ£ÓzŽÚã +Ý‘‚?Ð$Úø•’’r;Ù^€Ð˜ZHD ©r„‘Þ¯<$à‚ƒ£�¾Ç¾ Ú3òÒv²WãýÚNŒƒg’ô…W”&}»Ý±í´¦4b;ÀM0îSœbÐPœåŽª6“$‰*óh…<KÏ +¬$c-÷ÔV¿‡LÓ¿F?™ÆnÕ!=|K4£Š=Ë)¥ÞJŸP0J\×�'ow4Û¨ÚƒÑh…Å„¤³Ò.Ž¼%Z#6Q&j‰â_FiF`›øštbŽÇ¾Úyà’ÔiÔ2°òöpOMk@°)oŽàáo¿ù›ï&`þÂã¶å-§À|œS»ÿâBÌ*Ͷìv«&c Ä363²¸:$‘“7£aŸ‡¦Ûð‘Òãíjü·†|b7´&[ƒF{`aðÛyê£ü¦Ám ƒm¨5�¤ÆÈ UkÊaØŒæKÑõ…lÏnÑb1òX{x‚×/¨ªÐ‡!n™ ÒPÕzÆ;j«×fîb3¥ôÚíDeÞºxadx4ÜÑZS*µ8t•Ž¤õ^<.½ÆbÕcÀTõÄ@k‘ +Ôo,î‰ÒÊšnöžÉJG"2¶»)u‘·£Ëï?+Í †û¹Òèh2Z@ËVkÒiφœ E)9*ÆG»(ª ^Úè@[ác„á¨,ù@Cz>œ;R‹Z°¹‡®ÿôO ‡"<Y³°’6økë‘ü˜^Ðlwä� \¥¦3%_A©!«26Ë”2{p:M +ÔÆ +·þÐΟDì+µ¤¶c-‰ƒZÐZÓZL–hA¶ˆÝþœ/ö$¿På7É@éX2»ÉŽ6 wP³éa3Öb0¦„â™LGÙ —†› Ÿv$l5Óõ@Æk±Yf£›…Œ©”φðh(äöy²Ûdoowb£Riv@#è‰ÜtåF\ o¼þ{©AXQKj?'%Qh”^™Ò\{“Ê6vPU6‘«¹cN’ô°:¤÷\¶_Ë!IoÎPºd*ì†h^š†› ›ï¦™áƼ…Ž–„§ôÁ·P6äÑ[R\¸)ßhŽŒyÍ6q>Ù†"®¦ÅT¡ÉKj¯-QÒ ¤V¢ 4¯�fÄÁ„‚´T¬ˆ£¼"Jãʲáݦ4¼+o[gS Zª‰’fmAˆ†…íy¦ “¨çeNh5e$—µËCÕúÄb&É8µ`k=r10 Ò‹i¬O0i;Š1’Œ…(§™^¨MIŒìjÅ%Òšb½)nfZZQYǃ¦—‹-pJ7ZR¶Û‘ðüh’Ú ;þjMa¨MˆÞpǹÁ‹‡%‘ejO–TGy`sêÏâbBÊÙæ¨Ýf(·Àj¨‘»è± žÒm"°z³lûëgº 0©h1Bz4rDÅ?ÛÚ®†¤mSǾçsÉD@ðjL1ך�æÁD:mØ>غµ¢\ÈcÕïtUðw´ú̯D=F™A‰ÿ§Ú¶½[¬a½|§Y½¿ñÒ\F/î Z`k.ÜÍ-¦öHZ<¤˜&6k¢¹½Ð?çäÆD3»ÚÃøŽ4|LCþÌž‚›#ødgJìÙ#àR`SÓȵ1�Ÿ Ô¸<s!Aä2dü«ÐwÓž‚ Ƥi”óдþ ÓÇ[f¿&ÌÓð¬Ò!Ü_Ï¡€¢�†Á¶ô<€ÞQSý‚66KxúžG{qL@w‹ŽŸÂÍP?bÐj +š/iG+¸>´w`ØBî¯Îr”§ciASˆ¤e[ßÒâÛTÞ@R·ç‡õh3\¬Œ0;ZD9@sæXœÊ‚ß›TvUÞ;²ç|>%wUåm”¸Q¼cÒ{W”()îò ¯½†¢‰€×Dè¼ï”V©ÏÄnø÷4•¾v"I¥/ŸDQøê镽u +=á«'³Fm¨ñ|GIE¢4‰ +_Ö KÀ^eêhŠfïJQ:ŽZ`V®¦ÞH½h"¯0ÑÎ:™fŽô¯êU_Ìènöª¾Ú<»·‚݃+®¸…mt´‹nÄžaÜ™öqÿé‘L¸õ\$‘‰§4^Q&r·å�ŒT±©¬ƒ¹I*„ÔL¸7€Q5÷Þè‹:‘Ea±1A™ôxG†{æÒV,›•’�iTlM)îEV™lØKx¿,`r±…-¢wt¼*…ן '%p/3lXB·ì°?<3[¼yÞË¥ èÉbº0š’Áaþ[¾úNÒF„¿Dvqž1ž³Ã-SB¼ 5ãô'¤üiñÊJx ¸Ú )# ²¼7Êu., .OÜTG´$Ù&ø ¸ÃH1íä61Ñ”x3αN·²¥R$˜#áÌ¢§dýáÃ{²>ß]eÿCÝIí +ëyl¶1— ³ËfÍ.†Úz-æCw±Ôk!Q$cÕOk-µ;ŒÃDÞW‹ÜãÀ†Ñ¹ŸÜÌ…YRßG*îÚÒ)ºâó4©Çªyǵ*ï3³âK5ìâ)1Îy<Öٮ꤆sÄ},Ü+ìs?_™@ÏíJ¯©*.µösg"tw rË[æge}hrS¬<R„f G§áÎËÇgºõtÔ±ŠÛžRñ%ñ•ŠÑžµ3çº?¶Âd +Ð zÀ¹é×[8³JÞcÓÌ|Ÿ‡{¸„"ƒ‡Ü¯þ¦âIëtšÎ~Ͼ)ðéá7Wš”ÌwäÇ’n¹ï6L'Þ‡“@ý±9ÇùqðÅ–úñô½ÿÁ™yv œ©¬õ•È’G¢S¾›?ŽÇÃ%ü´pæ§Õ9ƒÇ¼ÃðnaÄßåIfuŸ´ºwÎÏCºÚzø…°§Ësx±_è±ó•JoÆÖµó©öè ¯?Ÿá°—žúÓ»q w.c8rœ+Ó@¹°•¿ù±Il‘õÁ$ãµ'›ÛEfVáÆšC·zŸÊ–âwoyW44Ï•>Bw‰p–úvÆ;“˜ot÷…à&6÷`H‰ãNËGè-ô²¤Jd–ö›eÐΤŠá_wµœw ÌÎÞ¢ Áß +jÐ`£ÛR�}q&ˆ8û)þ–¯0í³®ü€æëúJ€ƒß1g"‘wùrÉÙèí)þ8ùyþF³É÷À«g‚Ð*Sæ»ð%t·=5a+2€~š3¹>"7PÉ@¨ú§Û¹gnêüæ‡C«%½¾D÷ï¯éz6ÓÈM[‹ßÔïW^:– tÛ}† ½Ð¤—ïãÎN&𞮹Ÿ·~vñò>N×÷3";uà€†‰A8ÜœPÂHëw]I׫Ž +‘³O*u8Z3K�²À~ëyq&;Ã_fH‰Pd˜zlïoÓíòþp<8qE”à&ã}gæ@µÀ +ªgag¾7¹Ÿùñd#>S~ÄñAœÈq¸œ*ú-Ÿ/)qÅ“ËMÃ>É9}@t‚£“ª\-¤ûeñMܹ}¶iÅ“ÆâížÏnùŽ3=‘R$thFIÂö°µgç¡æ2ï¬z_Á:èRHØ´òȨ)°ºÖ`pwöìlž§Ãã×f:Üó½Éç¡Q\u$Àoy·kUš–è’¬dšt»6qa“ˆæ2ÕîR©¿¨©¨]¡ž‚Å“÷a¾B vÌ>ûao¬‰\°çs& +x¶½040®ñ”Èç‚áLÈ]ï ÙãÁ‹Âšó¶ŽÌÏ~²Î¬6*Ýž¿[�ŒŠ“°Í»¨gñछӹ¼öõ 9«sVtÚsSk1úKÍ‘˜ï¼9‰0T¾Ú~"5{z‡ò~æoé×û1-m÷n¶?V‘Ÿ•;Ž¤› ¡UÆ♥m» âÜ&õ½¦c(&Ð-"Ñc£CÞöôû&hÙSÈж}x:H¶ŽDÎÇ=ò{|Ìà‡ÕGº5(gÙ§Ñô /f= É äAõ!ƒ÷ýtëÐOQc(ÓÀ/ëÔn{`¦L¼P½Ýx²žÝ„ÕáVÞ¤°Šm&¬‚OÒ̧r÷) +>½'ÀoÔø7|–Ao@4â¦CöÍŠm–åÞüŸìÑóû:‡Ä@Û ]² >ýä˜&lã-‹†ï l%„Ьsr¢îóo”—“Û¦O°w +èBÃŒ„ݲgZÌo,44.„¾.§ßi9Öjœ¥€ÇŒæ#)z½¼¯ÇA«×$øó‘Sá·}§8BÆ_DD`HÚ³>sP¾Óq!él)Ïï©“!› Ï\àèºÊ¶ÿHp¤’P„i'|e˜±D}Ü µÑ™4æ’}*ù +yÍ +{hðFÏ\Kà—cz¡½˜á"bp6V¤+bѨY +D“¼Ä"äaH»#ZÌ€?¬ƒõ=Á¬aʤSË‚dÚb(-veÂ×à:³*ÂõÃÎ lp*¹u™QýœˆÓøÙ^bÖã,{3¢iaÌ iˆÝªsŸÐà@˜±Z?¥6¡#ÝîT6DÊJ¶0õ‰õG4½ÚsV%µnŒ0;<Paä(á,�·Ø3¹eêíîu–]|÷Sùñò÷Ñm"#¸o¨»;b[Äù†ÜèI=ÔÕÜÌmO26a£dÿ”žÄÃîR«-šš½\¥ò›)Ó'ÓÍM®žj}ïFи]¥Ö¸¹±glÕ»%ê½µ�Gµ³Í]mo&äò¹E®%žÍr¤#_L.d@•Q6¬uö©‹¼;±eüWè�GW5e̶#�ïðš›òÖšŸiØ1h@[>Ø»Äy1๠êBçŀ癃<£ºáàÇZâ!/&²òìŠì<¼Þ/Y³é½œA®@*Ôÿ:ÇùÛœÇUüÌU2!+À`e^RŽÌËý×™ÊX¹€‡H%vU÷'BO®ô +”ƒŽ$;éM1ÜYUÛéúk°=X¦ +=Qó9’&B!¿ +™Uhö|€FpŽ»JÖs…å= ÖÙK†?Æà“k_ØÞŽ¢QçcàY +·ªâÃĬ°)¤[«”¼>ûÅÇÍdÝ—z5GYw¶í ½–à€¯·¼ËÎ?Í1Ðã~Ÿc/°J̲æŽJcàJú ß™¥ïÉ,<ày‹MÖ+NUYâI‡2D<ÿéá¡„‰ï/Ç‘ßàòôÝG׆¿\ïG$<®–3/TÃgﮟٮº÷é—çVºä܃·?Kfê/£VÝzVºNîd¨¹å)Ã~mÔ� Ï™Dj·›¿bµ·$Âðˆ%ÐÌbÓh¶$^ßfŠ™À!ƒá®WÚ,™‡ïtô±âæ´¿žEšñÖò®Ôî¶\$vW�ˆ®7à�¹& ®šÑ·›çp¬þT|ô½I½½8bsgk´aô±»HV…:Šî\yç°œvÌ7æ|‚iʯd 4cËØJ? •ˆb6z+Ù/Ä)µ—±¨'po‘šfô"„Âî`Tä³2¢"¸/f ̹eìÇÙÊ +5‰áó3”öncŸ®tñ 3—O•çIn²Žº8´Ýw>‰å²Å;F9¹)sÂØhÛÛS0FH–Tņ7³ò4q�´µA¶@Ãà|~|åûß÷ û3sê7ómãUØœç> ƒC–{@Œh ê Y~äí-¤– ’ßÈÅgUxu ¨ð[mÛ’ês¦i8îÏ“ùïú¨,–G({¦öü؉}¦¶è…oÆ>`ñûïRñäëC®´^|d‚wOúÅј¥›m'×Í}á+œYâ“Ø€aÌ“7Wú¨: ÒDM€¬Ž·”ºi?XZDÿî¡››’eV‹+W¶ÙmÈä¤�2/f÷KÀÑÛÇ©¥5WÀ�jµIçŽÐT¬ïà|mû™ïTDzßó¨«`šgæоJ@§0l{Ü’gV3Vú(ÄY¼ÊEqÝÚÏt[X_jÀÖs¥‰\·èPœ¤]Ð Ð<~QŸZ:Žðóø±.kòH~Û—(î{ž=.ò.ª‡1ÄÓ ñUXïVØî‡6G¼tGÝR›3æM2ô^È>g;Iƒ°{;ó0©›`¦S¿"³‘…y�…ßà“hÿDa<`¡VB¡'â·ÏªAÁ@f'òûÎœ›¶Tvqk þÔÓ›D‰Rb$47÷êÔxM½xºËWR™Ø,gû·¥vîèJèT:ü5yÎM£o¾Gîd$þì¬m`|wÓÔ¼î€D“²oE¡¯ŸB÷A·’%«$žB~%.‰.Óùv:m"{²Ÿ›¾ÐPI3RƒíoñŽÈ¦¿fD65k-Ox)õ.ÓÊMÒŽŸT§]ñÜ^Ô —ïnS±7r–Šlw}ÊT@“÷Ùh¾�/5æFÇÊØR(ñª¶v&Â…"Ô7¿½Ç.?[~ 5ó4ñ¿�ùyHu¦íƒx"T>ä<͉;{þYŠ,wð§º%6Yvë†_·¿i܊Ȭ>”Luå“ߎÜd@L‘bý+~ÓtÎ5"òq»åþpd÷7³®'‚ÇLórÔÙ²‡¨GÜ„^àØpmonÚÞ›®EK±D +÷„¹’ÚÝ}ïsSjçQàÛ(У3;Üz'²Ó¤_XFœ-†0ß2¦ayÿY`¾àrž+$îI`wDCLävÜéÑ<ÜGÂVš¼AôJ‹÷ÿ†ŽÄÁ)øˆü6‘ßa³G‚»Ç7`,~Òu<ãÞxr™Š'¶wâEÉYGàÓÄ+"$F»z¡Äk Ÿº+/Pdà +hP+ÔÕoÂ×VTR·Du“7�µÛcW —5nÕ0ÝFšJOm*h�õ+56`Ta³XÍ麵ý`6´d%ÜÏÎÚàãöØ,çö&ù’Ä`–wwÁ\ª¸ýå»(hè…n*tS+´ýșΧr¯,"PC_™U8eAž»!‚;aÇŠŽfÌ=ïø±Šcµ¢Ë¬VÛÌÏqšH•ò#,nÛ÷,Èó ½’pOãnö`é&UÝç\õß g@-|·%ú¡yÈoC_ÀÓ1ïˆ|¤Y”[ ¿Åf¹ÓÓõÃðîB‚‰¤`Ô€üÎ{ЄC4†Æã[ÞY·: ¿ÝZí5°+€šð(¡hxìo©øŠ°‹ t9´–ú„kù7ûœ‚q&è^T”PtÂQ=Ù^ì]èÁ<{w±8kërˆþÊ3´J…ßgùt¤@ïáFº›°•Ý,þº¦ÉØÃŒºi£Nü®‘y‰$trLJEç!mg" ÄoïeXF …=NäN.ˆ)GÎ+zƒßcFœ£¿x´ŒñA¤f€Ù[‡öDŸCÈ3F”€^B ðЛ)ñZºåJ¹™964ˆGóãÃm?q{n¡©’1ÐO2XN&¡ÎëW'Nf‹ÙùÇäº`·©ø‹ÿ;W©Äoù}gùkÐN#†ùÔã×+°HÃ/NÌçú¡ß[5<ݦ›«à›D$ßS´ýý6W)û÷ße¶JÒ•KhôÂíþfšfŸr³`è6î:|.B‰_G¸IŽ_"NŒY¦äe/¦8ñÄÊ4šõ9ΧTø6‡’@O¾²áÖ„ŠCS}kùvÑØd2nÇ|CG#³rãíÂ{ï}æfŸâL“çïÑ|æ0ƒÃŠœ'÷ÆÕ ÉO8†®gfdêu¿Ùµ¥7£ÍË9 ÈoßiEQÞ†nصß@Ãî=q/á)Ëioéök¸-/ºLýTÁà×o’0'¤ôà è¬-F§±øóVHEôÊXãíœcáÇ]ÝJ&q• ¼‡ Zµ¼¤F}n‚XÓ/l¬Ì8]¯á¾ë¬)á“ôéåè +òãqøFý@×›ÿ¹'òQj‘ÿ~Ÿ¿Ùãî*´„^ë?¬°©ŸªÀ ûþ‘ÊCö`¦f·/›ҋ9ìò0ö°j„pµ¥—ww#³LàÍï±ÀâÛ5K·s´#ô[&Ÿ€mÞW—"ä¡8žàºÅ–O¹¯E÷NÄn< äþ´VƒáÉÎSw®´Ê¾ÉÌ�Ì÷òyGØ*™œ›FÏE‰H ‰ ‡x±€>j0?j烂˜” îAc¢8A‘n.˜Ò‹¢ðò¤ýØDŸ‰å‡ƒWz“47ˆíËÅg®lžbB9àýïÇR½ØÅÞ_G`4$ÁÚŽ€áX¹QÆ`€Úv€áSçÅî¾e-£}g¾æŒ‚ÕçtµÔ¦óãD€z}ØZ¢¯ùKtö=iз"Œé{¾Óíùx{ù7|¹œ4·.‡.‘×D¶†µÃj¿Ø®È´¬êðQ¡¦ :"éR´ŸßL¸*dýŠãý9[l`a%÷ðæ?(Rü“rJŸ3„ÉÎÈ‹y5·39ßûá'_ þóó^øOèÁ£?ÙÞg€IQXïšOCè$ø§>çS347ÛýÅ'³Ûk…Q³3±Œ›íϽ¨Ù5_€gƒ©Çì<ÄZfWí=gvc5æ}êÚþ 9k Ð>h±`nHÖ &â�F]÷Pˆ1”ð+öI˜þ²Û%žFi×ö¹œªDéD¤óT/ÐÉï>{X®GtÛÄSúiŒ“cƒyëä«3ÑýòaåF3‹A¯o`.Öq—uÞQí @c 3»]Ò|Èj‡Zº×c›…£Ü×R VʻLjØW=GE-w¼[^c“‡nŽÇ +£ìd<uU3ýÌ|b'£JïvÜó¾/Ãò&p +vŸÃ€Ç_œ‰‚ùAˆÇKG +¾Cw0bX °b±pé÷Ý—=Wü3-ÂàÀËÎ^àÖs€×ð ìo]„õë˜ZR¬qðÅ¿Ü©aì¾~÷¯*X³£Psèö)b¥#o8t×U†[DïÓKe¬ñÛÚj¡¶JXw‡ÇbYšŸV˜ +Ë#Æ,WÁº³D§Qe¬î'F´3/Šc½%¶ðœæûú¢ÖT.V¸£ªªXåj ¦Fá×ÝçØW†Xí+“Ø+ùöÍÜ[Á›êhjc–‹µaµÊ*ÐV+X_£¼+Ü*Þ}uFM±k¬|̼ŠX¿ÝígU¬aï´e°¢u#šZ³}GÇœ´2ÖFø;ð>¯º”°ÒÖDWÁ„.¡Ýš!Êà t»Åž±Þ³°¥¹öÕ•°bÄ×!`…s#Úû妖UÃ:Ä +®AGkK[I[¸«„ÎÍþΕdwÝ6ÙâI>ž>¬ùÏ%!ÁÚ‹cÕ°‡XGX‹$Å-Ù0”iòáV?zC¬¡»ðrB|«aÍa5ÇWT +@Cß–~c©ŸÝs!–cm=ZýªX+dË©`ýpc¾ýaå$´x¸•"ùüѳ۱v¬›™*ÖÖüe0RŠÔZࣀu*Û¸2‘«þûW"Rƺ-ߪbíô·{„ Qn{KVrÊXk‰|ÿûåëKëW}YR +%4DüÓ N"F°/zåVÆúü³]×£¿"Ö~ɽAX‘¾9îî¾å4«`í¾bùź¬ˆ5òì¾5§¾Üy€5ö+`Eñ'(¡ýpŸîÈo—-{¯:t ¬>kÂV”ŽµŠ ±4Äê:Ò<ýŸß¼Üoà Ýäáiw¤ò¨‡'ë>é”Õ”¿Ášéâ%©PtíèׄbõX!VB•ÜÜp³{Vçcñ6Ä`Mâ·L.º¶çÂê·Ä²)VËn7Aw"ÆäÃÝ¥IŠcã²Y.ƒ?±‹5öâ‘Qø–"mFß‘Ã~Hnr‹¯ßTLÖ@xÚ}Á×µ§s`ÞTŸÂuãHçT€yxpfY‹ü!ò§¡ÞçzN/#ò§›ùí;·<•„¥Ø§ê럣9P:~[eOEDÝ¥}½±êëUç&éS:ªOUŸ4õÛñ¨¨Ò R|(Æ_iæéÔú•½þê\<þ°OñÛ˜üé¨ÜÚðDShÐÉ99ûSáéÛýÈkVú™‹=ÉžJˆ6¸ÿ[T_ÿÙ7¶Eէˎ/ó¢ú Y/‰Ä·ZЉ—Ç êÓ²/xW}:ÞŒZU ¢=˜JŸµ×òéÚˆT}Zö%oq ¢¥Í>‹=¦òz°ˆåŸÜ¨c¶GÙSgû…N²O³ž¸ì)@Óiµs‡%É™ÊJO“½T]ü4àj²N¡ßòâ̺YlbýÈ +6ôà~…ü7Öy#úA çÍ··@Ï8kv—£]àÿ´áü0»rÍ,üóÄ^Ô‚^C¢ÓYc„ ‹pØÌpBtwë³>5ܬrÀïÅ +#qç·"?“q†€ó&ZUÞZdcžæû9CŒ5óNÿwñ4²9w›‡þ["ºÅXqßìEkèîîu»úØbÄnO+PI?¸*VŒ˜>·T±4P‹Ž•‡èNÄX-‹kä9Óa<<Ü Xé»9Ùä±úCKˆœøµ¬ùáV¬ö®*V@á'Ÿ*VÈеˆ]‹o¬Ý/õ±Þt@jH#×B+t-æÊXãf*VdªU«êp‘¢Š)mɼ’Q?úÄÎôÖ²½ÉÚ@Sû÷a½Ñmºûýο×eí¸`Š¤ipÎr+:2`àŸi§(\$¬àm ÔÅÝÄaÇÊ™‡VŠ“Лp·Ë%üIlm“6€ +Ò5±µÇ·<H‚‘ˆ-?¨‰há#„Ø0QûÅ +›˜5|ÏþqÕ(2®9BwÀàž¶LIÄ ÀŒwNæîù?M™ãÁ†¾ê|ûDS»A9Éuúµ¾>@‹õààÄx¬pÑ°ñ�ã¶2Š©•ƒ÷÷èäÌ7±ƒ Ô§e´¤Ú'Ɔ>X×\>k+ áY4Þ÷uÈTd„?¢:üÃöqÝ_P\@>H«ÙÀÑÝ9lÝ¢&¢`Šâ4Þñ#t¨ŽÚįÚsÈÍÀ4RJŒªE/1(ñhh¸#óCèA3Âónôœes6>õWTkF¨,¦Þ%+H€^¾L/Z>“^R)d—I!€ôè;/_ÿ¹3’ÿ,íÄ4äzÌd§‰ÈøÀ"eò}çy +«tÇ•w1Xò1qZÅåÙu›er\oy¢¨£âàºòåÉÏÈ)ƒó';íš•Vt6U:“sÙð<°,pÄóy€¦«¤•¦ì¤!Aoñ]Ô ^Ê„ÍÀþ�:øžS–3]×Z¬E´Q%£Ör˜*m¼sÊùÄqÏÐ(z¤Lf\ 1hÒè86†„êêC2í”8¼}?hÎæîzÅ]ðχ“ߨàBªRö�bÒ–¯hÏ*ûL©ý>f0B(9;íZý…ï–¨o`4û‚bÇ…6ÌŠÙì_½G֙ƴ8§eRÐVzh4*‚舵—ZÕHÐ6%eánÐØ8{MM¥8É +„,@šeÆLS6ª&©Ô>VS€}¡ïÉëbní“eíYo²ÝÑêg0ÝR·õøé34‡Q‹l%khhy’9ÜÜCÙf±½ +õÅÁ*iµ¹#Åïâž«íäœH4ƒïD¢õwW#šTºN´˜ÝáÝ‘w»O(Ê#Nb9Oñ›j2-ó>7°¾ÑŠW^žûäíõ–gæý×bÔæ8ÝV P¯TO"ÐQwº(:x!4¯©Õ FACCÙh,ê‹#=Aû7F½@õžèÈ8‘ZgôMO�È\w§ŠaÌûC‰_oMÉdvG…ðxS�éû¢GQ|*AÆÏkSä؈œ|ÀD4þ‰~•HÓ˜nqæˆ1¯Y½Owºqâàko`áqœÖÔ¥SDâù¸�¤õLÂQýØz8Ò72æU³ôJp[ñÍè™p·ê4æöxþ‹.|¨¸î0fóEÏýW£—òJ?Šr¢—ÚbWåvÝ(.v¿%ºôJ{Y¾ØݸãX”B00ïí¥A‡²,Ë°€´G†}ŽuYjÜ«Xµ¦#5ðŠõâÁ!Ë&öRÓõšµ!I¼|jjù¸„¸€V,0ïï’!±]>R´g‰Öe¸ÇÜU"ŒLéÒF/:( +œÛluB…H$$! ©™: 3[îÌ`$þ¨ofWdf¶Òº1@¾Ø˽vwdz‘±l”U£?ù¶ê³…½XAD“ªÆ³g×$šî"®)ÄSÙaèmE®Ï’YªÕ£ƒš¢ ùz<SˆmÊ‘òS¦¾™¨#Õ|ªmÌÌ…û]V”"øMÎÇN¡Á+<”Q¶‡T¥oÉ·2ÏVï-„æJQZÐ1µ%xŠ„†‹Ç臌_¥s'O[ `|Eêiúe’§�R[ŠJPJÐ¥û +b6¯ó4]¨M²Ë¨nrÚç€u.›ÔÍ¢lZíí 0'Ë¢,Ù3ÕÏ‘ï ¡ù<'îªRó‡t j˜Ñ¦¹¦t£—ö#éF/"7ê"ó"h“úÕ¦&ëâjšyï¯K7Qð@»št{•I·ó(Ð>Iº©J0yWn� +’n8M¾tcÌA]@WØÅE€4v”\¿äU\AÒISò³Eœ&ÞT¶]Ø<2.×xDGQuø›ÂVîY]pKÝ<â-6å]Ü,Xñum1itg‚ê˜ å°ù³BB…(VØ8K<nanàäÉr¦ÎʱÕ/â´�égUÈ (%À @*ž÷‰ÝáršT7‹5íu94ݸ—<?MK?‚:åúüæ6°‚${ÒêúqxÛTÍ90]ÏúSRŽŠœfD?¾ä€Kƒâ©ýü=Óú—͇æb@2ëÿ<µ†�bý«©5èbëBQUŽÌÞIúñóWk=*+G™‹+×ýã]gøÛɉ†jF³¼„ÔÕñ÷a¢²Æ´ˆ©©bˆ×Ò»ê"<iãëüýt#X#üðnhâˆh†»¾ +fÓ£j+¥Á)Çî²€¤¯1¶0 FÝ2ÈÊ‹L®¦²7r<dš*ëQïôInœ/ó>9hd©¦¤ÆI;¦¾ƒ€¨©˜§Ê2#úŠ©½šÁí½Êoy¬T¯LD‹C«m,H'´oÄ`@©{ÒÝ£\,U¶0Ô'[Hó:OJ‹\"XÛ(:ì$°ù>zfvo^úfWç;ov§ýß°ˆ/R9Ÿv-Jð¿F9Ÿv-ŸLØœ_Χ]ËÇ·——ói×òÝHKÏ/çӮ廑•.ž]Χ]ËÐ\§œO»–ïFVºxv9Ÿv-\7W)çÓ®åc¤ÀÊùŽÛ‰kùXÇãòr>íìã}Ï3Ëùd Ð2®³ÉÁLBÛ9–|ê•HÈi«5#ÝRî“vr°…ÜAº-BžßzR@J¼!™“Ûƺ¤Rs€?rÈ-I*Y@JTnø3S”KܾUÈc{ÙT¤¡êÙ¹W©fy‰ý‡1fxtŸ>B!ü +»“º4 ¯Ù'¯|cålÂëºtÖvýž¡â=ŽiùDe¾ÍË3¹Ïˆv]{Qª•¡Õün6 6nΟ™_"“]÷ÝIAye2ç—('\ê•Ýœ_¢äFÁ²»K#[°PΫåœ@õü¹—Â3´Š£’×.Ó÷y¶²´„~¼é3òýê±»A1$nD•Å§9ÇGS:ò«çiò9PFë^‡·5ÅHí@›j€ÐK#ÓÀ@ MhD,°ŒleðúëÕÊq€-&cèSëѸƓ‚vB³b0E½¦ð §8O©)i×ßÜIb\ê5r·r)`¼Ôñ¸Oó;µ>¥„ˆ4›2¢7:™÷§¤%L +Ò¨§‚Imxw²šE«óhz.J¤¤5 é•èèvLØ^…Ðt’ùO¦¬bçB¢é®žD4½Ó4;ƧŒðå;™÷®[šGUÔ.ß1jæB}ÃG‹õ—½Ješ^Ýs`†ŒåN'¾oþ¨.r6W½x5pV”ùƒJ¹¼?¨ +COP( ›YQï(aºO-ÙW¬èÏt3ꨩJXl§'ôHªêä)ùžêÑ+×UÝÓ‘ 0$Ý/‰h”ÄhÁ¼¼*½rûS<dõZ#%Ò«1´N ”n,HV–¥²‹ëû¢÷ª:þ$;„¾ºvÒÚÿ))}¹fŒT§Ä‚dF¸$V°y¯Ã2¿åÙœÐ-iŸ|FûÄ!µJáNŠÞhû®D*ýZ\nI£7žãèͺ¬½Qà4•èMù’è lðŠå:Ñ¿%ý|QÑ›òU’“�Ûê¹èò»ñz8ƒÑ´<µêá.ŽÞÀ:¸€nØÎmôªƒnþc°@J×Þ)‰*7üáY|il²½Ç¤†tE¯4V×¾aÌð'_wÚ×åˆmE5ü#*¾0æÕ�¥c¨˜UþQQÒ`p1ÛŃ,aV +œÃ¨É×{õX”ŒKQ¢²z‰Ÿz2„á!¡]©Éqf‰Ÿ~B nŠ"¤Í%Ŭ7ª¢9Õó“ç6ä²ÌhÀÏ·.45ŸzežØ¿1I~nežân,§»neÞ¥œf°2Ï@Ç5*óІäqqÞÉ°š•y²ÜA}@çåæÞ•.žY¥®Ô'Á¿ÔW«Ì“æœ\'b´2ïÆÈ™)—WæÉæ†+λvež Wœwá¾,¨»Bá?Ôw'í.1hÔÂœÚUR/aÓ¡¤þö™l~U‚K7½´lØìqÎÅy¥òëR“:{œ ¡Zîè:e|z„’w}Òùªh• 8´j�íôkë¯ã(¿ÚúëÒõo®ÇŽ¶Ÿ}Þ¥[PuÉn¯, ¡]+º»ãù¦:¤yà +¦zö*G#(î+¸¸Î2â…. #Iÿz§ódµÏ;6jøó pÙÒV6ÆÚv×qÈ–À»Ý¢ã[X0bx ÕdÚy'«€êßÞ\Hvx;R,Ü.’}»R‘ìçï5Šd!”«Éºµ«ÉB@—ÉB(GE²j]ë—‘½)+Ë_B þº)Lüzt+¬Çwa0c©½åÉÕZ÷å)ÎÍõ‹ò[@ÏÁ¿¨(ï˜hÿHQžßóEy¼èÔìÖÅEy’$T—wzQž‹‘Ù&‚ÕWêFãi§ßgr.d+§—ø©ûM²anT6} 4CçŒiærQuíò&K´î±Ý(ý TKg䄸;nßSE]Œh= ÓtE—ñ¤?UÏð1œî*,cxžK%3…tƒh¢>/¬:Ã~înrÈQKê›h'ù”woÍíd¸‹®€Ïõò»Tºj—³Ï8›Íx+ðÚ…Ö–SN÷«£È-¢’…iÀÅÍê—ÙE^b 1¿Ê‹ýœãzM·a Î÷q3¥V�÷®u…ÞÄ+K¸”•Ýµ3êÅ~ð&ò¡Öv±_Áa•_ðsÒ<VyÙ¼›¿ðQV‡v+òµÊîp*VgüqV캻û >Õ‹ýºZpkb?ªÝVÅ +Ð<TÉùDØÔ*l|yWÇšþ(XoŽî)´lü}5¬/GÖ-‹}bÙ=¦ÄÊM |V ´»A·cÛLS6S )X©Ü +&+¹‚Õ: .%Ní5xÏss”œßx äܺÓËÐyõ¢�‹æ^¿ºe¤O +'×kftw½ž’a,ö¤åÝ:óz½# Ù°šå1›³I¥‰i<Ï&gඉé©}Þ%7ëÉ@ Ê[6gí§æ\´‚F(šnéÜ® Û'ÖÈš´©Ñ'¥€ó™ë¦@ê\Æ$Ë«åÖÍû”º(6n¯Tاd‰ó¦úõ +û”âc7èº÷«öIÇVõ‰öÖ®Uا”UÂï{*˪s +û”ªú Ñ®\Øwv¸û´Â>%_NÆÐ×(ìãT¸ªOW+ìSÚç‘›+ö)y×H]·°Ou÷º…}JU}Œ·vÕÂ>%“‡‰Ù\µ°Oi†UãçöÉÓ³aUßνQgöÉ·|ÙÐеû”æðF~póå…}Â¥(^³°O Ô Wïy½Â>›Å×(ìSªê»ÑtÅ“ˆf´°ÏÑ..ìSªê«µ+ö)UõÅ://ìS X¹JaŸRUŸRÅÊ……}Jvµº‹{vaŸ�@ØGˆvµÂ>¥YRÉ°O©ªOß÷T¥ˆáúÕü‹ +ûdC::Áÿ¤Â>iŸô|Äå"Y©¨°wûS:éÌ) 7ª¤w§áŠ°_yöƒÎºÅO‰-O19Þâgè®Ý[üŒ’jï]ŸÄzç‘*·×µ6ä‡�i\owtgïé}BËÓÀ~FëMUîê'ø&•{ªe}R6%ÍôŒû#¦…ªË”ÄË´Ìeò[¢[yb“†- 6;ùò?e¢Éïÿ;?ƒ½üOL´³³õ/ÿ3å(_|ù"šîýkúÔî5ž}Ñ墌.ûÿŒ—J©\þ'¦Ën9ýò?¨=õïÿ÷W÷ò?ÃgÛm+—Wy&_ñ{™¾9;ͱb´¸éæ?úù¶rqúÿ <‰üõÉ~yMŸfz£ÁìnTÓwA]ÓPVzo8‰Z«ØQ9-D¬=Õ;rÉ'%©)$\B*Â1XÒTÜY¥)#l] M;olèÐXù7gªé\HrJª€f(÷ÙXª€f$‰\;§IÁëbžu§$©tq¡/‚"ÖÊ¢Ó õÓî¼Ò=œÌ’Wömça€ßn®w¼!€¦Zír#÷4RðúkD°‰cKòËOÄm¤¦ØÙT3+}cw{þ°.ðÂÃø¬ëÆÈu>¶zé<RhUí‚ŒS.wÏ6œõn6”÷7gbžTB¡ž> +]¼OŒ®Æ»Â1 ]Ÿeh]@Òõ¨‘ºãŠ^Å)%Na1ŠÑt®´îý»9«Þóä{ÿ†Ö¸úï:%M(-Aëê?ƒëQçÞ?ƒ¦ú¥÷þ ¾§ÊÕ§.#å{ÿDœv + S=nS]zõŸrÀóÔ{ÿ¤Âæ$hòj_{ÿ´ÒyVû¾H2"Ó>/6~Dœ ]«Ú÷óWæ{Ëö=Vûâ·§Ý/¯„õŽµ+Í(ž+dt!@Fœ,ˆFÐåþªÉKtUk©ôJà-‚š™§WßÇl®£õ³)VLËr Ç÷Ó©ŽÂvÒÊ´oU3ó´B*80Rõ˜ëI©;”bäGB4£g¸ChF–§F¬SJ´òf¾'cužPK¥"Äú;íB*±ãa¬Rô¬B*±L“ +G?¢2²s,F´ìîJ©|ÈXFY8ª+'ÖÝvµw|n˜[~ÖÝvÏ<UK1ª¡]é2Ì2BìFº@Ы½$D94ënR;4ênõON‚ݺÂe˜l¸ÎD5Œ*e¦p6!¬½+>µsK<›ñ–ßrwd¹•K:[í'jàO…SgøþIL|ÖÄmŽQD0",8jMRøœlŠ±J*óè»N·!ŽlI¯¦‹e?ºJ•y7Lm”zIàî0ˆáªX1s¨U!†î,á¦ýKââJëÆ>µ +·~u¬…»Þ«V€†¹š®4òÌÔ®¦³kÔÈ5‚ê•y´5ü°gwûeE—v[òc¥R#g×¼†o¨X…‰Æ¹¦V^xxÎ Ô*óúX–tÝÈïÿ{¹ë©`%¥žr¬M%¬L:bãJG•ÈX>ÿJH§ÖŸºøOlIèÁñäUjwÔ.Jšú³˜ØÀKhçŒQû<+¡¹Òã§n@žÁï÷((Ó¬†Åk>K¤†, kÐ.ÝNÊ”y£}Û“v}ÕQ0EþˆEsBâ–zŸ²ê‰s7ü©½†ê«è3ó×-›£8ð ‰[2R ªÞ@Â¥©ZzyÆËãŒ&n©òÁP§“j˜«”rÀÎËB€§ä€1ÑAÕn)§Þ§£Ý¨j%5rÀN\7”Fá,Û£<Ü£ÃL@W©èÊ_'6ÍÌMÉÀ¾£ÎÅuÚ±0>ÁßÈ^`דb£ê#+›+„¥¿ó²ÃwΊ§~èr<-ýï1¾Q;9ÉXI¢ÑÓuoøãÛ•is‘W#gèœA×ÙH*ŠÂN-ºÙï*]×ô¤‡Ä™1d¥=Xû§a0 +{§ž—$ ¿~2–‘<@|IÝ»ú£¡“,$u‰zöœúË`&Uƪ©¢"9Ëùžš{*êuvZǽ1Õ%ÝR/¦O{¹* êÒr¥ÚR…[d[x'Ô%ê_�&ÅF ´ i_m¬c7¨HBS¹ úŒaÊö=/$šn5ÑIDÓÙ=‘hºwBŸ0ÌjàShGU̪ïé ²úæÜ’D5Ë]-öÌ’DI'4êySý¼’D£õˆŠqhã%‰*|pT¨dužP’¨çsç£T«ÓJÖ#'ÀœT’h”¤ríybI¢"—(Ô#êxÒz%‰§xÒg•$¦˜îKñ²B)§ýc—j2´NñØ —Þh˜qÅË +Ñh®tQ©Æe…’m¢î²ÂcOú¹¬ÐhØîÂË +Å¡¡ð²B^ý³—PFIÒ°«QwœjuÆ…‡ÆOµºèÂC¾ìOñ¶CYfÊùjÇ_oÔ˱O»ðPmp¶+ä@• &hèjeüÂCíÀ›+œj….<¼J½ç¥e¢åyÙ…‡2k^vÛápÛâÀª·ÞœXPvfN¤Bê¼UÇÞv(˜gU:„]'ÖyÒ…‡Ú·Þ¹’ÂÈ…‡ÚªŸkðÂC#õžW¸ð#rÅÎCŸ{á¡öm‡jvÚÉž^w¥b|ñm‡:{Æ/<¼”Ó^xhìžÂ‹+òµo;XÀ ót Ô“¾àÂC™$WÝô:õÂCí<ºå»"N¿ðP»:†ÛŠPŽÁ^x¨¥À +í²ÅÔ<¾íPunD[=†.<£9¾íP+f£™â-¿ððüò¸«Õ›"íyµ’ÛO’ZžxOá¹J¡È7ŽYàÌÏÙú>ãÂC5(^ÂÓ/<Ô¾íð†9 +ìòuý›ë\xxByÜÕÖãÑm‡Fdš¡Ï7ÕOºðPû¶CѾçE€t–‘!×È…‡Æï)¼èÂCŠâq…Ç…1g^x¨íCEÕϽðPÛíVJ‰žsá¡â¨ùÛ5\ÜÓ.<Ô6~nþc¸:XûÂCÃÇM]vá¡P©T,©žá¡6¥<›³.<T†Â…¯/Éè’\xx'ꈣê]x¨]ª/ÛŠ8ÿÂCí0/l.½ðPVÆ&sÆdjíüµ½{ñÜ\tᡶw/^ž]x(#šÑ„ËS/<4à{^ãÂCCe¥—_x¨}Û!Bsš·2 0W¸ðPY(p{4ˆÓ®qá¡öŽK´Ë/<ä;¦Ï<˲QºðP{gBìFOèåEºìm‡Æò:]¨Q¤‹Âv'žìâUÐ=-]Q½‘Ü¥ž‰~Sß•äûK£Šu”®bÈ"„¼O[ñu§Œ)Çâ²ÉÔÚÀC ´Á¼u2ÄSõYâ°VéÝÎGÏÍ@Í”ÍÎgæ}_†™&°ªËl©%J̶1{ÇÛ€7/‰ÕWZ6¯›{m·f~3Xqöœ¾û=dBæÏáÄ> R–Èã!ÿP«ÿ6ƒ¿ËîG8è Œ#5âÝSñìÌÁj!0È4—¯ÉI«z›·ÉçàoÇFN-oi{ ÷sÛnV–±U—SdÒ¶ùí‡ïw©MèÙüöœ´Zü¶Bè~úQ*Ùó»�õIÆÐü¢RÓÄk»Õ1{œß)³oöÛqÆýÖFd*Œ˜ŽËX!ôÐÜíQÛŽŽ¼•è»ïÐ ¡ƒ£_—Øv>yÝo5zËàýxwô'oà‹Þ)‹I½ëc¯Ú¦Ç/[¸TØ2™l;2oX¼w¤SÕ²½EÀ€÷»ßbÖëÜ6´’»N¯°lv^âÁ˜ÁíÕ»ÕÄ<åe®\Õ|pmÏ0!®¶A’æ4Ñnßcr~kPRk~+[F`p¬¨xC3ÚSt(qJÄH„\ ßÑý¢Ù¯Bó=ôœÜ¦¼ûx9å¥'DônÙÈ¿¥ü߀r›DaÕyÿLCæ#l:¿\æŠQî\†ame÷;õX5ïиÒkªJ§+oo}g¾ó^„ŸÀ€+,%v1±¸D°»C®æÝÛ`rCÏ{ÒÞ ÇÊHho·¡˜3 Kx¾†¨ÈžÒ|}r¡¯@}ìÀ׬‡{ðy_-à1gÎu lÅR wYç}ÔOf4»øYt?äÆPqŠTcþ[üà;Lò¼âÛìLŒ=+d~aeóCüÛ«mÄzv‰Ìþ]ýˆ-)j^t~ø�Ghž¨%^L6á//bࣙÒ÷ÅÅ4[Â1V’¹™,ƒÝO8lâ…•Sk|œ,Aʽàì/¯({ñfüÒÜ «ž‘¦²øìî�ô Ú"ÚøìÉÔ#Dó·Ï›™•gæH7ÆÓj®R2·¶ä7²Bh_êârK!㳉ø™ •àASÝþR}âAf‚û†…,|õ"³të`Yä{“Ç…lìû:|§²‹¡Ç¼Ýo?Çdí€hè¹d˜ç—7777¾ÜKjÅ7/·�Þ�ðѼ®î gáàRüäç?�ùÇu|í¹™¯ý1šýžW¨ô +ö0POÄs0wÁõ¨ç?È--ùñò7Šy—?An4=ööQÌn‰`¾Uë>ïŠÚÁúÆ:Y¹ÂÀÆîÎ2Cþ°ÁB6¼—~y¬þ{Òõüé¾Ùà'œÿäCí�¶im€?zôB:ÝlαD¾Ö‰°Zv¿bä(‚\êñ[âñÑ·ô”4:¼g”:kd€Áç̳† 'yÙ£Kš“akìòòo™ßŽœ3Ä9!ºM‚µrî0lÔÁƒ'˜8FD-ÍIö«|WLüZÖUùé +줕׬ü=f–øð¶lGËkÒù…üíd†ôú¤áS/bP€òè'ø%¼C¢•^£i‰èlpèý²³L¹Q<Ìvš«Ã +g²Ž3†ôô5ö!;0ƒO¿SŸr€ ¼õ*ÈY'#b¹UõÅŠóDÖ »hó}Ñ#èßdV·B*eË„;Åì`™ž�_u›a—b!f‡TC PgÈkÌð¬ÎV$΀L ²â|…AH Q½¹rœÂ� :»`÷[giø«þÉ甕¹gžP‰"k³ykç4±Á·™íϽ¨Ù9ö¤àŸŒÙå#ž™¯öøsÌìê|—Ìn¯µiv¾Ü>À§-³;íOÀ?³«ö^4Ûw;—ÙeX¡ÅØ;ìL¬‘l<9¡~fï³Î¿¼q‰Ä^*?䗩ͯwêX›ÝtûñÇ–+}„Ê@ +ÚnSñ$ááMˆ_.Ð…ì ïüžrIÝÃX³âa¾ÿ¦¨â®Kô]Å»t}¯¦Û¹€%7}¡›œF›¿¬9lr¿ÉívO½;dcørãzò<Ô/¹éÃö.æÏæF`èã>\7úcæ¼Ù€ÜQ„¼w›ÌQìyµ \‚n~ÿÉ/ŒÎm2õFê‹ÈƒƒSQFµQß·c‹±³¢sÜw¤?çýœ§9Øe§O›‘áU©îOïÌ9!Kõ¿Ó¯}G^溲¢³Pq"ÑÉžòAô‚%ìÏDü‘Ð]¬ÚLÅòä"³´Ù^òÅÆOý¦½é\i½ ‰Ü +Ï0{kpQr Ñš{¸<ž@1½>sº•Ð§y2öÂ8>‰Ãƒù¤¡sqh££×º»1Û«ÆGÆГ‰ÁaúóÝò•©ë]ÜìúÝV¡LBg»¸wP’³»Í.{ +H^GÆevGÜßfûbDíæ徎ÁöIØ-‹$`Œø5ms–ý‰,È/O{‡Lu*O%¢¿o›óƒP}nxÙŸ/l®'çDvšQr0d·˜×´:™h‹cFåAœ<Óª£ælhV°u,¹“–Ñ5Ð\,å ˆx$:OÕ짫u„üŒÌŽ9K>àx°ÙYä>iÀ�tÌ +ì–±^lÀA4š–˜h}]ÎirCî³E®•ä†2¥�Z6ãÁ|À»ë>§][,•¿<¹¤3XN»¨˜5×#ö_ébh𜚶·ùÝר\¾-ÈLyw{KfðìkÑ»`Bâ>f WÆØu|Ö¤£ ‹±qç¢yÑ9_¤á<ÈpØCwtÞ¹èÍÓíÎÛî‘Œî–`üæyø·Ø¬4ùáÐêÉ÷&·sD}Ñ<ÜS_Yh6ø€Ç‹—$£6ŠÚb¶Åï'@çLAöûÓ˜A?³±€•ñ›/çñÄ߀€ÿÂSåeó¬¬e¡jT1h.3) U7’’ßB·!‰ƒ²íDvÕ‰47JpdÙœoM^Õ€º\Þ ‚²+Ú“ y¢¡Ñ•P3}™ª9Áa‡!²† oQÈëÂÙ“Ê4=êËñœ>jTs¢–Ag™–¹åöÔ”SƌРǹ’ã,ûjÔ¢@™„RàO<ÇÝ3ú»÷q Q +U ˆZÕ”wŸ¬¤‹ÁWP?øŠ±*ËÝMBØ?£o4D´: ˆß“}Z™ì…&ljâ÷ÔÌÜH±o³ÙÌÒºùÌyÂVZ¦mµUí³¾9Ru7â¢%ãä>aÀ@Øl-\ZÂ?¸‘é åÝwd¥B8ÿcÅ’ƒ–M®PxZãÿ=iºO²¬ÑNU¹§s:“–p°™*j4šK–¸1žãv£ëìÌ”ip0Üñ8e¹È”dšÑ™>a‘Àih¹ÈS(Ygp{¯+ÎY“f¿¢7]¹¦ŸÍΞ-ev®„ÙÕŸ”áW«Ù5ÿù‚!¿g¸íòc0e¶¦¸%“‡Mýfw9Ú½v°ß#¸^ ^ÉäAD»nDãZ{gøô’=‚ÝÙs=éó"JCg=iC¶æNç\´5‚ÿäÈíyŒâi +æö•¨”7,.G-b|Äi—zÿdäVß¿câi`iÙŠgÆÓ6ÛÑNÞ‘¿BDoaÁ—Qrd˜ÌûÓ}«-»0Ø*(løtDg|zcSFÞ‡û3[ÜJî³óð©¹Â—¿N6w0¸~ûh?´`ÎCŒMZ=Õî�hBɦã3Ý~ýù6dá¡ODß>=º˜`9Uå¹›ÿ¨²}šè/W"½þXçè€â$hóÓ—W;üõÈ*òÿ©ÙçÛvö¶‰þ™ÙGS²þÑÙç/Øøgg_”výOÎ>'þáÙçlèxöÑÔC}óÏξ²¾¹æì³Vÿ>é¼áŠýTò³ø:˜:.º¤D4»Daá[ñk˨e"i ¾jPîdÚÒüm¤ôœOü„3šÇb\H·Æ+o‚n…j-Û„®¢Ÿï~C‡cp/‡q5~EÖéCÏWýf~ê®yö•QkÂuGhâ»â0òC"ä0ü¥F‹ÀHš l;&o›è[}öu&ŒX NÚðÂ÷ƒÌ`G?Ãit°¿-o0ÿ/ÈgNŽ<(8jtñ¹‘#õæ"Þ�<LZB°A_|Ä¥3òûqÝ”\Ä©õÇÕë3ìç-|ЕÞe“ÌÍ»™òæ™Üþ]¦ûÁ/Ϲmdi~âÃÛ@Vx$å¡8¢Ì«™¡f€þxàÖºó*zÇØ#1Ž|G‡”_D‡û¸yÀÑ!àˆ�»³PŒnbˆ£[â˶>Åt8|Ôy:Ènár tP%‚?õb³±D&ër%Ž=E‚…ÁjOË1äDHâeš]{…'BñËsûóÊè–T™9Ûáåp}É2ƒï€‹‰0®×Ô˜ÁÊG9˜žûf/Ê¥CÌ‘*�hÁ`.Yº èªÁ²9geÀÔâ‚Ó@'X) CÌ™g „9|›WÒg + ÑN°ëFÃo‰.½—°–Œ7™˜Íi0lbÞäÖ¹ö"—+‚šMÌžÆ`È�ˆyóLaccnâ9î„[ˆ#P61{ªÂwBNM7eS*u +“±å†ƒáSS`ÏÓù›ÉRÙNbO¥¼©D ^ +hªA=±b®5â¯×ÛHÛÙĈv†ïl÷ëˆÓì†8Mc\v%)ÈršQÚØÕ8M‡UÅœf8í¼µoW•‚RNÓ†!â´S×-ËivÓΈ§}Ê8McíÛ (i³5÷ùÂðÑßR�™’>Gˆ9ÞTíÜ#Ð쇒 <©2%}ÎÚwáM(ÁDJZ.Äç*iä‘‘?$4L‹.§qõÏîr´·Szp¥hvÕí.äbÂ~¾²èኰ«¡#·sŸŠ K¯Aý–”áCËúÖƒUÀºA¦~1óÞGu¤n®2«ªbk®Š|Vцj0aõ=,â,:dŠßºÐnØb?Ø_ÛUöM/ïÐ|Š+—ßÕ/lb³Å¸1‡ð�ÏÇâ܃D#<óY“Õ÷ŒðˆˆjULx «œBObÔ…”5¾a +ʾÅØ„[ - áëüVõ²uk…:™Ü –ýz/®œî£,€FÖ ›¸XÏ°Qr<¤„qëUj…îƒ_›E8ø3_߸@2�Gƒ©Aµxìl=q·„f Éâ\fÝ#©Šx$¿íÓì<DÔ3«È]D亣ù…QšüØ î˜�²éU‚wqÏùŠ‰â3¯O±lúõáq‡+Ût;½yƒ<õe>0fð±}üÎ×v¶ýB¥ªx’GU?iC É<Àk5™rlxn—ù4¼í <HõªDçÙdzþ" +¯�†Š—Ð'v~G³ Z7lÈmùêÒ3±¢�xÚÆ|Z²Olw–Cß�ÿ ++$¹g³�_†*Ä�Fþä+QäÂv=wÎ;Œ?Äfë+Ï~Žâ-…÷öÀ%æ{”Ž8f3åþËÊEAÏÓæSþ³ìd>‰z¾ŸùÑo\…¨¸;¡Þº¸ÊMïé6¼¤+ïÜý +ÁòbCŒêXÜ? ¢K¦ô:ÿIfÄa» +A™ÜAåZÐ+‚2™÷ʵ W,e…b-èA™Ðr-è… ÔÿMÜü'‚|¦ˆüñ6+rWß-f‹ ,žÇ›ÿxÓ%ÝL(bG’mò¯}ŽÖäfoŠ™¼éV¶TŠs䘚&›ÞæùÙÍ +V”ˆO5‘D™úõÜ4ZXïšOÃÜë&äIvñ U“BCÅ™XÆ™J)×|1‡¹ ³ókÁZ¨œÙÕ|0z«x„•HDõBë^Ü= ¨ð››8¥iŒÈòN<Ò®ís9U‰Ò‰H1þæ!¨^ “ß}ö°\趉§ôÓ˜UužXûåÃÊ&<™;èõ ÌÅ:䞎‰0QNø)µÚ‘7“÷S¨L;5}m?£¤}T«-/ÔæKÁEù,oH¤ÙD¬,RurÃ.¥÷¥Û×/N\¨fÑR_ô±5Ão@¨Ý"!låŽüº³2‹‡g]ß ˆˆ¾ÆœÌYÖ§æ/Z§Ì×/šdÁàKÝ+pÎø•"î§ÛÄSˆÏ‰peïùC(*âC(\¯8o{U<⳧©hA +Ü–Ò\„æÙή¶ê-ÂƳø„·‡?1áY|ÂFaƒ'<ó¦Ø3ÆQQU}ð+ŸE¾ïyà/N¦Õh‹ÃØß‹›_-´% ó°g]„²Ðï[Úáãb}õ±G_ô>pΪ à΂·ÖZÂxk› >{(ÆÓ¦íQ=6AÌ–²3Ž¤h“ßÀ� ½×ÉÃÃxÓpïw¾>îB‰×Às:ü5±±gmôZf–»‚¶Læ³&Kþ˜—øü‹â´}ßø{_®Wbä0,ïbîÜêÕÇ~:||3‰Ñyû°Ï~òÍ `~²g]ôRdσ"ß¾þªÊâëšdˆf`ŸóÇ\øÄÇ\<N~ø‘U!ŒfðfÎ8\„Õ¹Âù"üùù"þûC‰×W_^fÅ?ø^¬ðød?冼÷åçˆæè¬ÓòÕ³í/"·º§›íOk~äN!“0Ž.‰bM†ý6ÄXPR)=3ëA~t°Ï GÅ¾ê” ÑŒ}µk�é*fò˜§xt8»=ke43g+Ú¹%Þ Ø¼/œöMÃ!wqÛx`lOÌæ¡9“ÅÃ}™¹ PHt2/:jÿI0^'o—:ã¤ÁcÎàM6d0ByÔc|6…Cç™Ñ1h2ò6±Oü +¢–‘³Hœ�»e; ¼8ƾaÄy¢äÅ‚£JR±¼ÇêÚf1Ö(IÔqÁùb&ˆ± +On„@°ÂIf¬K07#S‘tâÔËŠSÖx"áºaœªBS¨&ó8Z)‡‘©Ä"æèôRѾ¼Mz—ãõ§t6o³é[~“±s´Ké£í’ìóƒk‘—Ápf-ɼ°_å³E»~Ù†êím"Yà6T)‡lC•¾%þ_{ïýUõ½ÞŸyž{ÿ¤‡Ó=$ôл @ $”`¯ €QD,€ˆ¤PC)¡„ÞKè½Bz›pßµÏÌ™3sfBB¢ŸïlÆqrfÍ.k¯õ®²÷Ù§£eS;s‰ëÊÍ}ê4¨W¨YGtCËXn‚ùL:mÙŒ�€‡³Þ”fÉ8q’]#±a׌¹&2ßÞ ‹÷â~å–žšXöOºQ]电<Ëx´höf€µÌ&±å]ËôJ+[×27 ¸ŒWŽ5<Ÿ´¾g¤ü‰µ&æÔŽi<d’8ÜͶÄìfBØ#ßr3ÁXb¶òçð¡q=ËZfÛ°‰qÖµL¨§¿…m4㳶x-³N®|oór¬é–µ°Ý¨¡…‘l)Ú[šÜ’VfÊ®ãù4¶Þ€ò‚uX%"Z ™²4£QÓÊv¢™·z¾P!åEmv»ß:šWv \å÷L4â+$›{ÚêhÚ¨âzî]AcŸ +j³»D+VG€MÓ¦ê(ïŒ4m毃i^’aí‡o!嘑çì�iZYÑjʬÀ½Ãýùuðåàf@M7<›¦‚»å5žM®Û©[˜W[Í{èêÅŠ-{¹è:Ž¼é|¥$€¤•5®æ/�@¾’Öܯ T@Ü›û•–*·î7Q)±HZs®² @å–´æBe:aHZsñùj×YjÝ=¬‰QǤ6²èÕ á9�ä¶7e1C(Ç;ÑÌÛH¿ÈŒ!å4SÖŒåqyü˜Y÷âFšD‰µÝdv”5mÙ¦OtÇ~m[¼ÑaBQÑ=:‡EŽî:–¥†„™-š¸Žtê-‹ÂÈi¬šÓy¹ñ@ožÎkFÒ~èmRu§óºr~èmRu§ó²fÐ[…§ó’!t@ožÎëΪ—÷4Ý<·v²ª¬²Óyi4èÂÓy ¦ù? ·IÕÎkî5ªXZ¸¢§ó²Ñ8 · +Oçud¿a¾ï³ŸÃ�ŒÖƒÅSs9¹±›‘}'¸HèX@dI =ežnÜðßf"í?!عS'zûoƒãB\K,íê¼éZI c©™^MÙÚwóèAñ!F¶/ºi‹&¿Åz-;tõ,ç×®ey@…Øv@nîÅS×}Ñß•0h£6²ìñ0@´Më&îNwsBÓþ|ˆ`暧±.oÚ€6œ™>ô3Å<ÿ¶±9BÊŽ uçÚ×èáSø³‹AB)Õ±µÝ‡ðÉxÉ<•{àÌ|b†Ò¹)´æ9¬CìHëz'.×Ç¥¾QñS&0yXû¨Ñѱ‘ïG£y‡ñÃ?zWu/hA–ñ‡LW#à7dÔ¾‘#"–~J®ä°æ¡“âãGÄGÇÅFNzßÑ‚]Ô=¢—pG‡ñ›aøMKGCôŒr|Õˆ-¸ãÍÛÇÅÅÐW};ttxoBܤx‡Ñ΀èÉÑÃc¢ýâa}û–ã^„ĉaµkqŽPzô.u˜Þq!ªv)î‹œ£'ÞB8N‘]dA]tp!¢¨jº¬jœÆñª*Ì Ñ5IäEU%ãuW]âyU‘TNÖ4AÂNDYp_F«‘ÔŒÁ\4ú>ýÕŸÆâÚ»žstwy“sŒ¬/ûÔ®¥Š!º.QCº*`"dêAæyYãí4’€Vy´¦Ê2A8ž“UÔdtB”BxEtYuN—EƒEUYä%É!(!‚$é’‚ñʺª8ÂÐŽDm󸦉ª¤1"N’9^Ñy×Y-à†)K²Ê)V,¡a^’y¢@§8‘ç•ç9£ +ÈñšHu Y Ññ— S5I1ˆdI8IçEÝ¡ a^0ÕNáê¿€607¼è·!Wÿ9Ô! +‚¨Ùûëº ò˜~Ie÷\ãÐà®Eã̱s#Œ†Ð=o²¨k~¦ÈFáb‚,¨`'˜aiHU1Óš›—²Â‰²ânÈÓ_’LÞ=%Š.SCšâ0Ç,éªJµ°IÅ%AtÛÎ9—l¨Ð^“‘Ú±M€!b$`J\qØ&ÑFa“OC*¦I§vlåé®"bº‡[(uQÔSÜ#ëd :"˜²+tDò0Nâ•“PG˜[‡xNÓMÔ óŠ¢‰ +šƒ5É"VMô çª*šå†œÆS‚ ´!‘DÓ‚" &†,¡N¨¦šÓŒk�§zÇÿÍnÚ(Rɘ¤È¼ÎF"k!‚ (PbUëeƒˆhdÿT"Rж€ ”Tô€ ¨Ÿ“ÑŠCÖC ªœ&2 ,Hxü˜WuU—ˆ8Èóà††Yfó "÷¸Î‰K‡Â±j%MŸ [ +æFÂÔ2©˜U‡Â‡ˆº$haJž(8AÒÐY ¦€B&é$i¢¬q2k‡Çä QÒ-T,ѯ R’*’L£sÔ®(I¯“Lc¼ ÐôR‘5˜ˆº ñTTóàz ]gÚ&CFx‰Óu½¾iTd5êBTpFêø±Ñ +ÄRxL¸,9$=DÖ!o2tD•Ý5hŠÎó2±•”M#¡Œº¤AE9ÉE¤*& +%;$ŒN&(rp’$"jU2`‡Ä…"X€âc2ØpxMÆœœ¦R;¢¹% àµkÈ’€˜CÔBDÂ׊ªãQ4ž„F”� ªCTC¨]jE‘Èc�†4Ř mlvD9DÅa6tQ‘IÙ¡«èFÄ«d zàE”ó…_“FB9Eh5(ÐÿtNÁ¬0ÆÁ~ÉÔ0ƒ)É:Y‡2hÄoš1ЦœÊ«‚ªÁñ.�ðdš2L•KTå[ +\1Ré5FŒÞÉUá] )<Pˆ`†&Và�’T^�Y5P$Â$㔉ƒ(ƒÂÕ™]Ô! €~ÉÔ5h©ìnG }ƒz(D¢…h4[!1ØÀŸEW¡CÐS¢€ðàO|¯C@�¸¦ñÀ¢€\�rEf¬5fº[ŠYƒ; }Qh¨ÐaŽ xÓ‰‚°@“QÔ³ +k©â'$ì€4hÔŒçTWC� Nq¢áɼ¢P5F[£Ð<™øh qÚ,Â1tV“‹Q ›B…‡5àØ9HkGAg$ý€Ðë„o4ø¬ç‰wTدB1e +Ò/ƒQŠN“¦ +0>¬�€d`ºBÒgAFÏ1Íœd4¤Âµ`’9`HvÞ¡1y„ªL*")€bŽdŠSÒ�/ „°Ñ*ñ$^0Fd^ $%Á’aFÈRí�x6¯:©q‚fx4 0Oº*“»5Saõ4†¤˜pˆO¬s@Ý%²ñpÞ µ<}¯ËЕL=p}ñch+œ\‚¦¼P Z‚ÇéA0#è?s%¢�2�75�=,?ù:2Ø,’\êð©@�àDÀbT‘é�Œ<à(Ì‹Ñ +áƒÎ3˜àÈŸ"xb˜MàæŠL&fÀ!Á¥ÅÜÂ9‡Ã¡‰@Y• �TÌ�¶€´@Jèˆ;èÔAc¨(Éà"O˜ÂCÔ$†L0s +p|0;�ÆAŒzÇÌ@é`2Zå¡–ïBlŠ ú�‰p’Q‰p„$èšC"€Ó�c£Á\ +D Ó4¡&MkH+!ph�×À[FA=Ç�´²a€H¹áŒ#8™~"¨$8£AâÊP7Á7ŒPb=ÁsE‡a”xgàˆae²§p# ‚ÕÉô“¥ãÐ`È]ÁÄ0K"éº9ÁUÒ!(h:À•<žÔ’У¹ +Ãt‰\`ÔÙÕ@n̆Aþ(a>¡Là>Ø'’âÂÉBxôá9£!ø€kTCŽ).OU'ýá Óuè)O¨®ŒdÃv‚Uà)Þ t˜°¶@"ß„´[&Œ9#“Â\à¹í˜nÖr•!ú0è ñ܆S¥“d )€hš1¨2qˆi3ôT@g6ÃEÑ&Þ?Q�q`˜¡O02‰‚ þ�°šÄ|3h*j€‰2SÇ:§’°Á†@¦ /¦á ¬C€–¢R˜¤`ê¨]ø\Ä8 „$°™WˆIðµ0) +cHÖÝç‰äYqd»uÄ·äÌKq[ ;€˜ƒ£8„j÷‚鋨34cÐŒ–üIª $Z*L,à“Ï@„úK<swñ`öÀXL’‚ˆ“‚“¹Ä ³áɈrÈ-‚}*¨®#´yà:³$`8'.9þ”IUW3äâ'øGAC†™„™fàÕ¦ÙÀXLÒL¢sE¡á +C 1w +yäÕi`,||Ö0í†`ΨZôƒù¾ÐN&„W46_bè)¤@& � '÷`a¸äp7a§aÁH‰ìL�`#Ö]Í€eì¡.€5h0z‘\f˜…µ#b*�*¸�L%ä„öÃo¸`ÀÌ“&A©!~Ÿ@_h°ªãyS)ý!‘ƒ¬Ž†gö™ÐÈ%Õ@UÂ4ÑHKnBßÈíÓ¹×0:Ò#²%Er!Ð4ažÑù€ +pÝÕ\ž¬@z ‘<™øI´k(‘aƒE&KHžK‘a›à‘a™i¤Ùœ+^sáÔ(<)~aBq ŽH^7Äí‘w�Ö»A¡‘å‡C ‰Ìw¥óar$C°©ŒN%` ŽdÉOáÈ]I¥1eIiþÀ$L>Ϻÿ@Ð’;¯’ÃF *!T‚<n9ú…nQ‚Gt!6y«hŠüp;4àÆNÇbRHoÒ0‘µ£°/E,ƒ)s�¾1—‚T ˜I¥ô™ 0ü ‰²&å‰ûÐÌ°jØT¸MpýŠ´`Œù¹N2l*‚|ˆ +�sM ¾$³P4ÅH9@urì)÷"3°š€ Ì%e:DŠ›‰�> †éçɆ Co`Ä8 +PHXð)SçÀg·‡�Ì…ìC+¡f2Ѩ”Á ¼äIbͤ;"9,"£Ð(¨Ô(dƒ×B€o�Ô£– +Äe€RvwP‡ D¢Ç˜MFP$܇(@žˆûˆÒ%VƒBFÞM!˜#Bpd@¥e… ¶àª6@!®é†ððWxŠêx2ªA[àæ¬À•Bð#“7«‚«»èé‡J¹øÊý€{Pp…Q@QàÆK2§º£r!l—(ž7F-€ <=ñŠ +…lÁx`!<Ð="Ï($ +e²«:óû4ŠrÁ8€Û ’µd}•áC’Â:¢#˜\ò$Œj ب³¯0Ü'Á’Èò$$ƒ ï™d['+&Q*C%ü‚D˜ ‘Ë cÞ)KÊ|L)ì%j%,UÈ'ƒ©È(˜�WîͬÑ,3E¹&#òÈÓ Éu±N!„ƒG¿RɹeÁ#úM-ÃäÁøë0%ÂNú/a6–â=‚ò¸TH…ÿI†7¯ÓÄÂ…ðˆ¢»žåÜÐ39˜:H:<8‘ÒŒ,¤¸Èà5„…"{•ò àœ«‰ ¾¬;;H&}ÕÜD”¯‘)'*Òá!ÔY^ÁÕhyS:8áÉ@ …<ƒqF÷N§¸ÏÔVrF�6¡·D…i„Î2#ÊÑ�H*КÀ±†8Òf + &ਔ1…á¢pŒì‰N�dH¼ªÈÂ_™ì¥Héb"‚s"PÌJAÏÀ= ¿ó-±T¹êÐ,J{0…N^7àž2ä9ÁeØ@*áA²†r%4ž¤C$k ÃÍ%_I ˆƒQPX¡R¢M1RHpä)-°S x9 À-æiä±´1ÔÖl‡¤˜¦„ò_å÷(•#Bg4Uvu—å☄ӌ°†l/åË]C†3þÉFÃhEf" ¯Stµ£Pnf+Ša† Q.…'wŠzB†>pYf$ñƒ—§‘€ê—áúH”ýY|¬Ð„â/–û1fˆ¾°LPY<”D-Prî@{ðžŽ@ŠÄòø¢Ë“Èél„¹¶I&,AAÁ9&Uu<ÓÏNæ\ÕP²A§l8кH^ü_²³ŠA¦ñ”“#]¤ä©H#�Üëä +‰Uj.S’ÓhˆÜdüEé\ç°\¡†XŽ£@f®Åü +œ=ÐRv!PpÌ‚0"ÐÈ$i$†@ÖÅÖ”¦‡bCaeÃk‘(Ñ�:‰rx”†ºÃM`©úÏÖà›ð$„Fcú KFq¥F†Ò•û%Çœ…€(J'¹$%o˜j¤˜é”ƃ¯ª³D¢sx¡ÌÛÓÏOepåØÃÙDq³Þ%¶TC!5B( +¹±”õ&Í w ì!œeÞ?OŽG™:¨)õñfI§”´-CJ¡äÔªl*ó½ÈrÐÒ –§Ÿb”²è2Âù’)tJoÂMbæ]¥š„IÔ7™tœÖ( Ϭ²DIpÔ-Sþ™Ü5Bw¸¸¨]dQüHª½ÕÍ8²À2è37€Äè+z,«,6…Ð#Î#›ï R@*ˆìoZáÃP’ÛP^„ZP’Y—W«ÁIÈ2¯€”ó"E"GXfÑ'RæŠUª“÷©Ò1!%sKøÉ�÷àJY_•a!ˆP œc‹±ê.RÒ sÉ hµV$™^(€©ãÒZ|.•—Xú–M ¼@ˆùx¦ÃXCP›hÁpY&V…V˜y•É&PCxŒ0ÖH&×…¬y@tcùL +¥b*h®‰P""*³cÌÅ£uJøê$à*³¥H–õ%çR%¥aXˆ?g)¦ÁÔbž)}“M‰6x5À-Õ°V”DÁ¯$²$ät3»Ž C¨ øÀ&€G0#Ä‘¬ |V•Â¸xºÎ\L(~Bž¦Fc +V HÔhÔb+q`¯JÓHž¼J+l1–gžP2¾Q–—(ž'O«Š‘ÊpÌp*äÄÄ`(dEcºîJt"܈µUâU–›ÔXÈ-ò,LW)lgpSH¹0§Ï¬ [ZÁ‘ƒsh@"@qå½ (.%R("aÁ‹DëÃ�1UeÕÂ6Sòƒ2T)”SÝR(´|èøÔ¸íZým—píUÐ 9 ´S!„üR(™N9mÊ‚ÃÑ¡õd‰"l *tº ±$åìÁÙAè€OÔ?yÙlaQf›ÌeCÚî`na`WÙ2bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'Bp'ÂÿîNÞ:ÁX<¤l…ܱ½Ä;ò™i}H`k‚Ìë€\À9eç Àç-Û è´ÎºrsöHî%p¶¬Læ‹pSPì—#Øeü ‚ýÌüàpTÀC+|/4ŒŒnÑ¢OÔˆøÈØÑ1QÍûÇFÓ³úÆOŠŽí`_GD¿ÕwL䄨-:GÆŽŒ‰šÔ#r|”ë +[ºWÒɶ;š÷‰ŠŒqx7Ô¢EXTl|Ô¤Á®Zv‰}'2&z¤ÿX~Ö'nJìH|Ñï}êçú9¨‘¸I±Q“úDŽŒž2¹E¡¢?7š+×S¾r?ww˜[&CU®±Bå},ñ¥Ž‰1îÝèÉQ•a¼P¡.¹�±ëo#îÓ{JäÈI‘±ñÏ©:ÔÐ F¯Ò?ÑÀè‘ñc*ÔGάÒÔXX˜ÿ?î=zL|eXÈUæÇîIniƒ^‘“"ÇOðµ÷5žÓxzÅDŽ CÁëwŒŽ‰b-8øÚµ†p!íƒh9™Ù.G3ûåf"œ×¶¼¤Ã £ôìy%ˆè%¾éð</…N» ‘ØŽJ9ȼ†°0‡2Y°øÇÕ®Õ0¬ÅСý'GMš<thï)ѱñ‘ø5y\|Ü„¡CcâFÇ ã‡ †…LˆÝˆ”ªß%vDÌ”‘Q4ˆø±ñ[÷OÝ¿ôþaíZŸ¸Ñ!v¤› ~QšòìGnƲïnÁè9*îÀ/Æ#`p±ïˆÈf›–r&°sF+]4=ðgZôuÍ™ïåf0!Š‘YsIøx&¼&Jµ×h1¶\S22n|tlt\çÃò«ŠL†€hýg�î2\9D•œÆ6¶Ð"ÄŽ´J†ø&±+p)â‚Œ"È#Ÿ‚£U0ÁpqÉ}t«ô"ehd—¯`ýü¯óŽ¶RÈA¿!è7ý†²ü^ +äÿ~`0ˆ“e¶jζnÒÎ* +µ%Jͱ+<ìH;ÐT]V\›9^¦ƒJ¡¯ægë¦ÿÍœ*Ûº¨²T] +¾<_×lÈ¥Jli>ˆ™AÌb¦_ÌCÄ€úñ¿€”/äëOôÜxÃë´Ë€vÓ&IòS9‘¶) +ù𧲖D‰mI ý‚q›jZêÞ8O™/¯ãCE™&+*ÐŽ(Oa‹<¥êE³èv¢?Dݤ›…mþÆ_Å5œ:£4=ïêO Äó…óÉÍÛç07íÕí´ê¥rU ô´ªk†ÿaÄ/G~F5ŽöQ‘%N3sj¾—›Ñ%!‚@«£t›¥æ4Zb¤Û0i©FñNÕÈôFƒr¥j†GÆŽˆ7|lT|Üä±*’°±ý¶üi›æí£?ü=YjÛk×¢gÃÈŽ:ÕoØ^n¤tn*uÜdr‹~¼4¨ñ¤ázÔ›-†*ƒ¹‰µ¯µÕrtw¡U»É&¼&vÛjŠ4alødqd›ˆ¡á!}FÅ7éX?²Mx·vcß–5iÕ1|äx½5š¡+ýCû h«4™Ü²É¸NC'†‡†u8®Y¨6|Âè&í´U›´k0*´ÛÀèaBøëá±tx<'†6®.¾Þªsæ\ç7ës£Zôo%†ŠÍ:6ïÞ5¶-?2œë<¬ëÐ&Œ„ŪߤUô”ôǘÃ_Ö²c‡øÉhKS;¾Û¦WèØúmzvìÞe×¼~ØN-bNl×kD×\îÒõ6åš·i¡Òo•ŽîØ®UdhhÇ:áãÆ×SúwVXÍh†U®ÄGtŒè0¼_7µ}L»‘]k×¢cH|Ƕ£bLúãÍdKxóaßjß»o[MÚ#¤aǺýÇ‹Ä%¾Ý¤ÎbËNC÷ê@‡×Ë4š q4KÇu +‹–Zöí_B=ð·÷›Ã'kqœ<|ÌÛíZj1"´{HW!¼á¨.Ûk_·wó1Q_Ô“ˆvã½FLssDê0||»Î†·«¯·7 œíSgRÇz£èæcâê6&D‡÷3+¾† UÞèÙ¹cxŒP‡žˆÝ_Ô£Õà°1ò[où|K"@ÖÎ9ÌèÙ ÃðæCê…öì6¹[h1ãp£Âú·âº6«µz½™Í7åG‡ó\–*ÃFŽí†·a–qµ4~ÍÍëÞCµ¦ƒë)ñ ùnÒ”&£:áõµlÞ½_ý¡|Óã;q£ÆÔ oS§IçaÔ>Õ¸w\§É1 ‡…öÝ)ÜS¥6ixÏÐè·‡¿Þihá±Jü„ˆˆðní{ð4šoŽ¸nÃêÖí44bxc†76jl£6ЂþMH"z{u•nró¶:.j\XGNÕ¾½ÙVk‹é šï04¬»µ[c&«i»V‡v i0š“ÛtnÙžSÇj%µí0â5¥©g¾¤6ü°¨¼õ¸Ž u¥Q‡fMGI®JŽ¬ëhhË”Võô~ñ#=êì=ç•zcêù¿¬«¼”f¿ùm¿ê›)s4¾J\MÍ~k¡Ë•o¿RL+¿TÓÜø¶ÿ’E šå œ£©¬Tžiå’ƒêœåå4SæhªE*2šJÈA1íyrPís£Ô¬T‹Tx4/&UÉ´2äàåÌR³"PÕrðb£©°T9ÓüËÁË›jtÑÊ7šª‘ƒJ0"rP=sc“ƒPÏuÕ«D*Ë´rÊA5ÎMÝŸV£®zeå J˜ö|9¨î¹©û/ðÓjÔU¯„TÓÊ”ƒ—27uÿ~Zºê/&UÌ´@rðR禂)ŪŸ›uÕ+,Õ17~äàå«guÊA¹FSÃ)ÕòËAµÍ·ÔBW“”45œR-—TïܘrP“Fºêå ‚£©á”êóäà%Ì ÉAûiU*/2šN©–!/qnªdɱRL«*9xa¦ÕôÒ·_9xÙêY½rPžÑTTŽi5½ôí+5‚ÐÕ&åMåä +˜VÓKß9¨9#]rP±Ñ¼°TÓjzéÛƒöÓªX^`4/"UÊ´š^ú¦fªykÚóGSurÜ¢X ¦·(·(V¯·(¾€·(Öˆ”K‚[_ÆÜ·(·(¾·(VÇÜ·(·(V‰·(VÓjzé;¸E1¸E±2rÜ¢XµsSÓKßå’ƒ-¤‰ÞTÕ‹˜ØnÇí;¥^hÓ½¤‰RÜ'mj'F„vá;a¤cP÷^ŽðÈøH÷I¶“*v¬¥æ0O¢|ŸNÂÿGÖ®¥˜‡]:zVlj—œW«tr¥â>ñRqÌ&†èºÏ?ªè²ñ³1µk ¬ñã~Ê>`,xÄOðĶÿƱ>Õq:¶ê£¼ÿƒ'ù4Ô=¢—pGGC|ê>ŒÖÈa`87 „Xw ¸²<ì>ß<§iôøczæ =íL7O ò¹ÜLä5DUVuN§æª¢Ó³69^yÝë” zl™Æž4UžS‚FÇÅ·B3Ž¯à™ÎÞ?¬È±Î:ºÌó*/ñ2=ö…xöœší~ð<çzx=ýÓ8z)=ú‘=B×z =ï“rM” ãõDU¡§ "³—î'γƒôèL=ÞzAeW¯Sõ˜¥”zš°DÏd§çB;zD$=‡DRyž”G¢§g‡Éª p¼Èk¢"…žœGO•¥ç[Ó“Øé‰ðt°*=úc§ ‡H +ÆÅK¢JÊ CC¾D=.F„æf„mDôl$]TUázb©ÃÖ_Q¡cßy•<žgO‰õµ Œ=1NˆTz– jv¢öÈgz,†ÆdzŽ¥/‘(ÐÃK%z& .šlï®Â6jôÆFdã_„"Û4Øúk›JÛ°maåt¦#n§Õ»„Ùµ1§-„ΑT1I¦¾ÙˆèÄN6~Ž“é±{äÍÉvzž´†òv +bh#ò'†6"�LÏòQdŽN¿tغËK†h(º¤êô|)ßAûøa´/ y§Bˆ¬xN´Ñh²ÂøöÔFàO�mDþÐFd›�[om“ø\yñÃâò¼gúxùÖŽæ=ââa¯ã&DÔ´êw? °£;%z¸³¨Ñ£ÛÊçׇŸ3%>@‡žëØó\=NfG¯ÂWÈÍï7i|dÌ‹yù/Øo¾’¿·øù<=;œž™¬ÒãÏÊåó¿`£¢ÙdrÅ€Fåb€˜Á. ô@Ë€P¨|DÀž7«Ä kŽRµ¢„Îq +ýƒ—uÎ.X¥[¦‡ÚU$zð´§ÒÃÃÊwè0Ÿ«Äo«æ„|ß, ¹Ÿo…³@Ê0M¢Àëô€gÕmàñžËˆÐm<‘¹aXé±™‚b!ƒ 'ªÇ™Û£§rËôÔg™FOîv{‡øGE§Ö»z*4G°¶P�Ó4?ì鯢ñxN4e’ÁË‘9ÞmÊ ~2†_0ƇLÓéiðn§L¡|óšäðô™:É˦c'ò˜àðž)$y}¯éŠñ,\/Fò +=ÙÙJFÏŽ4úãvËT"Ùl+™@£s»vøGOàã-=– Y)TEP¼†.ÀÞ=²’I§Z) .“\sf%9„dÖQ4‹+IO®¦Ç4[e„Dmº’eHëQlÍæÓ‚68hƒƒ68hƒ_® æ Ccãb¯z„ЃJUE–xMt™r=@eŠÔYãUžev ‚ÂñσKÏgVz«ô„wz~‚çÑ ”ô¡gŽ*ž\DÚö~nÏfãµþ¡ Ög~)”X`ë(²•HíD~ˆ,UƒHcQ´¹rùkîß±6|ŠipænÆj*\¤àªM…Vm„ªZµñûNεúͳÏÃuÏ!åçÙp [ò¿¸^¢Ýó%ƒˆDôÿED¯æçRËœþÿ4†›Ù3Ïâ-åÌhå˜7׶,œ+µk¤¿j×jõNôˆ¨>Ú;õ¨]ksÑEEuJ0)œl®¡+’ ¢ÄñŠ&sô(3A¯¨·éœ®Òyñ;YWD8ù¸âx“.)ÒŽ§Acª¼jú©Q½ñ®9D—aáŒezZ¨¯_Ÿšöµp(š¦Ô®5¨KgÁ,ÁR³åØÏÏv~êy]ýÛëÛ'W=_[ð+ã…+¬”ܸŸýõïzá'ö®åfoÿãê¢wÌ{`t‹ÍxáþÄE|U®Ñ-kûìÓÿÇóB'eÝ0ÏW_¿êõø`ý!^nΦžº÷jÏ +½ðŸq%ýt)®Ã6cP~_«çìè¦ÿ¿^ßÞ=öF‡¡M{koã2_˜ÊDѧÿ›âª{tåZ¹f°ŒÑYÅÒ.œÝÓÉræ*ãeêzëÓÿ ·íX}íÂѼ’—^Ÿ>îä½Èè|ÄÒG8+2:µ +TÐOŸžO¶×@.Éð¡ÈTxtv±ôÎjúéÓsŒÅNæ#ºei_ ÑYÅò{ÎóZm£ÚûLœ_2À©Ù[þÉÊU,!Ö? ÃW £3íZÙ“‚ …Z_L¼yežƒ®X§ŸŸ1k^Õ£ó1p˜£òüª¬âwt¿÷ôU4«šÂYîÑ=ê—1࿯¼?·›}ñQºªF‘ÿÄ?HÚ…³*ìÜ°—7:ôÐ.–F±çqtV±4Fa»pþçFçcæ¬qÄbŠ}Ìýù*VÀ©vT±ŠßŒÿÏ—Ø:ølŸ÷�£{1‹�óç—ìØ?÷@i}•wt‹šûKW½?$®†Ñ2Ó¾Ö<€Ñ÷3º@biá¬j{WNO¬œS\Öèìbi«pVõèì^´½çv/:uà +Î.–FñÎò.sÒürf~žvÒ¢BÑ0(¼ì;¢²²FgK£”!œU½~ÐgWù£W<àÐÊF¨Î*Ê<ܸ˜eQý¾~ùâdYC4:ô¿ŒH8«4k4wÜÁ2Æ…á—¥nf“üs;ßW ±4 +¦Õþ¼Üiñé+~X¡~boŠ¶zþYë0!´À™Ô·Ê›ñ–`ù×”úõ;ÄŽ¤U¯Úµu®mÞEê^ýëhïxÀKª")Š"˪hîy)ç¤ý-@Þàð®Sc³¿ká®j"£ ‰‚,È +Ýn*蜢ªœ¤ª"Ûo¨‰t»«*™'^TŽ—uUàEU’éŠ÷†Cvªk«¡qªƒ¶…ÊŠ¦lÛ³ÆIÿíý†Á})Á})Á})Á†ÿ]*^G°{²¹™în’ÁdQR8¶«œãY—8pÍk¢d\Ñt]`7 (ºJ[=lÎ…hV”çh§¹ð{ä\òˆÌŽªë’¦Êªª8d)DÔèd‰çu‘c·„‹´ó]Щƒhg#Š`Dt‹”DÖIVd;ÈÑ5fÏxüƒÙ]×8:Bèø ÝSŒË’"ª²¨ ²(ó¶Ñ]†Ó¨ZXl0Ë·Y *McP :l·Q·ôkª¦ˆ¼¤Kº¦Iv"j^á$Ž‰ÎëŠ"Pð*§êšÂËF[>ÝõCá=Î0Ö‘"ÑéJ¯q„æêH’8Ž×$Y7nƒãà(0ˆ' +UE'ïÁè.ñMÓá/@üA˜K> W¼¦Ò +öJ"ØÉøKe `¢½!=DÑè^>SeÐ~‘GÇé¦|º·ÝN!CæŒMÕyLž ³¾Dݾ®ñ$¬B~éâÁ<Ýuþ„žÀK¤˚)|ž¼‡±ãØÍ— Uà‘ÑÜ@,DðGO%ðtGˆ!`Êáf¢ªˆš.û!2&S!‰¢ÌÁ9ì4îÙ„8qqY‘4<W Üðý(8…:éžOÁ*7n™¶À†Òm:´Ä*6:ÍK“y¸¾œê™Su‘nîä+tU1pØl£s³`…7×üQ_è„æ‘W8À“½-%z¥s¨I¤£H,4I02DCöK@rÃó2GbÏŽ1ˆè¾Jº3c’tàÅ¡BHžw=A½à)‡÷3AÏ•CpŒT—î; Ó0f%ÈÄøÞ‰©Sô•S1g2ÝL+H~!œR“é8MÓt¿Ló¯p‚¢jÀ IVíD Ð{:÷GÓeBSÙ?áµV‚Lb¶¨ùÔñŸª¨®Þ؈�ŽtϯŒ±È¢ÃÖ_`1×d +è8löQPoÀ@Ì¿ + !AìDŒHSìð˜#;‘BV6CbÇjŠ½¿þ(¼‡Mé؈htX€ ¨L+ýÉ–¢s’ÀÁ=r÷X¨òì{GE„ë„ UrØíKAœ‘B€(ð(8ÚV +ѲE0":’R.«tÐÞ.p(€ 3–TF–‡ø£û§�oáäˆOwD»:ãC¤„¨äÏèÀ¾èîŒ/´ &NÕt “i… fY„)D%§y„ ]¶Ú—‚z£Á§¡à£ªÛ‰¡„`P˜aÞO[@|„„H"ì¥F–¬S94ÌAçD¿&I¢áÂ"ìC„¢Nˆ¯@&DwolDþª2)§$;ìýÕCdQÄܢ˘LÀ²mؾ~ÅÆ—ÈŸØØš²M%(€#˜H6‚WýR�ËÉ—ÕYNïؓ%‚ˆ¨¦)~ņ€ƒàšš’%É.5¦é-‚¤ +v©±QrÚ‚½™K¢vÀOMVtÞKOàŒÙíö<o'… s�\˜\¨¿A”Ę5“à—Ò ’p +ÔÒÕo"·s ÷H§SÒ\½±1HÈ€ÚÂO4„ˆ>dU0ý\ºoÒÄú+Å™‡± ?ÞFaœ >‰;˜V ¡(‚Á½£9¢ÛÕO[ +Ì +ÜZIÕUÝOýPxÛè7‘Á@à >yÀ®Þ؈0P_L–DgX…¦ªÌ{R$Ï\ÌÀȬ»ðÐ! +tdôàKæÏÂûÐD0dŸàƒ°×£rt‰«ã©d“Ø5ùTð€t\br¡ú‰²"Ü—½2{³¾.ÃóÝÃza'¦z +Q�ˆª ±€á…€x¡úqjV4JƒêìˆY\óMsšIPvÔ»=Û+*³ˆLwtƒdQȦðh:ñF«*;bDðE`4 Ñ<Mð<± +‹iÐâ +D%úøÇËšÌa¨@«“Öè"u&¦@lžN]cÍ�_ÐoTkÀ0a€N' š2j1 ,á*TݤŽA«$(È}†cÍ“t0:8A£cÃ%HÖáA?‹1 +N‚¾™1–uÊ+#ð4ôq šÐØùªaú0E³"rÆj�7øf<¼j×hj$QçDg`cÌ~`"Df¡pܶúžóŠª»(&ìÆ£Ø)¨X>B¢™ÁìDŒqYOD$ª*ùiKg‹ì¤4'¹]> =`±¨_ +:WŽî‘T`$Wo|ˆ `†€¨1‡¤¸z" 1Nk:³Í'‰ +”[€Éa âçHD`EE(ô’nÂ?ÌŠãùr[IU„ÛÆÓI30xˆ’xB˜k‘:ÄSŠ)†H +öB,t]“TÃú#"é…M4™´JÇGÓ 0<ÝU88ˆË:£@Ø�® +¼B¾°‚xÏÛB³ÅÙœOÞDŒ3ªQöA`JfohÉ–U +Laüô×…÷°©7¾DþÒZþˆ¼³F¶þÚ2O¶aûËráz_3x¨Û‰"‘¢3NLï§-‘rÃl™Ž<•\š‹� #ÌÑL¯&ðìŒ!ƒˆ¬‡KPÅz'‚Ž…ÄJìì@ÆLóK+) +‹<èH(È8¯RˆT¤Â6±ü�ƒ1‰"BòãæƉ”Ç#û§BsäU¢ô³Ù8äHŠ¬±–ÁY8ð i½Š(xøõP}ŒA6à1ŽF7ñ!úàíÔ“i~ªäºˆðˆ:±O4Â:ø©pÞi,»¡C?ã!ÔÏW¹Êê´¯æC%“B9ü-*ˆ¹`×[ +n[ÇQ8O¬f _òYªž2Ñn�Cà¡SªZ‡Açp!$Q"É|JóýÀt(4BŒýhlqU¤‘OEYˆÉœ:|\‚£ñ:"3Ç‹–ð@Ítü/L§ÀÐëç¬ÅB¥®‰‘°‡Ñ€S,ª3}a]E["Yv:(¬ÀB‘1ÅðO¬§¾ÀbâŠí``ΓÑ'_ÃðO4xÒ)ˆ¡a¨0bùCä&q2*Ïh0?иfº„EI¢ô‹qGƒ�“®èYÅðþˆ¡Œ*wëŸ=òóÙó¼åo®ìTnõ¼BÇ,—³ƒËÙÁåìàrvp9û…–³+uÖ‚¨ˆpTUZoUh€á¶í*üL•¢u^h-4Ç›8E¸š–ã*S³®Ýÿþ™ +üO)x¨B°K°K°K°K°ü¯—¼Â¢Û™Ùg=>xïÁò“ç§lÙÓûÏMV%p¬oð×ú: ëI ŽäDGRbÄ„×ÿZòǺ–«z¯Ù»ñŸÅi'=xˆßÞxü4;¿°¦‡òß(`xÚõ;«Ï§Ï8r|ðÆíҚĺë×3'ø¾[_tÅýû¶nÂzáÏ„>I[?;ttͅ˯ÝÉÌ-¨éÁýKiiéÕ‡™?¦¿ï@ø†-Ö%¸x˜”heõëÉIú¦ÍÝ·ï±/5>íðÇÇŽÏ8sfú‰“_=þþ´ »÷Ù¼£KÂfí¯¤××{&¢Ñú„Ð ›GïÙ7ÿ±‹wýÜü°8KKs‹Šß¸;~ó?-7oi””dr»î†Äú’šnÚÐb[ÊÈC]º¸ûÁƒôììÛ¹¹÷óòfeå•”ä— ’œÂ¢§ù…róïçäÞÎι’úàÁ÷'ÏFnÿGÞ´©ñ¦ õ““$&ê7Ú²k×å› .q:kš5Sn?ÉN¸xuPò6’O\Ї¦›7vܵÓàö™§™•æO‘Óyüñãgξ™šÚfû6Lh„„ë7¯½pùú“¬ÿSü’›Ÿpáʈíÿ¼¾n½‰Õu“[íØ6þHÚŠkWOefB˜«¼ÝÜââ½,¸p~ÈþÔ’&$Nùû—ç2óþO˜�`˘í{Ä䳘œØb{ +$üèãÇ + +�AÕÚ¨ÀõÜܤ۷ÞØ¿òß,!qø®½»/Ý(ævkª@©äæÍÚ}¸iRr]·œ7ؘÜa×Îo/]¼—Ÿ_òrŽù}ZT´ãÞ=ÈÈæ\RÒÇ{^zô¤ºçý%—ü¢â”ôë¶ìx-Ñã +¶Ý¹mö¹³Wr²k¶o€5à[ÏÝ»lH[¿qÇõ[¹E5Û¥ª*…Å%óo™¼É„—Æ›7FNÛuÿþK–ó@ݸõtÆÙ3bÊf}æyGOÞ{šSÓªly”•ûþî“Ü!O"¿eÓÒËéªÏ+Z²‹‹w=¸ßvǶÆÉÉãþÞw'ë¿ÊügiÚÍ{¶ît$ºÂ|D£Â«¦O_[R\q¿¥¤¨4ïqiæMçËÎ;'J®í+9›\||uñ‘ÅGWŸXSr1Åy3ÍyïŒ3ãriÖ½ÒÂœg/4³‰wŽÙ²1tã–Ó3ŠKþ{>ç?é7»mL1¦þšuí¦ÿ:|À¼O"—\<yã™+¦kQÊŠësaŽóÎÉ¢ÓI…û¾-Hšÿ[ßÜ…-rfÖÏþ*½¾|%çËWŸ~^çñ'¯e|T/ããúOfˆÙ‹:æÿñvᶩEG–—\Ýã|zǧrŸö’QXøCzººmk×”í€ý“š+{ÒovÚ´ÕL³€í?ø)ªÏ×ãºÎŽí>÷‡Ï×Ý»õCÈg‰3ãJáeÉû©Kîܜ鎷ÁçëãCΗn™Ö·í¡Þíô +Å÷o{|p+|u3^É\Ð)ÿ÷¡…»æ”Ü:RZ\ðÌ6¿>0¯äo¸}[IÙÒiûöÍ—¯ÿWάüÂΦ´'%¼¶v]¯¸ÅÑÝçÄt Îã=®ÇÜo?ZsçúÃR§ÏÀ¥…¹%×æý5²;»‘‹ÛÓ_·³§9RïÊ8îPŸv»:vÚÙ¾ËövÝRÚD¤´éî~Ñçé¾ÚÖõŸNA|u¢ž9§UÞïoŸß%*u–˜|6ûl׸b§sç½»íwîh¹yKNáÀÛ)(.™òŒ;s˜ØpÕ_`»Áðq]fáƒûóó‘?:˜ž—ëEgÖ½¢3r—¿™3£±Ú-áxÏþÂqÿ½'Þhñwxgâ0ñŽÀŸ·²—qѸn¾›ñw‡Î§Þj};¾YöÏoŸN@[hЧç>‚M]*-ÝÿðaÏÝÿ|pôXÁ¿sÐÛÏž§”K6øcmÄ”%czÌ1Xízuñ¼0tQâ/»ï߸_pzsþšÑ9³š€Ï×{úyÝÜé¯üŒ_Ëíížb²×ÊäÖn&[™ß†]·^d“o¶¼ó¡ž·flqú®gná/£€ùû>è¼ëïEgÏý‹3<ÉW®“'Ã’¯[ßñ㥣{Îõâyß)˜:pÚÉÙ£²çk$Øï6<ý– +è~:µŽÁù¬©uΙ¨G˜À²Õàª7·ÍÏÆtXfÁõÕVãçm#vwîtz˜ötAXáž…¥y¾'þYÁß(`þî÷•[V]¸üï„ûCwïKM5—*ZÏþÍÀö7ÔX%Nè6cÑÑ—ÞZïö¤Æ0”;t_ ªçg5¸÷íèëüuo×¾Ç'ÏäÞ¸w÷>^¹7ogž½ð õÐuγ$müû»Žü»Çíá}L7…Ÿ’[ð™ñ[Ûˆ½ÝÂoŹ+‡—Ü:äæãSy3º±ñÎm5eKʵ›5ÀÙ2âŽØ‡ÌUî§?FöûšqØ›óìOÀþ{=>_=⇽~#®ÙÑÁp°eS›žú·‡œÈÏnÏ°ÔYlµ†&sJÅé,|üäQÚ±ôe+¾óùžÁ£¶µïe1¸&æ{.²÷a]ÎE*ç„ÝRŠxÁŸ·c¶oç§ËéñG\~ò´†xì§;KgŸ8e®Áªö·h\7olé:Ûôm>éõÑö±ÝnÆ7°ìê@H²¹Må¡oýÔmä¹É +>gzݼõãYwŸÙ¬žOÓ>þIá“ÌŒ#'®þ¾ö`ô”m¡½<èÔÚ”y7±¯¶‡v;Ò¿ÍÃém¬2ÜN{ýfœ8þñ‘cùEÿ–£#×]¸R'ÑòMLh7ý—ѽæÆt›ýÁE?Xýˬ «n]1oó’©ëgO\1uЗûLJ]-‘ÑlC¬XÓnðŒSÞé2mÕˆ!SëCàÏ üöÞœ“©M·³BÅYTœ{ëÎÍÄÍûÞŒö±®VëÐ&â@Ïö>oU˜¶¢´ø9Ëå·rs;íØñ×å«/¦ª.À™A©{Ý˦ â¯kâß[¾î§¿o_}è#¡ž’Œw¾Œ�¼�iSÚõØÞÔOƒ?™ÒŠ0kæ€øôÀûOóFŒ¡#‹?[wñÄõ¼ì|»Ëç7æ}æEYÙ—Yµ«÷[nØñø¢æDX´§K‡ë„¼=?v|Zñºc3â¥Íx\õ¬¬HAgf?i¸î`{½¤Äɉ_½p·¤Äé›(Å÷Òï,ˆÞߣ=Æ»£SÿŸÏºwô̹#W7ýžºäÓ?¶OèÃpæÕ¤1}Æwýjœ 8.Úþ;Ý)”@|¶ÿi\>8ö€ÏÖÖ´ßj¸úÝÁWëî{ºv¸'KxÆ\ý@äO?zbZÚ±ÂjX5+9ñ £~’'å®lÞ|é¡K¬6?¾}ûÇOS{wÅHÿé3ìÊò?¹¶�R2NíÉø²1ÜÈôOÔ{êã˜3mÔÒ Ë÷>¼óÄ~>³Ù_ëu²À%%OÏ_:öþ4/æ·¶_·›º»sÇÛŸu*8³Ý¯)7ë<u÷aפ-)WkÌÏÁìO=zܳxœ8íô)¿¾3?çþºSûöJiÛ}ßÐ1÷÷ì/)(ðŒ®¤°`ÍHŠXç4Î9¼fWbÚô±?Oì5χÿz~뻓f?ͳâ¿óc^ôâžÓYð0ãäg³RÚõd¬ŽðØYÓÛgp”Ú=üþü!…7üÄü\XTüÍ?‡c÷ì¯)±?xïu‹Q£MNgz&fŸŸìOÙ?°_JÛûGNȾ|Í›ÆY|b xž;£NAòäÒœG¸˜—[¶ëì÷Ÿ®}oð·0Ìeiæ,}¿òÔÁËÄÿ +&²�ûÇ?ür[ûÞ†oµEa†Á=Ô·]Æoï8³ªí=|¹Û¯ +Î^¬Pª¤;ñÒ,û»†ìß÷¸°Ðì›IYtÿúÑèQ°§iq"2¯4ÎÇ×òWÊîÈûV/¹¸ÍêFædåØ~ú‡©ë¦ôÿÆÇ;ÅŒüþÍV€¿‘ê/ù×Qr®Ý<ÿ):cH~ŠÕÕw3ÁÅÉ·Ú<MùÑççÖÏ™²?œ½öÝiÙ/{÷àÁ[÷,»ì(c°àÂù›ö•æ][úݶö=Œ™üäô¹RoàLÑÁ%¹³‘À¯)-ð]“u:OfÙ}nÁ{«}˜Û}îç#LþmOvfnù»]ZâÌ8zbß›cÝðá%ùîÈwgû.W§t(~äÿ4{†^Îåßli=å®ÛwËßz•”1ûR=lONh¶yãŽ{÷| œ³äñ¾”½†¦¾i/uº|³”Ü9‘·$œþë’kû‰+†YW¸oó‰™ãØ{ž'íÉÎÓÇþrhç™>Vl@þÁü[›¶ïì:ÈÊpwzÇL EìêØùá²IÎÂ|SkÖ“ºõä°ÑßOK;š÷«O²¥î³ +|Äî]g23}ºœ9ûÉ»»zy¸ÿ°×Ø]†µ¨pËG,3öJþêH–”õuNLz£<~ðt˪ý3Æýâ•ë2ÓñóWÉé§o{çrñ¡ÖÉÏg{<Wn3‚½Ì)ˆ81²{NÚ†gÞ½2?ßL¿ûÆ–s—_x’YY†–»¬¼˜nJ»±üyð�â;¯>Jù3uàÀôe¿;mhŒÏÛŒ8?£Nñ…ž¶›¤&%Î+çnÿ¾`뻃¾õÁŸ/Æ,Û¾îPf†Ÿm$ö)xz!ýïCí Ÿbñùwuìrë»÷Š3ý<ˆUA §ZØkÂKOž«�ï*Q +‹K>>vÌ ò®÷)ÇŽfy-Ü”d=¼ôÑÛÇÞû,ïŽ/ +Qq¬g¤‚ó~êìÌ.ó©.ÞµåfåŸH½8gâŠñݼ’ÿñý,þ|ÝõKþZô.pkÏ/üÑ›ÕÞŸóë‘{ê{Œ÷i£—¾5t¶xÕËIÝŸËxR?!Á\þ00gÆÙ3>X‘½g噉C¥yž«kñŧÖÛ)'9£NQê"Ÿ„Ésùf´UTX¼s]Ú§‘?ÀÚZ³sðü·ÿuèéãÃí÷‰ƒÌÏ0={‡Œñd2[»3ÿžT÷];ÝXøaIΟџ¿ûhÍ؈Ùí§ý²ûZ9ž,Sé²ùæ-ë–H¼êmHšá¼WäRR˜ñMŸË‹–ä{€fÏYwVG“Ìùò•¼…jɵÔgÞ̱7Èot–8/Ÿ¹õÛœïXh.¸ÀøNìõõ²I—NÝ,. +ìee™µQÆÖÖî0¶uw»«srd·‚[þ`·lf2Zì3þû¯ööKP…¥¨ÄùÕÑÞ·lPµ$ý’•óEW<ž×!ëRº½x8ŧÖçÎãrØ2+¦À™y«lÛj~öÛ%\‡xïO9õÙˆaolÄœ/Ç,û;ñHI‰oƬùÖÆmG¼‘⽌峤›Ú#üQâbŸþï+æmFCÃΛ¸}ouoOxZXØp5.¯†vëmÚ°ôrú3�æ&}üdÑ�Ó´¾;³îü5ʵafækEÿÌ1—?ÌÑYß}¾²Ï‘ñ'Bª;×ÂÃ1ÜN“ÿ“û.X9óÃ;Oœ,‰çSö•ëû‡ÇZ–tMž{Ð~{hÄí©ÝícA®!²×m¶>ÅÇÕ»b’þ4Ë™4o¢I09ogÎÃüßúå%L±K)®ŸMÎýêucSAîBµøBŠ_~Zâ÷¢ßëäöo91#æWÂÁýGôð®sùy…¾³VRrâã)m-Ic‹…ý»ûÃ>Áý‹n±·þÓôDc~#â—l¼tÍ·7UZ/]µ"¼‘=h¸1yqº'ƒQxaWΖ…[?¶vÕõ¡¸“xÏ¡}¯ä-íâ||ÝNVÆ•gr’æg„]p;—L[×ãk«ÛóþE‰?ï~ú8Û§žË¿þA™‹ci€B[¶=} +º¼õ +v/²77ÿÝU†r y{áâsçËÍÅ)³ÓŽ»î³ð¿nrâìsgÍþ¤.͙٠y’ýçÅ·åά›ÃœI¼ +þn]‰¨Âòè^fÂÏÿLà•ð™ØkÞ_$\¿x×:S÷÷ØÞ¡ŸOö�Ÿ/ý¸ÜYì +NÖD!á š:úIäFÍczÎyâT µ|A½Ñ{R½Í«k +>>yÂHÚ”çn› +‘Î_9è™Oæ6ûAÞ¯lùÀšuwÏ�Ò½Ú-‡·c-ÆøœÇö^ø2úgë0üÿO‡/Ù³ñxNV¾ñ[@ýŽÎ|²FOνåÚYê,n’zf\¶6ŠÉEø`VÞö—µOó«ë®Ÿ’ÒÒ:îí4^œOJŒ9’öˆ¥ÜOïæ3š÷]ËÒüLgŠŠR¿ÏÓ„ œÿòÕܯêÓv;uŸR†‡S¶˜á[˜Ýï¯ö Ë9ÄuŸ»rÁ–ÛWÀìeeSÇ’=ØÖûêÊ¿JÜyWgæmŒ%ï[½øÒk‹‡we‹®åƒöóWÞ̬®»02ó-†Õ+{0`ßžôì,ôªäÞùÜ#(8Ç•\Ùc² äÖQĪ®M’Ó]Ûiœýä·Ë`æs _‚{73Àg89Ö'ã#æÌ›òûáÎäìì6Øš=Ø;tÌãã§ÍŸ—\Þ•;_ÈÛ¬øèJ³ZLÙï¶ pÞ¨¶Ã´_Î=ª®ÅÙ+™æò“Oö íŽmi´”Próhî·ÉgÖ+Ü>í™áŒå=.HžxÉuïP¥×ìF¥Ey8V…•g=ÉIüe÷¤Þó°?¾Ûì÷ßønÝoï6ÄêÉÿhzÑÓ,óçE©ßåÎjHðÞoÌ +ï\8sü¯¬×zMç–{p1¥’%íÖ=‹œ[³ ¯mHZó&<f¤¹_‡0Þ¾’÷}Ûâs›œ¯n|/ǽ=Õò€£ïÛ”Á«²{âƒ?öpÀNŒËˆ¶Àêq]fó🖺’Ûõ5³;:¼±nƒç‡ùO•Jt»pûÆn´Â‚¢¤_wOèɶr1´ØGLYràáÃàjyÊöôæ6›o™øÙ©“¹ÅŤ›_ÕÛ ƒ½yË�>2Æ&ÕW˜WùJþ¯½ýr¬<öÔïg¿¿õr8Kœ¶yB]Ê3t5¾ËWÚô6³»ŒÈºtÅüaÉÍÃyK:¢R¸õX+xgÒ.>ò'Ÿ‹=&ý°û¾Ÿ¬f•” ®ø9íÁ?Ýwï‚‘-¹´#Ç +)¤{Þ=óW¿Hn|+{FÊ_ŒŸC\R}>Ò“g˜ÔùËmz™ÙƒmCcïßx`4 /:òì‘›óÃs»yùþì Ë}÷Îu™Õsâ;ïV×úT²Éyïì;õ6$|ô°äüf7Ÿ_Éñpþ7ȼâ¾á•‚ucýú“æE¿_ +£¬ï>”>sW\Trê@ú‡C¿wíçéô)8oftž8môÒ„¥»àå?º¿vŒçßsö‹1˼ØîÞÎo¾u»9ïÆköÀ4¸ñÇŽ_ÜÎî8p1Ü&ù.Ì¡\ÙúqeðÓ‡±ö‹/¦æ¯NºüÑ[‹!«_txwS›ž†ÀoiÓãÎS NÂóü㽩Og6rKΫ[&ra»¹/º‹ë3Þ{LZ’rûÎt©<eóÅkþ޳ߦÅö”[§7à `îu#]`΂ñ'Ã@l)ãʳçeʘAëKŠKR·žüèïç‡Ç‚ᆅ]Ýî À¾›±³vÅuÎqß½òdÚkŒ|õ;Ú¶#ïÝÞùqçÝ +¬ïT¨ì¾zË%ðÞÙ7ì$4ؘüÓÎßhóÌt+™7Ýøûü•ƒ«©Ÿå,ùy…[ÿ<ð{ó>ˆoÂb(÷ȼÄzühj}-ï}ÖðÇ·¢Œçö$¯Îþ´÷Áƒjêê©{lÒî{ÎRŸõ?^ú¶½UÈþdŽ•óK:Õ–zk‹>×ýâ¶ØïWöâ-ûÞ£ÔÑñÆ®§ä6½?îô±!ϱݾJ‰‰ ~º}à+q3Lñá¶å5+ü³ŸÓªÍŸ¿ý4ÛÚxkAÓ¤¿¾_:êÉOZÌ”sŸ+pûtY vù”òÖ2üþüñÉ3{‡Œ1ngø-tX|ç/NÎ4ñÖ'M¬w&žx§åäî_Ø]ó½ÝÌßN>¬®£ò‹K<|öÊ!XùŸØëy'ç*9î>{qûK—?OŸg5p>ñs¶Ésùè'e€¿ýŠñùfÒ#i¨_>>¶ËWàá”îÓvÆvÉú¢Žé$d}éØ4¶—ÅŸñºÃà|ë+Ó3ªkû:ûçf°žìUê%®ýãè',WàAWNÞ2_Õ§í|h½Š3%yùç,IiKæ5)là—Ý>6p㻡cï|ÚØ„J¼2§Õ?8Ö2V™o¹tͽ¬ +ìv«hy7õy¯«—ciÙ‡€?&þ¹{~¨ùòU× h3êîœñ¬þdÙ>§Ýç÷ùÊ/ Jö•kFO&²mƒñŸ¯š“Oò“ÞzWwßlî’–KŠã»z˜l弑ˆÛmögiGŠ«q³Ù’“g½Ó•þ¬-{ \5ëÚ¬fn÷Òêç¼b^Ì_ù†Ï^Ê*ñÞŸkèºÓyo×¾úCàwtp#aÓµw¾Œ^–0¦_ö——Kó¥Ë“ÿcäW’ǵ±ÐWø‡˜7÷ô¿ UUÙ}óŽ¯?iM[оAâš™?E?šQ/ÇÍm[VáÕ¼ÅíJn±óç¹|äÞ”Ÿ²$¿àìÜïÛºgð¨ü%ν?ÿúàóFÞròêõC>ïû5\uù––?Œþî·óÕ»£û~^¾kqÄ<O2ÉDKö’}VÖýºú»>O§×q{’äqMĬ´ÍÉé +ùE‰ò89~=LëŸù÷îêõ¦áÆ_øni)éÜÎþe@Ž¹|Àú ùOÓwbÄt‹Ì[òœnkÛùƒŸÜ¨ÞMŹEÅüÚD_Àñúì…BíÖ,Ù¾ ƒ±ÞmúÆÖ¼eþª7O®?׫,§£î÷‡>ŒreÅ_Æf]f_½Qš÷¸pˇ¹_Õ³x’„3gßS¾è÷.%–»xIû8æãóÇ›öT÷Fz'lpÁp|¦ Éüz®žvŽdf,=˜c ýÜfÅg¼·c~l… Éï·…™OSi› AÍ™™Jr³ŠÒ~ÎÇç¸\W÷2¦Öÿ3ê¸n3ýFOæ\Dõûúƒmû^˜¥å/©÷ï×Iôò$·Wéëê»L@ԊϯÍjjÉÛXëWóÿŒ4Wl«¤<üomÜfØÖ]=ß|tðHñ•Ýy5¯Ìëäñ)ÞïùY�¶{\AQß®H«^ój”»Y9MsÉüžÒlþi lë%³üÓ³ùlït¥k‰jFÝâãÂp;b—!ü奼{Òâ>`§Oô8=c^þ…ýyßµt/–½bêãé¯Oï?Å\àôÔtùà§;O_Ò „³OŸ ”=ôóÇ.ÿäÜÑ+¥àþWò·u>L¯n<×uô!0>8‹Š¯¯MÞÙu ݃Ù?òþú¥ù¿õ1–̬¯Œ©õÜžd™lï2kTŸ¹‹SÒ^ÚixÛ¯Ý,#{àÇÏgdõ×\1õªËÉw¿!i3ê$Ç—æ> +ÄF³øõíËsŸ+¹7oŠyÖžB{ž~7&gY¿Ü™¯YÖ˜6ãµ&v{§ÇÔ€<·øóCßþ&5ýelá6 +‚µAûöڳͷlj±=åõÉ~9OÇ÷%ó;^«$Ækn³¢KJ‹ò5Z¡`Êoq–”\ý}±—ow·ˆ'sCi)Á’%`y¿]5uñsq†d¾Û챋ïåTcÒÀ^¾>|š=h¸1yúÙÓ9,|~RX˜tëÖ Ô}Ü–M~@))¡ÛŸ·}Ó1“ò™–21¿iÑá_Í37ü:6>Ånì.½Y²Ò¯ìè<`[ÛˆÔîaŸ‡X“&çó—p>¾šôËî¸s=ž¤ÏY1î fÓ±‹•‰ +Lôk `sêõœk2W_¿6tjÃ<EÜòºæ‡ßÈœ^׶¸Wiçŧ֕:½ epÞoñkŠ²sN|úÕövt¬Êƒ÷Zü+KL½´kÉÝS Þ²jÿÄ^ó|ølϼ=üÛ|O…z eá‰ÓÚ�^æ?Wl»W¨¤´ôjNΗÓåÍÉÞœ§—´nù‚%#î|ÕÐêËÑð¿kA®N`ØyVñìÂ䛉›þî6àÌ05ã£ú9_º}Ú/=œÏÿ¹GÉÕ½}ÊŸ&¹÷á[àÝ7{°jω—,ðF¹ÃíOÙ¼q嵫ϼù`~.,)9öàNdÊšIk½œÏ¤„Æ F/ÿôø\-˽!ÇŇy|Ñ?sKsڑįçùÌ&á>fæ©3Çb¢¯Žã²¦ÖÉõ¨sØ͉ù+”Ü>jêÚ†ßöLèùõ8× T³¼eÞÅü¿Öì?u«º–ÿÊ.ÕŠ‹éÄ@vçB©{ÈËØŸ>HÿyëâÎk—xûÿÄÿ6ý¸zQß{3µié +ÖŒpÞ=YZRèS•WÊ‘=(¼}éö¸‡¼îÊN{¯Åç~U¿`}Œ3ó–Y³Ä¹jaŠ'3Câí›=ÓcΊ]Ç5úÊÃܼ˜C‡ê$Ó³üßC½1¡´øþ¹´Í3G/ÿ¬QŸ>¡n³õ«>[wÌ-üî”Ú+y?v,:´ŒÝHå, €0e±½ ‹vì¯x+kZ]·Óè/ÇnûÜ™ýÀZUÖ“œ%S×Û@Þ+zzcô¢;O²µûrʪsél/ñÞôlWO³¢<¼±á£ï—¼ÝbíÏžÄ2{½žøWÕþXÔ×Ût#ðܦù+>ù½šA)Ê->·©`]´OZÀZsÞ¢ÖÅÇV•ægútøÆ¥{_ÅþfwÝÍ׈þóv¸üâ,«¢‚nÇ8ôú†¤W¯;=w„ß¼Çy©‹Ž/é9bå4~ï…‰kÆ,ÿôÈ×z†‘Ø7Ó›³^Ï[ZøÏì’›iΧwˆ]Eytàž³„np+),-ÌEÍΧ·Kn,Ü5;oq;¶+Ïá‚/ÏfZVáìFtOâÃKÖ³]Pã,=°í”a^ÇÙÜH¼¢»ÏY·ýXÖK?âÃo¹ü8sxjj·]ñ4®”í‚QŶ<Y9dÁQak¿–´Îµj±vÙœŸF|²}0fÖÍ[Ò¡ !¦p猢ý‹‹Ž,GP”ú}á¶iEAŒYLêñ”¬ÛhÙÏ_#Û¿ØX³›ì§y?•lwÝÍ×ê„çü‹JµéÚº‰ ÓNžtz£±_þ°ï|p>{Ë'{~èûÛ ÿòY窟¸¶çó—-~ãÆWM}!ÚyùfûùÁ+žxanÓŸ²s¹}o4ËÅ“7Þ¸0¦«u§·çõÖÐkŽ¼¤SÊYŠJœsOá7oÚv§¼{IÚò3‹Îo¾½|È/?Ö¯°'|š%¬ôû¬„o»?žñš%Ûóªyj±tçX „uà7.ï_œ¾³4ŸîõÜ¥g?L]È°Fœ?{sjÍç·�úÞM;Òñï‡=* Ñû-À¢£¿_XþÖ¤U_ÿ=yfóßó›v¹:«™aIfÃ2±ÅºÎNŸ¿É_9¸øÜFóþ”gÀvZn91ÇLx˜eÒ>gÚãj»’åZfVÔ¾Ô·öíKÏÊ*§mµ¼ÎÌ›OÒ–¯ÝòM¿u&ò›©6öø¿Ä?#W~ñë÷ƒŒ„›7ÚxÁ‘K;¾nžÿçpÃ{ynÏá´g¦Ž²Ü`Yã:ì›é;ž¶Û ª¤{ð0*uÿ¸ƒ3…?Öâå!†É¼uîò¡™{“•ä?}³mnü°jö¢†›#f›b°"Ï—¯>ùôõœµ“‹Ïo!/¨ÔÏ)—öÖï\ôíGkL7_c#f÷»hJÊÞ×_^*ø…Ë»÷Ç80%ípNqqî¥õÝšœ¹9G¡’=6mðÍ6»å¿õ_?½óË”CóZ=üªáÓY²g4Èø´Iz´t6nГÔmμ§öyÔ“ŒO¾ŽŽj±ÄJã˜ßöù²¨]{WŸõstÆ¿³¤Ý8îà¡Ž½——çWò%X¬•ÀMJº}kpê¾f›7z–`¼Ónõ’lüý‡=k“—-Z×wØÑOff]º¨!{?2÷n<úæýÕÖ$ðØn0¦ózÅ-nòÛŸõÓ¯V1wª¹@òãzïð‘;Þ§l=+G²ÅüÌ¿•—ûó•Ë÷íão'›ñª“” ¬\9àû%sØvïîœg™7JqqÉ…ã×¾¿Ú< +ØòFäÂÎü$-ú½îúõRþ…Η§{ð(nÿ¡‘{=çXú”²™o–"§óJvö÷—.¶Ý±=ðj#½êoHÒ·mí¹ûŸq‡Ó@ÿÏýû7órý.’•ìO9ùÅèeã#æŒé9gHäÂ.ïý¨Ï_Ñä·5¯±'xÚ·oïêºûæ%”›YÙ9ÚkÇßG32 +KJ!µXn½þßÉ˃üwÚµÓ…ÿ~¶wº.Öa³�2 •¾-*{äðg§Nοpþ›‹¾>svÌêæ®h1oEóŸV×_³îµµëëÏg¯ØCi§ïÿ‹Õ+ÙEOŸ ÝšòËÅôŒ‚²N×/þ <ÈÏ_’~iÈ~ËjcR`Eðl>ô»5Â÷zݤ„¹'Ogä•7;÷//ÅNgÊ[ï:wèÐ…'™~%ß,Ïå)KßÊÍM¼usâÑ#ÂÖÍ~‘Çwk„ïŒø!´oïúKW‹þƒO¬+»\}òtÊÁ´…çÏÿváRNÅ·šû£ŒÂ‚C¦>%¥lñÏm+«½vúRFíI=]m·ÛüÊúKW&¥î²e[ò÷róJlØnCˆÆ(¹ÅÅkn\ó@*,,Þ“ðl{öÙÿéq“bL¾rݾŽü¿W€¢¥_‰Ù`Äž}¤_¹’™U¶Xç} +TiÏýûïï9ØârQÌ Ÿ~PˆØþúú„¥ç/ÞÍ~©fj¼dä,<~:öÀ¡~»wÏ<tìÄ%åpÂ}¬”y…gÒ®$,Û5ÿƒÕ£F-î1éeáʺë×û… Áûö.8~®W9çô¯<É/Xzú<ðGß´yÀ¦íóþI»òðIV~a^AQQQ±yÔ¡QLlÁu8ä…Ey¹÷ŸÝ{aõ¢m_ŒYöî oãz¸’�EGõ™Û;v±û±n$ÿu“£˜ìÔýœ¼2zõ§—¤Þº»øü.!éõ¿ÖµÿymÜï[o=¸aß™GÓO¿vþøµ‹'®#ä<wôê‰ý—v'MþuÏÏ3“¿Œþ™m›å³o\×ÙÑt†gŸñßvê$&4YŸ¸ðì¹½·ï¾ÌCËÿ+Âý8/ÿdÆã¥g/pkëÿµ®ùÒÕú¼¦ÿÖë³_†¾³ì혆¿ýíÈ~óuB¤}WH#æDõùúí7æñmω?„}¾Lþî÷æ«Ö-=sþÈÃG÷sóþmÏ¿þ–R–1È,,Ü}ýöÂ#§âöîkÏÞá»ö6Y¾&äçÕü’?ÄïW«ê‚•ÚüÆ.-ú=>eOܶ=ìH]|èä®k·æåSà\ÓÃù¯ Ä̬Ów¥^¿³åÒµ¯&^¸‚w|Þ}õôÍ'Y¹ÿ…GèK°K°K°K°K°TU©_¿CìÈðÈøÈÚµu®]«~hy®ô‰œ5©v¸4¬yè¤øðèñÑq±‘“Þw´ k\ˆ$«ª¦ò¯q +¯«Žæ}¢"c _:ðGÏIÑ££cq±ïˆÈ˜¨FŽ¦ôÖôV»–îhØÈ1h`íZýµàKÑÞÓ½ˆÈ÷£&5k†õ{EŽŽê7)2:†º;zrä;QŽÈØظøÈø¨ øÊ1zRÔäø¸IQŽÉcâÞ¥+ô#ó~ÏŽµkýÿ¹:Ž +endstream endobj 5 0 obj <</Intent 15 0 R/Name(Layer 1)/Type/OCG/Usage 16 0 R>> endobj 22 0 obj <</Intent 30 0 R/Name(Layer 1)/Type/OCG/Usage 31 0 R>> endobj 37 0 obj <</Intent 53 0 R/Name(Layer 1)/Type/OCG/Usage 54 0 R>> endobj 60 0 obj <</Intent 67 0 R/Name(Layer 1)/Type/OCG/Usage 68 0 R>> endobj 74 0 obj <</Intent 82 0 R/Name(Layer 1)/Type/OCG/Usage 83 0 R>> endobj 89 0 obj <</Intent 100 0 R/Name(Layer 1)/Type/OCG/Usage 101 0 R>> endobj 107 0 obj <</Intent 118 0 R/Name(Layer 1)/Type/OCG/Usage 119 0 R>> endobj 125 0 obj <</Intent 134 0 R/Name(Layer 1)/Type/OCG/Usage 135 0 R>> endobj 141 0 obj <</Intent 150 0 R/Name(Layer 1)/Type/OCG/Usage 151 0 R>> endobj 157 0 obj <</Intent 166 0 R/Name(Layer 1)/Type/OCG/Usage 167 0 R>> endobj 173 0 obj <</Intent 182 0 R/Name(Layer 1)/Type/OCG/Usage 183 0 R>> endobj 182 0 obj [/View/Design] endobj 183 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 166 0 obj [/View/Design] endobj 167 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 150 0 obj [/View/Design] endobj 151 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 134 0 obj [/View/Design] endobj 135 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 118 0 obj [/View/Design] endobj 119 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 100 0 obj [/View/Design] endobj 101 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 82 0 obj [/View/Design] endobj 83 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 67 0 obj [/View/Design] endobj 68 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 53 0 obj [/View/Design] endobj 54 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 30 0 obj [/View/Design] endobj 31 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 15 0 obj [/View/Design] endobj 16 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 190 0 obj [189 0 R] endobj 205 0 obj <</CreationDate(D:20161006171817-03'00')/Creator(Adobe Illustrator CC 2015 \(Windows\))/ModDate(D:20161013192722-03'00')>> endobj xref +0 206 +0000000004 65535 f +0000000016 00000 n +0000000312 00000 n +0000027806 00000 n +0000000006 00000 f +0000133736 00000 n +0000000008 00000 f +0000027857 00000 n +0000000009 00000 f +0000000010 00000 f +0000000011 00000 f +0000000012 00000 f +0000000013 00000 f +0000000014 00000 f +0000000017 00000 f +0000135705 00000 n +0000135736 00000 n +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000023 00000 f +0000133806 00000 n +0000000024 00000 f +0000000025 00000 f +0000000026 00000 f +0000000027 00000 f +0000000028 00000 f +0000000029 00000 f +0000000032 00000 f +0000135589 00000 n +0000135620 00000 n +0000000033 00000 f +0000000034 00000 f +0000000035 00000 f +0000000036 00000 f +0000000038 00000 f +0000133877 00000 n +0000000039 00000 f +0000000041 00000 f +0000029564 00000 n +0000000042 00000 f +0000000043 00000 f +0000000044 00000 f +0000000045 00000 f +0000000046 00000 f +0000000047 00000 f +0000000048 00000 f +0000000049 00000 f +0000000050 00000 f +0000000051 00000 f +0000000052 00000 f +0000000055 00000 f +0000135473 00000 n +0000135504 00000 n +0000000056 00000 f +0000000057 00000 f +0000000058 00000 f +0000000059 00000 f +0000000061 00000 f +0000133948 00000 n +0000000062 00000 f +0000000063 00000 f +0000000064 00000 f +0000000065 00000 f +0000000066 00000 f +0000000069 00000 f +0000135357 00000 n +0000135388 00000 n +0000000070 00000 f +0000000071 00000 f +0000000072 00000 f +0000000073 00000 f +0000000075 00000 f +0000134019 00000 n +0000000076 00000 f +0000000077 00000 f +0000000078 00000 f +0000000079 00000 f +0000000080 00000 f +0000000081 00000 f +0000000084 00000 f +0000135241 00000 n +0000135272 00000 n +0000000085 00000 f +0000000086 00000 f +0000000087 00000 f +0000000088 00000 f +0000000090 00000 f +0000134090 00000 n +0000000091 00000 f +0000000092 00000 f +0000000093 00000 f +0000000094 00000 f +0000000095 00000 f +0000000096 00000 f +0000000097 00000 f +0000000098 00000 f +0000000099 00000 f +0000000102 00000 f +0000135123 00000 n +0000135155 00000 n +0000000103 00000 f +0000000104 00000 f +0000000105 00000 f +0000000106 00000 f +0000000108 00000 f +0000134163 00000 n +0000000109 00000 f +0000000110 00000 f +0000000111 00000 f +0000000112 00000 f +0000000113 00000 f +0000000114 00000 f +0000000115 00000 f +0000000116 00000 f +0000000117 00000 f +0000000120 00000 f +0000135005 00000 n +0000135037 00000 n +0000000121 00000 f +0000000122 00000 f +0000000123 00000 f +0000000124 00000 f +0000000126 00000 f +0000134237 00000 n +0000000127 00000 f +0000000128 00000 f +0000000129 00000 f +0000000130 00000 f +0000000131 00000 f +0000000132 00000 f +0000000133 00000 f +0000000136 00000 f +0000134887 00000 n +0000134919 00000 n +0000000137 00000 f +0000000138 00000 f +0000000139 00000 f +0000000140 00000 f +0000000142 00000 f +0000134311 00000 n +0000000143 00000 f +0000000144 00000 f +0000000145 00000 f +0000000146 00000 f +0000000147 00000 f +0000000148 00000 f +0000000149 00000 f +0000000152 00000 f +0000134769 00000 n +0000134801 00000 n +0000000153 00000 f +0000000154 00000 f +0000000155 00000 f +0000000156 00000 f +0000000158 00000 f +0000134385 00000 n +0000000159 00000 f +0000000160 00000 f +0000000161 00000 f +0000000162 00000 f +0000000163 00000 f +0000000164 00000 f +0000000165 00000 f +0000000168 00000 f +0000134651 00000 n +0000134683 00000 n +0000000169 00000 f +0000000170 00000 f +0000000171 00000 f +0000000172 00000 f +0000000000 00000 f +0000134459 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000134533 00000 n +0000134565 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000071719 00000 n +0000135821 00000 n +0000028249 00000 n +0000072025 00000 n +0000071911 00000 n +0000030389 00000 n +0000061241 00000 n +0000029629 00000 n +0000029824 00000 n +0000029874 00000 n +0000071793 00000 n +0000071825 00000 n +0000072101 00000 n +0000072279 00000 n +0000073769 00000 n +0000085924 00000 n +0000135848 00000 n +trailer +<</Size 206/Root 1 0 R/Info 205 0 R/ID[<BF7041612CDA1248B542725B4EEBD5CC><FF417A6C0FF3E24A8349DD3D60C319D6>]>> +startxref +135988 +%%EOF diff --git a/src/img/logo_parceiros/impa.png b/src/img/logo_parceiros/impa.png new file mode 100644 index 0000000000000000000000000000000000000000..61120632bbbf8c020c19ccfedd42d35b73918943 Binary files /dev/null and b/src/img/logo_parceiros/impa.png differ diff --git a/src/img/logo_parceiros/impulsiona.png b/src/img/logo_parceiros/impulsiona.png new file mode 100644 index 0000000000000000000000000000000000000000..384bd3f78c67b8fed0ec910e12de43da22d8a388 Binary files /dev/null and b/src/img/logo_parceiros/impulsiona.png differ diff --git a/src/img/logo_parceiros/inst-peninsula.png b/src/img/logo_parceiros/inst-peninsula.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7d0f234870b25cb10c7539bde06ddd68aa630a Binary files /dev/null and b/src/img/logo_parceiros/inst-peninsula.png differ diff --git a/src/img/logo_parceiros/instituto-crescer.png b/src/img/logo_parceiros/instituto-crescer.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9157077120ecf1e3517775383b360b12dec54a Binary files /dev/null and b/src/img/logo_parceiros/instituto-crescer.png differ diff --git a/src/img/logo_parceiros/logo_bioe.png b/src/img/logo_parceiros/logo_bioe.png new file mode 100644 index 0000000000000000000000000000000000000000..2b050782ab8ad609b68262c8220ba7ce550f846c Binary files /dev/null and b/src/img/logo_parceiros/logo_bioe.png differ diff --git a/src/img/logo_parceiros/logo_dominiopublico.png b/src/img/logo_parceiros/logo_dominiopublico.png new file mode 100644 index 0000000000000000000000000000000000000000..16c0737187890f5e9da4cdd8556a1b286faa3216 Binary files /dev/null and b/src/img/logo_parceiros/logo_dominiopublico.png differ diff --git a/src/img/logo_parceiros/logo_escoladigital.png b/src/img/logo_parceiros/logo_escoladigital.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ed98e0fc0d8ba0bef95c6727297fe7427db2c9 Binary files /dev/null and b/src/img/logo_parceiros/logo_escoladigital.png differ diff --git a/src/img/logo_parceiros/logo_portaldoprofessor.png b/src/img/logo_parceiros/logo_portaldoprofessor.png new file mode 100644 index 0000000000000000000000000000000000000000..deb2ce6448dc5b36a04d05bd0e6ebd296379263a Binary files /dev/null and b/src/img/logo_parceiros/logo_portaldoprofessor.png differ diff --git a/src/img/logo_parceiros/logo_tvescola.png b/src/img/logo_parceiros/logo_tvescola.png new file mode 100644 index 0000000000000000000000000000000000000000..9067cbc112ec0b710ac2726f15ce59a62921ff60 Binary files /dev/null and b/src/img/logo_parceiros/logo_tvescola.png differ diff --git a/src/img/logo_parceiros/redeescola.png b/src/img/logo_parceiros/redeescola.png new file mode 100644 index 0000000000000000000000000000000000000000..724433f94fbfa77f051d44521c990dc2f0ed89d6 Binary files /dev/null and b/src/img/logo_parceiros/redeescola.png differ diff --git a/src/img/logo_parceiros/safer.png b/src/img/logo_parceiros/safer.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa865ea9e622a8b69ab6fc2a327c5a6cd5d9a25 Binary files /dev/null and b/src/img/logo_parceiros/safer.png differ diff --git a/src/img/logo_parceiros/telefonica.png b/src/img/logo_parceiros/telefonica.png new file mode 100644 index 0000000000000000000000000000000000000000..8507326e4de2df2eabab084b0d3f236cf1b560e4 Binary files /dev/null and b/src/img/logo_parceiros/telefonica.png differ diff --git a/src/img/no-rede-1.png b/src/img/no-rede-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4510823fa703462511b4b7f8f6643a2e72639f Binary files /dev/null and b/src/img/no-rede-1.png differ diff --git a/src/img/no-rede-2.png b/src/img/no-rede-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c94c169f7caecd6763d628b87e752a45b1cd1d79 Binary files /dev/null and b/src/img/no-rede-2.png differ diff --git a/src/img/no-rede-3.png b/src/img/no-rede-3.png new file mode 100644 index 0000000000000000000000000000000000000000..58b934c3bc3ee2dfa597b5386d66434973fca2cf Binary files /dev/null and b/src/img/no-rede-3.png differ diff --git a/src/img/object_type_icons/object-type_animacao.svg b/src/img/object_type_icons/object-type_animacao.svg new file mode 100644 index 0000000000000000000000000000000000000000..bcf7537f396b2e27b76fdde7792cd2fd0993ff24 --- /dev/null +++ b/src/img/object_type_icons/object-type_animacao.svg @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <rect x="2.8" y="38.6" class="st1" width="15.5" height="1.5"/> + <polygon class="st1" points="17.5,23.3 2.8,23.3 2.8,24.8 17.5,24.8 17.5,31.8 19,31.8 19,16.3 17.5,16.3 "/> + <polygon class="st1" points="24.2,31.6 22.7,31.6 22.7,47.1 24.2,47.1 24.2,40.1 49.2,40.1 49.2,38.6 24.2,38.6 "/> + <polygon class="st1" points="34.5,7.8 34.5,0.8 33,0.8 33,16.3 34.5,16.3 34.5,9.3 49.2,9.3 49.2,7.8 "/> + <rect x="23.5" y="23.3" class="st1" width="25.7" height="1.5"/> + <rect x="2.8" y="7.8" class="st1" width="25.7" height="1.5"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_aplicativo-movel.svg b/src/img/object_type_icons/object-type_aplicativo-movel.svg new file mode 100644 index 0000000000000000000000000000000000000000..2b6a3c2f802bf7eb3e1844c53ba9f3a0cf2c5be0 --- /dev/null +++ b/src/img/object_type_icons/object-type_aplicativo-movel.svg @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M34.4,2.4H17.6c-2.6,0-4.8,2.1-4.8,4.8v33.6c0,2.6,2.1,4.8,4.8,4.8h16.9c2.6,0,4.8-2.1,4.8-4.8V7.2 + C39.2,4.5,37.1,2.4,34.4,2.4z M14.3,8.3h23.4v29.6H14.3V8.3z M17.6,3.9h16.9c1.8,0,3.3,1.5,3.3,3.3v0.1H14.3V7.2 + C14.3,5.4,15.8,3.9,17.6,3.9z M34.4,44H17.6c-1.8,0-3.3-1.5-3.3-3.3v-1.9h23.4v1.9C37.7,42.5,36.2,44,34.4,44z"/> + <path class="st1" d="M28.4,40.4h-4.7c-0.6,0-1,0.4-1,1s0.4,1,1,1h4.7c0.6,0,1-0.4,1-1S28.9,40.4,28.4,40.4z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_apresentacao.svg b/src/img/object_type_icons/object-type_apresentacao.svg new file mode 100644 index 0000000000000000000000000000000000000000..7dc07625646842e55faea44dccffe6d9237e661d --- /dev/null +++ b/src/img/object_type_icons/object-type_apresentacao.svg @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M49.3,5.1h-2.3c-0.1,0-0.2,0-0.3,0H41h-9.7C31,2.6,28.7,0.5,26,0.5c-2.7,0-5,2-5.3,4.6H7.3h-2 + c-0.1,0-0.2,0-0.3,0H2.8C2.3,5.1,2,5.5,2,5.9v0c0,0.4,0.3,0.8,0.8,0.8h1.6v29.5c0,0.4,0.3,0.8,0.8,0.8h12.4l-2.8,9.5 + c0,0.1,0,0.1,0,0.2c0,0.3,0.2,0.6,0.5,0.7c0.4,0.1,0.8-0.1,0.9-0.5l3-9.9h14l3,9.9c0.1,0.3,0.4,0.5,0.7,0.5c0.1,0,0.1,0,0.2,0 + c0.3-0.1,0.5-0.4,0.5-0.7c0-0.1,0-0.1,0-0.2l-2.8-9.5h12.4c0.4,0,0.8-0.3,0.8-0.8V6.7h1.6c0.4,0,0.8-0.4,0.8-0.8S49.7,5.1,49.3,5.1 + z M26,2c1.9,0,3.5,1.4,3.8,3.1h-7.6C22.5,3.4,24.1,2,26,2z M46.2,35.4H33.6H5.8V6.7h1.5h14h9.3H41h5.2V35.4z"/> + <path class="st1" d="M9.2,10.6v20.9c0,0.3,0.2,0.5,0.5,0.5h32.6c0.3,0,0.5-0.2,0.5-0.5V10.6c0-0.3-0.2-0.5-0.5-0.5H9.7 + C9.4,10.1,9.2,10.3,9.2,10.6z M10.2,11.1h31.6V31H10.2V11.1z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_audio.svg b/src/img/object_type_icons/object-type_audio.svg new file mode 100644 index 0000000000000000000000000000000000000000..c7905aececcf6588df174d6e92c322d8ffe515fd --- /dev/null +++ b/src/img/object_type_icons/object-type_audio.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M42.6,9.4c-3.3-4.1-7.7-6.8-12.9-8c-0.4-0.1-0.8,0.1-0.9,0.5c-0.1,0.4,0.1,0.8,0.5,0.9c4.9,1.2,9,3.7,12.1,7.5 + c3.1,3.8,4.7,8.4,4.8,13.6c-0.1,5.3-1.7,9.9-4.8,13.7c-3.1,3.8-7.2,6.3-12.1,7.5c-0.4,0.1-0.6,0.5-0.5,0.9c0.1,0.3,0.4,0.6,0.7,0.6 + c0.1,0,0.1,0,0.2,0c5.2-1.3,9.5-4,12.9-8c3.3-4.1,5.1-9,5.2-14.6C47.7,18.3,46,13.4,42.6,9.4z"/> + <path class="st1" d="M29.2,33.2c-0.4,0.2-0.5,0.6-0.4,1c0.1,0.3,0.4,0.4,0.7,0.4c0.1,0,0.2,0,0.3-0.1c2-0.9,3.6-2.3,4.8-4.2 + c1.2-1.9,1.8-4,1.8-6.4s-0.6-4.6-1.8-6.4c-1.2-1.9-2.8-3.3-4.8-4.3c-0.4-0.2-0.8,0-1,0.3c-0.2,0.4,0,0.8,0.3,1 + c1.7,0.9,3.2,2.1,4.2,3.8c1,1.6,1.6,3.5,1.6,5.6s-0.5,4-1.6,5.6C32.4,31.2,31,32.4,29.2,33.2z"/> + <path class="st1" d="M24.8,3.2c-0.3-0.1-0.6-0.1-0.8,0.2L11.8,15.6H5c-0.4,0-0.8,0.3-0.8,0.8v15c0,0.4,0.3,0.8,0.8,0.8h6.6L24,44.5 + c0.1,0.1,0.3,0.2,0.5,0.2c0.1,0,0.2,0,0.3-0.1c0.3-0.1,0.5-0.4,0.5-0.7V3.9C25.3,3.6,25.1,3.3,24.8,3.2z M5.7,17.1H8V21 + c0,0.3,0.2,0.5,0.5,0.5S9,21.3,9,21v-3.9h2.3v13.5H9v-3.9c0-0.3-0.2-0.5-0.5-0.5S8,26.4,8,26.7v3.9H5.7V17.1z M23.8,42.2l-11-11 + V16.8l11-11V42.2z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_imagem.svg b/src/img/object_type_icons/object-type_imagem.svg new file mode 100644 index 0000000000000000000000000000000000000000..c6cc9fa5b8312e4843289c51d4e3b6af95ee1e5b --- /dev/null +++ b/src/img/object_type_icons/object-type_imagem.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M47.5,2.3c-1.1-1.1-2.5-1.6-4.1-1.6H8.5c-1.6,0-3,0.6-4.1,1.7C3.3,3.5,2.8,4.9,2.8,6.5v34.9 + c0,1.6,0.6,3,1.7,4.1c1.1,1.1,2.5,1.7,4.1,1.7h35c1.6,0,2.9-0.6,4-1.7c1.1-1.1,1.7-2.5,1.7-4.1V6.5C49.3,4.8,48.6,3.4,47.5,2.3z + M47.6,41.3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2H8.5c-1.2,0-2.2-0.4-3-1.2s-1.2-1.8-1.2-3V6.4c0-1.2,0.4-2.2,1.2-3 + s1.8-1.2,3-1.2h34.8c1.3,0,2.3,0.4,3.1,1.2c0.8,0.8,1.2,1.8,1.2,3.1V41.3z"/> + <path class="st1" d="M23.5,34l-6.3-7.5L7,39.7h38l-12.8-17L23.5,34z M10.1,38.2l7.2-9.3l6.3,7.5l8.6-11.2l9.8,13H10.1z"/> + <path class="st1" d="M37.8,36c0.1,0.1,0.2,0.2,0.4,0.2c0.1,0,0.2,0,0.3-0.1c0.2-0.2,0.3-0.5,0.1-0.7l-5.3-6.7 + c-0.2-0.2-0.5-0.3-0.7-0.1c-0.2,0.2-0.3,0.5-0.1,0.7L37.8,36z"/> + <path class="st1" d="M13.6,20.2c2.3,0,4.3-1.9,4.3-4.3s-1.9-4.3-4.3-4.3S9.4,13.7,9.4,16S11.3,20.2,13.6,20.2z M13.6,13.2 + c1.5,0,2.8,1.2,2.8,2.8s-1.2,2.8-2.8,2.8s-2.8-1.2-2.8-2.8S12.1,13.2,13.6,13.2z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_infografico.svg b/src/img/object_type_icons/object-type_infografico.svg new file mode 100644 index 0000000000000000000000000000000000000000..b17502d0cc1b45ac62b4d5193f272452e66bc99e --- /dev/null +++ b/src/img/object_type_icons/object-type_infografico.svg @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 72 47.7" style="enable-background:new 0 0.1 72 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.2" class="st0" width="71.9" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <rect x="46.1" y="36.3" class="st1" width="24.1" height="1"/> + <rect x="46.1" y="29" class="st1" width="24.1" height="1"/> + <rect x="46.1" y="21.7" class="st1" width="24.1" height="1"/> + <rect x="46.1" y="14.4" class="st1" width="24.1" height="1"/> + <path class="st1" d="M23.4,20.8c0.1,0,0.2,0,0.3-0.1l13.9-8c0.1-0.1,0.2-0.2,0.2-0.3s0-0.3-0.1-0.4c-3.2-4.8-8.5-7.9-14.3-8.2 + c-0.1,0-0.3,0-0.4,0.1c-0.1,0.1-0.2,0.2-0.2,0.4v16c0,0.2,0.1,0.3,0.3,0.4C23.2,20.8,23.3,20.8,23.4,20.8z M23.9,4.8 + c5.1,0.4,9.8,3.1,12.7,7.3l-12.7,7.3V4.8z"/> + <path class="st1" d="M36.3,17c-0.2-0.1-0.4,0-0.6,0.1L20.4,26l0,0l-0.3,0.2v-18c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.1-0.4-0.2-0.6-0.2 + C9.5,7.9,1.8,16,1.8,25.8c0,10.2,8.3,18.5,18.5,18.5S38.7,36,38.7,25.8c0-2.9-0.7-5.7-2-8.4C36.6,17.2,36.5,17.1,36.3,17z + M20.3,42.7c-9.4,0-17-7.6-17-17c0-8.7,6.6-16,15.3-16.9v18.5c0,0.3,0.1,0.5,0.4,0.6c0.2,0.1,0.5,0.1,0.8,0l1.4-0.8h0l14.6-8.4 + c1,2.2,1.5,4.5,1.5,7C37.2,35.1,29.6,42.7,20.3,42.7z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_jogo.svg b/src/img/object_type_icons/object-type_jogo.svg new file mode 100644 index 0000000000000000000000000000000000000000..5f924ad9d8ea29e38cc7ac447a328d1defe7788f --- /dev/null +++ b/src/img/object_type_icons/object-type_jogo.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M34.2,28.5c-2.1,0-3.9,1.7-3.9,3.9c0,2.1,1.7,3.9,3.9,3.9s3.9-1.7,3.9-3.9C38.1,30.2,36.3,28.5,34.2,28.5z + M34.2,34.7c-1.3,0-2.4-1.1-2.4-2.4c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4C36.6,33.6,35.5,34.7,34.2,34.7z"/> + <path class="st1" d="M40.4,22.3c-2.1,0-3.9,1.7-3.9,3.9s1.7,3.9,3.9,3.9c2.1,0,3.9-1.7,3.9-3.9S42.5,22.3,40.4,22.3z M40.4,28.5 + c-1.3,0-2.4-1.1-2.4-2.4s1.1-2.4,2.4-2.4c1.3,0,2.4,1.1,2.4,2.4S41.7,28.5,40.4,28.5z"/> + <path class="st1" d="M19.6,26.5h-3.1v-3.1c0-0.4-0.3-0.8-0.8-0.8h-3.9c-0.4,0-0.8,0.3-0.8,0.8v3.1H7.9c-0.4,0-0.8,0.3-0.8,0.8v3.9 + c0,0.4,0.3,0.8,0.8,0.8H11v3.1c0,0.4,0.3,0.8,0.8,0.8h3.9c0.4,0,0.8-0.3,0.8-0.8v-3.1h3.1c0.4,0,0.8-0.3,0.8-0.8v-3.9 + C20.3,26.8,20,26.5,19.6,26.5z M18.8,30.4h-3.1c-0.4,0-0.8,0.3-0.8,0.8v3.1h-2.4v-3.1c0-0.4-0.3-0.8-0.8-0.8H8.6V28h3.1 + c0.4,0,0.8-0.3,0.8-0.8v-3.1h2.4v3.1c0,0.4,0.3,0.8,0.8,0.8h3.1V30.4z"/> + <path class="st1" d="M37.3,14.9H14.7c-7.9,0-14.3,6.4-14.3,14.3c0,7.9,6.4,14.3,14.3,14.3c4,0,7.7-1.6,10.4-4.5h1.7 + c2.7,2.9,6.5,4.5,10.4,4.5c7.9,0,14.3-6.4,14.3-14.3C51.6,21.3,45.2,14.9,37.3,14.9z M37.3,42c-3.6,0-7.1-1.6-9.5-4.3 + c-0.1-0.2-0.3-0.3-0.6-0.3h-2.4c-0.2,0-0.4,0.1-0.6,0.3c-2.4,2.7-5.9,4.3-9.5,4.3C7.6,42,1.9,36.3,1.9,29.2 + c0-7.1,5.8-12.8,12.8-12.8h22.6c7.1,0,12.8,5.8,12.8,12.8C50.1,36.3,44.4,42,37.3,42z"/> + <path class="st1" d="M34.8,10.9c9.8,0,9.9-6.4,9.9-6.5h-1.5c0,0-0.1,5-8.4,5c-9.7,0-9.8,4.5-9.8,4.7l1.5,0 + C26.4,14,26.7,10.9,34.8,10.9z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_livro-digital.svg b/src/img/object_type_icons/object-type_livro-digital.svg new file mode 100644 index 0000000000000000000000000000000000000000..b3cafb622f6598da72fe44f7a9c2e54ff9399386 --- /dev/null +++ b/src/img/object_type_icons/object-type_livro-digital.svg @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M10.8,38.2h30.3V5.9H10.8V38.2z M12.3,7.4h27.3v29.3H12.3V7.4z"/> + <path class="st1" d="M39.5,0.1H12.5C9.5,0.1,7,2.6,7,5.7v36.5c0,3.1,2.5,5.6,5.6,5.6h26.9c3.1,0,5.6-2.5,5.6-5.6V5.7 + C45,2.6,42.5,0.1,39.5,0.1z M43.5,42.2c0,2.2-1.8,4.1-4.1,4.1H12.5c-2.2,0-4.1-1.8-4.1-4.1V5.7c0-2.2,1.8-4.1,4.1-4.1h26.9 + c2.2,0,4.1,1.8,4.1,4.1V42.2z"/> + <rect x="17.3" y="30.4" class="st1" width="19" height="1"/> + <rect x="17.3" y="24.6" class="st1" width="19" height="1"/> + <rect x="17.3" y="18.9" class="st1" width="19" height="1"/> + <rect x="21.5" y="13.1" class="st1" width="14.7" height="1"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_mapa.svg b/src/img/object_type_icons/object-type_mapa.svg new file mode 100644 index 0000000000000000000000000000000000000000..ba45576f7b2add93bfff978bee58313eeee391ce --- /dev/null +++ b/src/img/object_type_icons/object-type_mapa.svg @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M49.2,6.3L33.7,3.7c-0.1,0-0.2,0-0.2,0c0,0,0,0-0.1,0c-0.1,0-0.1,0-0.2,0L18.4,7.3c0,0,0,0-0.1,0 + c-0.1,0-0.1,0-0.2,0L3.1,3.7c-0.2-0.1-0.5,0-0.6,0.1C2.3,4,2.2,4.2,2.2,4.4v7.9c0,0,0,0,0,0s0,0,0,0v26.8c0,0.3,0.2,0.6,0.5,0.7 + l15.5,4.3c0.1,0,0.3,0,0.4,0L34,40.1l14.8,4.1c0.1,0,0.1,0,0.2,0c0.2,0,0.3-0.1,0.5-0.2c0.2-0.1,0.3-0.4,0.3-0.6V7.1 + C49.8,6.7,49.5,6.4,49.2,6.3z M3.7,5.4l13.8,3.3v27.2c0,0.4,0.3,0.8,0.8,0.8s0.8-0.3,0.8-0.8V8.6l13.7-3.3v33.5l-13.7,3.7v-3.2 + c0-0.4-0.3-0.8-0.8-0.8s-0.8,0.3-0.8,0.8v3.1L3.7,38.6V5.4z M48.3,42.5l-14.1-3.9c0,0,0,0,0,0V5.3l14.1,2.4V42.5z"/> + <path class="st1" d="M41.9,38.6l3.6,1c0,0,0.1,0,0.1,0c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0,0c0.1-0.1,0.1-0.1,0.2-0.2c0,0,0,0,0,0 + c0,0,0,0,0-0.1c0,0,0,0,0-0.1v-3.3c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5v2.6l-2.9-0.8c-0.3-0.1-0.5,0.1-0.6,0.3 + C41.5,38.3,41.7,38.5,41.9,38.6z"/> + <path class="st1" d="M9.4,8.4L6.2,7.7c0,0,0,0-0.1,0c0,0,0,0-0.1,0c0,0,0,0,0,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0,0,0-0.1,0 + c0,0-0.1,0-0.1,0.1c0,0,0,0,0,0.1c0,0,0,0.1,0,0.1c0,0,0,0,0,0c0,0,0,0,0,0.1c0,0,0,0,0,0.1v3.2c0,0.3,0.2,0.5,0.5,0.5 + s0.5-0.2,0.5-0.5V8.8l2.5,0.6c0,0,0.1,0,0.1,0c0.2,0,0.4-0.2,0.5-0.4C9.8,8.8,9.6,8.5,9.4,8.4z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_outros.svg b/src/img/object_type_icons/object-type_outros.svg new file mode 100644 index 0000000000000000000000000000000000000000..85949020fad02fc7e0744b0f5b51adf77dd726a2 --- /dev/null +++ b/src/img/object_type_icons/object-type_outros.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g id="Camada_6_7_"> + <g> + <g> + <g> + <g> + <path class="st1" d="M16.9,24c0-1.5,1-2.5,2.4-2.5s2.3,1,2.3,2.5c0,1.4-0.9,2.5-2.4,2.5C17.9,26.4,16.9,25.4,16.9,24z"/> + </g> + <g> + <path class="st1" d="M26.6,24c0-1.5,1-2.5,2.4-2.5s2.3,1,2.3,2.5c0,1.4-0.9,2.5-2.4,2.5C27.6,26.4,26.6,25.4,26.6,24z"/> + </g> + <g> + <path class="st1" d="M36.3,24c0-1.5,1-2.5,2.4-2.5s2.3,1,2.3,2.5c0,1.4-0.9,2.5-2.4,2.5C37.3,26.4,36.3,25.4,36.3,24z"/> + </g> + </g> + <g> + <path class="st1" d="M46.8,43.5H15.7c-1.8-0.1-3.1-0.8-4.1-2.2L0.1,24L11.6,6.6c0.9-1.4,2.2-2.1,3.9-2.2h31.3 + c1.4,0,2.5,0.5,3.5,1.4l0,0c1,1,1.5,2.2,1.5,3.6v29.1c0,1.4-0.5,2.6-1.4,3.5C49.4,43,48.2,43.5,46.8,43.5z M1.9,24l11,16.5 + c0.7,1,1.7,1.5,2.9,1.5h31c1,0,1.8-0.3,2.5-1s1-1.5,1-2.5V9.4c0-1-0.3-1.8-1-2.5l0,0c-0.7-0.6-1.5-1-2.5-1H15.5 + c-1.1,0.1-2,0.6-2.7,1.6L1.9,24z"/> + </g> + </g> + </g> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_software-educacional.svg b/src/img/object_type_icons/object-type_software-educacional.svg new file mode 100644 index 0000000000000000000000000000000000000000..eebeb2a75ea96bfb0979211b84991fe3288e8382 --- /dev/null +++ b/src/img/object_type_icons/object-type_software-educacional.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD5;} +</style> +<path class="st0" d="M0,0h60v60H0V0z"/> +<g> + <path class="st1" d="M48.7,10.6H11.3c-2.6,0-4.7,2.1-4.7,4.7v24.9c0,2.6,2.1,4.7,4.7,4.7h18.4v2.6h-8c-0.6,0-1,0.4-1,1s0.4,1,1,1 + h16.6c0.6,0,1-0.4,1-1s-0.4-1-1-1h-8v-2.6h18.4c2.6,0,4.7-2.1,4.7-4.7V15.3C53.4,12.7,51.3,10.6,48.7,10.6z M52.4,40.2 + c0,2-1.6,3.7-3.7,3.7H11.3c-2,0-3.7-1.6-3.7-3.7V15.3c0-2,1.6-3.7,3.7-3.7h37.4c2,0,3.7,1.6,3.7,3.7V40.2z"/> + <path class="st1" d="M46.4,14.8H13.6c-1.6,0-2.8,1.3-2.8,2.9v20.2c0,1.6,1.3,2.9,2.8,2.9h32.7c1.6,0,2.9-1.3,2.9-2.9V17.6 + C49.2,16,47.9,14.8,46.4,14.8z M48.2,37.8c0,1-0.8,1.9-1.9,1.9H13.6c-1,0-1.8-0.8-1.8-1.9V17.6c0-1,0.8-1.9,1.8-1.9h32.7 + c1,0,1.9,0.8,1.9,1.9V37.8z"/> + <path class="st1" d="M34.4,21.4c-0.2-0.2-0.5-0.2-0.7,0l-1.4,1.4c-0.2,0.2-0.2,0.5,0,0.7l4.2,4.2L32.2,32c-0.2,0.2-0.2,0.5,0,0.7 + l1.4,1.4c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1l6-6c0.2-0.2,0.2-0.5,0-0.7L34.4,21.4z M34,33l-0.7-0.7l4.2-4.2 + c0.2-0.2,0.2-0.5,0-0.7l-4.2-4.2l0.7-0.7l5.3,5.3L34,33z"/> + <path class="st1" d="M27.9,23.1c0-0.1-0.1-0.3-0.1-0.4l-1.4-1.4c-0.2-0.2-0.5-0.2-0.7,0l-6,6c-0.2,0.2-0.2,0.5,0,0.7l6,6 + c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1l1.4-1.4c0.1-0.1,0.1-0.2,0.1-0.4s-0.1-0.3-0.1-0.4l-4.2-4.2l4.2-4.2 + C27.8,23.4,27.9,23.3,27.9,23.1z M22.4,27.4c-0.1,0.1-0.1,0.2-0.1,0.4s0.1,0.3,0.1,0.4l4.2,4.2L26,33l-5.3-5.3l5.3-5.3l0.7,0.7 + L22.4,27.4z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_texto.svg b/src/img/object_type_icons/object-type_texto.svg new file mode 100644 index 0000000000000000000000000000000000000000..13a99e1f67ba0484d5a463b6259a173d9930ce93 --- /dev/null +++ b/src/img/object_type_icons/object-type_texto.svg @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <rect x="15.6" y="32.1" class="st1" width="21.3" height="1"/> + <rect x="15.6" y="25.9" class="st1" width="21.3" height="1"/> + <rect x="15.6" y="19.7" class="st1" width="21.3" height="1"/> + <rect x="15.6" y="13.5" class="st1" width="9.8" height="1"/> + <path class="st1" d="M41.8,12.2L31.2,1.7c-0.1-0.1-0.3-0.2-0.5-0.2h-16c-2.6,0-4.7,2.1-4.7,4.7v35.5c0,2.6,2.1,4.7,4.7,4.7h22.7 + c2.6,0,4.7-2.1,4.7-4.7V12.8C42,12.6,41.9,12.4,41.8,12.2z M40.5,13.1v0.2h-7c-1.9,0-3.4-1.5-3.4-3.4V3h0.3L40.5,13.1z M37.3,44.9 + H14.7c-1.7,0-3.2-1.4-3.2-3.2V6.2c0-1.7,1.4-3.2,3.2-3.2h14.5v6.9c0,2.4,2,4.4,4.4,4.4h7v27.4C40.5,43.5,39.1,44.9,37.3,44.9z"/> +</g> +</svg> diff --git a/src/img/object_type_icons/object-type_video.svg b/src/img/object_type_icons/object-type_video.svg new file mode 100644 index 0000000000000000000000000000000000000000..1879fd2889832593b8c4d571676eef7ab3613676 --- /dev/null +++ b/src/img/object_type_icons/object-type_video.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M34,19.4l-13.7-7.8c-0.2-0.1-0.5-0.1-0.7,0c-0.2,0.1-0.4,0.4-0.4,0.6v15.6c0,0.3,0.1,0.5,0.4,0.6 + c0.1,0.1,0.2,0.1,0.4,0.1c0.1,0,0.3,0,0.4-0.1L34,20.7c0.2-0.1,0.4-0.4,0.4-0.7S34.3,19.5,34,19.4z M20.7,26.5v-13L32.2,20 + L20.7,26.5z"/> + <path class="st1" d="M42.1,40.5c-1.2,0-2.2,0.9-2.5,2H0.4v1h39.3c0.2,1.2,1.3,2,2.5,2s2.2-0.9,2.5-2h7v-1h-7 + C44.4,41.3,43.4,40.5,42.1,40.5z M42.1,44.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5S43,44.5,42.1,44.5z"/> + <path class="st1" d="M46.1,2.4H5.9C2.7,2.4,0.1,5,0.1,8.1v23.8c0,3.2,2.6,5.8,5.8,5.8h40.3c3.2,0,5.8-2.6,5.8-5.8V8.1 + C51.9,5,49.3,2.4,46.1,2.4z M50.4,31.9c0,2.3-1.9,4.3-4.3,4.3H5.9c-2.3,0-4.3-1.9-4.3-4.3V8.1c0-2.3,1.9-4.3,4.3-4.3h40.3 + c2.3,0,4.3,1.9,4.3,4.3V31.9z"/> + <path class="st1" d="M3.5,9.2v0.5h1V9.2c0-1.4,1.1-2.5,2.5-2.5h0.5v-1H7C5.1,5.7,3.5,7.3,3.5,9.2z"/> + <path class="st1" d="M47.5,30.8c0,1.4-1.1,2.5-2.5,2.5h-0.5v1H45c1.9,0,3.5-1.6,3.5-3.5v-0.5h-1V30.8z"/> +</g> +</svg> diff --git a/src/img/sobre/Alunos.png b/src/img/sobre/Alunos.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cc74ac056abd4caba2c7993b9f33cf80752081 Binary files /dev/null and b/src/img/sobre/Alunos.png differ diff --git a/src/img/sobre/Gestores.png b/src/img/sobre/Gestores.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f928d813ae2ae3a26175f0bd85ab3080ff0f20 Binary files /dev/null and b/src/img/sobre/Gestores.png differ diff --git a/src/img/sobre/Imagem_Notebook.png b/src/img/sobre/Imagem_Notebook.png new file mode 100644 index 0000000000000000000000000000000000000000..c81ae5dcb49cbf094683bbccb9b93ef6b49e9bab Binary files /dev/null and b/src/img/sobre/Imagem_Notebook.png differ diff --git a/src/img/sobre/agpl.svg b/src/img/sobre/agpl.svg new file mode 100644 index 0000000000000000000000000000000000000000..51d7c5add46d8b62434ea8eb2be889901413e48d --- /dev/null +++ b/src/img/sobre/agpl.svg @@ -0,0 +1,269 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="580" + height="240" + id="svg1341" + sodipodi:version="0.32" + inkscape:version="0.91 r13725" + sodipodi:docname="agpl.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.71481481" + inkscape:cx="140.51211" + inkscape:cy="-29.176071" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:window-width="1920" + inkscape:window-height="1027" + inkscape:window-x="0" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true" + width="18in" + height="12in" + units="px" + showborder="true" + showgrid="false" + inkscape:window-maximized="1"> + <sodipodi:guide + orientation="horizontal" + position="1885.3861" + id="guide2344" /> + <sodipodi:guide + orientation="horizontal" + position="2033.8652" + id="guide2346" /> + <sodipodi:guide + orientation="vertical" + position="-820.12302" + id="guide3321" /> + <sodipodi:guide + orientation="vertical" + position="-118.58401" + id="guide3323" /> + <sodipodi:guide + orientation="horizontal" + position="965.80899" + id="guide5223" /> + <sodipodi:guide + orientation="horizontal" + position="830.01431" + id="guide5235" /> + </sodipodi:namedview> + <defs + id="defs1343" /> + <metadata + id="metadata1346"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + id="layer1" + inkscape:groupmode="layer" + transform="translate(0,-839.99996)"> + <g + id="g2694" + transform="matrix(1.7332024,0,0,1.7332024,-58.651483,-335.25677)"> + <path + d="m 225.50908,761.79412 c 0,0 -0.007,0 -0.007,0 -0.61733,0 -1.1624,0.20365 -1.67471,0.61745 -0.38093,0.30204 -0.6437,0.70934 -0.85386,1.16252 0,0 0.0263,0 0.0263,0 0.21015,-0.45318 0.47293,-0.86048 0.84723,-1.16252 0.51231,-0.4138 1.05738,-0.61082 1.6617,-0.61745 z" + id="path3550" + style="fill:#bd0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter" + inkscape:connector-curvature="0" /> + <path + d="m 225.52872,761.79412 c -0.007,0 -0.0131,0 -0.0196,0 0.63708,0.007 1.05739,0.2234 1.3398,0.68971 0.12477,0.19702 0.1904,0.49256 0.1904,0.86686 0,0.0658 -0.0131,0.15114 -0.0196,0.2234 0,0 0.0262,0 0.0262,0 0,-0.0723 0.0131,-0.15764 0.0131,-0.2234 0,-0.3743 -0.0591,-0.66984 -0.1839,-0.86686 -0.28241,-0.47293 -0.70933,-0.68971 -1.34641,-0.68971 z" + id="path3554" + style="fill:#bd0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter" + inkscape:connector-curvature="0" /> + <g + transform="matrix(0.385154,0,0,0.385154,330.53849,1073.2023)" + id="g3556" + style="fill:#663366;fill-opacity:1"> + <g + transform="matrix(1.705222,0,0,1.705222,-769.6823,-728.9956)" + id="g3558" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 0,36 c 0,0 7.46,0 7.46,0 0,0 3.35,-14 3.35,-14 0,0 12.12,0 12.12,0 0,0 1.56,-6 1.56,-6 0,0 -12.17,0 -12.17,0 0,0 2.02,-9 2.02,-9 0,0 12.95,0 12.95,0 0,0 1.56,-7 1.56,-7 C 28.85,0 8.4,0 8.4,0 8.4,0 0,36 0,36 Z" + id="path3560" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-725.4318,-711.9434)" + id="g3562" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 7.51,26 c 0,0 2.24,-9.4 2.24,-9.4 1.18,-5.09 3.67,-9.6 8.38,-9.6 0.42,0 0.83,0.21 1.14,0.26 0,0 1.82,-7.21 1.82,-7.21 -0.42,0 -0.88,-0.05 -1.4,-0.05 -3.47,0 -6.38,2.44 -8.32,5.94 0,0 -0.2,0 -0.2,0 C 11.46,4.23 11.71,2.61 11.9,1 11.9,1 5.47,1 5.47,1 5.1,3.08 4.53,7.15 3.66,10.82 3.66,10.82 0,26 0,26 c 0,0 7.51,0 7.51,0 z" + id="path3564" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-690.253,-711.9434)" + id="g3566" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 20.06,19.25 C 17.99,20.26 15.63,20 12.88,20 10.71,20 9.03,19.62 8.11,18.88 7.63,18.07 7.43,16.81 7.47,16 17.6,16.27 23.99,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.73,0 0.73,8.08 0.34,15.86 0,22.65 3.52,26 10.78,26 c 2.79,0 6.49,-0.32 9.52,-1.23 0,0 -0.24,-5.52 -0.24,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.47,10 9.1,7.91 11.22,6 14.69,6 c 1.71,0 2.69,0.65 2.63,1.53 z" + id="path3568" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-645.0305,-711.9434)" + id="g3570" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 20.05,19.25 C 17.98,20.26 15.62,20 12.88,20 10.7,20 9.03,19.62 8.11,18.88 7.63,18.07 7.42,16.81 7.46,16 17.6,16.27 23.98,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.72,0 0.72,8.08 0.33,15.86 0,22.65 3.52,26 10.77,26 c 2.8,0 6.5,-0.32 9.53,-1.23 0,0 -0.25,-5.52 -0.25,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.46,10 9.1,7.91 11.21,6 14.68,6 c 1.71,0 2.7,0.65 2.64,1.53 z" + id="path3572" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-583.796,-711.9434)" + id="g3574" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 22.74,26 C 22.8,22.83 23.56,17.85 24.35,14.58 24.35,14.58 27.56,1 27.56,1 25.52,0.31 22.34,0 19.28,0 6.86,0 0.7,9.2 0.27,17.82 0,23.23 2.93,26 7.49,26 c 2.95,0 6.28,-1.43 8.87,-5.73 0,0 0.11,0 0.11,0 -0.2,2.07 -0.44,4.08 -0.57,5.73 0,0 6.84,0 6.84,0 z M 17.61,11.72 C 16.15,18.08 13.17,20 10.95,20 8.88,20 7.98,18.53 8.1,16.39 8.34,11.56 12.16,6 16.98,6 c 0.78,0 1.39,-0.14 1.96,-0.28 0,0 -1.33,6 -1.33,6 z" + id="path3576" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-536.6807,-711.9434)" + id="g3578" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 0,24.82 c 1.44,1.12 4.46,1.13 7.61,1.18 6.73,0.05 11.81,-2.89 12.11,-8.29 0.17,-3.6 -2.62,-5.73 -5.35,-7.16 C 12.4,9.6 11.41,8.69 11.46,7.63 11.53,6.2 12.87,6 14.84,6 c 2.22,0 4,0.27 5.02,0.47 0,0 2.02,-5.42 2.02,-5.42 C 20.73,0.36 18.43,0 15.48,0 8.95,0 4.17,3.45 3.9,8.69 c -0.16,3.24 2.17,5.42 4.99,6.9 2.28,1.17 3.06,2.07 3,3.34 C 11.82,20.21 10.68,20 8.61,20 6.18,20 3.49,19.68 2.07,19.46 2.07,19.46 0,24.82 0,24.82 Z" + id="path3580" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-481.3463,-730.7008)" + id="g3582" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 7.45,37 c 0,0 6.05,-25 6.05,-25 0,0 -7.41,0 -7.41,0 0,0 -6.09,25 -6.09,25 0,0 7.45,0 7.45,0 z M 10.92,9 C 13.46,9 15.72,6.9 15.86,3.3 15.98,0.86 14.4,0 12.07,0 9.64,0 7.42,1.58 7.29,3.94 7.17,6.32 8.75,9 10.92,9 Z" + id="path3584" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-456.9787,-710.7668)" + id="g3586" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 7.46,25.31 c 0,0 2.64,-11.26 2.64,-11.26 1.37,-5.73 4.32,-7.74 6.75,-7.74 1.92,0 2.48,0.82 2.39,2.01 -0.05,0.96 -0.2,1.97 -0.4,2.87 0,0 -3.36,14.12 -3.36,14.12 0,0 7.46,0 7.46,0 0,0 3.54,-14.81 3.54,-14.81 C 26.75,9.22 27.05,7.31 27.11,6.15 27.33,1.64 25.08,0 20.94,0 c -3.32,0 -6.55,1.54 -9.1,4.88 0,0 -0.1,0 -0.1,0 0,0 0.68,-4.57 0.68,-4.57 0,0 -6.58,0 -6.58,0 C 5.41,2.45 4.86,5.04 4.08,8.06 4.08,8.06 0,25.31 0,25.31 c 0,0 7.46,0 7.46,0 z" + id="path3588" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-389.5201,-728.9956)" + id="g3590" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 0,36 c 0,0 7.46,0 7.46,0 0,0 3.36,-14 3.36,-14 0,0 12.11,0 12.11,0 0,0 1.56,-6 1.56,-6 0,0 -12.17,0 -12.17,0 0,0 2.02,-9 2.02,-9 0,0 12.95,0 12.95,0 0,0 1.56,-7 1.56,-7 C 28.85,0 8.4,0 8.4,0 8.4,0 0,36 0,36 Z" + id="path3592" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-345.2696,-711.9434)" + id="g3594" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="m 7.51,26 c 0,0 2.24,-9.4 2.24,-9.4 1.18,-5.09 3.67,-9.6 8.38,-9.6 0.42,0 0.83,0.21 1.14,0.26 0,0 1.82,-7.21 1.82,-7.21 -0.42,0 -0.88,-0.05 -1.4,-0.05 -3.47,0 -6.38,2.44 -8.32,5.94 0,0 -0.2,0 -0.2,0 C 11.46,4.23 11.71,2.61 11.9,1 11.9,1 5.47,1 5.47,1 5.11,3.08 4.53,7.15 3.66,10.82 3.66,10.82 0,26 0,26 c 0,0 7.51,0 7.51,0 z" + id="path3596" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-310.0908,-711.9434)" + id="g3598" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 20.06,19.25 C 17.99,20.26 15.63,20 12.88,20 10.71,20 9.03,19.62 8.11,18.88 7.63,18.07 7.43,16.81 7.47,16 17.6,16.27 23.99,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.73,0 0.73,8.08 0.34,15.86 0,22.65 3.53,26 10.78,26 c 2.79,0 6.5,-0.32 9.52,-1.23 0,0 -0.24,-5.52 -0.24,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.47,10 9.1,7.91 11.22,6 14.69,6 c 1.71,0 2.69,0.65 2.63,1.53 z" + id="path3600" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-264.8684,-711.9434)" + id="g3602" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 20.05,19.25 C 17.98,20.26 15.62,20 12.88,20 10.7,20 9.03,19.62 8.11,18.88 7.63,18.07 7.42,16.81 7.46,16 17.6,16.27 23.98,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.72,0 0.72,8.08 0.33,15.86 0,22.65 3.52,26 10.77,26 c 2.8,0 6.5,-0.32 9.53,-1.23 0,0 -0.25,-5.52 -0.25,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.46,10 9.1,7.91 11.21,6 14.68,6 c 1.71,0 2.7,0.65 2.64,1.53 z" + id="path3604" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-219.8846,-730.7008)" + id="g3606" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 23.31,0 C 23.31,0 20.5,11.36 20.5,11.36 19.48,10.94 18.15,11 17.11,11 7.53,11 0.75,19.2 0.3,28.08 0,34.34 3.34,37 7.64,37 c 3.01,0 6.18,-1.33 8.58,-4.77 0,0 0.1,0 0.1,0 0,0 -0.57,4.77 -0.57,4.77 0,0 6.78,0 6.78,0 0.31,-3 0.96,-6.57 1.69,-9.83 0,0 6.49,-27.17 6.49,-27.17 0,0 -7.4,0 -7.4,0 z M 17.47,24.42 C 16.3,29.35 13.54,31 11.36,31 9.19,31 7.98,29.49 8.13,26.8 8.38,21.82 11.8,17 16.25,17 c 1.25,0 2.32,0.19 2.91,0.47 0,0 -1.69,6.95 -1.69,6.95 z" + id="path3608" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-169.2225,-711.9434)" + id="g3610" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 10.61,26 C 19.31,26 26.02,19.41 26.49,10.44 26.78,4.5 23.08,0 16.25,0 7.23,0 0.76,7.3 0.31,16.12 0,22.54 4.14,26 10.61,26 Z m 1.17,-6 C 9.24,20 7.84,18.38 7.99,15.96 8.19,11.93 10.68,6 14.97,6 c 2.96,0 3.87,2.27 3.75,4.5 -0.22,4.4 -2.9,9.5 -6.94,9.5 z" + id="path3612" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.705222,0,0,1.705222,-120.5213,-711.9434)" + id="g3614" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter"> + <path + d="M 7.2,26 C 7.2,26 9.9,14.58 9.9,14.58 11.03,9.49 13.85,6 16.38,6 c 1.82,0 2.32,1.33 2.23,3.07 -0.05,0.9 -0.25,1.91 -0.46,2.91 0,0 -3.34,14.02 -3.34,14.02 0,0 7.2,0 7.2,0 0,0 2.7,-11.47 2.7,-11.47 C 25.95,9.28 28.61,6 31.09,6 c 1.71,0 2.42,1.22 2.34,2.96 -0.05,1.01 -0.26,2.12 -0.52,3.13 0,0 -3.24,13.91 -3.24,13.91 0,0 7.25,0 7.25,0 0,0 3.49,-14.81 3.49,-14.81 0.27,-1.33 0.58,-3.4 0.63,-4.46 C 41.26,2.33 39.11,0 35.23,0 31.91,0 28.68,1.5 26.23,4.66 26.14,2.38 24.51,0 20.47,0 17.2,0 14.08,1.48 11.58,4.83 c 0,0 -0.1,0 -0.1,0 0,0 0.67,-3.83 0.67,-3.83 0,0 -6.42,0 -6.42,0 C 5.31,3.14 4.8,5.73 4.02,8.75 4.02,8.75 0,26 0,26 c 0,0 7.2,0 7.2,0 z" + id="path3616" + style="fill:#663366;fill-opacity:1" + inkscape:connector-curvature="0" /> + </g> + </g> + <path + id="path3618" + sodipodi:nodetypes="cccccssccccscccsccc" + d="m 242.27371,772.00406 c 0.26666,0.68537 0.5332,1.3697 0.81093,2.03897 0.42773,0.90933 0.922,1.77974 1.51639,2.59227 3.21051,4.36413 8.58716,6.75366 15.41353,7.34862 0,0 7.34302,0 7.34302,0 2.32173,-0.18116 4.75464,-0.51882 7.27636,-1.01207 4.34906,-0.85043 8.95929,-2.15678 13.74726,-3.90261 3.62705,-1.32245 7.3541,-2.88712 11.13662,-4.70567 8.23729,-3.94873 16.74671,-9.04148 25.09506,-15.18751 2.74946,-2.02242 5.38772,-4.09758 7.92063,-6.20767 2.32173,-1.93179 4.54905,-3.89371 6.67649,-5.8772 5.93759,-5.72219 10.42009,-11.53376 12.95848,-16.63667 2.64386,-5.31398 3.17158,-9.85744 1.00533,-12.71967 -1.32747,-1.7569 -3.54931,-2.69843 -6.40983,-2.91999 12.88633,-9.6692 20.3959,-21.3985 17.70204,-28.79369 -0.85545,-2.36008 -2.73838,-4.12086 -5.43784,-5.09458 -1.19973,-0.43149 -2.54946,-0.70488 -4.02144,-0.82931 0,0 -3.96585,0 -3.96585,0 -5.53772,0.39942 -13.59076,2.38234 -20.42273,5.73052" + style="fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#663266;stroke-width:3.28386545;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + d="m 62.777261,682.66638 c 0,0 -22.84339,99.66531 -22.84339,99.66531 0.0066,0 60.091419,0 60.104559,0 26.42484,0 105.67884,0 105.67884,0 1.2e-4,0 54.96371,0 54.96371,0 -6.54796,-0.57145 -11.71765,-2.87011 -14.79791,-7.06027 -0.57133,-0.77509 -1.04346,-1.60999 -1.45715,-2.48348 -0.26277,-0.64359 -0.5098,-1.293 -0.75945,-1.94971 -0.65682,-2.08863 -0.91869,-4.40613 -0.80043,-6.87568 0.32842,-6.883 3.5581,-15.07028 9.15381,-23.64386 5.94375,-9.11134 14.55819,-18.66102 25.22417,-27.52283 2.39067,-1.98475 4.86262,-3.94473 7.45021,-5.84947 3.19852,-2.35311 6.4217,-4.52039 9.64637,-6.54715 11.881,-7.48001 23.73254,-12.71397 34.23437,-15.37255 -10.03552,3.27397 -21.3098,8.83212 -32.4487,16.39877 -0.40067,0.27054 -0.79632,0.5477 -1.19049,0.82098 -6.18016,4.28216 -11.77917,8.82996 -16.66554,13.42273 -15.72323,14.78398 -24.0338,30.10322 -20.25732,39.07804 0.26928,0.61733 0.59027,1.20681 0.96458,1.76513 4.05888,5.97 14.11814,7.00193 26.86612,3.7969 0.86698,-0.21666 1.73396,-0.4622 2.62708,-0.71835 4.07201,-1.17554 8.39527,-2.76338 12.8482,-4.72051 1.07052,-0.47293 2.15256,-0.95887 3.24282,-1.4778 0.11164,-0.0525 0.21666,-0.10502 0.3283,-0.16415 14.05501,-6.98345 24.85648,-15.01891 27.19453,-19.84684 0.51232,-1.05019 0.63548,-1.94559 0.28732,-2.64763 -1.66821,-3.38242 -13.34145,-1.09733 -27.48185,5.02838 -1.13615,0.49267 -2.28554,0.99951 -3.44806,1.53933 0.94574,-0.87805 1.93019,-1.75953 2.93495,-2.62708 1.60257,-1.38055 3.26176,-2.73051 5.02848,-4.0638 2.76498,-2.09376 5.56032,-3.98662 8.31229,-5.66465 12.88587,-9.72159 19.40027,-18.91764 18.04072,-22.33031 -0.25615,-0.64301 -0.80122,-1.08524 -1.64195,-1.35464 -2.68621,-0.85442 -7.58902,0.16541 -13.5459,2.60665 -4.91274,2.01501 -10.55524,5.00338 -16.27572,8.72277 0,0 -0.77988,0.51312 -0.77988,0.51312 0,0 -0.14372,0.0821 -0.14372,0.0821 0,0 -2.75013,1.82665 -2.75013,1.82665 0,0 1.58031,-2.89385 1.58031,-2.89385 2.34467,-4.2921 6.16384,-8.77026 10.91882,-12.93028 3.48744,-3.04157 7.47167,-5.90734 11.76034,-8.41491 1.6222,-0.94974 3.24201,-1.83178 4.86422,-2.62708 1.6617,-0.81184 3.32409,-1.53328 4.9463,-2.17561 4.71308,-1.86387 9.89054,-4.21767 13.81404,-4.52565 -0.3573,0 -11.69996,1.22131 -11.69996,1.22131 0,0 -37.14877,0 -37.14877,0 0,0 -163.80326,0 -163.80326,0 0,0 -73.075879,0 -73.075879,0 z m 177.933719,0.14371 c -0.64359,9.82331 1.26103,24.21153 5.58258,40.18623 0.76846,2.84249 1.60497,5.73531 2.52446,8.66124 0.57144,1.80679 1.16092,3.58527 1.76512,5.33624 -0.35467,0.52145 -0.71173,1.03969 -1.04677,1.55988 -5.39206,8.26343 -8.54378,16.07287 -9.3385,22.86386 -2.27904,-7.63171 -3.99473,-15.99091 -4.96685,-24.85477 -0.27579,-2.53965 -0.49165,-5.05098 -0.63616,-7.53229 -1.06401,-18.02383 1.28888,-34.36245 6.11612,-46.22039 z m -107.60809,12.78645 c 0.12294,-0.003 0.24417,0 0.3694,0 0,0 24.28013,0 24.28013,0 2.07539,0 3.68036,0.38903 4.82313,1.16994 1.13615,0.78548 1.56228,1.80154 1.29299,3.03757 0,0 -2.89385,13.07388 -2.89385,13.07388 0,0 -8.55862,0 -8.55862,0 0,0 2.81178,-12.72492 2.81178,-12.72492 0,0 -21.42715,0 -21.42715,0 0,0 -7.73764,34.97305 -7.73764,34.97305 0,0 -2.79135,12.6635 -2.79135,12.6635 0,0 21.40671,0 21.40671,0 0,0 0.0206,-0.0821 0.0206,-0.0821 0,0 4.28958,-19.37493 4.28958,-19.37493 0,0 -10.05685,0 -10.05685,0 0,0 0.96469,-4.37155 0.96469,-4.37155 0,-1.1e-4 18.61537,0 18.61537,0 0,-1.1e-4 -5.33624,24.1774 -5.33624,24.1774 -0.0723,0.34417 -0.19874,0.65592 -0.36951,0.9647 -0.44006,0.80122 -1.20761,1.4875 -2.27812,2.05244 -1.48431,0.78148 -3.26085,1.16982 -5.33636,1.16982 0,0 -24.25947,0 -24.25947,0 -2.07539,0 -3.68036,-0.38834 -4.82324,-1.16982 -1.13615,-0.7816 -1.56884,-1.77974 -1.29299,-3.01714 0,0 10.69314,-48.33436 10.69314,-48.33436 0.27579,-1.23603 1.13615,-2.25209 2.62696,-3.03757 0.0526,-0.0283 0.11176,-0.0347 0.16427,-0.0615 1.3608,-0.6816 2.95778,-1.0648 4.80269,-1.10841 z m 38.05183,0 c -1.2e-4,0 30.5604,0 30.5604,0 2.04913,0 3.65981,0.38903 4.8027,1.16994 1.14927,0.78548 1.58933,1.80154 1.31354,3.03757 0,0 -5.70575,25.77837 -5.70575,25.77837 -0.26928,1.22816 -1.15019,2.23018 -2.64763,3.01703 -1.49744,0.78947 -3.26005,1.19037 -5.31581,1.19037 0,0 -22.20714,0 -22.20714,0 0,0 -4.28947,19.35427 -4.28947,19.35427 0,0 -0.69781,3.18128 -0.69781,3.18128 0,0 -8.37392,0 -8.37392,0 0,0 0.63628,-2.87342 0.63628,-2.87342 0,0 11.92461,-53.85541 11.92461,-53.85541 z m 42.21812,0 c 0,0 8.37381,0 8.37381,0 0,0 -9.48211,42.83397 -9.48211,42.83397 0,0 -2.07299,9.35905 -2.07299,9.35905 0,0 20.03165,0 20.03165,0 0.21015,1.53614 0.45557,3.045 0.71835,4.53581 0,0 -30.12948,0 -30.12948,0 0,0 2.38074,-10.75466 2.38074,-10.75466 0,0 10.18003,-45.97417 10.18003,-45.97417 z m -34.84999,4.55647 c 0,0 -5.56214,25.08045 -5.56214,25.08045 0,0 20.87316,0 20.87316,0 0,0 5.54149,-25.08045 5.54149,-25.08045 0,0 -20.85251,0 -20.85251,0 z m -44.50903,59.19428 c 0.082,-0.003 0.16381,0 0.24634,0 0.972,0 1.82094,0.17065 2.50391,0.49256 0.72909,0.34154 1.25042,0.84883 1.53934,1.51879 0.28241,0.6502 0.35626,1.38819 0.20524,2.19604 0,0 -0.0615,0.30787 -0.0615,0.30787 0,0 -2.40129,0 -2.40129,0 -1.1e-4,0 0.0204,-0.28732 0.0204,-0.28732 0.0621,-0.56448 -0.008,-1.0083 -0.22567,-1.31354 -0.0284,-0.0382 -0.0696,-0.0888 -0.10274,-0.12317 -0.0541,-0.0554 -0.1355,-0.11849 -0.20513,-0.16415 -0.33606,-0.21175 -0.86161,-0.32841 -1.53933,-0.32841 -0.89986,0 -1.57221,0.15673 -2.0319,0.47201 -0.44667,0.30867 -0.72908,0.65352 -0.82098,1.06732 -0.092,0.4203 0.059,0.64119 0.16415,0.75933 0.003,0.003 0.0166,0.0169 0.0205,0.0205 0.1331,0.11335 0.59519,0.37933 2.0319,0.71836 1.30041,0.31528 2.16157,0.59849 2.64763,0.84152 0.73559,0.3743 1.2495,0.85956 1.51878,1.45714 0.26929,0.5912 0.32842,1.28318 0.16415,2.0319 -0.16415,0.72909 -0.53605,1.40144 -1.08775,2.0319 -0.54507,0.63046 -1.23877,1.12964 -2.07299,1.4778 -0.82748,0.34154 -1.73544,0.53355 -2.66806,0.53355 -1.18227,0 -2.13132,-0.17888 -2.87342,-0.53355 -0.77498,-0.36779 -1.33409,-0.94825 -1.66239,-1.70359 -0.31529,-0.73548 -0.38263,-1.5705 -0.20536,-2.48337 0,0 0.0616,-0.28732 0.0616,-0.28732 0,0 2.36031,0 2.36031,0 0,0 -0.0205,0.28732 -0.0205,0.28732 -0.0591,0.54507 -8e-4,0.98513 0.1436,1.31354 0.13801,0.31529 0.40067,0.57635 0.82098,0.77988 0.44667,0.21678 1.00487,0.32842 1.64195,0.32842 0.57144,0 1.09357,-0.096 1.55988,-0.26677 0.45969,-0.16427 0.82509,-0.38093 1.08775,-0.65683 0.25616,-0.27579 0.40638,-0.56733 0.47202,-0.88251 0.0657,-0.28241 0.0501,-0.52133 -0.0615,-0.71835 -0.12477,-0.21015 -0.37191,-0.39656 -0.75945,-0.55409 0,-1.2e-4 -2.01135,-0.5953 -2.01135,-0.5953 -1.12302,-0.28241 -1.87916,-0.5517 -2.31921,-0.82098 -0.5977,-0.35456 -1.02862,-0.80945 -1.25202,-1.35452 -0.22328,-0.53857 -0.24702,-1.13547 -0.10251,-1.78567 0.15103,-0.69621 0.48675,-1.35863 1.00568,-1.94971 0.52544,-0.5977 1.2035,-1.06652 2.01135,-1.37518 0.71424,-0.2678 1.46582,-0.42488 2.25757,-0.45147 z m 21.55043,0.041 c 0.1299,-0.01 0.25205,0 0.38994,0 0,0 1.47769,0.16415 1.47769,0.16415 0,0 0.49257,0.0411 0.49257,0.0411 1.1e-4,0 -0.71825,1.82665 -0.71825,1.82665 0,0 -0.14371,0.28732 -0.14371,0.28732 0,0 -1.12885,-0.10262 -1.12885,-0.10262 -0.33332,0 -0.57817,0.0515 -0.7389,0.16427 -0.0106,0.008 -0.0312,0.0324 -0.041,0.041 -0.0216,0.0189 -0.0578,0.0518 -0.0821,0.0822 -0.0989,0.12957 -0.21917,0.36118 -0.30787,0.77989 0,0 -0.0427,0.17727 -0.0821,0.32841 0.51881,0 1.76501,0 1.76501,0 0,0 -0.45147,2.0319 -0.45147,2.0319 0,0 -1.2906,0 -1.72403,0 -0.13139,0.59107 -1.74458,7.8196 -1.74458,7.8196 0,0 -2.38086,0 -2.38086,0 0,0 1.54755,-6.94612 1.74458,-7.8196 -0.40067,0 -1.37507,0 -1.37507,0 0,0 0.45147,-2.0319 0.45147,-2.0319 0,0 0.98022,0 1.35464,0 0.0656,-0.28241 0.16414,-0.63628 0.16414,-0.63628 0.14452,-0.65683 0.29554,-1.12884 0.49257,-1.45726 0.2694,-0.45318 0.64941,-0.83239 1.12884,-1.10829 0.39497,-0.22945 0.89438,-0.36666 1.45726,-0.41049 z m 5.6852,0.10262 c 0,0 -0.62235,2.80036 -0.77988,3.5097 0.45969,0 1.53922,0 1.53922,0 0,0 -0.45147,2.0319 -0.45147,2.0319 0,0 -1.13216,0 -1.53934,0 -0.12476,0.5647 -1.10829,4.9463 -1.10829,4.9463 0,0 -0.0821,0.52623 -0.0821,0.67726 1.2e-4,0.005 -4.5e-4,0.0168 0,0.0205 3.4e-4,0.002 -4.5e-4,0.0192 0,0.0205 5.7e-4,10e-4 0.0196,-8e-4 0.0204,0 0,0 0.24633,0.0204 0.24633,0.0204 0,0 1.12885,-0.0821 1.12885,-0.0821 0,0 -0.12317,1.82665 -0.12317,1.82665 0,0 0.0205,0.32841 0.0205,0.32841 0,0 -1.62141,0.1847 -1.62141,0.1847 -0.64359,0 -1.11572,-0.10502 -1.45726,-0.32841 -0.36117,-0.23641 -0.57133,-0.54998 -0.65671,-0.94404 -0.0131,-0.0723 -0.0411,-0.17739 -0.0411,-0.32841 0,-0.29554 0.0558,-0.79552 0.24634,-1.6625 0,0 0.86276,-3.86506 1.04666,-4.67941 -0.30867,0 -1.12873,0 -1.12873,0 0,0 0.45147,-2.0319 0.45147,-2.0319 0,0 0.80043,0 1.12884,0 0.10513,-0.47293 0.47202,-2.09354 0.47202,-2.09354 0,0 1.90884,-1.00567 1.90884,-1.00567 0,0 0.77988,-0.41049 0.77988,-0.41049 z m -75.631539,0.0821 c 0,0 9.23587,0 9.23587,0 0,0 -0.5131,2.29879 -0.5131,2.29879 0,0 -6.16135,0 -6.75245,0 -0.10506,0.46631 -0.52622,2.35449 -0.67728,3.03757 0.85381,0 5.84937,0 5.84937,0 0,0 -0.51311,2.29867 -0.51311,2.29867 0,0 -5.25827,0 -5.84937,0 -0.12479,0.57144 -1.25198,5.6441 -1.25198,5.6441 0,0 -2.48343,0 -2.48343,0 0,0 2.95548,-13.27913 2.95548,-13.27913 z m 12.37608,3.24293 c 0.09266,-0.0114 0.19392,0 0.28731,0 0.5911,0 1.13707,0.17979 1.66248,0.5541 0,0 0.328389,0.22579 0.328389,0.22579 0,0 -1.272509,2.09342 -1.272509,2.09342 0,0 -0.34892,-0.24634 -0.34892,-0.24634 -0.25612,-0.16415 -0.53196,-0.24622 -0.82095,-0.24622 -0.24958,0 -0.4819,0.0887 -0.71834,0.24622 -0.24958,0.16427 -0.45811,0.38184 -0.61571,0.67738 -0.27585,0.50569 -0.47783,1.07211 -0.61575,1.68293 0,0 -1.10832,5.04892 -1.10832,5.04892 0,0 -2.38079,0 -2.38079,0 0,0 2.19611,-9.8515 2.19611,-9.8515 0,0 2.2166,0 2.2166,0 0,0 -0.07638,0.29874 -0.10264,0.41038 0.10511,-0.0788 0.21591,-0.1871 0.30789,-0.24623 0.3181,-0.18983 0.65411,-0.30832 0.98515,-0.34885 z m 7.060299,0 c 0.14335,-0.0109 0.28446,0 0.43102,0 1.3398,0 2.35368,0.46951 3.01703,1.39562 0.41377,0.59758 0.63628,1.33649 0.63628,2.21659 0,0.48595 -0.0599,1.00899 -0.18472,1.58032 0,0 -0.18472,0.71835 -0.18472,0.71835 0,0 -6.02097,0 -6.6909,0 -0.0131,0.1379 -0.0205,0.28572 -0.0205,0.41049 0,0.51231 0.10511,0.91538 0.32838,1.21092 0.10612,0.14451 0.22914,0.27465 0.36944,0.36939 0.26454,0.1726 0.60601,0.26689 1.00572,0.26689 0.48599,0 0.9129,-0.1339 1.31353,-0.38994 0.38091,-0.24303 0.74543,-0.63137 1.06726,-1.16994 0,0 2.54499,0 2.54499,0 0,0 -0.22574,0.49256 -0.22574,0.49256 -0.48603,0.98524 -1.16417,1.7536 -2.01139,2.29879 -0.84722,0.54507 -1.85948,0.84141 -2.97601,0.84141 -1.45145,0 -2.53185,-0.46951 -3.20175,-1.39562 -0.663349,-0.90636 -0.806199,-2.15917 -0.451559,-3.73538 0.354699,-1.60257 1.062339,-2.88324 2.093469,-3.77647 0.92422,-0.80135 1.97295,-1.24585 3.14021,-1.33398 z m 10.69313,0 c 0.14326,-0.0109 0.28446,0 0.43092,0 1.33991,0 2.3538,0.46951 3.01714,1.39562 0.41379,0.59758 0.63616,1.33649 0.63616,2.21659 0,0.47944 -0.0599,0.99495 -0.1847,1.55977 0,0 -0.18469,0.7389 -0.18469,0.7389 0,0 -6.02097,0 -6.69087,0 -0.007,0.092 -0.014,0.17488 -0.0205,0.26677 -0.005,0.0345 0.002,0.0869 0,0.12317 -1.9e-4,0.006 0,0.0148 0,0.0205 0,0.0985 0.0139,0.19543 0.0205,0.28732 0.0328,0.37442 0.13054,0.68719 0.30786,0.9236 0.0338,0.046 0.0655,0.10274 0.1026,0.14372 0.30081,0.32179 0.72656,0.49256 1.27251,0.49256 0.48602,0 0.91945,-0.1339 1.3135,-0.38994 0.38104,-0.24303 0.74552,-0.63137 1.06732,-1.16994 0,0 2.56544,0 2.56544,0 0,0 -0.24623,0.49256 -0.24623,0.49256 -0.48606,0.98524 -1.16412,1.7536 -2.01135,2.29879 -0.84723,0.54507 -1.85953,0.84141 -2.976,0.84141 -1.45149,0 -2.53189,-0.46951 -3.20178,-1.39562 -0.43346,-0.59108 -0.63624,-1.34391 -0.63624,-2.23714 0,-0.1379 0.007,-0.28652 0.0205,-0.43104 0.0263,-0.34142 0.0788,-0.68628 0.16419,-1.0672 0.35465,-1.59595 1.0418,-2.88324 2.07293,-3.77647 0.92419,-0.80135 1.99344,-1.24585 3.16076,-1.33398 z m 29.12369,0 c 0.14669,-0.0113 0.28161,0 0.43104,0 1.36616,0 2.41613,0.46209 3.0991,1.37507 0.67657,0.91287 0.84072,2.14434 0.49267,3.69429 -0.26928,1.20852 -0.65842,2.18463 -1.19048,2.89397 -0.53195,0.70933 -1.21001,1.28888 -2.01135,1.68293 -0.79461,0.39405 -1.63614,0.59519 -2.48337,0.59519 -1.39242,0 -2.42925,-0.47613 -3.09921,-1.39562 -0.43343,-0.58457 -0.65671,-1.33728 -0.65671,-2.23714 0,-0.48594 0.0533,-1.00236 0.18469,-1.58031 0.39405,-1.76022 1.19859,-3.10081 2.38075,-3.96117 0.86778,-0.62647 1.82619,-0.98833 2.85287,-1.06721 z m 36.06102,0 c 0.17317,-0.0107 0.33344,0 0.51311,0 0.82749,0 1.47769,0.0837 1.97026,0.28732 0.52544,0.21016 0.89814,0.50729 1.10829,0.86196 0.20365,0.33492 0.30787,0.74632 0.30787,1.25201 0,0 -0.24622,1.49824 -0.24622,1.49824 0,0 -0.45159,2.0319 -0.45159,2.0319 -0.38754,1.73385 -0.47281,2.38405 -0.49256,2.62708 -0.0197,0.32841 0.0106,0.6485 0.10262,0.94415 0,0 0.16415,0.53354 0.16415,0.53354 0,0 -2.42184,0 -2.42184,0 0,0 -0.10262,-0.30786 -0.10262,-0.30786 -0.0394,-0.14441 -0.0279,-0.3283 -0.041,-0.49257 -0.4598,0.28241 -0.92029,0.53286 -1.33409,0.67726 -0.61082,0.21027 -1.24459,0.32842 -1.88829,0.32842 -1.1164,0 -1.9432,-0.29063 -2.44239,-0.86196 -0.38081,-0.42031 -0.55409,-0.93422 -0.55409,-1.51879 0,-0.22328 0.0296,-0.45478 0.0821,-0.6978 0.11164,-0.49919 0.31449,-0.96139 0.63628,-1.37519 0.31528,-0.40718 0.68799,-0.7421 1.10829,-0.98513 0.40718,-0.24302 0.86116,-0.41539 1.33409,-0.53365 0,0 1.45726,-0.24623 1.45726,-0.24623 1.12302,-0.13139 1.96124,-0.29474 2.56544,-0.47213 0.0131,-0.0656 0.0411,-0.1436 0.0411,-0.1436 0.0952,-0.42259 0.0833,-0.74027 -0.0205,-0.90305 -0.008,-0.0105 -0.0324,-0.0321 -0.0411,-0.0411 -0.0221,-0.0236 -0.0562,-0.0607 -0.0821,-0.0821 -0.24702,-0.19543 -0.66824,-0.28732 -1.23147,-0.28732 -0.63708,0 -1.10829,0.10422 -1.43659,0.30786 -0.32191,0.20354 -0.61985,0.57624 -0.88262,1.1083 0,0 -2.48337,0 -2.48337,0 0,0 0.22568,-0.49256 0.22568,-0.49256 0.29554,-0.68308 0.64781,-1.24962 1.08786,-1.68305 0.44006,-0.43343 1.03444,-0.76927 1.72403,-1.00568 0.52841,-0.17442 1.10556,-0.29017 1.72403,-0.3283 z m 10.40571,0 c 0.0927,-0.0114 0.19394,0 0.28732,0 0.5977,0 1.15761,0.17979 1.68305,0.5541 0,0 0.30786,0.22579 0.30786,0.22579 0,0 -1.27256,2.09342 -1.27256,2.09342 0,0 -0.34884,-0.24634 -0.34884,-0.24634 -0.25616,-0.16415 -0.51814,-0.24622 -0.80043,-0.24622 -0.24965,0 -0.49599,0.0887 -0.73891,0.24622 -0.24965,0.16427 -0.43103,0.38184 -0.59518,0.67738 -0.26929,0.50569 -0.47784,1.07211 -0.61574,1.68293 0,0 -1.12884,5.04892 -1.12884,5.04892 0,0 -2.38086,0 -2.38086,0 0,0 2.19616,-9.8515 2.19616,-9.8515 0,0 2.2166,0 2.2166,0 0,0 -0.0558,0.29874 -0.0821,0.41038 0.10502,-0.0788 0.20936,-0.1871 0.30787,-0.24623 0.313,-0.18983 0.63377,-0.30832 0.96458,-0.34885 z m 7.03983,0 c 0.14315,-0.0109 0.28447,0 0.43093,0 1.33991,0 2.36031,0.46951 3.01713,1.39562 0.42031,0.59758 0.63617,1.33649 0.63617,2.21659 0,0.48595 -0.0804,1.00899 -0.20524,1.58032 0,0 -0.16415,0.71835 -0.16415,0.71835 0,0 -6.02754,0 -6.69088,0 -0.0131,0.1379 -0.0411,0.28572 -0.0411,0.41049 0,0.51231 0.11175,0.91538 0.32841,1.21092 0.0338,0.046 0.086,0.10274 0.12317,0.14372 0.0216,0.0229 0.0594,0.0607 0.0821,0.0821 0.2936,0.26689 0.69325,0.41049 1.19038,0.41049 0.48605,0 0.91298,-0.1339 1.31354,-0.38994 0.38104,-0.24303 0.7389,-0.63137 1.06731,-1.16994 0,0 2.56556,0 2.56556,0 0,0 -0.24634,0.49256 -0.24634,0.49256 -0.48606,0.98524 -1.17074,1.7536 -2.01135,2.29879 -0.85385,0.54507 -1.85291,0.84141 -2.97604,0.84141 -1.45144,0 -2.51134,-0.46951 -3.18118,-1.39562 -0.66333,-0.90636 -0.82017,-2.15917 -0.47213,-3.73538 0.35467,-1.60257 1.04186,-2.88324 2.07299,-3.77647 0.93,-0.80135 1.99457,-1.24585 3.16074,-1.33398 z m -35.93785,0.1847 c 0,0 2.44239,0 2.44239,0 0,0 0.30124,5.84604 0.30786,5.93143 0.0985,-0.20936 0.175,-0.38549 0.1847,-0.41049 0,0 2.68872,-5.52094 2.68872,-5.52094 0,0 2.23714,0 2.23714,0 0,0 0.20525,5.77538 0.20525,5.80826 0.0656,-0.11815 3.058,-5.80826 3.058,-5.80826 0,0 2.42184,0 2.42184,0 0,0 -5.33624,9.8515 -5.33624,9.8515 0,0 -2.19604,0 -2.19604,0 0,0 -0.21267,-5.34194 -0.2258,-5.6441 -0.90636,1.85872 -2.75025,5.6441 -2.75025,5.6441 0,0 -2.25769,0 -2.25769,0 0,0 -0.77988,-9.8515 -0.77988,-9.8515 z m -57.34448,1.86763 c -0.56575,0.0239 -1.07959,0.22785 -1.55984,0.61574 -0.38091,0.30216 -0.63789,0.71675 -0.84148,1.16982 0,1.2e-4 4.04324,0 4.04324,0 0.007,-0.0721 0.0205,-0.16004 0.0205,-0.22568 0,-0.37441 -0.0665,-0.66504 -0.18472,-0.86207 -0.28894,-0.47281 -0.7175,-0.69781 -1.35459,-0.69781 -0.0382,0 -0.0854,-0.002 -0.12313,0 z m 10.69306,0 c -0.56574,0.0239 -1.07953,0.22785 -1.55983,0.61574 -0.38091,0.30216 -0.6313,0.71675 -0.84148,1.16982 0,1.2e-4 4.04326,0 4.04326,0 0.007,-0.0721 0.0206,-0.16004 0.0206,-0.22568 0,-0.37441 -0.0599,-0.66504 -0.1847,-0.86207 -0.0574,-0.096 -0.13504,-0.19154 -0.20524,-0.26677 -0.27431,-0.28332 -0.65169,-0.43104 -1.14939,-0.43104 -0.0382,0 -0.0854,-0.002 -0.12317,0 z m 82.71244,0 c -0.58183,0.0179 -1.12519,0.21495 -1.62152,0.61574 -0.3743,0.30216 -0.63126,0.71675 -0.84141,1.16982 0,1.2e-4 4.0227,0 4.0227,0 0.007,-0.0721 0.0206,-0.16004 0.0206,-0.22568 0,-0.37441 -0.0599,-0.66504 -0.1847,-0.86207 -0.28241,-0.46631 -0.71756,-0.69119 -1.35464,-0.69781 -0.0188,2.3e-4 -0.0223,-5.7e-4 -0.041,0 z m -53.77333,0.0411 c -0.54291,0.0644 -1.0478,0.3122 -1.51879,0.73879 -0.56482,0.51231 -0.97451,1.31685 -1.21092,2.38085 -0.0985,0.44656 -0.14371,0.8284 -0.14371,1.16983 0,0.46631 0.0895,0.8325 0.26688,1.10829 0.0471,0.0709 0.10982,0.14566 0.16415,0.20525 0.292,0.31003 0.69964,0.47213 1.21092,0.47213 0.66334,0 1.24791,-0.24714 1.80611,-0.75945 0.56482,-0.51882 0.96789,-1.33158 1.21092,-2.42184 0.22328,-0.99825 0.19211,-1.74366 -0.12317,-2.21659 -0.30205,-0.45969 -0.74381,-0.67726 -1.35453,-0.67726 -0.10364,0 -0.20729,-0.012 -0.30786,0 z m 37.08713,3.59166 c -0.5582,0.15114 -1.18387,0.2783 -2.01135,0.39006 -0.61733,0.0919 -1.05739,0.1888 -1.31354,0.28731 -0.22328,0.0919 -0.40307,0.21918 -0.55421,0.38995 -0.1444,0.16415 -0.24131,0.33651 -0.28732,0.53365 -0.0131,0.0788 -0.0205,0.16004 -0.0205,0.22568 0,0.005 -1.2e-4,0.0153 0,0.0205 6.8e-4,0.0156 -0.002,0.0465 0,0.0616 0.004,0.0297 0.0124,0.0748 0.0205,0.10251 0.003,0.009 0.0171,0.0322 0.0205,0.0411 0.007,0.0177 0.0116,0.0448 0.0206,0.0616 0.009,0.0166 0.03,0.0455 0.041,0.0615 0.0172,0.0236 0.0406,0.0599 0.0616,0.0821 0.16415,0.1839 0.49176,0.26677 0.96458,0.26677 0.51893,0 1.018,-0.0985 1.4778,-0.3283 0.45319,-0.22339 0.81847,-0.55672 1.08775,-0.94415 0.19703,-0.27579 0.35467,-0.70032 0.49257,-1.25201 z m -125.364659,-16.45612 55.082599,-56.87199 8.99518,0 -13.2998,56.87199 -7.398629,0 3.776339,-16.37106 -23.091518,0 -15.692032,16.37106 -8.372139,0 m 29.675679,-22.22896 18.88598,0 3.48449,-14.27618 c 1.40629,-5.66388 2.75996,-10.38381 4.06102,-14.1598 -2.60007,3.25873 -6.04001,7.1252 -10.31982,11.59939 L 86.12566,729.8159" + style="fill:#663366;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path3552" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/src/img/sobre/banner-sobre-2.jpg b/src/img/sobre/banner-sobre-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a74f516751a9346aca166456f0c92c4ab0e1e186 Binary files /dev/null and b/src/img/sobre/banner-sobre-2.jpg differ diff --git a/src/img/sobre/comunidade.png b/src/img/sobre/comunidade.png new file mode 100644 index 0000000000000000000000000000000000000000..56528fcec577d446b75ddf5296bf66126eaa1bd9 Binary files /dev/null and b/src/img/sobre/comunidade.png differ diff --git a/src/img/sobre/professores.jpg b/src/img/sobre/professores.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d12b3e804f5756f9f44f501110d99d07d98ed6e Binary files /dev/null and b/src/img/sobre/professores.jpg differ diff --git a/src/img/subject_icons/subject_arte.svg b/src/img/subject_icons/subject_arte.svg new file mode 100644 index 0000000000000000000000000000000000000000..7997b02f718543c77a1862441ac98a7dd4e6e4fe --- /dev/null +++ b/src/img/subject_icons/subject_arte.svg @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M51,11.7c-1.7-2.2-4.5-3.6-7.2-3.6c-3.1,0-5.7,1.9-6.8,4.5c-0.6-1.8-1.6-3.4-2.9-4.7 + C26.8,0.7,14.3,1.4,6.2,9.5c-8.1,8.1-8.1,21.3,0,29.4c4,4,9.4,6.1,14.7,6.1c5.3,0,10.6-2,14.7-6.1c0.7-0.7,1.2-1.8,1.2-2.9 + c0-1.1-0.4-2.1-1.2-2.9C34.8,32.4,34,32,32.9,32c-0.7-0.1-1.3-0.3-1.7-0.7l10.2-10.2c0.2,0,0.5,0.1,0.7,0.1c3.2,0,5.7-2.6,5.7-5.7 + c0-1.8,1.7-2.6,2.6-2.6h1.5L51,11.7z M32.7,33.4l0.1-0.7L32.7,33.4l0.1,0c0.7,0,1.2,0.2,1.7,0.7c0.5,0.5,0.7,1.2,0.7,1.9 + s-0.3,1.4-0.7,1.9c-7.6,7.6-19.8,7.6-27.4,0c-7.6-7.6-7.6-19.8,0-27.4c4.1-4.1,9.3-6.2,14.4-6.2c4.3,0,8.4,1.5,11.5,4.6 + c1.9,1.9,3,4.3,3.1,6.9L18.6,33.3c-1.5,1.5-1.6,4-0.2,5.5c0.7,0.7,1.6,1.1,2.6,1.1c0,0,0.1,0,0.1,0c1,0,2-0.5,2.7-1.2l6.3-6.3 + C31,33,31.9,33.2,32.7,33.4z M22.9,37.5c-0.5,0.5-1.1,0.7-1.7,0.8c-0.6,0-1.2-0.2-1.6-0.6c-0.9-0.9-0.8-2.4,0.2-3.3l16.9-16.9 + c0.3,0.8,0.7,1.6,1.3,2.2c0.5,0.5,1.1,0.9,1.7,1.2L22.9,37.5z M46.3,15.5c0,2.3-1.9,4.2-4.2,4.2c-1.1,0-2.2-0.4-3-1.2 + c-0.8-0.8-1.2-1.9-1.2-3c0-3.2,2.6-5.9,5.9-5.9c1.9,0,3.8,0.8,5.2,2.1C47.6,12.3,46.3,13.5,46.3,15.5z"/> + <path class="st1" d="M28.2,29.1l-4,4c-0.2,0.2-0.2,0.5,0,0.7c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1l4-4c0.2-0.2,0.2-0.5,0-0.7 + S28.4,28.9,28.2,29.1z"/> + <path class="st1" d="M40.3,12.3c-0.2,0.2-0.1,0.5,0.1,0.7c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.3-0.1,0.4-0.2c1.8-2.3,4.2-1.1,4.3-1.1 + c0.3,0.1,0.5,0,0.7-0.2c0.1-0.2,0-0.5-0.2-0.7C44.7,10.4,42.2,9.9,40.3,12.3z"/> + <path class="st1" d="M7.1,27.8C6.4,28.5,6,29.5,6,30.5c0,1,0.4,2,1.1,2.7c0.7,0.7,1.7,1.1,2.7,1.1s2-0.4,2.7-1.1 + c0.7-0.7,1.1-1.7,1.1-2.7c0-1-0.4-2-1.1-2.7C11.1,26.3,8.6,26.3,7.1,27.8z M11.9,32.5c-1,1-3,1-4,0C7.3,32,7,31.3,7,30.5 + c0-0.8,0.3-1.5,0.8-2s1.2-0.8,2-0.8s1.5,0.3,2,0.8s0.8,1.2,0.8,2C12.7,31.3,12.4,32,11.9,32.5z"/> + <path class="st1" d="M11,22.2c0.7-0.7,1.1-1.7,1.1-2.7c0-1-0.4-2-1.1-2.7s-1.7-1.1-2.7-1.1c-1,0-2,0.4-2.7,1.1 + c-1.4,1.4-1.4,4,0,5.4c0.7,0.7,1.7,1.1,2.7,1.1C9.3,23.3,10.3,22.9,11,22.2z M6.3,17.5c0.5-0.5,1.2-0.8,2-0.8s1.5,0.3,2,0.8 + s0.8,1.2,0.8,2c0,0.8-0.3,1.5-0.8,2c-1,1-3,1-4,0C5.2,20.4,5.2,18.5,6.3,17.5z"/> + <path class="st1" d="M18.9,8.9c-0.7-0.7-1.7-1.1-2.7-1.1c-1,0-2,0.4-2.7,1.1c-0.7,0.7-1.1,1.7-1.1,2.7c0,1,0.4,2,1.1,2.7 + s1.7,1.1,2.7,1.1c1,0,2-0.4,2.7-1.1C20.3,12.9,20.3,10.3,18.9,8.9z M14.2,13.6c-0.5-0.5-0.8-1.2-0.8-2c0-0.8,0.3-1.5,0.8-2 + s1.2-0.8,2-0.8c0.8,0,1.5,0.3,2,0.8c1.1,1.1,1.1,3,0,4C17.2,14.6,15.2,14.6,14.2,13.6z"/> + <path class="st1" d="M27.2,17c1,0,2-0.4,2.7-1.1c0.7-0.7,1.1-1.7,1.1-2.7c0-1-0.4-2-1.1-2.7c-1.4-1.4-4-1.4-5.4,0 + c-0.7,0.7-1.1,1.7-1.1,2.7c0,1,0.4,2,1.1,2.7C25.2,16.6,26.2,17,27.2,17z M25.2,11.1c0.5-0.5,1.3-0.8,2-0.8s1.5,0.3,2,0.8 + c0.5,0.5,0.8,1.2,0.8,2c0,0.8-0.3,1.5-0.8,2c-1.1,1.1-3,1.1-4,0c-0.5-0.5-0.8-1.2-0.8-2C24.4,12.4,24.7,11.7,25.2,11.1z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_biologia.svg b/src/img/subject_icons/subject_biologia.svg new file mode 100644 index 0000000000000000000000000000000000000000..fafea9451e9525bdade258aa8f5bfaaaf47c436f --- /dev/null +++ b/src/img/subject_icons/subject_biologia.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M39.7,1.8v3.8c0,1.5-0.3,2.9-0.9,4.3H17.7c-0.4,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8H38 + c-0.6,0.9-1.3,1.9-2.2,2.9c-2.5,2.7-6.1,5.3-9.6,7.7c-3.6,2.5-7.3,5.2-10.2,8.3c-3.4,3.7-5.2,7.7-5.2,11.9v3.8h1.5v-3.8 + c0-1.7,0.3-3.3,0.9-4.9h21.1c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8H14c0.8-1.5,1.8-3,3.2-4.5c2.8-3,6.5-5.6,10-8.1 + c3.5-2.5,7.2-5.1,9.8-7.9c3-3.2,4.3-6.2,4.3-9.7V1.8H39.7z"/> + <path class="st1" d="M28.6,24c-0.2,0.2-0.4,0.3-0.6,0.5c-0.2,0.2-0.4,0.3-0.7,0.5c1.9,1.4,3.8,2.8,5.5,4.3h-8 + c-0.4,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8h9.6c0.2,0.2,0.4,0.4,0.6,0.6c3.2,3.4,4.8,7.1,4.8,10.9v0.4H17.3c-0.4,0-0.8,0.3-0.8,0.8 + s0.3,0.8,0.8,0.8h22.4v1.9h1.5v-3.8c0-4.2-1.7-8.2-5.2-11.9C33.9,28,31.3,26,28.6,24z"/> + <path class="st1" d="M23.5,22.2c0.4-0.3,0.9-0.6,1.3-0.9c-1.5-1.1-3-2.1-4.4-3.2h6.9c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-8.7 + c0,0,0,0,0,0c-0.8-0.7-1.6-1.5-2.3-2.2c-2.7-2.9-3.9-5.6-3.9-8.7V4.9h22.4c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8H12.4V1.8h-1.5 + v3.8c0,3.5,1.3,6.5,4.3,9.7C17.4,17.7,20.4,20,23.5,22.2z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_ciencias-da-natureza.svg b/src/img/subject_icons/subject_ciencias-da-natureza.svg new file mode 100644 index 0000000000000000000000000000000000000000..8becb9f0186e736a9a091f433a8d0d18bc21496a --- /dev/null +++ b/src/img/subject_icons/subject_ciencias-da-natureza.svg @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M24.8,21.8c0-1.6,0.5-3.3,1.4-4.9c2.4,3.1,5,4,6.9,4.2c2.5,0.3,5.2-0.7,6.9-2.4c3.2-3.3,5.6-17.1,5.7-17.6 + l0.2-1l-1,0.2c-0.6,0.1-13.6,2.2-17.5,6.2c-2.3,2.4-3.1,5.9-2,9.1c-1,1.5-1.6,3.1-1.9,4.7c-0.8-1.2-1.7-1.8-2.4-2.1 + c1.4-2.5,0.8-5.8-1.4-7.7C17.2,8.2,8.2,7.1,7.2,7l-1-0.1l0.2,1c0.1,0.4,2,9.3,5,11.9c1.2,1,2.7,1.5,4.1,1.5c1.7,0,3.5-0.7,4.7-2.1 + c0.9,0.3,3.2,1.6,3.1,6.5v4.4h-10c-1,0-1.9,0.5-2.4,1.2c-0.6,0.8-0.8,1.8-0.5,2.7l3.3,11.5c0.4,1.3,1.6,2.2,2.9,2.2h19.5 + c1.4,0,2.6-0.9,2.9-2.2L42.4,34c0.3-0.9,0.1-1.9-0.5-2.7c-0.6-0.8-1.5-1.2-2.4-1.2H24.8V21.8z M28.5,7.5c3-3,12.5-5,15.6-5.6 + c-0.8,4.4-2.9,13.5-5.1,15.8c-1.1,1.1-3.2,2.2-5.7,2c-1.7-0.2-4.2-1.1-6.4-4.4C25.9,12.6,26.5,9.5,28.5,7.5z M19.1,18.2 + c-1.7,2-4.8,2.2-6.8,0.5C10.4,17,8.8,11.6,8.1,8.6c3.2,0.4,9,1.4,10.6,2.8C20.7,13.1,20.9,16.2,19.1,18.2z M40.7,32.3 + c0.3,0.4,0.4,0.9,0.3,1.4l-2,6.9h-6.5c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5h6.2l-1,3.6c-0.2,0.7-0.8,1.1-1.5,1.1H16.6 + c-0.7,0-1.3-0.5-1.5-1.1l-3.3-11.5c-0.1-0.5,0-1,0.3-1.4c0.3-0.4,0.8-0.6,1.2-0.6h26.1C39.9,31.6,40.4,31.9,40.7,32.3z"/> + <path class="st1" d="M29.3,13.9c0,0,0.1,0,0.1,0c0.2,0,0.4-0.2,0.5-0.4c0-0.2,1.2-5,9.8-6.6c0.3,0,0.5-0.3,0.4-0.6 + c0-0.3-0.3-0.5-0.6-0.4c-9.4,1.7-10.6,7.1-10.6,7.4C28.8,13.6,29,13.8,29.3,13.9z"/> + <path class="st1" d="M11.8,11.3c-0.3,0-0.5,0.2-0.5,0.4c0,0.3,0.2,0.5,0.4,0.5c0,0,4.8,0.5,6,3.8c0.1,0.2,0.3,0.3,0.5,0.3 + c0.1,0,0.1,0,0.2,0c0.3-0.1,0.4-0.4,0.3-0.6C17.3,11.9,12,11.4,11.8,11.3z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_direitos-humanos.svg b/src/img/subject_icons/subject_direitos-humanos.svg new file mode 100644 index 0000000000000000000000000000000000000000..ddf087190b26830daadccbb88150ba73d06b7697 --- /dev/null +++ b/src/img/subject_icons/subject_direitos-humanos.svg @@ -0,0 +1,5 @@ +<svg width="56" height="57" viewBox="0 0 56 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M33.2472 21.7656C33.0162 21.7656 32.7971 21.8137 32.5901 21.8863V16.4266C32.5901 15.2757 31.6763 14.3397 30.5527 14.3397C30.3217 14.3397 30.1027 14.3877 29.8956 14.4603V14.3877C29.8956 13.2368 28.9744 12.3008 27.8435 12.3008C26.7116 12.3008 25.7913 13.2368 25.7913 14.3877V14.4603C25.5843 14.3877 25.3652 14.3397 25.1343 14.3397C24.0106 14.3397 23.0968 15.2757 23.0968 16.4266V17.2269C22.8898 17.1543 22.6708 17.1063 22.4398 17.1063C21.3161 17.1063 20.4023 18.0423 20.4023 19.1932V28.5251V31.1833C20.4023 32.8244 20.6131 34.6079 22.0919 35.607V44.7853H23.4723V35.6711L23.4677 34.7615L23.0895 34.5673C22.149 34.0819 21.7818 33.1336 21.7818 31.1824V28.5242V19.1923C21.7818 18.8209 22.0763 18.5192 22.4389 18.5192C22.8014 18.5192 23.0959 18.8209 23.0959 19.1923V23.1701V23.9138H24.4763V23.1701V19.1923V16.4257C24.4763 16.0543 24.7708 15.7527 25.1333 15.7527C25.4959 15.7527 25.7904 16.0543 25.7904 16.4257V22.4679V23.1654H27.1708V22.4679V16.4257V14.3868C27.1708 14.0154 27.4726 13.7138 27.8425 13.7138C28.2125 13.7138 28.5143 14.0154 28.5143 14.3868V16.4257V22.4679V24.1768H29.8947V22.4679V16.4257C29.8947 16.0543 30.1892 15.7527 30.5517 15.7527C30.9143 15.7527 31.2088 16.0543 31.2088 16.4257V23.8507V24.7528V26.3665C29.7392 26.5852 28.2668 27.6061 28.2668 30.8204H29.6471C29.6471 28.6835 30.3419 27.7315 31.899 27.7315H32.5892V24.7528V23.8507C32.5892 23.4793 32.8837 23.1777 33.2462 23.1777C33.6088 23.1777 33.9033 23.4793 33.9033 23.8507V28.5242V31.1824C33.9033 32.6236 33.1211 33.9207 31.8631 34.5683L31.4821 34.7634V44.7853H32.8625V35.6146C34.3662 34.672 35.2837 33.012 35.2837 31.1824V28.5242V23.8507C35.2846 22.7016 34.3708 21.7656 33.2472 21.7656Z" fill="#00BCD4"/> +<path d="M15.4014 23.1534C15.1704 23.1534 14.9532 23.2081 14.7554 23.3005V18.6638C14.7554 17.7796 14.0532 17.0604 13.19 17.0604C12.959 17.0604 12.7419 17.115 12.544 17.2074V16.9915C12.544 16.1074 11.8363 15.3872 10.9658 15.3872C10.0952 15.3872 9.38755 16.1064 9.38755 16.9915V17.2074C9.19062 17.115 8.97252 17.0613 8.74246 17.0613C7.87927 17.0613 7.1762 17.7805 7.1762 18.6647V19.4772C6.97926 19.3849 6.76117 19.3311 6.5311 19.3311C5.66791 19.3311 4.96484 20.0503 4.96484 20.9355V28.5942V30.7755C4.96484 32.1093 5.13693 33.56 6.35166 34.347V41.9398H7.2719L7.26914 33.7805L7.01699 33.6505C6.07742 33.1678 5.88509 32.1517 5.88509 30.7764V28.5952V20.9364C5.88509 20.5716 6.17497 20.2747 6.5311 20.2747C6.88724 20.2747 7.1762 20.5716 7.1762 20.9364V24.2007V24.8106H8.09644V24.2007V20.9364V18.6656C8.09644 18.3008 8.38632 18.0049 8.74246 18.0049C9.09859 18.0049 9.38755 18.3008 9.38755 18.6656V23.6238V24.196H10.3078V23.6238V18.6656V16.9934C10.3078 16.6286 10.6032 16.3317 10.9658 16.3317C11.3284 16.3317 11.6238 16.6286 11.6238 16.9934V18.6656V23.6238V25.0274H12.544V23.6238V18.6656C12.544 18.3008 12.8339 18.0049 13.19 18.0049C13.5461 18.0049 13.8351 18.3008 13.8351 18.6656V24.7597V25.4996V26.9202C12.6443 27.0672 11.4204 27.8562 11.4204 30.4795H12.3406C12.3406 28.6517 12.9434 27.8354 14.2952 27.8354H14.7554V25.4996V24.7597C14.7554 24.3949 15.0452 24.098 15.4014 24.098C15.7575 24.098 16.0465 24.3949 16.0465 24.7597V28.5942V30.7755C16.0465 31.999 15.382 33.1009 14.3136 33.6505L14.0606 33.7815L14.0596 41.9389H14.9799V34.3518C16.2121 33.6033 16.9667 32.2582 16.9667 30.7755V28.5942V24.7597C16.9676 23.8727 16.2646 23.1534 15.4014 23.1534Z" fill="#00BCD4"/> +<path d="M49.1495 23.1534C48.9185 23.1534 48.7014 23.2081 48.5044 23.2995V18.6627C48.5044 17.7786 47.8014 17.0593 46.9382 17.0593C46.7072 17.0593 46.49 17.114 46.2931 17.2055V16.9896C46.2931 16.1054 45.5845 15.3853 44.7149 15.3853C43.8452 15.3853 43.1366 16.1045 43.1366 16.9896V17.2055C42.9397 17.1131 42.7216 17.0593 42.4915 17.0593C41.6283 17.0593 40.9262 17.7786 40.9262 18.6627V19.4762C40.7283 19.3838 40.5112 19.3292 40.2802 19.3292C39.417 19.3292 38.7148 20.0484 38.7148 20.9335V28.5923V30.7735C38.7148 32.1073 38.8869 33.558 40.1017 34.3451L40.1026 41.9379H41.0228V34.4573L41.0182 33.7776L40.767 33.6485C39.8274 33.164 39.636 32.1488 39.636 30.7735V28.5923V20.9335C39.636 20.5687 39.925 20.2718 40.2811 20.2718C40.6372 20.2718 40.9271 20.5687 40.9271 20.9335V24.1978V24.8077H41.8474V24.1978V20.9335V18.6627C41.8474 18.2979 42.1363 18.002 42.4925 18.002C42.8486 18.002 43.1376 18.2979 43.1376 18.6627V23.6209V24.1931H44.0578V23.6209V18.6627V16.9905C44.0578 16.6257 44.3523 16.3288 44.7158 16.3288C45.0793 16.3288 45.3738 16.6257 45.3738 16.9905V18.6627V23.6209V25.0245H46.294V23.6209V18.6627C46.294 18.2979 46.583 18.002 46.9391 18.002C47.2952 18.002 47.5851 18.2979 47.5851 18.6627V24.7568V25.4967V26.9173C46.3943 27.0643 45.1704 27.8533 45.1704 30.4766H46.0906C46.0906 28.6488 46.6934 27.8325 48.0452 27.8325H48.5054V25.4967V24.7568C48.5054 24.392 48.7943 24.0951 49.1504 24.0951C49.5066 24.0951 49.7955 24.392 49.7955 24.7568V28.5913V30.7726C49.7955 31.9961 49.1311 33.098 48.0618 33.6476L47.8087 33.7786V41.936H48.729V34.3479C49.9621 33.6004 50.7158 32.2553 50.7158 30.7726V28.5913V24.7568C50.7149 23.8726 50.0136 23.1534 49.1495 23.1534Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_educacao-ambiental.svg b/src/img/subject_icons/subject_educacao-ambiental.svg new file mode 100644 index 0000000000000000000000000000000000000000..ac197ccef1494d2cadba5a6f191bfae05039e6bb --- /dev/null +++ b/src/img/subject_icons/subject_educacao-ambiental.svg @@ -0,0 +1,10 @@ +<svg width="56" height="57" viewBox="0 0 56 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M41.7444 39.3869C41.6523 39.4812 41.6523 39.5754 41.6523 39.6696C41.6523 39.7638 41.6523 39.9523 41.7444 40.0465C41.8364 40.1407 41.9284 40.1407 42.1125 40.1407C42.2965 40.1407 42.3885 40.1407 42.4806 40.0465C42.5726 39.9523 42.5726 39.8581 42.5726 39.6696C42.5726 39.4812 42.5726 39.3869 42.3885 39.3869C42.2965 39.1985 41.9284 39.1985 41.7444 39.3869Z" fill="#00BCD4"/> +<path d="M17.8156 42.5894C17.5395 42.5894 17.3555 42.7778 17.3555 43.0605V45.0392C17.3555 45.3219 17.5395 45.5103 17.8156 45.5103C18.0917 45.5103 18.2757 45.3219 18.2757 45.0392V43.0605C18.2757 42.7778 18.0917 42.5894 17.8156 42.5894Z" fill="#00BCD4"/> +<path d="M22.7878 14.4169C24.0761 14.5111 25.0884 15.4533 25.4565 16.7725C25.5485 16.9609 25.7326 17.1494 25.9166 17.1494H26.0087C26.2847 17.0552 26.3768 16.8667 26.3768 16.584C26.0087 14.888 24.6283 13.6631 22.9718 13.4746C22.6958 13.4746 22.5117 13.6631 22.5117 13.9457C22.5117 14.2284 22.5117 14.4169 22.7878 14.4169Z" fill="#00BCD4"/> +<path d="M28.125 23.0841C27.8489 22.9899 27.6648 23.1784 27.5728 23.3668C27.2047 24.4975 26.1924 25.2513 25.0881 25.1571C24.9041 25.1571 24.8121 25.2513 24.72 25.3456C24.628 25.4398 24.628 25.6282 24.72 25.8167C25.1802 26.8532 24.9041 28.0781 24.0759 28.8319C23.2476 29.5857 21.9593 29.6799 21.0391 29.1146C20.855 29.0203 20.5789 29.0203 20.3949 29.303C20.3029 29.4915 20.3029 29.7741 20.5789 29.9626C21.1311 30.3395 21.7753 30.5279 22.4194 30.5279C23.2476 30.5279 24.0759 30.2453 24.72 29.6799C25.7323 28.8319 26.1004 27.4185 25.8243 26.1936C27.1127 26.0051 28.125 25.0629 28.5851 23.7437C28.4931 23.3668 28.401 23.1784 28.125 23.0841Z" fill="#00BCD4"/> +<path d="M15.9772 10.7425C14.6889 11.1194 13.7686 12.0616 13.4925 13.3808C12.2962 13.0039 11.0079 13.3808 10.0876 14.323C8.98332 15.4537 8.79927 17.0556 9.53547 18.4689C9.62749 18.6574 9.81154 18.7516 9.90357 18.7516C9.99559 18.7516 10.0876 18.7516 10.0876 18.6574C10.2717 18.5632 10.3637 18.2805 10.2717 17.9978C9.71952 16.9613 9.90357 15.8306 10.7318 14.9826C11.468 14.1346 12.6643 13.9461 13.6766 14.5115C13.8606 14.6057 13.9527 14.6057 14.1367 14.5115C14.2287 14.4173 14.3208 14.323 14.3208 14.1346C14.4128 13.0039 15.149 12.0616 16.1612 11.7789C17.2655 11.4963 18.3698 11.9674 18.922 12.9096C19.014 13.0981 19.3821 13.1923 19.5662 13.0981C19.7502 13.0039 19.8422 12.627 19.7502 12.4385C18.922 10.9309 17.4496 10.3656 15.9772 10.7425Z" fill="#00BCD4"/> +<path d="M45.333 15.4529C47.7256 15.4529 49.6581 13.4742 49.6581 11.0243C49.6581 8.57444 47.7256 6.5957 45.333 6.5957C42.9403 6.5957 41.0078 8.57444 41.0078 11.0243C41.0078 13.4742 42.9403 15.4529 45.333 15.4529ZM45.333 7.53796C47.1735 7.53796 48.7379 9.04556 48.7379 11.0243C48.7379 13.003 47.1735 14.5106 45.333 14.5106C43.4925 14.5106 41.9281 13.003 41.9281 11.0243C41.9281 9.04556 43.4925 7.53796 45.333 7.53796Z" fill="#00BCD4"/> +<path d="M52.1418 49.4699H46.4363V43.8163C46.7123 43.9106 46.9884 43.9106 47.3565 43.9106C48.2768 43.9106 49.4731 43.6279 50.4853 42.6856C52.2338 40.8954 51.4976 38.0686 51.4976 37.9744L51.4056 37.6917L51.1295 37.5975C51.0375 37.5975 48.2767 36.8437 46.5283 38.634C46.1602 39.0109 45.8841 39.3878 45.7001 39.7647C45.516 39.3878 45.2399 39.0109 44.8718 38.634C43.1234 36.8437 40.3626 37.5975 40.2706 37.5975L39.9945 37.6917L39.9025 37.9744C39.9025 38.0686 39.1663 40.8954 40.9148 42.6856C41.927 43.7221 43.0313 44.0048 43.9516 44.0048C44.3197 44.0048 44.6878 44.0048 44.8718 43.9106V49.4699H43.4915H40.2706H31.6203C31.3442 49.4699 31.1602 49.6583 31.1602 49.941C31.1602 50.2237 31.3442 50.4121 31.6203 50.4121H40.2706H43.4915H52.1418C52.4179 50.4121 52.6019 50.2237 52.6019 49.941C52.6019 49.6583 52.4179 49.4699 52.1418 49.4699ZM47.1725 39.2935C48.2768 38.1628 50.0252 38.3513 50.6694 38.4455C50.7614 39.1051 50.9455 40.8954 49.8412 42.0261C48.9209 43.0625 47.7246 43.0625 46.8964 42.9683L49.0129 40.8011C49.197 40.6127 49.197 40.33 49.0129 40.1416C48.8289 39.9531 48.5528 39.9531 48.3688 40.1416L46.2522 42.3087C46.2522 42.2145 46.2522 42.0261 46.2522 41.9318C46.2522 41.8376 46.2522 41.8376 46.2522 41.7434C46.2522 40.9896 46.4363 40.0473 47.1725 39.2935ZM41.651 41.9318C40.5467 40.8011 40.7307 39.0109 40.8227 38.3513C41.4669 38.2571 43.2154 38.0686 44.3197 39.1993C45.0559 39.9531 45.2399 40.8954 45.332 41.5549C45.332 41.6492 45.332 41.7434 45.332 41.7434C45.332 41.8376 45.332 42.0261 45.332 42.1203L43.9516 40.7069C43.7675 40.5185 43.4915 40.5185 43.3074 40.7069C43.1234 40.8954 43.1234 41.178 43.3074 41.3665L44.6878 42.7799C43.8596 43.0625 42.6632 42.9683 41.651 41.9318Z" fill="#00BCD4"/> +<path d="M31.8962 25.8186C32.3563 24.4052 31.9882 22.8034 31.068 21.7669C32.0803 20.7305 32.6324 19.2229 32.2643 17.8095C31.8962 16.3019 30.8839 15.1712 29.5036 14.7C29.8717 13.2867 29.5956 11.779 28.5833 10.6483C27.571 9.51764 26.0987 9.14074 24.7183 9.42342C24.3502 8.01004 23.2459 6.78511 21.8655 6.40821C20.3931 6.0313 18.9207 6.40821 17.9085 7.44468C16.8962 6.40821 15.4238 5.93708 13.9514 6.31398C12.479 6.69088 11.4667 7.82159 11.0066 9.23497C9.62623 8.85806 8.15384 9.23497 7.04954 10.3657C6.03727 11.4964 5.66917 13.004 6.03727 14.4174C4.6569 14.7943 3.5526 15.925 3.1845 17.4326C2.81641 18.9402 3.27653 20.4478 4.2888 21.4843C3.27653 22.5207 2.90843 24.1226 3.36855 25.5359C3.82868 26.9493 4.93297 28.08 6.31334 28.3627C6.03727 29.7761 6.49739 31.2837 7.60169 32.3202C8.70599 33.3566 10.1784 33.6393 11.5588 33.2624C12.0189 34.6758 13.1232 35.7123 14.5956 35.995C14.6876 35.995 14.8716 35.995 14.9637 36.0892L14.5956 40.5178H12.571L9.99433 37.9737L9.44218 38.6333L11.3747 40.5178H8.61396V41.46H12.2949H14.5035L14.0434 49.4692H9.25813C8.98206 49.4692 8.79801 49.6576 8.79801 49.9403C8.79801 50.223 8.98206 50.4114 9.25813 50.4114H13.9514H21.6815H27.571C27.8471 50.4114 28.0312 50.223 28.0312 49.9403C28.0312 49.6576 27.8471 49.4692 27.571 49.4692H21.5894L20.4851 36.0892C21.8655 35.8065 22.9698 34.77 23.522 33.4509C24.9023 33.922 26.3747 33.6393 27.479 32.6028C28.5833 31.5664 29.0434 30.0588 28.8594 28.6454C30.2398 28.3627 31.4361 27.3262 31.8962 25.8186ZM14.9637 49.4692L16.068 36.0892C16.6201 35.995 17.0802 35.9007 17.6324 35.6181C18.2766 35.995 18.9207 36.1834 19.6569 36.1834L20.7612 49.4692H14.9637ZM30.6079 25.4417C30.2398 26.5724 29.2275 27.3262 28.0312 27.3262C28.0312 27.3262 28.0312 27.3262 27.9391 27.3262C27.6631 27.3262 27.479 27.4205 27.387 27.6089C27.295 27.7974 27.2029 28.08 27.295 28.2685C27.7551 29.3992 27.479 30.7183 26.5588 31.4721C25.6385 32.3202 24.3502 32.4144 23.3379 31.7548C23.1539 31.6606 22.8778 31.6606 22.6937 31.7548C22.5097 31.849 22.3256 32.0375 22.3256 32.3202C22.1416 33.5451 21.3134 34.4874 20.117 34.6758C19.3809 34.77 18.5526 34.5816 17.9085 34.1105C17.8164 34.0162 17.6324 33.922 17.4483 33.922C17.2643 33.922 17.1723 33.922 17.0802 34.0162C16.4361 34.4874 15.6999 34.6758 14.8716 34.4874C13.6753 34.2047 12.8471 33.2624 12.7551 32.0375C12.7551 31.7548 12.571 31.5664 12.387 31.4721C12.2029 31.3779 11.9269 31.3779 11.7428 31.4721C10.7305 32.1317 9.44218 31.9433 8.52194 31.0952C7.60169 30.2472 7.41764 28.9281 7.87776 27.8916C7.96979 27.7031 7.96979 27.4205 7.87776 27.232C7.78574 27.0436 7.50967 26.9493 7.32562 26.8551C6.1293 26.8551 5.11702 26.0071 4.74892 24.8764C4.38083 23.7457 4.84095 22.4265 5.85322 21.7669C6.03727 21.6727 6.1293 21.39 6.1293 21.2016C6.1293 20.9189 6.03727 20.7305 5.7612 20.6362C4.74892 19.9767 4.2888 18.7517 4.56488 17.621C4.84095 16.3961 5.85322 15.5481 7.04954 15.5481C7.32562 15.5481 7.50967 15.3596 7.60169 15.1712C7.69372 14.9827 7.69372 14.7 7.60169 14.5116C7.04954 13.4751 7.23359 12.156 8.06181 11.2137C8.89004 10.3657 10.1784 10.1772 11.2827 10.6483C11.4667 10.7426 11.7428 10.7426 11.9269 10.6483C12.1109 10.5541 12.2949 10.2714 12.2949 10.083C12.387 8.85806 13.1232 7.82159 14.3195 7.53891C15.5158 7.25623 16.7121 7.72736 17.3563 8.76384C17.4483 8.95229 17.7244 9.04651 17.9085 9.14074C18.0925 9.14074 18.3686 9.04652 18.4606 8.85806C19.1048 7.82159 20.3011 7.35046 21.4974 7.72736C22.6017 8.10426 23.4299 9.14074 23.4299 10.3657C23.4299 10.6483 23.522 10.8368 23.798 10.931C23.9821 11.0252 24.2582 11.0252 24.4422 10.931C25.5465 10.3657 26.7428 10.6483 27.571 11.4964C28.3993 12.3444 28.5833 13.6636 27.9391 14.7943C27.8471 14.9827 27.8471 15.2654 27.9391 15.4538C28.0312 15.6423 28.2152 15.8307 28.4913 15.8307C29.6876 15.925 30.6079 16.773 30.8839 17.9979C31.16 19.2228 30.6079 20.4478 29.5956 21.0131C29.4115 21.1074 29.2275 21.39 29.2275 21.5785C29.2275 21.7669 29.3195 22.0496 29.5036 22.1438C30.5158 22.9919 30.976 24.2168 30.6079 25.4417Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_educacao-do-campo.svg b/src/img/subject_icons/subject_educacao-do-campo.svg new file mode 100644 index 0000000000000000000000000000000000000000..3556cdb2cd89aafe9a10a6cedfd85e3076841712 --- /dev/null +++ b/src/img/subject_icons/subject_educacao-do-campo.svg @@ -0,0 +1,23 @@ +<svg width="53" height="57" viewBox="0 0 53 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M26.9067 34.1542C26.7879 33.6639 27.0849 33.1602 27.5602 33.0512C28.0354 32.9286 28.5225 33.235 28.6413 33.7252C28.7482 34.2154 28.4512 34.7192 27.976 34.8405C27.9035 34.8527 27.8334 34.8662 27.7609 34.8662C27.3701 34.865 27.0018 34.5831 26.9067 34.1542ZM23.9485 34.5341C23.4851 34.338 23.2713 33.7988 23.4495 33.3343C23.6396 32.8685 24.1623 32.6357 24.6138 32.8318C25.0771 33.0144 25.291 33.5549 25.1009 34.0206C24.9702 34.3883 24.6376 34.5966 24.2811 34.5966C24.1742 34.5941 24.0554 34.5709 23.9485 34.5341ZM30.162 32.7448C29.7818 32.4139 29.7343 31.8378 30.0551 31.4457C30.3758 31.0645 30.933 31.0155 31.3144 31.3354C31.6946 31.6663 31.7421 32.2411 31.4213 32.6345C31.2443 32.8551 30.9948 32.9654 30.7453 32.9654C30.5422 32.9641 30.3283 32.8918 30.162 32.7448ZM20.8477 31.8366C20.5863 31.4077 20.717 30.8439 21.1328 30.5755C21.5486 30.3046 22.107 30.4407 22.3684 30.8684C22.6179 31.2986 22.4991 31.8734 22.0714 32.1308C21.9288 32.2288 21.7625 32.2778 21.608 32.2778C21.311 32.279 21.014 32.1197 20.8477 31.8366ZM32.0035 29.6196C31.5045 29.5828 31.1374 29.1416 31.1718 28.6391C31.2075 28.1366 31.6471 27.7567 32.1353 27.7935C32.6224 27.8302 32.9907 28.2714 32.9539 28.7739C32.9195 29.2641 32.5274 29.6318 32.0629 29.6318C32.0391 29.6318 32.0142 29.6196 32.0035 29.6196ZM20.7051 28.7739C20.2061 28.7371 19.8378 28.2959 19.8735 27.7935C19.9091 27.291 20.3368 26.8988 20.8239 26.9356C21.311 26.9723 21.6912 27.4135 21.6556 27.916C21.6199 28.4062 21.2279 28.7739 20.7645 28.7739C20.7408 28.7739 20.717 28.7739 20.7051 28.7739ZM30.4816 25.6855C30.2202 25.2443 30.3521 24.6805 30.7786 24.4231C31.1956 24.1535 31.7421 24.2883 32.0023 24.7173C32.2518 25.1462 32.1211 25.7222 31.7053 25.9796C31.5627 26.0777 31.3964 26.1144 31.2419 26.1144C30.9461 26.1144 30.6491 25.9674 30.4816 25.6855ZM21.5011 25.2198C21.1209 24.8889 21.0734 24.3128 21.3942 23.9206C21.7031 23.5285 22.2615 23.4794 22.6416 23.8103C23.0218 24.129 23.0693 24.7173 22.7604 25.0972C22.5822 25.3178 22.3327 25.4281 22.0714 25.4281C21.8694 25.4281 21.6674 25.3546 21.5011 25.2198ZM28.2373 23.7123C27.7859 23.5162 27.5602 22.977 27.7502 22.5112C27.9403 22.0455 28.4643 21.8249 28.9145 22.0088C29.366 22.2049 29.5905 22.7441 29.4016 23.2098C29.2591 23.5652 28.9264 23.7858 28.5819 23.7858C28.4631 23.7858 28.3443 23.7613 28.2373 23.7123ZM24.1742 22.8176C24.0435 22.3274 24.3405 21.8249 24.8158 21.7024C24.8276 21.7024 24.8276 21.7024 24.8395 21.7024C24.8514 21.7024 24.8633 21.6901 24.887 21.6901C25.3623 21.5676 25.8375 21.8739 25.9563 22.3642C26.0751 22.8544 25.7781 23.3569 25.3029 23.4794C25.291 23.4794 25.2791 23.4794 25.2672 23.4917C25.2553 23.4917 25.2553 23.4917 25.2553 23.4917C25.1841 23.504 25.1128 23.5162 25.0415 23.5162C24.6376 23.5162 24.2693 23.2343 24.1742 22.8176Z" fill="#00BCD4"/> +<path d="M30.4481 17.4393L29.4906 17.1047L29.4656 16.5654C29.5892 15.6904 29.6521 14.7026 29.6521 13.6327C29.6521 12.2563 29.4134 10.6741 28.9405 8.93014L28.8633 8.64213L29.0355 8.40192C31.0731 5.56105 33.3577 3.54498 33.4539 3.46042L34.2166 2.79248L34.421 3.80113C34.4495 3.94329 35.1243 7.32097 35.0305 11.1031L35.0233 11.3788L34.819 11.5565C33.8032 12.4377 32.9644 13.3385 32.33 14.2332C31.6576 15.183 31.1028 16.1022 30.681 16.9638L30.4481 17.4393ZM30.163 8.89337C30.6133 10.6312 30.8402 12.2245 30.8402 13.6327C30.8402 13.8582 30.8378 14.08 30.8319 14.2969C31.003 14.0371 31.1824 13.7736 31.3701 13.5076C32.0164 12.5958 32.8492 11.6852 33.846 10.7979C33.8792 8.50977 33.6238 6.36502 33.4385 5.13087C32.6437 5.91646 31.3606 7.26336 30.163 8.89337Z" fill="#00BCD4"/> +<path d="M35.8619 21.9519L35.2773 21.1001L35.566 20.6491C36.166 20.0204 36.7814 19.2617 37.398 18.394C38.1869 17.28 38.9009 15.8571 39.5175 14.1621L39.6209 13.879L39.9012 13.7908C43.0805 12.8042 45.9353 12.5799 46.0565 12.5701L47.0533 12.4941L46.6399 13.4342C46.5828 13.5641 45.2106 16.6623 42.9925 19.6417L42.831 19.8586L42.566 19.8794C41.3162 19.9787 40.1887 20.1907 39.2145 20.5094C38.1287 20.8648 37.1545 21.268 36.3193 21.7092L35.8619 21.9519ZM40.5238 14.8791C39.8929 16.5532 39.1635 17.9773 38.3568 19.1171C38.2285 19.2985 38.0978 19.4762 37.9695 19.6502C38.257 19.5436 38.5528 19.4407 38.8557 19.3414C39.8466 19.0179 40.9729 18.796 42.2084 18.6808C43.5272 16.8707 44.5358 15.0102 45.0871 13.9121C44.0404 14.0531 42.3356 14.3398 40.5238 14.8791Z" fill="#00BCD4"/> +<path d="M44.4709 31.4509L44.2428 31.305C43.1795 30.6248 42.1495 30.1089 41.1812 29.7718C40.0977 29.3968 39.0795 29.1284 38.1564 28.9764L37.6562 28.8943V27.8501L38.1564 27.6614C39.0023 27.5192 39.9337 27.2815 40.9246 26.9579C42.1542 26.5559 43.4955 25.8745 44.9093 24.9333L45.1552 24.769L45.4308 24.8708C48.5222 26.0081 50.9113 27.5401 51.0111 27.6038L51.8606 28.1504L50.9885 28.6566C50.8721 28.724 48.117 30.3135 44.7263 31.37L44.4709 31.4509ZM40.6656 28.3195C40.959 28.409 41.2572 28.5058 41.559 28.61C42.5439 28.9519 43.5775 29.4581 44.6372 30.1174C46.6474 29.4679 48.4283 28.6259 49.4631 28.0965C48.5507 27.5805 47.0442 26.79 45.3049 26.127C43.8935 27.0437 42.5415 27.7153 41.2846 28.1259C41.0755 28.1945 40.8699 28.2595 40.6656 28.3195Z" fill="#00BCD4"/> +<path d="M46.7715 43.7097L45.7782 43.5859C45.6547 43.5712 42.7071 43.1999 39.4828 42.0723L39.2214 41.9816L39.1204 41.7169C38.6345 40.4435 38.0749 39.3418 37.4595 38.4397C36.8025 37.4813 36.136 36.6455 35.4755 35.9579L35.125 35.5927L35.7083 34.7422L36.2251 34.8954C36.9902 35.2949 37.8777 35.6712 38.8638 36.0143C40.0138 36.4139 41.3908 36.6737 42.9542 36.7889L43.2406 36.811L43.4033 37.0548C45.2816 39.8871 46.3556 42.6361 46.3996 42.7513L46.7715 43.7097ZM40.1231 41C42.0026 41.6372 43.7883 42.011 44.8682 42.2035C44.4203 41.212 43.635 39.6151 42.5812 37.9887C41.0344 37.8564 39.6574 37.5831 38.4848 37.1749C38.2781 37.1026 38.0749 37.0303 37.8765 36.9556C38.0619 37.2056 38.2472 37.4642 38.4302 37.7338C39.0574 38.6505 39.6265 39.7486 40.1231 41Z" fill="#00BCD4"/> +<path d="M33.7604 53.1654L33.0297 52.462C32.943 52.3798 30.8889 50.3932 28.9749 47.6344L28.8086 47.3967L28.8846 47.1148C29.2684 45.6796 29.4751 44.3524 29.4953 43.1721C29.5155 41.998 29.4549 40.9183 29.3171 39.9624L29.2422 39.4476L30.3091 39.1143L30.5313 39.564C30.9209 40.3558 31.4223 41.1977 32.0187 42.0703H32.0199C32.6757 43.03 33.562 44.0129 34.6562 44.9921L34.8665 45.1808L34.8605 45.4676C34.7869 49.0157 34.0431 52.0404 34.0111 52.169L33.7604 53.1654ZM30.1048 47.1552C31.2108 48.7142 32.3597 50.0157 33.0868 50.7915C33.3018 49.6701 33.6 47.7876 33.6642 45.7238C32.5949 44.7421 31.7146 43.7518 31.0481 42.775C30.9221 42.5924 30.7998 42.4086 30.6821 42.2272C30.6881 42.5422 30.6893 42.8645 30.6833 43.193C30.6631 44.3965 30.4683 45.7262 30.1048 47.1552Z" fill="#00BCD4"/> +<path d="M17.8503 52.8677L17.6625 51.8542C17.6412 51.7365 17.1339 48.952 17.1529 45.6099L17.1541 45.3109L17.3845 45.1283C18.6225 44.1466 19.624 43.1404 20.363 42.1354C21.0532 41.1966 21.6235 40.2885 22.0571 39.4343L22.2983 38.96L23.2488 39.3166L23.2654 39.8522C23.1276 40.7211 23.048 41.7077 23.0301 42.7837C23.0111 43.9076 23.1501 45.1773 23.4436 46.5597L23.5018 46.8343L23.3402 47.0585C21.2065 50.0158 18.727 52.1275 18.6225 52.2157L17.8503 52.8677ZM18.3409 45.9126C18.348 47.7976 18.5263 49.495 18.6653 50.5392C19.523 49.7254 20.9404 48.2853 22.227 46.5426C21.9538 45.1736 21.8243 43.9027 21.8433 42.7592C21.8469 42.5337 21.854 42.3119 21.8623 42.0937C21.6877 42.3523 21.5035 42.6122 21.311 42.8744C20.5554 43.9015 19.5575 44.9224 18.3409 45.9126Z" fill="#00BCD4"/> +<path d="M5.17578 42.9332L5.60467 42.0006C5.65457 41.8915 6.86044 39.2921 8.81715 36.5836L8.9918 36.3421L9.28406 36.3372C10.9188 36.3115 12.3659 36.108 13.5824 35.733C14.6742 35.3984 15.6556 35.0112 16.4979 34.5847L16.9589 34.353L17.5315 35.2122L17.2345 35.657C16.6238 36.2759 15.9954 37.0235 15.3645 37.8802C14.7087 38.7712 14.0945 39.8791 13.5385 41.1733L13.4304 41.4258L13.1761 41.5091C9.67493 42.6624 6.31512 42.8658 6.17374 42.8744L5.17578 42.9332ZM9.5977 37.5554C8.50351 39.1033 7.65881 40.6096 7.16577 41.552C8.36926 41.4123 10.4436 41.0949 12.5631 40.4233C13.1274 39.1499 13.7511 38.0469 14.4188 37.1387C14.5507 36.9598 14.6826 36.7846 14.8144 36.6142C14.5257 36.7159 14.2275 36.8127 13.9222 36.9071C12.6759 37.2919 11.223 37.5089 9.5977 37.5554Z" fill="#00BCD4"/> +<path d="M8.24143 31.0367L7.986 30.9497C4.46462 29.7498 1.59666 27.8404 1.47548 27.7595L0.636719 27.197L1.51706 26.7068C1.62518 26.6467 4.20919 25.2165 7.44543 24.2201L7.72225 24.1343L7.95867 24.3071C9.29285 25.2814 10.5771 25.9996 11.7771 26.4408C12.8511 26.8354 13.8645 27.121 14.7888 27.2913L15.2973 27.3845L15.2616 28.4275L14.7674 28.6052C13.9215 28.7326 12.9853 28.952 11.985 29.2596C10.8979 29.5942 9.7158 30.1469 8.4731 30.8994L8.24143 31.0367ZM3.0342 27.295C4.09751 27.9225 5.98294 28.9459 8.10718 29.6984C9.34631 28.9667 10.5356 28.4238 11.6452 28.0831C11.8543 28.0181 12.061 27.9581 12.2654 27.9017C11.9743 27.8073 11.6785 27.7056 11.3779 27.5953C10.1482 27.1431 8.84971 26.4322 7.51078 25.48C5.6491 26.0744 4.01197 26.8171 3.0342 27.295Z" fill="#00BCD4"/> +<path d="M17.3199 21.5625L16.8185 21.4044C16.0629 20.9914 15.1826 20.5992 14.1989 20.2376C13.056 19.8173 11.6874 19.5329 10.1322 19.3908L9.85776 19.365L9.69975 19.1334C7.58858 16.0486 6.39341 12.8303 6.34351 12.6955L5.98828 11.731L6.97911 11.8719C7.10861 11.8903 10.1916 12.3352 13.4861 13.5877L13.751 13.6894L13.8425 13.9652C14.3486 15.4873 14.9545 16.7913 15.6448 17.838C16.2887 18.8148 16.9421 19.6629 17.5872 20.3578L17.9424 20.7414L17.3199 21.5625ZM10.5148 18.1971C12.0568 18.3564 13.429 18.6542 14.5981 19.0832C14.8036 19.1591 15.0056 19.2364 15.2028 19.3136C15.0222 19.0599 14.8416 18.7976 14.6622 18.5255C13.9553 17.4531 13.334 16.1467 12.8124 14.6392C10.8605 13.9211 8.98454 13.4897 7.86659 13.2703C8.35725 14.4027 9.2673 16.3281 10.5148 18.1971Z" fill="#00BCD4"/> +<path d="M22.262 15.8418L21.7773 15.0096C21.6656 14.8184 21.5895 14.6971 21.5385 14.6199C21.4125 14.5807 21.2854 14.4949 21.1702 14.3453C20.3338 13.2583 19.3192 12.0033 18.1252 10.9493L17.9102 10.7593L17.9173 10.4664C18.0171 6.80563 18.8535 3.63876 18.8891 3.50639L19.1552 2.51123L19.8752 3.22819C19.9595 3.31275 21.9792 5.33617 23.848 8.12802L24.0096 8.36946L23.9288 8.65012C23.4334 10.3831 23.1827 11.969 23.1827 13.3612C23.1827 14.3821 22.8239 14.9704 22.7835 15.0341L22.262 15.8418ZM21.9816 13.4286C21.9852 13.4298 21.9887 13.4311 21.9923 13.4323C21.9923 13.409 21.9923 13.3845 21.9923 13.36C21.9923 11.9273 22.2335 10.3218 22.7087 8.58516C21.6299 7.00785 20.5025 5.68546 19.7885 4.89619C19.5449 6.06048 19.1968 8.04959 19.1137 10.2115C20.2328 11.2385 21.1844 12.3979 21.9816 13.4286Z" fill="#00BCD4"/> +<path d="M30.5465 17.457L29.8776 17.2364C27.7546 16.5379 25.4426 16.5084 23.2934 17.1617L22.8111 17.3087L22.5913 16.8418C22.4701 16.5844 22.3359 16.3185 22.1897 16.0452L22.1185 15.8148C22.0377 15.0537 21.9961 14.2277 21.9961 13.36C21.9961 11.8488 22.2634 10.1465 22.7909 8.30202C23.9302 4.31646 25.8775 1.01845 25.9594 0.87996L26.4822 0L26.9812 0.893441C27.0619 1.03928 28.983 4.50888 30.0903 8.59983C30.5916 10.4517 30.8459 12.1442 30.8459 13.6308C30.8459 14.7596 30.7782 15.8062 30.6475 16.7401L30.5465 17.457ZM26.4667 15.4643C27.511 15.4643 28.547 15.5991 29.5545 15.8662C29.6234 15.1762 29.6578 14.4274 29.6578 13.6333C29.6578 12.2569 29.419 10.6747 28.9462 8.93074C28.2167 6.23571 27.094 3.77231 26.4501 2.47198C25.7967 3.71961 24.6716 6.058 23.9302 8.65008C23.4348 10.383 23.1841 11.9689 23.1841 13.3612C23.1841 14.1382 23.2186 14.8784 23.2863 15.5611C23.3374 15.6591 23.3885 15.7559 23.4372 15.8528C24.4292 15.5942 25.4462 15.4643 26.4667 15.4643Z" fill="#00BCD4"/> +<path d="M35.9252 22.0267L35.5117 21.4421C34.1205 19.4726 32.203 18.0289 29.9671 17.2703L29.3125 17.0472L29.6226 16.4124C30.0717 15.4908 30.6609 14.5128 31.3738 13.509C32.064 12.5359 32.9669 11.564 34.0552 10.6191C37.4506 7.67407 41.5459 5.92641 41.7181 5.85287L42.6424 5.46191L42.5331 6.48649C42.5153 6.65317 42.0793 10.6203 40.6311 14.5949C39.9764 16.3928 39.2125 17.9149 38.3583 19.1185C37.7085 20.034 37.0538 20.8379 36.4147 21.5095L35.9252 22.0267ZM30.9995 16.3523C32.9693 17.1502 34.6908 18.4444 36.0357 20.1381C36.4859 19.6234 36.9433 19.04 37.3996 18.3966C38.1884 17.2825 38.9024 15.8597 39.519 14.1647C40.4719 11.5456 40.9768 8.87758 41.2013 7.43631C39.7959 8.12508 37.1073 9.57126 34.8191 11.5567C33.8033 12.4379 32.9646 13.3387 32.3301 14.2333C31.8157 14.9613 31.369 15.6721 30.9995 16.3523Z" fill="#00BCD4"/> +<path d="M37.6154 28.9753L37.6593 28.2179C37.6593 25.8133 36.937 23.4909 35.5695 21.5214L35.168 20.9429L35.781 20.6193C36.6756 20.1463 37.7104 19.7173 38.8592 19.3423C39.9214 18.9955 41.1391 18.7651 42.4804 18.6584C46.9712 18.3006 51.405 19.4183 51.5904 19.4661L52.561 19.7149L51.885 20.476C51.7722 20.6034 49.0717 23.6232 45.5539 25.9628C44.051 26.9629 42.6135 27.6909 41.284 28.126C40.2148 28.4765 39.224 28.7241 38.3412 28.8625L37.6154 28.9753ZM36.9287 21.4086C38.0632 23.2543 38.7131 25.3451 38.8295 27.5279C39.4758 27.3931 40.1792 27.2019 40.9253 26.958C42.1549 26.556 43.4962 25.8746 44.91 24.9334C47.2421 23.3818 49.2404 21.4785 50.2681 20.4318C48.7082 20.1254 45.6145 19.6401 42.5707 19.8828C41.3209 19.9821 40.1934 20.1941 39.2192 20.5127C38.3852 20.7823 37.6177 21.0838 36.9287 21.4086Z" fill="#00BCD4"/> +<path d="M44.8829 38.0807C44.2259 38.0807 43.5511 38.0587 42.8704 38.0097C41.2059 37.8871 39.7292 37.6064 38.4841 37.1726C37.4433 36.811 36.5036 36.4115 35.6886 35.9862L35.0625 35.6578L35.4795 35.0744C36.8767 33.1184 37.6287 30.7972 37.6536 28.3607L37.6608 27.6499L38.3415 27.7614C39.33 27.9244 40.4111 28.2075 41.5564 28.6046C42.6126 28.9723 43.7258 29.5275 44.8663 30.2579C48.6978 32.7078 51.6358 36.3098 51.7594 36.463L52.4009 37.2547L51.4196 37.4569C51.2723 37.49 48.3544 38.0807 44.8829 38.0807ZM36.841 35.1994C37.454 35.4862 38.13 35.7583 38.8619 36.0132C40.0119 36.4127 41.3889 36.6726 42.9523 36.7878C45.8191 36.9986 48.6585 36.664 50.1377 36.4385C49.0542 35.2399 46.8349 32.964 44.2378 31.3046C43.1745 30.6244 42.1445 30.1084 41.1762 29.7714C40.3458 29.4834 39.5533 29.2591 38.8132 29.101C38.6718 31.2849 37.9994 33.3684 36.841 35.1994Z" fill="#00BCD4"/> +<path d="M42.228 51.3172L41.3204 50.8833C41.154 50.8049 37.2002 48.893 33.8737 45.9136C32.7082 44.8682 31.7565 43.8118 31.0449 42.7725C30.4164 41.8533 29.8854 40.9599 29.4707 40.1155L29.1523 39.4708L29.8212 39.2539C32.0678 38.5247 34.0043 37.1091 35.4217 35.158L35.8363 34.5894L36.3199 35.0943C37.0256 35.8309 37.7348 36.7169 38.4286 37.7317C39.0999 38.7134 39.7046 39.9022 40.225 41.265C41.8526 45.5276 42.152 50.0965 42.1639 50.2877L42.228 51.3172ZM30.8536 40.1804C31.1839 40.7871 31.5736 41.4182 32.0167 42.0653C32.6737 43.025 33.56 44.0079 34.6542 44.9871C36.8984 46.9995 39.5062 48.5364 40.8736 49.2791C40.6895 47.6834 40.2167 44.5876 39.1201 41.7148C38.6342 40.4415 38.0746 39.3397 37.4592 38.4376C36.9543 37.7011 36.4446 37.038 35.9373 36.4596C34.571 38.1374 32.8341 39.4083 30.8536 40.1804Z" fill="#00BCD4"/> +<path d="M25.9698 56.4681L25.4863 55.5648C25.4863 55.5648 25.3057 55.2266 25.0229 54.6371C24.2946 53.1112 22.97 50.0681 22.2797 46.8216C21.9661 45.346 21.8176 43.9807 21.8378 42.7613C21.8568 41.6264 21.9411 40.581 22.0896 39.6532L22.2037 38.9399L22.8666 39.1716C25.0776 39.9474 27.5036 39.9829 29.73 39.2831L30.3893 39.076L30.4903 39.7782C30.6388 40.8016 30.7042 41.9499 30.6828 43.1914C30.6602 44.4758 30.4404 45.9049 30.0282 47.4405C29.2405 50.3721 27.9111 53.0585 27.1887 54.4005C26.7812 55.1542 26.508 55.5991 26.508 55.5991L25.9698 56.4681ZM23.1672 40.5491C23.0876 41.2367 23.0401 41.9843 23.027 42.7821C23.008 43.906 23.147 45.1756 23.4404 46.5581C24.0903 49.6147 25.3318 52.4984 26.0434 54.001C26.0779 53.9373 26.1135 53.8723 26.1504 53.8037C26.8466 52.5107 28.1285 49.9223 28.8841 47.112C29.2678 45.6769 29.4745 44.3496 29.4947 43.1694C29.5102 42.2686 29.4769 41.4229 29.3997 40.6459C27.361 41.1582 25.1928 41.1288 23.1672 40.5491Z" fill="#00BCD4"/> +<path d="M9.90625 50.7179L10.0334 49.6945C10.0583 49.5009 10.644 44.8989 12.4558 40.678C13.0486 39.2956 13.7104 38.1055 14.422 37.1386C15.0861 36.2353 15.7538 35.4424 16.4049 34.783L16.9051 34.2769L17.3078 34.8676C18.6681 36.8628 20.5595 38.3396 22.7811 39.1387L23.431 39.3716L23.1114 40.0015C22.6469 40.9158 22.041 41.8815 21.3115 42.8742C20.5084 43.9662 19.4308 45.0509 18.1097 46.0987C14.7654 48.7496 10.9981 50.2791 10.8389 50.3429L9.90625 50.7179ZM16.7601 36.1618C16.3003 36.6692 15.8334 37.2452 15.3665 37.88C14.7107 38.771 14.0965 39.8789 13.5405 41.1731C12.3121 44.0385 11.6598 47.1662 11.3806 48.7692C12.7077 48.1479 15.1729 46.8806 17.385 45.1268C18.623 44.1452 19.6245 43.139 20.3635 42.134V42.1328C20.8933 41.4146 21.3519 40.7123 21.7321 40.0383C19.7766 39.2049 18.0777 37.8813 16.7601 36.1618Z" fill="#00BCD4"/> +<path d="M8.9163 37.5657C4.92445 37.5657 1.3508 36.5963 1.19635 36.5546L0.230469 36.2887L0.919538 35.5411C1.04666 35.4026 4.07025 32.1389 7.87438 29.8373C9.19906 29.0358 10.4691 28.4438 11.6476 28.081C12.7038 27.7563 13.6958 27.5234 14.5987 27.3886L15.289 27.2856L15.2724 28.2367C15.2724 30.5898 15.9567 32.8546 17.2505 34.7874L17.6425 35.3732L17.0236 35.6869C16.123 36.1428 15.0799 36.5534 13.9251 36.9088C12.604 37.3157 11.05 37.5363 9.30598 37.5633C9.17411 37.5645 9.04461 37.5657 8.9163 37.5657ZM2.53529 35.6134C3.93124 35.9137 6.57109 36.3904 9.2846 36.3365C10.9194 36.3107 12.3664 36.1073 13.583 35.7323C14.4217 35.4749 15.194 35.1881 15.8878 34.8756C14.7853 33.0127 14.1699 30.9072 14.0915 28.7196C13.4321 28.8482 12.7264 29.0284 11.9862 29.2564C10.8992 29.5909 9.71705 30.1437 8.47435 30.8962C5.90341 32.449 3.65562 34.5128 2.53529 35.6134Z" fill="#00BCD4"/> +<path d="M15.2598 28.6191L14.5814 28.4941C13.5918 28.3127 12.5154 28.0088 11.3796 27.5921C10.0775 27.1129 8.69581 26.3432 7.27252 25.3039C3.89133 22.8307 1.41543 19.6859 1.31088 19.5523L0.683594 18.7496L1.6673 18.5645C1.84075 18.5327 5.95141 17.774 10.2343 18.1687C11.8893 18.3206 13.3553 18.627 14.5945 19.0817C15.6316 19.4629 16.5655 19.8796 17.3709 20.3196L17.9911 20.6578L17.5658 21.2326C16.1354 23.1641 15.3441 25.4706 15.2788 27.9071L15.2598 28.6191ZM2.9302 19.6099C3.8842 20.7032 5.73756 22.6788 7.95921 24.3051C9.29339 25.2794 10.5777 25.9976 11.7776 26.4376C12.6021 26.7403 13.3898 26.9793 14.1299 27.1509C14.307 24.9681 15.0162 22.8969 16.2043 21.088C15.5972 20.7902 14.9248 20.5046 14.1965 20.2374C13.0536 19.8171 11.6849 19.5327 10.1298 19.3906C7.26183 19.1258 4.41288 19.4114 2.9302 19.6099Z" fill="#00BCD4"/> +<path d="M17.2 21.7173L16.7248 21.205C16.0345 20.4611 15.3383 19.5603 14.6576 18.5271C13.9079 17.3886 13.2533 15.9877 12.7139 14.3626C11.3465 10.2496 11.1445 6.08145 11.1362 5.90619L11.0898 4.87549L11.9892 5.3265C12.1389 5.40248 15.7173 7.2102 18.8953 10.018C20.2533 11.2178 21.3403 12.4299 22.1245 13.6199C22.5343 14.2438 22.9038 14.859 23.2222 15.4522C23.3802 15.7463 23.524 16.0319 23.6547 16.3088L23.9612 16.9596L23.2887 17.1643C21.0338 17.8518 19.0747 19.2331 17.6217 21.1584L17.2 21.7173ZM12.4098 6.93813C12.5571 8.4321 12.9337 11.2436 13.839 13.9643C14.3451 15.4865 14.951 16.7905 15.6413 17.8371C16.1355 18.586 16.6345 19.26 17.1311 19.8458C18.5258 18.1913 20.2842 16.951 22.2753 16.2157C22.2456 16.1593 22.2159 16.1029 22.185 16.0453C21.8833 15.484 21.5328 14.9007 21.1431 14.3075C20.4184 13.2081 19.4014 12.0769 18.1231 10.9482C16.0155 9.08533 13.6762 7.65508 12.4098 6.93813Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_educacao-especial.svg b/src/img/subject_icons/subject_educacao-especial.svg new file mode 100644 index 0000000000000000000000000000000000000000..0751851245725cec37e928296c7c4460a9097331 --- /dev/null +++ b/src/img/subject_icons/subject_educacao-especial.svg @@ -0,0 +1,8 @@ +<svg width="56" height="57" viewBox="0 0 56 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M13.2161 24.6992C15.2407 24.6992 16.8971 23.0024 16.8971 20.9287C16.8971 18.8549 15.2407 17.1582 13.2161 17.1582C11.1916 17.1582 9.53516 18.8549 9.53516 20.9287C9.53516 23.0024 11.1916 24.6992 13.2161 24.6992ZM13.2161 18.6664C14.5045 18.6664 15.5168 19.7033 15.5168 21.0229C15.5168 22.3426 14.5045 23.3795 13.2161 23.3795C11.9278 23.3795 10.9155 22.3426 10.9155 21.0229C10.9155 19.7033 11.9278 18.6664 13.2161 18.6664Z" fill="#00BCD4"/> +<path d="M13.767 41.9472C13.2148 43.4554 11.8345 44.4923 10.27 44.4923C8.2455 44.4923 6.49704 42.7956 6.49704 40.6276C6.49704 39.0251 7.50931 37.5169 8.9817 37.0456L9.44183 36.8571V32.3325L8.6136 32.521C4.84059 33.2751 2.17188 36.6686 2.17188 40.6276C2.17188 45.1521 5.76084 48.9226 10.27 48.9226C14.1351 48.9226 17.448 46.0948 18.1842 42.3243L18.3682 41.4759H13.951L13.767 41.9472ZM14.8713 42.8899H16.5277C15.6075 45.6235 13.0308 47.5087 10.178 47.5087C6.49703 47.5087 3.46022 44.398 3.46022 40.6276C3.46022 37.7054 5.30071 35.0661 7.96943 34.1235V35.8202C6.22096 36.6686 5.02464 38.5538 5.02464 40.5333C5.02464 43.4554 7.32526 45.812 10.178 45.812C12.2026 45.9062 14.0431 44.6808 14.8713 42.8899Z" fill="#00BCD4"/> +<path d="M23.4309 30.8224C21.4984 30.8224 19.3818 29.7855 18.0014 28.2773L16.0689 26.1093C15.7928 25.8265 15.4247 25.5438 15.0566 25.261L14.9646 25.1667H14.8726C14.2284 24.8839 13.5842 24.6954 12.848 24.7897C11.0076 24.9782 9.53516 26.6749 9.53516 28.6544V37.6093C9.53516 39.683 11.1916 41.3798 13.2161 41.3798H19.9339V48.9207H24.2591V39.8716C24.2591 37.7978 22.6027 36.1011 20.5781 36.1011H16.8051V32.9904C18.8296 34.4044 21.4063 35.2527 23.5229 35.2527H24.2591V30.8224H23.4309C23.4309 30.8224 23.5229 30.8224 23.4309 30.8224ZM22.8787 33.8388C20.7622 33.6503 18.3695 32.6134 16.6211 31.1052L15.4247 30.1626V37.6093H20.5781C21.8665 37.6093 22.8787 38.6462 22.8787 39.9658V47.601H21.3143V40.0601H13.2161C11.9278 40.0601 10.9155 39.0232 10.9155 37.7035V28.7487C10.9155 27.5233 11.8358 26.3921 12.9401 26.2978C13.4002 26.2036 13.8603 26.3921 14.3204 26.5806L14.4125 26.6749H14.5045C14.6885 26.7692 14.8726 26.9577 15.0566 27.1462L16.9892 29.3142C18.4616 31.0109 20.6701 32.1421 22.7867 32.3306V33.8388H22.8787Z" fill="#00BCD4"/> +<path d="M39.3473 28.4677L43.1203 33.0866L46.8013 30.4472L40.3596 22.2464L39.6234 21.3981C39.1632 20.8325 38.7031 20.2669 38.243 19.7014C37.5068 18.853 36.5865 18.6645 35.7583 18.6645C35.6663 18.6645 35.6663 18.6645 35.5743 18.6645C37.5068 18.6645 39.1632 16.9678 39.1632 14.894C39.1632 12.8202 37.5068 11.1235 35.4823 11.1235C33.4577 11.1235 31.8013 12.8202 31.8013 14.894C31.8013 16.9678 33.3657 18.5702 35.3902 18.6645C33.6418 18.6645 32.3534 19.3243 31.7092 20.644L27.6602 28.2792L28.7645 35.8202L32.8135 34.312L32.0773 29.5989L33.2737 27.5251L33.4577 34.689L28.4884 48.2627L33.4577 49.7709L38.9792 35.0661L39.3473 28.4677ZM33.1816 14.894C33.1816 13.5743 34.1939 12.5375 35.4823 12.5375C36.7706 12.5375 37.7829 13.5743 37.7829 14.894C37.7829 16.2137 36.7706 17.2506 35.4823 17.2506C34.1939 17.2506 33.1816 16.2137 33.1816 14.894ZM37.6908 34.5948L32.6295 47.9799L30.3289 47.2258L34.8381 34.8775L34.47 22.6235L30.6049 29.2218L31.2491 33.2751L29.8687 33.7464L29.0405 28.3735L32.9056 21.2096C33.5497 19.9842 35.0221 19.9842 35.6663 19.9842C36.4945 19.9842 36.8626 20.1727 37.2307 20.5497C37.6908 21.1153 38.151 21.6809 38.6111 22.2464L44.7767 30.1644L43.3964 31.2013L37.8749 24.3202L36.7706 25.2628L38.0589 26.8653L37.6908 34.5948Z" fill="#00BCD4"/> +<path d="M37.2344 40.9087L40.4552 49.8636L44.5963 48.1669L39.535 34.9702L37.2344 40.9087ZM42.7559 47.3185L41.1914 47.9784L38.6147 40.9087L39.3509 38.835L42.7559 47.3185Z" fill="#00BCD4"/> +<path d="M53.9812 47.7915L45.5149 32.7096C45.3309 32.3325 44.8707 32.2383 44.5947 32.4268C44.2266 32.6153 44.1345 33.0866 44.3186 33.3694L52.8769 48.5456L53.0609 48.7341C53.153 48.8284 53.337 48.9226 53.5211 48.9226C53.7051 48.9226 53.8892 48.8284 53.9812 48.7341C54.2573 48.5456 54.2573 48.0743 53.9812 47.7915Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_educacao-fisica.svg b/src/img/subject_icons/subject_educacao-fisica.svg new file mode 100644 index 0000000000000000000000000000000000000000..5ef2e5bcb9b0bfdc4a88695334eb98d2d9637b84 --- /dev/null +++ b/src/img/subject_icons/subject_educacao-fisica.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <g> + <path class="st1" d="M38.6,47.7h-5.3V36.6l-3.9-5.2l-3,8.5l-11,4.8l-3-4.3l9.3-5.5l4.9-19.2l-2.6,0.8v7.9h-5.3V12.2l12.1-3.8 + l1.2-0.2c1.5,0,2.9,0.8,3.7,2.1l4,6.7h8v5.3H36l-1.6-2.6l-1,4l5.2,9.5V47.7z M34.8,46.2h2.3V33.6l-5.3-9.7l2.1-8.1l3,5H46v-2.3 + h-7.3l-4.4-7.4c-0.5-0.9-1.4-1.4-2.4-1.4l-0.9,0.1L20,13.3V23h2.3v-7.5l6.3-2l-5.7,22.4l-8.4,5l1.4,2l9.3-4.1l3.7-10.5l5.9,7.9 + V46.2z M36.2,9.3c-2.5,0-4.5-2-4.5-4.5s2-4.5,4.5-4.5s4.5,2,4.5,4.5S38.7,9.3,36.2,9.3z M36.2,1.7c-1.7,0-3,1.3-3,3 + c0,1.7,1.3,3,3,3c1.7,0,3-1.3,3-3C39.2,3,37.9,1.7,36.2,1.7z"/> + </g> + <g> + <rect x="4.5" y="12.4" class="st1" width="10.6" height="1.5"/> + </g> + <g> + <rect x="6.6" y="20.9" class="st1" width="8.4" height="1.5"/> + </g> + <g> + <rect x="8.7" y="29.3" class="st1" width="10.6" height="1.5"/> + </g> +</g> +</svg> diff --git a/src/img/subject_icons/subject_educacao-indigena.svg b/src/img/subject_icons/subject_educacao-indigena.svg new file mode 100644 index 0000000000000000000000000000000000000000..d38c4c31fe4fbe96409459aa68c4c87696ed0a14 --- /dev/null +++ b/src/img/subject_icons/subject_educacao-indigena.svg @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="10 0.1 72 47.7" style="enable-background:new 10 0.1 72 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#29C3CE;} +</style> +<rect x="10" y="0.1" class="st0" width="72" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<path class="st1" d="M78.1,26.8c-0.2-0.2-0.4-0.3-0.7-0.3l-4-0.1c-0.3,0-0.5,0.1-0.7,0.3l-8.1,7.9c-0.2,0.2-0.3,0.4-0.3,0.7l-0.1,4 + c0,0.1,0,0.1,0,0.2l-0.7,0.7c-0.9-3.1-3-5.4-6.2-6.8l0.3-0.7c0.1,0,0.1,0,0.2,0l3.7-1.5c0.2-0.1,0.4-0.3,0.5-0.5l4.5-10.4 + c0.1-0.2,0.1-0.5,0-0.7L65,15.9c-0.2-0.5-0.8-0.7-1.3-0.5L60,16.9c-0.2,0.1-0.4,0.3-0.5,0.5L55,27.8c-0.1,0.2-0.1,0.5,0,0.7l1.5,3.7 + c0,0.1,0.1,0.1,0.1,0.2l-0.3,0.7c-2.7-1-6.1-1.6-10.2-1.6v-1.7c0.2-0.1,0.3-0.2,0.5-0.3l3.9-3.8c0.3-0.3,0.4-0.6,0.4-1l0.2-15.5 + c0-0.4-0.1-0.7-0.4-1l-3.8-3.9c-0.3-0.3-0.6-0.4-1-0.4s-0.7,0.1-1,0.4l-3.7,3.6c-0.3,0.3-0.4,0.6-0.4,1l-0.2,15.5 + c0,0.4,0.1,0.7,0.4,1l3.8,3.9c0.1,0.1,0.3,0.2,0.5,0.3v1.7c-4,0-7.4,0.6-10,1.6l-0.2-0.5c0-0.1,0.1-0.1,0.1-0.2l1.6-3.7 + c0.1-0.2,0.1-0.5,0-0.7l-4.2-10.5c-0.1-0.2-0.3-0.4-0.5-0.5l-3.7-1.6c-0.5-0.2-1.1,0-1.3,0.5l-1.6,3.7c-0.1,0.2-0.1,0.5,0,0.7 + l4.2,10.5c0.1,0.2,0.3,0.4,0.5,0.5l3.7,1.6c0.1,0,0.1,0,0.2,0l0.2,0.5C31,34.7,28.9,36.9,28,40l-0.4-0.4c0-0.1,0-0.1,0-0.2l0.1-4 + c0-0.3-0.1-0.5-0.3-0.7l-7.9-8.1c-0.2-0.2-0.4-0.3-0.7-0.3l-4-0.1c-0.2,0-0.5,0.1-0.7,0.3c-0.2,0.2-0.3,0.4-0.3,0.7l-0.1,4 + c0,0.3,0.1,0.5,0.3,0.7l7.9,8.1c0.2,0.2,0.4,0.3,0.7,0.3l4,0.1c0.1,0,0.1,0,0.2,0l0.9,0.9c-0.2,0.8-0.3,1.7-0.3,2.7h2 + c0-7.1,5.3-10.6,16.3-10.6S62.1,36.9,62.1,44h2c0-0.9-0.1-1.8-0.2-2.7l1.1-1.1c0.1,0,0.1,0,0.2,0l4,0.1c0.3,0,0.5-0.1,0.7-0.3 + l8.1-7.9c0.2-0.2,0.3-0.4,0.3-0.7l0.1-4C78.3,27.2,78.2,27,78.1,26.8z M14.7,31.4l0.1-4.1l4,0.1l4.9,5.1l-0.1,3.3l-3.1-3.2l-3.1-3.2 + c-0.2-0.2-0.5-0.2-0.7,0s-0.2,0.5,0,0.7l2.2,2.3l-3.3-0.1L14.7,31.4z M22.6,39.4l-6-6.1l3.3,0.1l3.8,4l2.1,2.2L22.6,39.4z + M26.6,38.8l-2-2.1l0.1-3.3l2,2L26.6,38.8z M26.4,19.7l1.5-3.6l3.7,1.6l0.5,1.3L32,19.1l-1.2,2.8l-1.2-3c-0.1-0.3-0.4-0.4-0.6-0.3 + c-0.3,0.1-0.4,0.4-0.3,0.6l3.3,8.3l-3-1.3L26.4,19.7z M30.6,30.3l-1-2.6l3,1.3l1,2.6L30.6,30.3z M33.4,28.3l-2-5.1l1.3-3l3.2,7.9 + l-1.4,3.1L33.4,28.3z M49.7,24.4l-3.4,3.3l0.1-4l3.4-3.3L49.7,24.4z M45.5,23.4l-0.1,4.3l-3.3-3.3l0.2-12l3.3,3.4L45.5,23.4z + M45.6,9.5l-0.1,4.8l-3.3-3.4V8.8l3.9-3.6l3.8,3.9L49.8,19l-3.4,3.2l0.2-12.7c0-0.3-0.2-0.5-0.5-0.5S45.6,9.2,45.6,9.5z M61.2,30.3 + l-3.1,1.2l1.1-2.6l3-1.2L61.2,30.3z M60.5,17.7l3.7-1.5l1.5,3.7l-2.8,6.5l-3,1.2l3.5-8.2c0.1-0.3,0-0.5-0.3-0.7 + c-0.3-0.1-0.5,0-0.7,0.3l-1.2,2.9l-1.2-3L60.5,17.7z M56,28l3.4-7.9l1.2,3l-3.4,7.8L56,28z M65.3,35.3l2-2l-0.1,3.3l-2,2L65.3,35.3z + M69.2,39.3h-3.3l6.2-6l3.3,0.1L69.2,39.3z M77.3,31.5l-1,0.9h-0.1h-3.1l2.3-2.2c0.2-0.2,0.2-0.5,0-0.7s-0.5-0.2-0.7,0l-6.4,6.2 + l0.1-3.3l5-4.9h4L77.3,31.5z"/> +</svg> diff --git a/src/img/subject_icons/subject_educacao-quilombola.svg b/src/img/subject_icons/subject_educacao-quilombola.svg new file mode 100644 index 0000000000000000000000000000000000000000..96bf2a8f4404a5fb11edc91dc4816c8605a2544d --- /dev/null +++ b/src/img/subject_icons/subject_educacao-quilombola.svg @@ -0,0 +1,16 @@ +<svg width="56" height="57" viewBox="0 0 56 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M27.5148 24.708C21.0731 24.708 16.0117 21.6917 16.0117 17.8269C16.0117 13.9622 21.0731 10.9458 27.5148 10.9458C29.1712 10.9458 30.7357 11.1343 32.2081 11.5114L31.84 12.9253C30.4596 12.5483 28.9872 12.3597 27.4228 12.3597C21.9013 12.3597 17.3001 14.8106 17.3001 17.8269C17.3001 20.8433 21.9933 23.2941 27.4228 23.2941C32.9443 23.2941 37.5455 20.8433 37.5455 17.8269C37.5455 16.6015 36.7173 15.5647 35.9811 14.9991L36.9013 13.8679C38.2817 14.9991 38.9259 16.413 38.9259 17.8269C39.0179 21.7859 33.9565 24.708 27.5148 24.708Z" fill="#00BCD4"/> +<path d="M27.6068 46.1051C22.8216 46.1051 19.1406 43.9371 19.1406 41.1092L16.0117 18.5806L17.3921 18.3921L20.521 41.1092C20.521 42.8059 23.4657 44.7854 27.6989 44.7854C31.6559 44.7854 34.8768 43.183 34.8768 41.1092L35.797 33.6625L37.8216 18.3921L39.202 18.5806L36.2571 41.2035C36.1651 43.9371 32.4841 46.1051 27.6068 46.1051Z" fill="#00BCD4"/> +<path d="M27.5164 47.897C21.6269 47.897 16.9336 45.1634 16.9336 41.77C16.9336 40.4503 17.6698 39.2249 19.0502 38.0938L19.6023 38.8478C18.7741 39.5077 17.8538 40.5446 17.8538 41.77C17.8538 44.5978 22.271 46.9544 27.5164 46.9544C32.7618 46.9544 37.179 44.5978 37.179 41.77C37.179 40.4503 36.2588 39.5077 35.4306 38.8478L35.9827 38.0938C37.3631 39.2249 38.0993 40.4503 38.0993 41.77C38.0993 45.1634 33.406 47.897 27.5164 47.897Z" fill="#00BCD4"/> +<path d="M27.5164 51.856C21.6269 51.856 16.9336 49.1224 16.9336 45.729H17.8538C17.8538 48.5569 22.271 50.9134 27.5164 50.9134C32.7618 50.9134 37.179 48.5569 37.179 45.729H38.0993C38.0993 49.1224 33.406 51.856 27.5164 51.856Z" fill="#00BCD4"/> +<path d="M38.096 41.8638H37.1758V45.7285H38.096V41.8638Z" fill="#00BCD4"/> +<path d="M27.8829 21.8798L27.0547 21.5028L34.6007 6.04385C35.4289 4.53566 37.1774 3.97007 38.5578 4.72416C39.2019 5.10121 39.7541 5.76107 40.0302 6.51516C40.3063 7.26926 40.2142 8.11761 39.8461 8.77744L34.0486 20.7487L33.2204 20.3716L39.0179 8.4004C39.294 7.92909 39.294 7.36351 39.1099 6.8922C38.9259 6.42089 38.5578 5.94957 38.0977 5.66678C37.6375 5.384 37.0854 5.38402 36.6253 5.57254C36.1652 5.76107 35.705 6.13809 35.4289 6.6094L27.8829 21.8798Z" fill="#00BCD4"/> +<path d="M32.9433 17.7331C32.8513 17.7331 32.7592 17.7331 32.7592 17.6388C32.5752 17.5446 32.4831 17.2618 32.5752 16.979L38.3727 5.00774C38.4648 4.81922 38.7408 4.72494 39.0169 4.8192C39.2009 4.91347 39.293 5.19626 39.201 5.47905L33.4034 17.4503C33.3114 17.6388 33.1273 17.7331 32.9433 17.7331Z" fill="#00BCD4"/> +<path d="M17.8538 41.7686H16.9336V45.7275H17.8538V41.7686Z" fill="#00BCD4"/> +<path d="M34.7882 27.0641C34.5122 27.0641 34.3281 26.8756 34.3281 26.5928V22.9166C34.3281 22.6338 34.5122 22.4453 34.7882 22.4453C35.0643 22.4453 35.2484 22.6338 35.2484 22.9166V26.5928C35.2484 26.8756 35.0643 27.0641 34.7882 27.0641Z" fill="#00BCD4"/> +<path d="M20.4289 27.0632C20.1528 27.0632 19.9688 26.8746 19.9688 26.5919V22.9156C19.9688 22.6329 20.1528 22.4443 20.4289 22.4443C20.7049 22.4443 20.889 22.6329 20.889 22.9156V26.5919C20.889 26.8746 20.7049 27.0632 20.4289 27.0632Z" fill="#00BCD4"/> +<path d="M27.5148 33.2861C27.2387 33.2861 27.0547 33.0976 27.0547 32.8148V24.1427C27.0547 23.8599 27.2387 23.6714 27.5148 23.6714C27.7909 23.6714 27.9749 23.8599 27.9749 24.1427V32.8148C27.9749 33.0976 27.7909 33.2861 27.5148 33.2861Z" fill="#00BCD4"/> +<path d="M27.5148 45.6339C27.2387 45.6339 27.0547 45.4453 27.0547 45.1626V39.9781C27.0547 39.6954 27.2387 39.5068 27.5148 39.5068C27.7909 39.5068 27.9749 39.6954 27.9749 39.9781V45.1626C27.9749 45.4453 27.7909 45.6339 27.5148 45.6339Z" fill="#00BCD4"/> +<path d="M31.4718 45.3519C31.1958 45.3519 31.0117 45.1634 31.0117 44.8806V36.6798C31.0117 36.397 31.1958 36.2085 31.4718 36.2085C31.7479 36.2085 31.932 36.397 31.932 36.6798V44.8806C31.932 45.1634 31.7479 45.3519 31.4718 45.3519Z" fill="#00BCD4"/> +<path d="M27.5145 22.1637C22.3611 22.1637 18.4961 19.9015 18.4961 17.922C18.4961 15.9425 22.3611 13.6802 27.5145 13.6802C28.7108 13.6802 29.9072 13.7745 30.9194 14.0572L30.7354 14.9999C29.7231 14.8113 28.6188 14.6228 27.5145 14.6228C22.5452 14.6228 19.4163 16.7908 19.4163 17.922C19.4163 19.0531 22.5452 21.2211 27.5145 21.2211C32.4838 21.2211 35.6127 19.0531 35.6127 17.922C35.6127 17.6392 35.4286 17.3564 35.1526 17.0736L35.7967 16.4138C36.2569 16.9794 36.5329 17.4507 36.5329 18.0162C36.5329 19.9015 32.6679 22.1637 27.5145 22.1637Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_educacao-sexual.svg b/src/img/subject_icons/subject_educacao-sexual.svg new file mode 100644 index 0000000000000000000000000000000000000000..3bbf3fd29279b0ea0c4cd40f607480cff8db48a6 --- /dev/null +++ b/src/img/subject_icons/subject_educacao-sexual.svg @@ -0,0 +1,7 @@ +<svg width="56" height="57" viewBox="0 0 56 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M37.0224 35.2511C36.7951 35.2511 36.5605 35.2313 36.323 35.1993L36.15 35.1701C35.9209 35.1295 35.7644 35.1003 35.6052 35.0607C35.5086 35.0372 35.4065 35.0079 35.3062 34.9797C35.1644 34.9382 35.0236 34.8939 34.8819 34.8458C34.7724 34.809 34.6629 34.7695 34.5525 34.728C34.419 34.6771 34.2865 34.6215 34.1522 34.564L34.074 34.531C33.9819 34.4923 33.8908 34.4537 33.7979 34.4113C33.7086 34.3707 33.6203 34.3255 33.531 34.2812L33.4399 34.235C33.1298 34.0813 32.8169 33.9154 32.5031 33.7345L32.3871 33.6704C32.2206 33.5723 32.0549 33.4686 31.8884 33.3649L31.7163 33.2603C30.6552 32.5826 29.5279 31.7465 28.3684 30.7756L28.2727 30.6926C28.0187 30.4768 27.8108 30.2986 27.6083 30.1223L25.1172 27.7978L26.9025 25.8438L27.1601 26.0182C27.5862 26.4348 28.0611 26.8854 28.569 27.3482L29.4939 28.1664C29.6512 28.3031 29.8104 28.4379 29.9715 28.5727C31.189 29.5992 32.3319 30.4485 33.369 31.097C33.9166 31.4354 34.4062 31.7059 34.8644 31.9209C35.0513 32.0085 35.1902 32.0688 35.3264 32.1235L35.3181 32.4855L35.4368 32.1669C35.5519 32.2112 35.666 32.2536 35.7782 32.2904L35.9006 32.3271C36.0562 32.3733 36.1371 32.3978 36.2154 32.4167C36.2835 32.4327 36.3497 32.444 36.4151 32.4553L36.5098 32.4742C36.5513 32.4827 36.5936 32.4921 36.6332 32.4959C36.9994 32.5439 37.3307 32.5222 37.6648 32.4902L37.87 32.4647C38.0089 32.4459 38.1506 32.4261 38.2905 32.3988C38.3697 32.3837 38.4451 32.3667 38.5215 32.3479C38.6513 32.3186 38.7783 32.2847 38.9043 32.2479L39.1307 32.1782C39.2595 32.1348 39.3865 32.0858 39.5135 32.0349L39.7086 31.9576C39.8881 31.8775 40.0638 31.7917 40.235 31.6975L40.4347 31.5768C40.5378 31.5146 40.6436 31.4514 40.7457 31.3826C40.8194 31.3327 40.8902 31.2808 40.962 31.228C41.0678 31.1498 41.146 31.0904 41.2243 31.0273C41.3062 30.9613 41.389 30.8906 41.47 30.8189L41.631 30.67C41.7654 30.5409 41.8399 30.4692 41.9108 30.3948L42.0516 30.2355C42.3488 29.8999 42.6157 29.5332 42.843 29.1486L42.924 29.0129C42.993 28.8894 43.0565 28.765 43.1172 28.6396L43.1918 28.4803C43.2497 28.3521 43.3059 28.2211 43.3574 28.0872L43.4089 27.9439C43.4605 27.8007 43.5102 27.6564 43.5516 27.5103C43.7365 26.8637 43.8304 26.2058 43.8304 25.5535C43.8304 21.7085 40.777 18.58 37.0233 18.58C36.1178 18.58 34.8893 19.0607 33.3718 20.008L33.1022 20.1768L32.9236 19.9091C32.5601 19.3652 32.1378 18.8496 31.6638 18.3764L31.3601 18.0728L31.7209 17.8428C33.796 16.5222 35.5795 15.852 37.0243 15.852C39.5678 15.852 42.0249 16.9247 43.8083 18.8053L47.7764 16.4666L45.4869 15.8643C45.1418 15.7728 44.8528 15.5504 44.6715 15.2365C44.4902 14.9226 44.4387 14.555 44.528 14.2024C44.7102 13.4747 45.4408 13.0345 46.1494 13.2202L51.7252 14.7105C51.7988 14.7378 51.8835 14.7793 51.9617 14.8293C52.0243 14.8698 52.0795 14.9094 52.1338 14.9584C52.2148 15.0291 52.2912 15.1168 52.3574 15.2148L52.4154 15.2893C52.5056 15.4476 52.5626 15.6249 52.5856 15.8153L52.5902 15.9171L52.258 15.9482L52.5902 15.9387L52.258 15.9482L52.593 15.9802V16.0632C52.5866 16.1669 52.5691 16.2734 52.5378 16.3771L51.0994 21.8895C50.9135 22.6012 50.1599 23.0423 49.4697 22.8557C49.1255 22.7614 48.8375 22.5361 48.6599 22.2204C48.4813 21.9046 48.4344 21.537 48.5255 21.1854L49.1458 18.8071L45.3902 21.0223C46.1154 22.4202 46.4982 23.9802 46.4982 25.5544C46.4982 26.2482 46.4181 26.9646 46.2617 27.6819C46.0915 28.4511 45.8273 29.2023 45.4758 29.914L45.4316 30.0064C45.3359 30.1959 45.2301 30.3806 45.1224 30.5625L45.0065 30.7577C44.9034 30.9236 44.7948 31.0857 44.6807 31.2459L44.5197 31.4656C44.4083 31.6136 44.2942 31.7597 44.1737 31.902L44.0062 32.0905C43.8525 32.2602 43.7319 32.3922 43.604 32.5185C43.5507 32.5713 43.4945 32.6222 43.4375 32.674L43.3684 32.7381C43.2157 32.8804 43.1025 32.987 42.9838 33.0859C42.9083 33.1472 42.8319 33.2047 42.7556 33.2622L42.6727 33.3235C42.4638 33.4828 42.2494 33.6355 42.0267 33.7769C41.8537 33.8881 41.7387 33.9616 41.6218 34.0304C41.5362 34.0785 41.4525 34.1219 41.3687 34.1652L41.2804 34.2105C41.135 34.2859 40.9914 34.3585 40.8433 34.4263C40.7421 34.4735 40.6381 34.5149 40.5359 34.5564C40.3372 34.6375 40.1807 34.6959 40.0206 34.7515C39.9046 34.7911 39.7868 34.8288 39.6672 34.8647C39.4988 34.9156 39.3295 34.9589 39.1565 35.0004L39.0672 35.0211C38.9825 35.0409 38.8988 35.0607 38.8132 35.0786C38.6191 35.1163 38.423 35.1446 38.2252 35.171L38.1341 35.1842C38.066 35.1946 37.9988 35.204 37.9298 35.2106C37.6307 35.2332 37.3289 35.2511 37.0224 35.2511ZM32.8316 33.1406C33.1325 33.315 33.4325 33.4743 33.7316 33.6223L33.8255 33.6694C33.9083 33.7109 33.9902 33.7524 34.073 33.7901C34.1586 33.8297 34.2442 33.8655 34.3279 33.9004L34.4098 33.9352C34.5359 33.989 34.6592 34.0408 34.7844 34.0889C34.8865 34.1275 34.9896 34.1633 35.0917 34.1982C35.2261 34.2444 35.3577 34.2849 35.4884 34.3236C35.5795 34.349 35.6715 34.3764 35.7626 34.3971C35.908 34.4339 36.0506 34.4593 36.1905 34.4848L36.4132 34.5244C36.9074 34.5885 37.3924 34.5724 37.8663 34.5253C37.9243 34.5197 37.9813 34.5112 38.0384 34.5036L38.1387 34.4886C38.3237 34.464 38.5068 34.4386 38.6871 34.4028C38.7645 34.3877 38.8399 34.3698 38.9163 34.3509L39.0074 34.3302C39.1657 34.2925 39.3249 34.251 39.4813 34.2039C39.5927 34.1718 39.7013 34.136 39.8089 34.0993C39.9571 34.0483 40.1025 33.9937 40.246 33.9352C40.3841 33.8787 40.4789 33.84 40.5718 33.7976C40.7089 33.7354 40.8442 33.6656 40.9776 33.5968L41.0687 33.5497C41.1451 33.5111 41.2215 33.4715 41.296 33.429C41.4019 33.3687 41.5077 33.2999 41.6135 33.232C41.8804 33.0614 42.081 32.92 42.2752 32.7711L42.3635 32.7061C42.4307 32.6552 42.4988 32.6052 42.5641 32.5515C42.6709 32.461 42.7749 32.3648 42.8798 32.2668L42.9957 32.1593C43.0454 32.115 43.0933 32.0707 43.1402 32.0236C43.2608 31.9048 43.3721 31.7832 43.4835 31.6588L43.6703 31.4477C43.7807 31.3166 43.8875 31.1809 43.9915 31.0423L44.1424 30.8359C44.2473 30.6889 44.3494 30.538 44.4451 30.3844L44.5206 30.2571C44.6531 30.0328 44.7507 29.8603 44.8418 29.684L45.1777 29.7547L44.8804 29.6011C45.2071 28.9384 45.4528 28.2409 45.6102 27.5283C45.7565 26.8599 45.8301 26.1944 45.8301 25.5487C45.8301 23.9812 45.4224 22.4287 44.6503 21.0591L44.4838 20.7631L50.2013 17.3913L49.1678 21.356C49.1218 21.5322 49.1458 21.7151 49.2341 21.8735C49.3224 22.0318 49.4669 22.144 49.639 22.1911C49.9832 22.2873 50.3605 22.0648 50.4543 21.7076L51.8945 16.1848C51.9139 16.1216 51.9221 16.0688 51.9249 16.0179L52.2543 15.9416L51.9221 15.9519L51.9212 15.9114C51.9102 15.7936 51.8817 15.705 51.8356 15.6249C51.7731 15.5466 51.7363 15.5042 51.6958 15.4674C51.6663 15.441 51.6378 15.4212 51.6074 15.4024C51.5697 15.3779 51.5264 15.3572 51.4813 15.3402L51.3884 15.2949L45.9819 13.8754C45.6249 13.7801 45.2623 14.0017 45.1712 14.3665C45.1261 14.5437 45.1519 14.7265 45.2421 14.884C45.3332 15.0414 45.4777 15.1526 45.6497 15.1978L49.5231 16.2178L43.6795 19.6621L43.4991 19.4613C41.8289 17.5987 39.4675 16.5298 37.0224 16.5298C35.7847 16.5298 34.2405 17.0897 32.4276 18.1954C32.7396 18.5328 33.0286 18.8882 33.2908 19.2568C34.7954 18.3519 36.0497 17.8937 37.0224 17.8937C41.1442 17.8937 44.4967 21.3286 44.4967 25.5497C44.4967 26.268 44.3936 26.99 44.1911 27.6979C44.1442 27.8591 44.0908 28.0156 44.0347 28.1721L43.9776 28.3304C43.9197 28.4803 43.8589 28.6236 43.7954 28.765L43.7126 28.9403C43.6473 29.0779 43.5773 29.2146 43.5019 29.3494L43.4347 29.4634C43.1632 29.9216 42.8715 30.3231 42.543 30.6926L42.3875 30.868C42.3092 30.9509 42.2283 31.0291 42.1482 31.1064L41.9053 31.3336C41.816 31.4118 41.7267 31.4873 41.6356 31.5608C41.5482 31.6305 41.4617 31.6984 41.3733 31.7625C41.2721 31.837 41.193 31.8963 41.1102 31.951C40.9988 32.0255 40.8847 32.0952 40.7687 32.165L40.5516 32.296C40.362 32.3997 40.1706 32.4949 39.9727 32.5826L39.8365 32.6382C39.6212 32.7249 39.4804 32.7786 39.3378 32.8267L39.1316 32.8899C38.9494 32.9436 38.8086 32.9813 38.6669 33.0134C38.5832 33.0331 38.4985 33.052 38.4138 33.069C38.262 33.0982 38.1065 33.1227 37.9491 33.1425L37.7255 33.1698C37.3464 33.2056 36.9644 33.2273 36.5503 33.1736C36.496 33.1661 36.439 33.1547 36.381 33.1434C36.2255 33.1152 36.1473 33.101 36.0663 33.0822C35.9752 33.0614 35.8822 33.0322 35.7893 33.0049L35.574 32.9408C35.4534 32.9012 35.3264 32.855 35.2013 32.805L35.0825 32.757C34.9362 32.6976 34.7881 32.6325 34.6381 32.5628C34.1098 32.3149 33.5835 32.0245 33.0249 31.6777C31.962 31.0141 30.7924 30.1468 29.5491 29.0996C29.3862 28.962 29.2243 28.8253 29.065 28.6867L28.1301 27.8582C27.7095 27.4764 27.3129 27.1031 26.9466 26.7496L26.0485 27.762L28.0408 29.603C28.2396 29.7773 28.4448 29.9527 28.6546 30.1289L28.7917 30.2468C29.9319 31.2016 31.0353 32.0198 32.0724 32.6797L32.1709 32.7419C32.3973 32.8823 32.5583 32.9832 32.7193 33.0765L32.6678 33.4366L32.8316 33.1406Z" fill="#00BCD4"/> +<path d="M11.3393 43.2623L11.3264 40.1526L8.13867 40.1687L8.12486 37.4398L11.3144 37.4238L11.3034 34.955C7.8037 34.0633 5.08069 31.1912 4.32792 27.5696C4.26167 27.252 4.22026 26.9645 4.18713 26.6741L4.16872 26.5535C4.13467 26.2226 4.11719 25.888 4.11719 25.5496C4.11719 20.2002 8.36597 15.8481 13.5884 15.8481C13.8101 15.8481 14.0356 15.8679 14.2629 15.8972L14.4267 15.9236C14.6375 15.9594 14.7967 15.9914 14.9559 16.031C15.035 16.0508 15.116 16.0706 15.1979 16.0932C15.3617 16.1394 15.5264 16.1931 15.6911 16.2516L15.8927 16.3213C16.1052 16.4024 16.3206 16.4948 16.535 16.5938C16.616 16.6315 16.6979 16.672 16.7798 16.7125C16.9648 16.8049 17.0853 16.8662 17.204 16.9303C17.32 16.9925 17.4368 17.0575 17.5528 17.1254C17.6577 17.1857 17.7617 17.2479 17.8666 17.312L17.9439 17.3592C18.0387 17.4167 18.1335 17.4742 18.2283 17.5345C20.6577 19.0983 22.9454 21.3936 24.4399 23.045L24.6571 23.2864L24.37 23.5795C24.001 23.9575 23.7295 24.2459 23.608 24.377L22.7991 25.2545L22.5571 24.9878C21.5568 23.884 18.9617 21.1523 16.4687 19.6299C16.3629 19.5649 16.2571 19.5017 16.1513 19.4424L16.0105 19.3651C15.8034 19.2529 15.658 19.1784 15.5126 19.1096C15.4215 19.0662 15.3322 19.0238 15.2439 18.9861L15.0286 18.8966C14.8951 18.8447 14.7617 18.7967 14.6301 18.7561L14.5151 18.7222C14.3835 18.6854 14.2555 18.6553 14.1295 18.6326L14.0062 18.6128C13.8635 18.5921 13.7227 18.5761 13.5884 18.5761C9.83468 18.5761 6.7813 21.7046 6.7813 25.5496C6.7813 25.8135 6.80063 26.0963 6.83928 26.4149L6.8586 26.5469C6.90738 26.8617 6.95339 27.0955 7.0132 27.3245L6.72425 27.5432L7.04449 27.449C7.20554 28.0211 7.43468 28.5688 7.72732 29.0769C8.95124 31.2015 11.1976 32.5212 13.5893 32.5212C14.3697 32.5212 15.3562 32.1573 16.5221 31.44L16.7807 31.2807L16.9611 31.5277C17.354 32.0678 17.8003 32.5683 18.2853 33.0142L18.6138 33.3158L18.2402 33.5571C16.6565 34.5752 15.2218 35.1388 13.9694 35.2341L13.9786 37.4115L17.1286 37.3964L17.1414 40.1253L13.9896 40.1413L14.0025 43.251L11.3393 43.2623ZM11.989 39.4683L12.0019 42.578L13.3335 42.5714L13.3206 39.4617L16.4715 39.4457L16.4651 38.0817L13.3151 38.0968L13.3003 34.5704L13.6316 34.5667C14.7433 34.5563 16.0482 34.1001 17.516 33.2112C17.193 32.8888 16.8902 32.5429 16.6095 32.179C15.4463 32.8605 14.4322 33.2055 13.5902 33.2055C10.9638 33.2055 8.49756 31.7567 7.15492 29.4237C6.83376 28.8676 6.58161 28.2662 6.40584 27.6375L6.38468 27.5526C6.30645 27.2501 6.25492 26.9918 6.21443 26.7307L6.18038 26.5007C6.13713 26.1538 6.11688 25.8427 6.11688 25.5496C6.11688 21.3285 9.46934 17.8936 13.5902 17.8936C13.7559 17.8936 13.927 17.9115 14.1019 17.936L14.2482 17.9606C14.3927 17.986 14.5417 18.0209 14.6927 18.0633L14.8252 18.1019C14.9715 18.1472 15.1197 18.2009 15.2697 18.2594L15.5052 18.3565C15.6019 18.3979 15.6994 18.4441 15.7979 18.4912C15.9516 18.5648 16.1071 18.644 16.2654 18.7297L16.4779 18.8466C16.5884 18.9088 16.7006 18.9758 16.8129 19.0446C19.1375 20.4642 21.4795 22.8188 22.8046 24.2582L23.1267 23.9085C23.2316 23.7954 23.4442 23.5691 23.7341 23.2703C22.2691 21.6726 20.1295 19.5639 17.8859 18.1199L17.5279 17.8993C17.4286 17.839 17.3292 17.7786 17.2289 17.7211C17.1175 17.658 17.0071 17.5958 16.8957 17.5354C16.7816 17.4742 16.6675 17.4167 16.5534 17.3592C16.4126 17.2875 16.3381 17.2508 16.2635 17.2159C16.062 17.1226 15.8614 17.0368 15.6617 16.9604L15.4749 16.8963C15.323 16.8426 15.1721 16.7936 15.0221 16.7502L14.8022 16.6937C14.6577 16.6569 14.5151 16.6286 14.3743 16.6051L14.1801 16.573C13.9822 16.5476 13.7844 16.5297 13.5902 16.5297C8.73499 16.5297 4.78437 20.5754 4.78437 25.5496C4.78437 25.8644 4.80093 26.1755 4.83222 26.4828L4.51842 26.6345L4.84878 26.5949C4.87915 26.8655 4.9178 27.1322 4.97118 27.3952C5.69633 30.8782 8.33652 33.5958 11.7065 34.3518L11.9669 34.4111L11.9825 38.1043L8.79388 38.1204L8.80032 39.4843L11.989 39.4683Z" fill="#00BCD4"/> +<path d="M21.3502 31.1494L21.1349 30.9957C20.5542 30.5829 20.0417 30.071 19.6137 29.4762L19.4297 29.2208L19.6643 29.0144C21.1404 27.6758 22.3855 26.2695 23.1944 25.325L23.8533 24.6123C23.972 24.4832 24.2417 24.1976 24.607 23.8234C25.4776 22.9326 26.8128 21.6289 28.3708 20.3244L28.5769 20.1519L28.7868 20.3187C29.3536 20.7712 29.8395 21.3075 30.2288 21.9127L30.3953 22.17L30.1616 22.3651C28.4886 23.7564 27.1193 25.1091 26.4521 25.7906L24.8812 27.559L24.8803 27.5571L23.7567 28.7928C23.5414 29.0191 23.3186 29.2519 23.0812 29.4923C22.6073 29.9721 22.092 30.4726 21.5453 30.9694L21.3502 31.1494ZM20.3352 29.316C20.6232 29.677 20.9472 29.9994 21.3033 30.2784C21.7312 29.8825 22.1711 29.4565 22.6119 29.0097C22.8484 28.7712 23.0674 28.5421 23.2782 28.3206L24.8039 26.6229L24.8104 26.6277L25.9708 25.3221C26.6251 24.6529 27.9153 23.3775 29.5018 22.039C29.2358 21.6695 28.9285 21.332 28.5834 21.0304C27.1312 22.2614 25.8981 23.4689 25.1039 24.2805C24.7193 24.6745 24.4542 24.9564 24.3374 25.0827L23.6867 25.7868C22.9101 26.6917 21.7229 28.0359 20.3352 29.316Z" fill="#00BCD4"/> +<path d="M24.8188 35.2517C19.5964 35.2517 15.3477 30.8996 15.3477 25.5502C15.3477 23.8177 15.8105 22.1059 16.6875 20.6015L16.8697 20.2876L17.1624 20.4959C17.6667 20.8541 18.2105 21.2811 18.7783 21.7637L18.99 21.9438L18.8566 22.1907C18.3035 23.2173 18.0109 24.3786 18.0109 25.5502C18.0109 29.3952 21.0642 32.5219 24.8179 32.5219C26.063 32.5219 27.2879 32.1655 28.3609 31.4916L28.5578 31.3671L28.74 31.5142C29.3096 31.9723 29.8756 32.4012 30.4231 32.7905L30.805 33.062L30.4314 33.3457C28.7879 34.5928 26.8461 35.2517 24.8188 35.2517ZM17.0796 21.2717C16.3811 22.5904 16.013 24.0618 16.013 25.5502C16.013 30.5226 19.9627 34.5683 24.8188 34.5683C26.5489 34.5683 28.2118 34.0527 29.6557 33.0705C29.2784 32.7943 28.8946 32.5011 28.509 32.1948C27.3799 32.8555 26.109 33.2043 24.8179 33.2043C20.6971 33.2043 17.3446 29.7694 17.3446 25.5493C17.3446 24.3578 17.6197 23.1748 18.1434 22.1116C17.7753 21.8052 17.4191 21.5234 17.0796 21.2717Z" fill="#00BCD4"/> +<path d="M32.9995 30.4492L32.694 30.2371C32.163 29.8695 31.6044 29.4548 31.0357 29.0023L30.8222 28.8317L30.9409 28.5828C31.3983 27.6204 31.6293 26.5996 31.6293 25.5476C31.6293 21.7026 28.5759 18.5741 24.8222 18.5741C23.6958 18.5741 22.5786 18.8635 21.5912 19.4121L21.3915 19.5233L21.2176 19.3725C20.6618 18.8899 20.1041 18.4421 19.5602 18.0406L19.1719 17.7531L19.5703 17.4797C21.1302 16.4108 22.9467 15.8452 24.8231 15.8452C30.0464 15.8452 34.2952 20.1973 34.2952 25.5467C34.2952 27.135 33.9078 28.7139 33.1753 30.1136L32.9995 30.4492ZM31.6541 28.63C32.0286 28.9241 32.3977 29.1993 32.7547 29.4548C33.3262 28.2407 33.6262 26.8984 33.6262 25.5495C33.6262 20.5762 29.6765 16.5296 24.8213 16.5296C23.2375 16.5296 21.6998 16.9632 20.3443 17.787C20.7179 18.0755 21.0961 18.3818 21.4753 18.7061C22.5096 18.1744 23.6608 17.8945 24.8213 17.8945C28.9421 17.8945 32.2955 21.3294 32.2955 25.5504C32.2955 26.6137 32.0793 27.6487 31.6541 28.63Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_ensino-religioso.svg b/src/img/subject_icons/subject_ensino-religioso.svg new file mode 100644 index 0000000000000000000000000000000000000000..cd6f311dd56667ef5af0da4628a890e4f1ac52b7 --- /dev/null +++ b/src/img/subject_icons/subject_ensino-religioso.svg @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M30.4,22.2h-8.9c-0.8,0-1.5,0.7-1.5,1.5v21.5c0,0.8,0.7,1.5,1.5,1.5h8.9c0.8,0,1.5-0.7,1.5-1.5V23.7 + C31.9,22.9,31.3,22.2,30.4,22.2z M21.6,45.2V23.7l5.7,0v7.9h1v-7.9l2.2,0l0,21.4L21.6,45.2z"/> + <rect x="23.8" y="31.6" class="st1" width="1" height="5.5"/> + <path class="st1" d="M26.2,20.2c1,0,2-0.4,2.8-1.2c1.5-1.5,1.5-4,0-5.6c-0.3-0.3-0.4-0.6-0.4-1.1c0-0.3,0.2-0.7,0.4-0.9l1.1-1.1 + l-1.5-0.2c-1.8-0.3-3.9,0.4-5.2,1.7c-2,2-2,5.1,0,7.1C24.1,19.8,25.1,20.2,26.2,20.2z M24.4,13c0.7-0.7,1.7-1.2,2.7-1.3 + c-0.1,0.2-0.1,0.4-0.1,0.6c-0.1,0.8,0.2,1.6,0.8,2.2c1,1,1,2.5,0,3.5c-1,1-2.5,1-3.5,0C23.1,16.6,23.1,14.3,24.4,13z"/> + <path class="st1" d="M26,7.1c0.3,0,0.5-0.2,0.5-0.5V1.7c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5v4.9C25.5,6.9,25.7,7.1,26,7.1z"/> + <path class="st1" d="M39.1,6.8c-0.2-0.2-0.5-0.2-0.7,0l-3.5,3.5c-0.2,0.2-0.2,0.5,0,0.7c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1 + l3.5-3.5C39.3,7.3,39.3,7,39.1,6.8z"/> + <path class="st1" d="M41.9,18.3H37c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5h4.9c0.3,0,0.5-0.2,0.5-0.5S42.2,18.3,41.9,18.3z"/> + <path class="st1" d="M13.6,6.8c-0.2-0.2-0.5-0.2-0.7,0s-0.2,0.5,0,0.7l3.5,3.5c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1 + c0.2-0.2,0.2-0.5,0-0.7L13.6,6.8z"/> + <path class="st1" d="M15,18.3h-4.9c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5H15c0.3,0,0.5-0.2,0.5-0.5S15.3,18.3,15,18.3z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_filosofia.svg b/src/img/subject_icons/subject_filosofia.svg new file mode 100644 index 0000000000000000000000000000000000000000..b5b68d299ce0684cb34edc168d48327fa7b26186 --- /dev/null +++ b/src/img/subject_icons/subject_filosofia.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="-0.1" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M29,8.8c-1.9,0-3.5,0.5-4.7,1.6c-1.2,1.1-1.8,2.5-1.9,4.3c0,0.1,0.1,0.3,0.1,0.4s0.2,0.1,0.4,0.1h3.4 + c0.3,0,0.5-0.2,0.5-0.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.5,1.6-0.5c0.7,0,1.2,0.2,1.5,0.5c0.3,0.4,0.5,0.9,0.5,1.7 + c0,0.6-0.2,1.1-0.5,1.6c-0.2,0.2-0.6,0.7-1.7,1.8c-1,0.9-1.6,1.8-1.9,2.6c-0.3,0.8-0.5,1.9-0.5,3.2c0,0.2,0.1,0.3,0.2,0.4 + c-0.3,0.4-0.4,0.9-0.4,1.4c0,0.6,0.2,1.2,0.6,1.6c0.4,0.4,1,0.7,1.8,0.7c0.8,0,1.4-0.2,1.8-0.7c0.4-0.4,0.6-1,0.6-1.6 + c0-0.6-0.2-1.1-0.5-1.5c0.1-0.1,0.1-0.2,0.1-0.3c0-1.2,0.3-2.1,0.8-2.7l1.7-1.7c1.5-1.6,2.3-3.2,2.3-4.8c0-1.9-0.6-3.3-1.7-4.4 + C32.6,9.3,31,8.8,29,8.8z M29.7,26.8c-0.2,0.2-0.6,0.4-1.1,0.4c-0.5,0-0.8-0.1-1.1-0.4c-0.2-0.3-0.4-0.6-0.4-0.9 + c0-0.4,0.1-0.7,0.4-1c0.3-0.2,0.6-0.4,1.1-0.4c0.5,0,0.8,0.1,1.1,0.4c0.3,0.3,0.4,0.6,0.4,1C30.1,26.2,30,26.5,29.7,26.8z + M32.5,18.9l-1.7,1.7c-0.6,0.7-1,1.7-1.1,2.9h-1h-1.2c0-0.9,0.2-1.7,0.4-2.3c0.3-0.7,0.9-1.4,1.7-2.3c0.9-0.9,1.5-1.6,1.8-2 + c0.4-0.6,0.6-1.4,0.6-2.1c0-1-0.3-1.8-0.8-2.4c-0.5-0.6-1.3-0.8-2.3-0.8c-0.9,0-1.7,0.3-2.3,0.8c-0.5,0.4-0.8,1-0.9,1.7h-2.4 + c0.1-1.3,0.6-2.3,1.5-3.1c1-0.9,2.4-1.3,4.1-1.3c1.7,0,3.1,0.4,4.1,1.3c1,0.9,1.4,2,1.4,3.6C34.5,16.1,33.8,17.5,32.5,18.9z"/> + <path class="st1" d="M43.4,9.7c-1.8-3.9-5.8-7.4-10-8.6c-1.7-0.5-3.5-0.7-5.4-0.7c-9.1,0-16.6,7.4-16.7,16.5l-4,13.7 + c-0.1,0.2,0,0.5,0.1,0.7s0.4,0.3,0.6,0.3l3.3,0v4.1c0,3.6,2.9,6.6,6.6,6.6h6.9v4.5c0,0.4,0.3,0.8,0.8,0.8h13.9c0.1,0,0.1,0,0.2,0 + c0.7-0.2,0.7-0.4,0.6-5.1c0-0.3,0-0.6,0-0.7c0.1-3.2,0.3-7,1.1-10.6c0.3-1.4,0.7-2.9,1.1-4.3c0.6-2.1,1.2-4.2,1.6-6.4 + c0.3-1.8,0.5-3.3,0.5-4.7c0,0,0,0,0,0C44.6,13.4,44.2,11.5,43.4,9.7z M42.6,20.1c-0.4,2.1-1,4.2-1.6,6.3c-0.4,1.4-0.8,2.9-1.2,4.4 + c-0.9,3.7-1.1,7.6-1.2,10.9c0,0.1,0,0.4,0,0.7c0,0.7,0.1,2.6,0,3.6H26.3v-4.5c0-0.4-0.3-0.8-0.8-0.8h-7.6c-2.8,0-5.1-2.3-5.1-5.1 + v-4.8c0-0.4-0.3-0.8-0.8-0.8l-3,0l3.8-12.8c0-0.1,0-0.1,0-0.2C12.9,8.7,19.7,1.9,28,1.9c1.8,0,3.4,0.2,5,0.6c3.8,1,7.5,4.2,9.1,7.7 + c0.7,1.5,1,3.3,1,5.3C43.1,17,42.9,18.4,42.6,20.1z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_fisica.svg b/src/img/subject_icons/subject_fisica.svg new file mode 100644 index 0000000000000000000000000000000000000000..64108d2c4d32764735b8bb73bbc0729e078e7adc --- /dev/null +++ b/src/img/subject_icons/subject_fisica.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M44,24c3.3-4,4.5-8,3-10.9c-1.7-3.2-6.3-4.4-12.1-3.7c-2-5.5-5.2-9-8.9-9c-3.6,0-6.8,3.5-8.9,9 + C11.3,8.6,6.7,9.8,5.1,13C3.5,16,4.7,20,8,24c-0.1,0.1-0.3,0.3-0.4,0.4c-3.1,4-4,7.7-2.6,10.5c1.4,2.6,4.6,3.9,8.9,3.9 + c1,0,2.1-0.1,3.2-0.2c2,5.5,5.2,9,8.9,9s6.8-3.5,8.9-9c1.1,0.1,2.2,0.2,3.2,0.2c4.3,0,7.5-1.3,8.9-3.9c1.4-2.8,0.5-6.5-2.6-10.5 + C44.2,24.3,44.1,24.1,44,24z M38.1,10.7c3.7,0,6.4,1,7.5,3.1c1.2,2.3,0.1,5.6-2.6,9.1c-1.7-1.9-3.8-3.7-6.2-5.4 + c-0.3-2.4-0.8-4.6-1.4-6.6C36.3,10.7,37.3,10.7,38.1,10.7z M30.5,32.6c-1.5,0.8-3,1.5-4.5,2c-1.5-0.6-3-1.3-4.5-2 + c-1.7-0.9-3.4-1.9-4.9-2.9c-0.2-1.8-0.3-3.7-0.3-5.7c0-2,0.1-3.9,0.3-5.7c1.5-1,3.2-2,4.9-2.9c1.5-0.8,3-1.5,4.5-2.1 + c1.5,0.6,3,1.3,4.5,2.1c1.7,0.9,3.4,1.9,4.9,2.9c0.2,1.8,0.3,3.7,0.3,5.7c0,1.9-0.1,3.8-0.3,5.7C33.9,30.7,32.2,31.6,30.5,32.6z + M35.1,31.6c-0.3,1.9-0.7,3.6-1.3,5.2c-1.8-0.3-3.8-0.8-5.7-1.5c1-0.5,2.1-0.9,3.1-1.5C32.5,33.2,33.8,32.4,35.1,31.6z M23.9,35.4 + c-2,0.7-3.9,1.2-5.7,1.5c-0.5-1.6-0.9-3.3-1.3-5.2c1.2,0.8,2.5,1.5,3.9,2.3C21.9,34.4,22.9,34.9,23.9,35.4z M15,28.4 + c-1.9-1.5-3.6-3-5-4.5c1.4-1.5,3.1-3.1,5-4.5c-0.1,1.5-0.2,3-0.2,4.5C14.8,25.5,14.9,27,15,28.4z M16.9,16.3 + c0.3-1.9,0.7-3.6,1.3-5.2c1.8,0.3,3.8,0.8,5.8,1.5c-1,0.5-2.1,0.9-3.1,1.5C19.5,14.7,18.2,15.5,16.9,16.3z M28.1,12.5 + c2-0.7,3.9-1.2,5.8-1.5c0.5,1.6,0.9,3.3,1.3,5.2c-1.2-0.8-2.5-1.6-3.9-2.3C30.1,13.5,29.1,13,28.1,12.5z M37,19.4 + c1.9,1.4,3.6,2.9,5,4.5c-1.4,1.5-3.1,3-5,4.5c0.1-1.4,0.2-2.9,0.2-4.5C37.2,22.4,37.1,20.9,37,19.4z M26,1.8c2.9,0,5.5,3,7.3,7.7 + C31,10,28.5,10.7,26,11.7c-2.5-1-5-1.7-7.3-2.1C20.5,4.9,23.1,1.8,26,1.8z M6.4,13.7c1.1-2.1,3.8-3.1,7.5-3.1 + c0.9,0,1.8,0.1,2.7,0.2c-0.6,2-1.1,4.2-1.4,6.6c-2.4,1.7-4.5,3.5-6.2,5.4C6.3,19.4,5.2,16,6.4,13.7z M6.4,34.2 + c-1.1-2.2-0.2-5.4,2.4-8.8C8.9,25.3,9,25.2,9,25.1c1.7,1.8,3.8,3.7,6.2,5.4c0.3,2.4,0.8,4.6,1.4,6.6C11.6,37.7,7.7,36.7,6.4,34.2z + M26,46.1c-2.9,0-5.5-3-7.3-7.8c2.3-0.4,4.8-1.1,7.3-2.1c2.5,1,5,1.7,7.3,2.1C31.5,43,28.9,46.1,26,46.1z M45.6,34.2 + c-1.3,2.5-5.2,3.5-10.2,2.9c0.6-2,1.1-4.2,1.4-6.6c2.4-1.7,4.5-3.5,6.2-5.4c0.1,0.1,0.1,0.1,0.2,0.2C45.9,28.8,46.7,32,45.6,34.2z" + /> + <path class="st1" d="M26,20.9c-1.7,0-3.1,1.4-3.1,3.1S24.3,27,26,27c1.7,0,3.1-1.4,3.1-3.1S27.7,20.9,26,20.9z M26,25.5 + c-0.9,0-1.6-0.7-1.6-1.6s0.7-1.6,1.6-1.6c0.9,0,1.6,0.7,1.6,1.6S26.9,25.5,26,25.5z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_geografia.svg b/src/img/subject_icons/subject_geografia.svg new file mode 100644 index 0000000000000000000000000000000000000000..c534fb98c5c84b68fee2bd24e115fe9ce032bd25 --- /dev/null +++ b/src/img/subject_icons/subject_geografia.svg @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M40.4,35.4c8.9-8.9,8.9-23.4,0-32.4c-0.3-0.3-0.8-0.3-1.1,0s-0.3,0.8,0,1.1c8.3,8.3,8.3,21.9,0,30.2 + c-8.3,8.3-21.9,8.3-30.2,0C8.8,34,8.3,34,8,34.3s-0.3,0.8,0,1.1c4.3,4.3,9.8,6.5,15.4,6.7v4.1h-6.6c-0.4,0-0.8,0.3-0.8,0.8 + s0.3,0.8,0.8,0.8h13.9c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-6.3v-4.1C30.2,42,36,39.8,40.4,35.4z"/> + <path class="st1" d="M24.1,38.6c5.1,0,9.9-2,13.6-5.6c3.6-3.6,5.6-8.4,5.6-13.6s-2-9.9-5.6-13.6C34,2.2,29.2,0.2,24.1,0.2 + c-5.1,0-9.9,2-13.6,5.6c-3.6,3.6-5.6,8.4-5.6,13.6s2,9.9,5.6,13.6C14.1,36.6,19,38.6,24.1,38.6z M11.8,24.9 + c0.8-1.8,1.9-3.7,3.3-5.6l9.2,9.2c-1.9,1.4-3.8,2.5-5.6,3.3c-3.2,1.3-5.7,1.4-6.9,0.1C10.5,30.6,10.5,28.1,11.8,24.9z M15.7,18.5 + c1-1.4,2.2-2.7,3.5-4c1.2-1.2,2.4-2.3,3.6-3.2l9.5,9.5c-1,1.2-2.1,2.4-3.2,3.6c-1.3,1.3-2.6,2.5-4,3.5L15.7,18.5z M24.1,37.1 + c-3.8,0-7.4-1.2-10.4-3.4c0.2,0,0.4,0,0.6,0c1.3,0,2.9-0.4,4.7-1.1c1.9-0.8,3.9-2,6-3.5l6.3,6.3C29.1,36.5,26.6,37.1,24.1,37.1z + M36.6,31.9c-1.3,1.3-2.7,2.3-4.3,3.2l-6.5-6.5c1.4-1.1,2.7-2.2,4-3.5c1.2-1.2,2.3-2.4,3.2-3.6l6.5,6.5 + C38.8,29.4,37.8,30.7,36.6,31.9z M38.5,9.2c2.1,3,3.3,6.5,3.3,10.2c0,2.7-0.6,5.2-1.7,7.6l-6.4-6.4C36.9,16.3,38.7,12.2,38.5,9.2z + M36.5,13.9c-0.8,1.9-2,4-3.5,6l-9.3-9.3C27.5,7.7,31.4,6,34,6c1.1,0,2,0.3,2.6,0.9C37.9,8.2,37.8,10.7,36.5,13.9z M24.1,1.7 + c3.8,0,7.3,1.2,10.3,3.4c-3-0.2-7.2,1.6-11.5,4.8l-6.5-6.5C18.8,2.3,21.4,1.7,24.1,1.7z M11.6,6.9c1.2-1.2,2.5-2.2,4-3l6.6,6.6 + c-1.2,1-2.4,2-3.6,3.2c-1.3,1.3-2.5,2.6-3.5,4l-6.6-6.6C9.2,9.6,10.3,8.2,11.6,6.9z M6.4,19.4c0-2.5,0.6-5,1.6-7.3l6.4,6.4 + c-1.5,2-2.7,4-3.5,6c-0.9,2.1-1.2,3.9-1.1,5.4C7.6,26.9,6.4,23.2,6.4,19.4z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_historia.svg b/src/img/subject_icons/subject_historia.svg new file mode 100644 index 0000000000000000000000000000000000000000..aebb7c1554610e623a6eace3ec2876ab158efb63 --- /dev/null +++ b/src/img/subject_icons/subject_historia.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.3" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M32.1,22.4c5.2-3.5,8.1-8.4,8.1-13.7V4.2h2.7V0.5H9.2v3.7h2.5v4.5c0,5.3,2.9,10.1,8.1,13.7 + c0.4,0.3,0.7,1,0.7,1.8s-0.3,1.5-0.7,1.8c-5.2,3.5-8.1,8.4-8.1,13.7v4.5H9.2v3.7h33.7v-3.7h-2.7v-4.5c0-5.3-2.9-10.1-8.1-13.7 + c-0.4-0.3-0.7-1-0.7-1.8C31.4,23.3,31.6,22.6,32.1,22.4z M10.2,1.5h31.7v1.7H10.2V1.5z M38.8,4.2v4.5c0,0.4,0,0.8-0.1,1.2H13.1 + c0-0.4-0.1-0.8-0.1-1.2V4.2H38.8z M41.8,46.8H10.2v-1.7h31.7V46.8z M31.3,27.1c4.8,3.2,7.5,7.7,7.5,12.5v4.5H13.1v-4.5 + c0-4.8,2.7-9.3,7.5-12.5c0.8-0.6,1.3-1.7,1.3-3c0-1.3-0.5-2.4-1.3-3c-4-2.7-6.5-6.1-7.2-9.9h25.2c-0.8,3.8-3.3,7.3-7.2,9.9 + c-0.8,0.6-1.3,1.7-1.3,3C30,25.4,30.5,26.5,31.3,27.1z"/> + <path class="st1" d="M26,25.5c0.3,0,0.5-0.1,0.7-0.3c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7c-0.4-0.4-1-0.4-1.4,0 + C25.1,24,25,24.2,25,24.5c0,0.3,0.1,0.5,0.3,0.7C25.5,25.4,25.7,25.5,26,25.5z"/> + <path class="st1" d="M26,26.6c-0.6,0-1,0.5-1,1c0,0.6,0.4,1,1,1c0.5,0,1-0.4,1-1C27,27.1,26.6,26.6,26,26.6z"/> + <path class="st1" d="M26,29.8c-0.6,0-1,0.5-1,1s0.4,1,1,1c0.5,0,1-0.5,1-1S26.6,29.8,26,29.8z"/> + <path class="st1" d="M25.3,33.2c-0.2,0.2-0.3,0.5-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7c0.2,0.2,0.4,0.3,0.7,0.3c0.3,0,0.5-0.1,0.7-0.3 + c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7C26.3,32.9,25.7,32.9,25.3,33.2z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_informatica.svg b/src/img/subject_icons/subject_informatica.svg new file mode 100644 index 0000000000000000000000000000000000000000..56f8ecef80052fa44b5663a135bf28f6f0d90fb0 --- /dev/null +++ b/src/img/subject_icons/subject_informatica.svg @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 72 47.7" style="enable-background:new 0 0.1 72 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0.1" y="0.1" class="st0" width="71.9" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M64.1,40.7h-56c-0.6,0-1,0.4-1,1s0.4,1,1,1h56c0.6,0,1-0.4,1-1S64.6,40.7,64.1,40.7z"/> + <path class="st1" d="M20.2,37.1h32c3.2,0,5.8-2.6,5.8-5.8V11c0-3.2-2.6-5.8-5.8-5.8h-32c-3.2,0-5.8,2.6-5.8,5.8v20.3 + C14.4,34.5,17,37.1,20.2,37.1z M16,11c0-2.3,1.9-4.2,4.2-4.2h32c2.3,0,4.2,1.9,4.2,4.2v20.3c0,2.3-1.9,4.2-4.2,4.2h-32 + c-2.3,0-4.2-1.9-4.2-4.2V11z"/> + <path class="st1" d="M21.6,33.5h29.2c1.9,0,3.5-1.6,3.5-3.5V12.3c0-1.9-1.6-3.5-3.5-3.5H21.6c-1.9,0-3.5,1.6-3.5,3.5V30 + C18.1,31.9,19.7,33.5,21.6,33.5z M19.1,12.3c0-1.4,1.1-2.5,2.5-2.5h29.2c1.4,0,2.5,1.1,2.5,2.5V30c0,1.4-1.1,2.5-2.5,2.5H21.6 + c-1.4,0-2.5-1.1-2.5-2.5V12.3z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_lingua-espanhola.svg b/src/img/subject_icons/subject_lingua-espanhola.svg new file mode 100644 index 0000000000000000000000000000000000000000..f51271ae58130870c6544a98383e8c4bf47b55a0 --- /dev/null +++ b/src/img/subject_icons/subject_lingua-espanhola.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M47,22.7c-0.3,0-0.5,0.2-0.5,0.5c0,5.6-2.2,11-6.1,15c-0.2,0.2-0.2,0.5,0,0.7c0.1,0.1,0.2,0.1,0.3,0.1 + c0.1,0,0.3-0.1,0.4-0.2c4.1-4.2,6.4-9.8,6.4-15.7C47.5,22.9,47.3,22.7,47,22.7z"/> + <path class="st1" d="M24.3,3.4c-10.9,0-19.8,8.9-19.8,19.8c0,4.1,1.2,8.1,3.6,11.4l0.1,0.1l-2.3,6.8l6.8-2.3l0.1,0.1 + c3.3,2.4,7.3,3.6,11.4,3.6c10.9,0,19.8-8.9,19.8-19.7S35.2,3.4,24.3,3.4z M24.3,41.4c-3.8,0-7.4-1.2-10.5-3.3L13,37.6l-4.7,1.6 + l1.6-4.7l-0.5-0.7C7.2,30.6,6,27,6,23.2C6,13.1,14.2,4.9,24.3,4.9c10.1,0,18.3,8.2,18.3,18.3S34.3,41.4,24.3,41.4z"/> + <polygon class="st1" points="17.4,23.5 12.7,23.5 12.7,19.5 11.5,19.5 11.5,28.7 12.7,28.7 12.7,24.5 17.4,24.5 17.4,28.7 + 18.6,28.7 18.6,19.5 17.4,19.5 "/> + <path class="st1" d="M23.4,21.7c-0.6,0-1.1,0.1-1.6,0.4c-0.5,0.3-0.8,0.7-1.1,1.2c-0.3,0.5-0.4,1.1-0.4,1.8v0.1 + c0,1.1,0.3,1.9,0.9,2.6c0.6,0.6,1.3,1,2.3,1c0.6,0,1.2-0.1,1.6-0.4c0.5-0.3,0.8-0.7,1.1-1.2s0.4-1.1,0.4-1.8v-0.1 + c0-1.1-0.3-1.9-0.9-2.6C25.1,22.1,24.3,21.7,23.4,21.7z M24.8,27.2c-0.4,0.5-0.8,0.7-1.4,0.7c-0.6,0-1.1-0.2-1.4-0.7 + c-0.4-0.5-0.5-1.1-0.5-1.8c0-0.9,0.2-1.5,0.5-2s0.8-0.7,1.4-0.7c0.6,0,1.1,0.2,1.4,0.7c0.4,0.5,0.5,1.1,0.5,1.8 + C25.3,26.1,25.2,26.7,24.8,27.2z"/> + <rect x="28.1" y="19" class="st1" width="1.2" height="9.8"/> + <path class="st1" d="M36.4,24c0-0.7-0.3-1.2-0.7-1.6c-0.4-0.4-1.1-0.6-1.9-0.6c-0.5,0-1,0.1-1.4,0.3s-0.7,0.4-1,0.8 + c-0.2,0.3-0.4,0.7-0.4,1h1.2c0-0.3,0.1-0.6,0.4-0.8s0.6-0.3,1.1-0.3c0.5,0,0.8,0.1,1.1,0.4c0.2,0.2,0.4,0.6,0.4,1v0.5H34 + c-1,0-1.8,0.2-2.3,0.6c-0.5,0.4-0.8,1-0.8,1.7c0,0.6,0.2,1.1,0.7,1.5s1,0.6,1.7,0.6c0.8,0,1.4-0.3,2-0.9c0,0.3,0.1,0.6,0.2,0.7h1.2 + v-0.1c-0.2-0.4-0.2-0.9-0.2-1.5V24z M35.2,26.8c-0.1,0.3-0.4,0.6-0.7,0.7s-0.7,0.3-1,0.3c-0.4,0-0.7-0.1-0.9-0.3s-0.4-0.5-0.4-0.9 + c0-0.8,0.7-1.3,2.2-1.3h0.9V26.8z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_lingua-inglesa.svg b/src/img/subject_icons/subject_lingua-inglesa.svg new file mode 100644 index 0000000000000000000000000000000000000000..4c548a0a704a200f408da9936844832cddfa72c5 --- /dev/null +++ b/src/img/subject_icons/subject_lingua-inglesa.svg @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M47,23.5c-0.3,0-0.5,0.2-0.5,0.5c0,5.6-2.2,11-6.1,15c-0.2,0.2-0.2,0.5,0,0.7c0.1,0.1,0.2,0.1,0.3,0.1 + c0.1,0,0.3-0.1,0.4-0.2c4.1-4.2,6.4-9.8,6.4-15.7C47.5,23.7,47.3,23.5,47,23.5z"/> + <path class="st1" d="M24.3,4.2c-10.9,0-19.8,8.9-19.8,19.8c0,4.1,1.2,8,3.6,11.4l0.1,0.1l-2.3,6.8l6.8-2.3l0.1,0.1 + c3.3,2.4,7.3,3.6,11.4,3.6c10.9,0,19.8-8.9,19.8-19.8C44,13.1,35.2,4.2,24.3,4.2z M24.3,42.2c-3.8,0-7.4-1.2-10.5-3.3L13,38.3 + l-4.7,1.6l1.6-4.7l-0.5-0.7C7.2,31.4,6,27.8,6,23.9C6,13.9,14.2,5.7,24.3,5.7c10.1,0,18.3,8.2,18.3,18.3 + C42.5,34,34.3,42.2,24.3,42.2z"/> + <polygon class="st1" points="25.1,24.3 20.5,24.3 20.5,20.3 19.2,20.3 19.2,29.5 20.5,29.5 20.5,25.3 25.1,25.3 25.1,29.5 + 26.4,29.5 26.4,20.3 25.1,20.3 "/> + <rect x="28.4" y="22.7" class="st1" width="1.2" height="6.9"/> + <path class="st1" d="M29,20.2c-0.2,0-0.4,0.1-0.5,0.2c-0.1,0.1-0.2,0.3-0.2,0.5c0,0.2,0.1,0.3,0.2,0.5c0.1,0.1,0.3,0.2,0.5,0.2 + s0.4-0.1,0.5-0.2c0.1-0.1,0.2-0.3,0.2-0.5c0-0.2-0.1-0.4-0.2-0.5C29.4,20.2,29.3,20.2,29,20.2z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_lingua-portuguesa.svg b/src/img/subject_icons/subject_lingua-portuguesa.svg new file mode 100644 index 0000000000000000000000000000000000000000..7baa394159bdfd0e1bc44ef46c0c7790f2eadd7f --- /dev/null +++ b/src/img/subject_icons/subject_lingua-portuguesa.svg @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M24.3,4.2c-10.9,0-19.8,8.9-19.8,19.8c0,4.1,1.2,8,3.6,11.4l0.1,0.1l-2.3,6.8l6.8-2.3l0.1,0.1 + c3.3,2.4,7.3,3.6,11.4,3.6c10.9,0,19.8-8.9,19.8-19.7C44,13.1,35.2,4.2,24.3,4.2z M24.3,42.2c-3.8,0-7.4-1.2-10.5-3.3L13,38.3 + l-4.7,1.6l1.6-4.7l-0.5-0.7C7.2,31.4,6,27.8,6,23.9C6,13.9,14.2,5.7,24.3,5.7c10.1,0,18.3,8.2,18.3,18.3 + C42.5,34,34.3,42.2,24.3,42.2z"/> + <path class="st1" d="M47,23.5c-0.3,0-0.5,0.2-0.5,0.5c0,5.6-2.2,11-6.1,15c-0.2,0.2-0.2,0.5,0,0.7c0.1,0.1,0.2,0.1,0.3,0.1 + c0.1,0,0.3-0.1,0.4-0.2c4.1-4.2,6.4-9.8,6.4-15.7C47.5,23.7,47.3,23.5,47,23.5z"/> + <path class="st1" d="M20.7,20.7c-0.6-0.4-1.2-0.5-2-0.5c-0.7,0-1.4,0.2-1.9,0.5c-0.6,0.4-1,0.9-1.3,1.6s-0.5,1.5-0.5,2.4v0.7 + c0,0.9,0.2,1.6,0.5,2.3c0.3,0.7,0.7,1.2,1.3,1.5s1.2,0.5,1.9,0.5c0.7,0,1.4-0.2,2-0.5s1-0.9,1.3-1.5s0.5-1.5,0.5-2.4v-0.6 + c0-0.9-0.2-1.7-0.5-2.4C21.7,21.6,21.3,21.1,20.7,20.7z M21.3,25.3c0,1.1-0.2,1.9-0.7,2.5s-1,0.9-1.8,0.9c-0.8,0-1.4-0.3-1.8-0.9 + c-0.4-0.6-0.7-1.4-0.7-2.5v-0.7c0-1,0.2-1.9,0.7-2.4c0.4-0.6,1-0.9,1.8-0.9c0.8,0,1.4,0.3,1.8,0.9s0.7,1.4,0.7,2.5V25.3z"/> + <rect x="24.3" y="19.8" class="st1" width="1.2" height="9.8"/> + <polygon class="st1" points="32.1,19.8 30.7,19.8 29.5,21.7 30.4,21.7 "/> + <path class="st1" d="M32.5,24.8c0-0.7-0.2-1.2-0.7-1.6c-0.4-0.4-1.1-0.6-1.9-0.6c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.4-1,0.8 + c-0.2,0.3-0.4,0.7-0.4,1h1.2c0-0.3,0.1-0.6,0.4-0.8c0.3-0.2,0.6-0.3,1.1-0.3c0.5,0,0.8,0.1,1.1,0.4c0.2,0.2,0.4,0.6,0.4,1v0.5h-1.1 + c-1,0-1.8,0.2-2.3,0.6s-0.8,1-0.8,1.7c0,0.6,0.2,1.1,0.7,1.5s1,0.6,1.7,0.6c0.8,0,1.4-0.3,2-0.9c0,0.3,0.1,0.6,0.2,0.7h1.2v-0.1 + c-0.2-0.4-0.2-0.9-0.2-1.5V24.8z M31.4,27.6c-0.1,0.3-0.4,0.6-0.7,0.7s-0.7,0.3-1,0.3c-0.4,0-0.7-0.1-0.9-0.3 + c-0.2-0.2-0.4-0.5-0.4-0.9c0-0.8,0.7-1.3,2.2-1.3h0.9V27.6z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_matematica.svg b/src/img/subject_icons/subject_matematica.svg new file mode 100644 index 0000000000000000000000000000000000000000..50eab67436599212349d46f8aa331441da6d0c7e --- /dev/null +++ b/src/img/subject_icons/subject_matematica.svg @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 72 47.7" style="enable-background:new 0 0.1 72 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M66.4,40.3h-0.7V6.6h-5.4v33.8h-0.7c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5h6.8c0.3,0,0.5-0.2,0.5-0.5 + S66.7,40.3,66.4,40.3z M64.7,39.7h-3.4V7.6h3.4V39.7z"/> + <path class="st1" d="M12.4,40.3h-0.7V6.6H6.3v33.8H5.5c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5h6.8c0.3,0,0.5-0.2,0.5-0.5 + S12.6,40.3,12.4,40.3z M10.6,39.7H7.3V7.6h3.4V39.7z"/> + <path class="st1" d="M9,27.5c0.3,0,0.5-0.2,0.5-0.5v-6.8c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5V27C8.5,27.3,8.7,27.5,9,27.5z"/> + <path class="st1" d="M63,27.5c0.3,0,0.5-0.2,0.5-0.5v-6.8c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5V27C62.5,27.3,62.7,27.5,63,27.5z + "/> + <path class="st1" d="M35.2,8.9c0-1.3-1-2.3-2.3-2.3h-0.3c-1.3,0-2.3,1-2.3,2.3v0.3h-1.6V8.9c0-1.3-1-2.3-2.3-2.3H26 + c-1.3,0-2.3,1-2.3,2.3v0.3h-1.6V8.9c0-1.3-1-2.3-2.3-2.3h-0.3c-1.3,0-2.3,1-2.3,2.3v0.3h-3v1.5h3V11c0,1.3,1,2.3,2.3,2.3h0.3 + c1.3,0,2.3-1,2.3-2.3v-0.3h1.6V11c0,1.3,1,2.3,2.3,2.3h0.3c1.3,0,2.3-1,2.3-2.3v-0.3h1.6V11c0,1.3,1,2.3,2.3,2.3h0.3 + c1.3,0,2.3-1,2.3-2.3v-0.3h22.6V9.2H35.2V8.9z M21.1,11c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3V8.9 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V11z M27.7,11c0,0.7-0.6,1.3-1.3,1.3H26c-0.7,0-1.3-0.6-1.3-1.3V8.9 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V11z M34.2,11c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3V8.9 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V11z"/> + <path class="st1" d="M41.7,22.5c0-1.3-1-2.3-2.3-2.3h-0.3c-1.3,0-2.3,1-2.3,2.3v0.3h-1.5v-0.3c0-1.3-1-2.3-2.3-2.3h-0.3 + c-1.3,0-2.3,1-2.3,2.3v0.3h-16v1.5h16v0.3c0,1.3,1,2.3,2.3,2.3h0.3c1.3,0,2.3-1,2.3-2.3v-0.3h1.5v0.3c0,1.3,1,2.3,2.3,2.3h0.3 + c1.3,0,2.3-1,2.3-2.3v-0.3h16v-1.5h-16V22.5z M34.2,24.7c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3v-2.1 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V24.7z M40.7,24.7c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3v-2.1 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V24.7z"/> + <path class="st1" d="M54.8,35.8c0-1.3-1-2.3-2.3-2.3h-0.3c-1.3,0-2.3,1-2.3,2.3v0.3h-1.5v-0.3c0-1.3-1-2.3-2.3-2.3h-0.3 + c-1.3,0-2.3,1-2.3,2.3v0.3h-1.6v-0.3c0-1.3-1-2.3-2.3-2.3h-0.3c-1.3,0-2.3,1-2.3,2.3v0.3H14.2v1.5h22.6v0.3c0,1.3,1,2.3,2.3,2.3 + h0.3c1.3,0,2.3-1,2.3-2.3v-0.3h1.6v0.3c0,1.3,1,2.3,2.3,2.3H46c1.3,0,2.3-1,2.3-2.3v-0.3h1.5v0.3c0,1.3,1,2.3,2.3,2.3h0.3 + c1.3,0,2.3-1,2.3-2.3v-0.3h3v-1.5h-3V35.8z M40.7,37.9c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3v-2.1 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V37.9z M47.3,37.9c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3v-2.1 + c0-0.7,0.6-1.3,1.3-1.3H46c0.7,0,1.3,0.6,1.3,1.3V37.9z M53.8,37.9c0,0.7-0.6,1.3-1.3,1.3h-0.3c-0.7,0-1.3-0.6-1.3-1.3v-2.1 + c0-0.7,0.6-1.3,1.3-1.3h0.3c0.7,0,1.3,0.6,1.3,1.3V37.9z"/> +</g> +<rect x="0" y="0.1" class="st0" width="72" height="47.7"/> +</svg> diff --git a/src/img/subject_icons/subject_outras-linguas.svg b/src/img/subject_icons/subject_outras-linguas.svg new file mode 100644 index 0000000000000000000000000000000000000000..a4a182af31c99ce417e64399d3f43203fe2a749a --- /dev/null +++ b/src/img/subject_icons/subject_outras-linguas.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M47,23.5c-0.3,0-0.5,0.2-0.5,0.5c0,5.6-2.2,11-6.1,15c-0.2,0.2-0.2,0.5,0,0.7c0.1,0.1,0.2,0.1,0.3,0.1 + c0.1,0,0.3-0.1,0.4-0.2c4.1-4.2,6.4-9.8,6.4-15.7C47.5,23.7,47.3,23.5,47,23.5z"/> + <path class="st1" d="M24.3,4.2c-10.9,0-19.8,8.9-19.8,19.8c0,4.1,1.2,8,3.6,11.4l0.1,0.1l-2.3,6.8l6.8-2.3l0.1,0.1 + c3.3,2.4,7.3,3.6,11.4,3.6c10.9,0,19.8-8.9,19.8-19.8C44,13.1,35.2,4.2,24.3,4.2z M24.3,42.2c-3.8,0-7.4-1.2-10.5-3.3L13,38.3 + l-4.7,1.6l1.6-4.7l-0.5-0.7C7.2,31.4,6,27.8,6,23.9C6,13.9,14.2,5.7,24.3,5.7c10.1,0,18.3,8.2,18.3,18.3 + C42.5,34,34.3,42.2,24.3,42.2z"/> + <path class="st1" d="M19.6,24.2c-0.3,0-0.6,0.1-0.8,0.3s-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7s0.4,0.3,0.8,0.3s0.6-0.1,0.8-0.3 + s0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7S19.9,24.2,19.6,24.2z"/> + <path class="st1" d="M24.3,24.2c-0.3,0-0.6,0.1-0.8,0.3s-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7s0.4,0.3,0.8,0.3s0.6-0.1,0.8-0.3 + s0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7S24.7,24.2,24.3,24.2z"/> + <path class="st1" d="M29.1,24.2c-0.3,0-0.6,0.1-0.8,0.3s-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7s0.4,0.3,0.8,0.3s0.6-0.1,0.8-0.3 + s0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7S29.4,24.2,29.1,24.2z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_outros.svg b/src/img/subject_icons/subject_outros.svg new file mode 100644 index 0000000000000000000000000000000000000000..8d5fbc1f8b3a316296e0729114006e93f3d19dfe --- /dev/null +++ b/src/img/subject_icons/subject_outros.svg @@ -0,0 +1,6 @@ +<svg width="57" height="57" viewBox="0 0 57 57" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M49.7096 12.0677C48.8692 11.3192 47.9354 11.0386 47.0015 11.0386H18.7064C17.4925 11.1321 16.4653 11.6935 15.7182 12.8161L5.63281 28.1591L15.8116 43.5021C16.5586 44.6247 17.6792 45.1861 18.9866 45.1861H47.0015C48.1221 45.1861 48.9626 44.8119 49.7096 44.0634C50.4567 43.315 50.8302 42.3794 50.8302 41.3503V14.8743C50.9236 13.7517 50.5501 12.9097 49.7096 12.0677ZM49.5229 41.2568C49.5229 42.0052 49.3361 42.5665 48.8692 43.0343C48.4023 43.5021 47.842 43.6892 47.0949 43.6892H18.9866C18.1462 43.6892 17.3991 43.315 16.9322 42.6601L7.31371 28.0655L16.9322 13.5646C17.3991 12.8161 18.0528 12.4419 18.7998 12.4419H47.0015C47.6552 12.4419 48.2155 12.7226 48.7758 13.0968C49.2427 13.5646 49.4295 14.1259 49.4295 14.8743V41.2568H49.5229Z" fill="#00BCD4"/> +<path d="M25.5239 26.2886C24.9636 26.2886 24.4967 26.4757 24.1232 26.8499C23.843 27.1306 23.6562 27.5983 23.6562 28.0661C23.6562 28.5339 23.843 29.0017 24.1232 29.2823C24.4033 29.6565 24.8702 29.8437 25.5239 29.8437C26.0842 29.8437 26.5511 29.6565 26.9247 29.2823C27.2982 29.0017 27.3916 28.6274 27.3916 28.0661C27.3916 27.5983 27.2048 27.1306 26.9247 26.7563C26.6445 26.4757 26.1776 26.2886 25.5239 26.2886ZM26.271 28.721C26.0842 28.9081 25.8974 28.9081 25.5239 28.9081C25.1504 28.9081 24.9636 28.8146 24.8702 28.721C24.6835 28.5339 24.5901 28.3468 24.5901 28.0661C24.5901 27.7855 24.6835 27.5983 24.7768 27.4112C24.8702 27.2241 25.1504 27.1306 25.4305 27.1306C25.8041 27.1306 25.9908 27.2241 26.1776 27.4112C26.3644 27.5983 26.4577 27.7855 26.4577 28.0661C26.4577 28.3468 26.3644 28.5339 26.271 28.721Z" fill="#00BCD4"/> +<path d="M32.0591 26.2886C31.4988 26.2886 31.0319 26.4757 30.6583 26.8499C30.3782 27.2241 30.1914 27.5983 30.1914 28.1597C30.1914 28.6274 30.3782 29.0952 30.6583 29.3759C30.9385 29.7501 31.4054 29.9372 32.0591 29.9372C32.6194 29.9372 33.0863 29.7501 33.4598 29.3759C33.74 29.0017 33.9267 28.6274 33.9267 28.1597C33.9267 27.6919 33.74 27.2241 33.4598 26.8499C33.1797 26.4757 32.7127 26.2886 32.0591 26.2886ZM32.8061 28.721C32.6194 28.9081 32.4326 28.9081 32.0591 28.9081C31.6855 28.9081 31.4988 28.8146 31.4054 28.721C31.2186 28.5339 31.2186 28.3468 31.2186 28.0661C31.2186 27.7855 31.312 27.5983 31.4054 27.4112C31.5922 27.2241 31.7789 27.1306 32.0591 27.1306C32.4326 27.1306 32.6194 27.2241 32.8061 27.4112C32.9929 27.5983 33.0863 27.7855 33.0863 28.0661C33.0863 28.3468 32.9929 28.5339 32.8061 28.721Z" fill="#00BCD4"/> +<path d="M38.6919 26.2886C38.1316 26.2886 37.6647 26.4757 37.2911 26.8499C37.011 27.2241 36.8242 27.5983 36.8242 28.1597C36.8242 28.6274 37.011 29.0952 37.2911 29.3759C37.5713 29.7501 38.0382 29.9372 38.6919 29.9372C39.2522 29.9372 39.7191 29.7501 40.0926 29.3759C40.3728 29.0017 40.5595 28.6274 40.5595 28.1597C40.5595 27.6919 40.3728 27.2241 40.0926 26.8499C39.7191 26.4757 39.2522 26.2886 38.6919 26.2886ZM39.3456 28.721C39.1588 28.9081 38.972 28.9081 38.5985 28.9081C38.3183 28.9081 38.0382 28.8146 37.9448 28.721C37.7581 28.5339 37.758 28.3468 37.758 28.0661C37.758 27.7855 37.8514 27.5983 37.9448 27.4112C38.0382 27.2241 38.3183 27.1306 38.5985 27.1306C38.972 27.1306 39.1588 27.2241 39.3456 27.4112C39.5323 27.5983 39.6257 27.7855 39.6257 28.0661C39.6257 28.3468 39.5323 28.5339 39.3456 28.721Z" fill="#00BCD4"/> +</svg> diff --git a/src/img/subject_icons/subject_quimica.svg b/src/img/subject_icons/subject_quimica.svg new file mode 100644 index 0000000000000000000000000000000000000000..4f897aa786134c3703100c03174392f503a37758 --- /dev/null +++ b/src/img/subject_icons/subject_quimica.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.1" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M26.5,30.6c0-1.6-1.1-2.8-2.8-2.8s-2.8,1.1-2.8,2.8c0,1.6,1.1,2.8,2.8,2.8S26.5,32.3,26.5,30.6z M23.7,32.4 + c-1.1,0-1.8-0.7-1.8-1.8s0.7-1.8,1.8-1.8s1.8,0.7,1.8,1.8S24.8,32.4,23.7,32.4z"/> + <path class="st1" d="M28.3,24.3c1.6,0,2.8-1.1,2.8-2.8s-1.1-2.8-2.8-2.8s-2.8,1.1-2.8,2.8S26.6,24.3,28.3,24.3z M28.3,19.7 + c1.1,0,1.8,0.7,1.8,1.8s-0.7,1.8-1.8,1.8s-1.8-0.7-1.8-1.8S27.2,19.7,28.3,19.7z"/> + <path class="st1" d="M32.2,36.1c-0.3,0-0.5,0.2-0.5,0.5c0,3.7-3,6.8-6.8,6.8c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5 + c4.3,0,7.8-3.5,7.8-7.8C32.7,36.3,32.4,36.1,32.2,36.1z"/> + <path class="st1" d="M38.2,0.6H13.8v5.5h2.4v31.4c0,5.4,4.4,9.9,9.9,9.9s9.9-4.4,9.9-9.9V6.1h2.4V0.6z M26,45.8 + c-4.6,0-8.4-3.8-8.4-8.4V12.9h16.7v24.6C34.4,42.1,30.6,45.8,26,45.8z M34.4,11.9H17.6V6.1h16.7V11.9z M37.2,5.1H14.8V1.6h22.4V5.1 + z"/> +</g> +</svg> diff --git a/src/img/subject_icons/subject_sociologia.svg b/src/img/subject_icons/subject_sociologia.svg new file mode 100644 index 0000000000000000000000000000000000000000..e2cdacd0addb9ea8255b3b768a7b1806037bbb6a --- /dev/null +++ b/src/img/subject_icons/subject_sociologia.svg @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Camada_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0.1 52 47.7" style="enable-background:new 0 0.1 52 47.7;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:none;} + .st1{fill:#00BCD4;} +</style> +<rect x="0" y="0.2" class="st0" width="52" height="47.7"/> +<g> + <g id="REA_Conteudo"> + <g id="Image"> + </g> + </g> + <g id="Content"> + </g> + <g id="Pesquisa"> + </g> + <g id="Print"> + </g> +</g> +<g> + <path class="st1" d="M48,8.3c1.7-1.7,1.7-4.6,0-6.3c-0.8-0.8-2-1.3-3.2-1.3s-2.3,0.5-3.2,1.3s-1.3,2-1.3,3.2c0,0.7,0.2,1.4,0.5,2 + C37,3.8,32,2.2,26.9,2.8l-0.9,0.1L27.5,8l0.6,0c1.2-0.1,2.4,0,3.5,0.3l-1.2,4.4l0.7,0.2c1.4,0.4,2.8,1.1,3.8,2.2 + c1.1,1.1,1.8,2.4,2.2,3.8l0.2,0.7l4.3-1.2c0.2,1.2,0.3,2.4,0.2,3.6l0,0.6L47,24l0.1-0.9c0.6-5.1-1-10.2-4.3-14.1 + c0.6,0.3,1.3,0.5,2,0.5C46,9.6,47.2,9.1,48,8.3z M42.7,3c0.6-0.6,1.3-0.9,2.1-0.9S46.4,2.4,47,3c1.2,1.2,1.2,3.1,0,4.2 + c-1.1,1.1-3.1,1.1-4.2,0c-0.6-0.6-0.9-1.3-0.9-2.1C41.9,4.3,42.2,3.6,42.7,3z M45.7,22.1l-2.3-0.6c0-1.4-0.1-2.8-0.5-4.2l-0.2-0.7 + l-4.4,1.2C37.9,16.3,37.1,15,36,14c-1.1-1.1-2.4-1.9-3.8-2.4l1.2-4.4L32.7,7c-1.3-0.4-2.7-0.5-4.1-0.5L28,4.2 + c4.8-0.2,9.4,1.5,12.8,4.9C44.2,12.5,46,17.3,45.7,22.1z"/> + <path class="st1" d="M18.1,28.2c-0.6-0.9-1.1-1.9-1.5-3l4.6-1.3L21,23.2c-0.8-2.8-0.1-5.9,2-8l0.5-0.5l-3.3-3.3 + c0.9-0.8,1.9-1.5,2.9-2l0.5-0.3l-1.4-5.2l-0.8,0.4c-4.7,2.1-8.2,6.1-9.8,10.9c0-0.7-0.2-1.4-0.6-2c-0.6-1-1.6-1.8-2.7-2.1 + c-2.4-0.6-4.8,0.8-5.5,3.2c-0.6,2.4,0.8,4.8,3.2,5.5c0.4,0.1,0.8,0.1,1.1,0.1c1.5,0,2.9-0.8,3.8-2.1c-0.9,4.9,0.3,9.9,3.2,14 + l0.5,0.7l3.8-3.8L18.1,28.2z M10,16.2c-0.4,1.6-2,2.6-3.6,2.1c-1.6-0.4-2.6-2-2.1-3.6c0.2-0.8,0.7-1.4,1.4-1.8 + c0.5-0.3,1-0.4,1.5-0.4c0.3,0,0.5,0,0.8,0.1c0.8,0.2,1.4,0.7,1.8,1.4C10.1,14.6,10.2,15.4,10,16.2z M14.8,30.2 + c-2.6-4-3.4-8.8-2.2-13.4C13.9,12.2,17,8.2,21.3,6l0.6,2.3c-1.2,0.7-2.3,1.5-3.3,2.6l-0.5,0.5l3.4,3.3c-1.9,2.3-2.6,5.3-2,8.2 + l-4.6,1.3l0.2,0.7c0.4,1.3,0.9,2.5,1.5,3.6L14.8,30.2z"/> + <path class="st1" d="M40.6,26.9c-0.5,1.1-1.2,2.1-2,2.9l-3.3-3.3l-0.5,0.5c-2.1,2-5.2,2.7-8,1.9L26,28.7l-1.3,4.7 + c-1.1-0.4-2.1-0.9-3-1.5l-0.5-0.3l-3.8,3.8l0.7,0.5c3.2,2.3,7,3.5,10.8,3.5c1.1,0,2.2-0.1,3.3-0.3c-1.6,1-2.4,3-2,4.9 + c0.3,1.2,1,2.1,2.1,2.7c0.7,0.4,1.5,0.6,2.3,0.6c0.4,0,0.8,0,1.1-0.1c2.4-0.6,3.8-3.1,3.2-5.5c-0.3-1.2-1-2.1-2.1-2.7 + c-0.6-0.4-1.3-0.5-2-0.6c4.8-1.6,8.8-5.2,10.9-9.8l0.4-0.8l-5.2-1.4L40.6,26.9z M37.4,42.2c0.4,1.6-0.5,3.2-2.1,3.6 + c-0.8,0.2-1.6,0.1-2.3-0.3s-1.2-1.1-1.4-1.8c-0.4-1.6,0.5-3.2,2.1-3.6C34,40,34.3,40,34.5,40c0.5,0,1,0.1,1.5,0.4 + C36.7,40.8,37.2,41.4,37.4,42.2z M43.9,28.8c-2.2,4.2-6.2,7.4-10.8,8.6c-4.6,1.2-9.5,0.4-13.5-2.2l1.7-1.7c1.1,0.7,2.4,1.2,3.6,1.6 + l0.7,0.2l1.3-4.8c2.9,0.6,5.9-0.1,8.2-1.9l3.3,3.4l0.5-0.5c1-1,1.9-2.1,2.6-3.3L43.9,28.8z"/> +</g> +</svg> diff --git a/src/img/twitter.svg b/src/img/twitter.svg new file mode 100644 index 0000000000000000000000000000000000000000..a8f67cc32a3ae9a5b6b6aeef9c9546a89137adf8 --- /dev/null +++ b/src/img/twitter.svg @@ -0,0 +1,4 @@ +<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M25 50C38.8071 50 50 38.8071 50 25C50 11.1929 38.8071 0 25 0C11.1929 0 0 11.1929 0 25C0 38.8071 11.1929 50 25 50Z" fill="#55ACEE"/> +<path d="M40.3132 17.9663C39.2419 18.4414 38.0894 18.7627 36.8808 18.9062C38.1148 18.1668 39.0618 16.997 39.5088 15.6008C38.3542 16.2858 37.0747 16.7827 35.7141 17.0505C34.6241 15.8896 33.071 15.1641 31.3512 15.1641C28.0517 15.1641 25.3755 17.8402 25.3755 21.1398C25.3755 21.6081 25.4286 22.064 25.5311 22.5017C20.5648 22.2526 16.1613 19.8737 13.2138 16.2572C12.6995 17.1396 12.4045 18.1668 12.4045 19.2618C12.4045 21.3345 13.4602 23.1643 15.0628 24.2357C14.0837 24.2049 13.1616 23.9362 12.3564 23.4874C12.3559 23.5128 12.3559 23.5382 12.3559 23.5632C12.3559 26.4586 14.4166 28.8736 17.1497 29.4221C16.6488 29.5594 16.1199 29.632 15.5757 29.632C15.1898 29.632 14.8159 29.5951 14.4513 29.5255C15.2116 31.8991 17.418 33.6268 20.0335 33.6754C17.988 35.2784 15.4117 36.2334 12.6113 36.2334C12.13 36.2334 11.6531 36.2054 11.1865 36.1497C13.8297 37.8458 16.9715 38.8347 20.3459 38.8347C31.3374 38.8347 37.3483 29.7292 37.3483 21.8319C37.3483 21.5729 37.3425 21.3149 37.3309 21.0591C38.4994 20.2168 39.5124 19.1647 40.3132 17.9663Z" fill="#F1F2F2"/> +</svg> diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6431bc5fc6b2c932dfe5d0418fc667b86c18b9fc --- /dev/null +++ b/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// <reference types="react-scripts" /> diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..0980b23fa1e05a97ba9ea750849ebc32ab890875 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve" + }, + "include": [ + "src" + ] +}