From 2930c087e59c474d0d5b0601b6a1ae7b664b1990 Mon Sep 17 00:00:00 2001 From: Hepp Maccoy Date: Wed, 24 Feb 2021 13:43:08 -0700 Subject: [PATCH] Initial commit --- .gitignore | 4 + package-lock.json | 1761 +++++++++++++++++ package.json | 21 + public/favicon.png | Bin 0 -> 3127 bytes public/global.css | 63 + public/img/portfolio/thumb_dbg.jpg | Bin 0 -> 17426 bytes public/img/portfolio/thumb_dragomi.jpg | Bin 0 -> 14369 bytes public/img/portfolio/thumb_interphase.jpg | Bin 0 -> 16715 bytes public/img/portfolio/thumb_meow-wolf.jpg | Bin 0 -> 14868 bytes public/img/portfolio/thumb_nike_beacon.jpg | Bin 0 -> 15312 bytes public/img/portfolio/thumb_nike_bigair.jpg | Bin 0 -> 11836 bytes public/img/portfolio/thumb_nike_treadmill.jpg | Bin 0 -> 12193 bytes public/img/portfolio/thumb_omnia.jpg | Bin 0 -> 12511 bytes public/img/portfolio/thumb_pixelmixer.jpg | Bin 0 -> 17797 bytes public/img/portfolio/thumb_raindance.jpg | Bin 0 -> 20195 bytes public/img/portfolio/thumb_rapt.jpg | Bin 0 -> 8222 bytes public/img/portfolio/thumb_tipper.jpg | Bin 0 -> 15427 bytes public/img/portfolio/thumb_toyota.jpg | Bin 0 -> 10725 bytes public/img/test-logo.png | Bin 0 -> 9412 bytes public/img/test-logo_sm.png | Bin 0 -> 3973 bytes public/index.html | 18 + rollup.config.js | 75 + src/App.svelte | 141 ++ src/components/ButtonLink.svelte | 23 + src/components/Content.svelte | 13 + src/components/ImageGrid.svelte | 37 + src/components/RotatingItemGrid.svelte | 154 ++ src/components/ScatterformControl.svelte | 97 + src/components/ScatterformLite.svelte | 146 ++ src/components/Section.svelte | 51 + src/components/Shader.svelte | 42 + src/components/ShaderCanvas.svelte | 123 ++ src/components/Title.svelte | 44 + src/components/TitleListAnimate.svelte | 123 ++ src/main.js | 9 + src/scatterform/ScatterformLiteFrag.svelte | 184 ++ src/scatterform/ScatterformLitePresets.svelte | 74 + src/utils/Data.svelte | 134 ++ src/utils/NumberMap.svelte | 6 + src/utils/ScrollLogic.svelte | 75 + src/utils/ShaderUtils.svelte | 131 ++ src/utils/Utils.svelte | 13 + 42 files changed, 3562 insertions(+) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.png create mode 100644 public/global.css create mode 100755 public/img/portfolio/thumb_dbg.jpg create mode 100755 public/img/portfolio/thumb_dragomi.jpg create mode 100755 public/img/portfolio/thumb_interphase.jpg create mode 100755 public/img/portfolio/thumb_meow-wolf.jpg create mode 100755 public/img/portfolio/thumb_nike_beacon.jpg create mode 100755 public/img/portfolio/thumb_nike_bigair.jpg create mode 100755 public/img/portfolio/thumb_nike_treadmill.jpg create mode 100755 public/img/portfolio/thumb_omnia.jpg create mode 100755 public/img/portfolio/thumb_pixelmixer.jpg create mode 100755 public/img/portfolio/thumb_raindance.jpg create mode 100755 public/img/portfolio/thumb_rapt.jpg create mode 100755 public/img/portfolio/thumb_tipper.jpg create mode 100755 public/img/portfolio/thumb_toyota.jpg create mode 100644 public/img/test-logo.png create mode 100644 public/img/test-logo_sm.png create mode 100644 public/index.html create mode 100644 rollup.config.js create mode 100644 src/App.svelte create mode 100644 src/components/ButtonLink.svelte create mode 100644 src/components/Content.svelte create mode 100644 src/components/ImageGrid.svelte create mode 100644 src/components/RotatingItemGrid.svelte create mode 100644 src/components/ScatterformControl.svelte create mode 100644 src/components/ScatterformLite.svelte create mode 100644 src/components/Section.svelte create mode 100644 src/components/Shader.svelte create mode 100644 src/components/ShaderCanvas.svelte create mode 100644 src/components/Title.svelte create mode 100644 src/components/TitleListAnimate.svelte create mode 100644 src/main.js create mode 100644 src/scatterform/ScatterformLiteFrag.svelte create mode 100644 src/scatterform/ScatterformLitePresets.svelte create mode 100644 src/utils/Data.svelte create mode 100644 src/utils/NumberMap.svelte create mode 100644 src/utils/ScrollLogic.svelte create mode 100644 src/utils/ShaderUtils.svelte create mode 100644 src/utils/Utils.svelte diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da93220 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/node_modules/ +/public/build/ + +.DS_Store diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a3149b3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1761 @@ +{ + "name": "svelte-app", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "svelte-app", + "version": "1.0.0", + "dependencies": { + "sirv-cli": "^1.0.11" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "^8.0.0", + "rollup": "^2.39.0", + "rollup-plugin-livereload": "^2.0.0", + "rollup-plugin-svelte": "^6.1.1", + "rollup-plugin-terser": "^7.0.0", + "svelte": "^3.32.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.11", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", + "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz", + "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.3.4" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", + "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deep-freeze": "^0.0.1", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/console-clear": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "engines": { + "node": ">=4" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/livereload": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", + "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", + "dev": true, + "dependencies": { + "chokidar": "^3.3.0", + "livereload-js": "^3.1.0", + "opts": ">= 1.2.0", + "ws": "^6.2.1" + }, + "bin": { + "livereload": "bin/livereload.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/livereload-js": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz", + "integrity": "sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==", + "dev": true + }, + "node_modules/local-access": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", + "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mri": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", + "dev": true + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.39.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz", + "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/rollup-plugin-livereload": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz", + "integrity": "sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==", + "dev": true, + "dependencies": { + "livereload": "^0.9.1" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/rollup-plugin-svelte": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-6.1.1.tgz", + "integrity": "sha512-ijnm0pH1ScrY4uxwaNXBpNVejVzpL2769hIEbAlnqNUWZrffLspu5/k9/l/Wsj3NrEHLQ6wCKGagVJonyfN7ow==", + "dev": true, + "dependencies": { + "require-relative": "^0.8.7", + "rollup-pluginutils": "^2.8.2", + "sourcemap-codec": "^1.4.8" + }, + "peerDependencies": { + "rollup": ">=1.19.2", + "svelte": "*" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/sade": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semiver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/sirv": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.11.tgz", + "integrity": "sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg==", + "dependencies": { + "@polka/url": "^1.0.0-next.9", + "mime": "^2.3.1", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sirv-cli": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.11.tgz", + "integrity": "sha512-L8NILoRSBd38VcfFcERYCaVCnWPBLo9G6u/a37UJ8Ysv4DfjizMbFBcM+SswNnndJienhR6qy8KFuAEaeL4g8Q==", + "dependencies": { + "console-clear": "^1.1.0", + "get-port": "^3.2.0", + "kleur": "^3.0.0", + "local-access": "^1.0.1", + "sade": "^1.6.0", + "semiver": "^1.0.0", + "sirv": "^1.0.11", + "tinydate": "^1.0.0" + }, + "bin": { + "sirv": "bin.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svelte": { + "version": "3.32.3", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.3.tgz", + "integrity": "sha512-5etu/wDwtewhnYO/631KKTjSmFrKohFLWNm1sWErVHXqGZ8eJLqrW0qivDSyYTcN8GbUqsR4LkIhftNFsjNehg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinydate": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", + "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.11", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", + "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" + }, + "@rollup/plugin-commonjs": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz", + "integrity": "sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", + "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deep-freeze": "^0.0.1", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "14.14.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", + "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-clear": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" + }, + "deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": 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==", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": 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" + } + }, + "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==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": 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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": 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==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "livereload": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", + "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", + "dev": true, + "requires": { + "chokidar": "^3.3.0", + "livereload-js": "^3.1.0", + "opts": ">= 1.2.0", + "ws": "^6.2.1" + } + }, + "livereload-js": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz", + "integrity": "sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==", + "dev": true + }, + "local-access": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", + "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==" + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "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==", + "dev": true + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mri": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", + "dev": true + }, + "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=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "rollup": { + "version": "2.39.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.39.0.tgz", + "integrity": "sha512-+WR3bttcq7zE+BntH09UxaW3bQo3vItuYeLsyk4dL2tuwbeSKJuvwiawyhEnvRdRgrII0Uzk00FpctHO/zB1kw==", + "dev": true, + "requires": { + "fsevents": "~2.3.1" + } + }, + "rollup-plugin-livereload": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz", + "integrity": "sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==", + "dev": true, + "requires": { + "livereload": "^0.9.1" + } + }, + "rollup-plugin-svelte": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-6.1.1.tgz", + "integrity": "sha512-ijnm0pH1ScrY4uxwaNXBpNVejVzpL2769hIEbAlnqNUWZrffLspu5/k9/l/Wsj3NrEHLQ6wCKGagVJonyfN7ow==", + "dev": true, + "requires": { + "require-relative": "^0.8.7", + "rollup-pluginutils": "^2.8.2", + "sourcemap-codec": "^1.4.8" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "sade": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "semiver": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==" + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "sirv": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.11.tgz", + "integrity": "sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg==", + "requires": { + "@polka/url": "^1.0.0-next.9", + "mime": "^2.3.1", + "totalist": "^1.0.0" + } + }, + "sirv-cli": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.11.tgz", + "integrity": "sha512-L8NILoRSBd38VcfFcERYCaVCnWPBLo9G6u/a37UJ8Ysv4DfjizMbFBcM+SswNnndJienhR6qy8KFuAEaeL4g8Q==", + "requires": { + "console-clear": "^1.1.0", + "get-port": "^3.2.0", + "kleur": "^3.0.0", + "local-access": "^1.0.1", + "sade": "^1.6.0", + "semiver": "^1.0.0", + "sirv": "^1.0.11", + "tinydate": "^1.0.0" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svelte": { + "version": "3.32.3", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.3.tgz", + "integrity": "sha512-5etu/wDwtewhnYO/631KKTjSmFrKohFLWNm1sWErVHXqGZ8eJLqrW0qivDSyYTcN8GbUqsR4LkIhftNFsjNehg==", + "dev": true + }, + "terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + }, + "tinydate": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", + "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ffb3984 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "svelte-app", + "version": "1.0.0", + "scripts": { + "build": "rollup -c", + "dev": "rollup -c -w", + "start": "sirv public" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-node-resolve": "^8.0.0", + "rollup": "^2.39.0", + "rollup-plugin-livereload": "^2.0.0", + "rollup-plugin-svelte": "^6.1.1", + "rollup-plugin-terser": "^7.0.0", + "svelte": "^3.32.3" + }, + "dependencies": { + "sirv-cli": "^1.0.11" + } +} diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..7e6f5eb5a2f1f1c882d265cf479de25caa925645 GIT binary patch literal 3127 zcmV-749N3|P)i z7)}s4L53SJCkR}iVi00SFk;`MXX*#X*kkwKs@nFGS}c;=?XFjU|G$3t^5sjIVS2G+ zw)WGF83CpoGXhLGW(1gW%uV|X7>1P6VhCX=Ux)Lb!*DZ%@I3!{Gsf7d?gtIQ%nQiK z3%(LUSkBji;C5Rfgd6$VsF@H`Pk@xtY6t<>FNR-pD}=C~$?)9pdm3XZ36N5PNWYjb z$xd$yNQR9N!dfj-Vd@BwQo^FIIWPPmT&sZyQ$v81(sCBV=PGy{0wltEjB%~h157*t zvbe_!{=I_783x!0t1-r#-d{Y?ae$Q4N_Nd^Ui^@y(%)Gjou6y<3^XJdu{rmUf-Me?)zZ>9OR&6U5H*cK; z$gUlB{g0O4gN0sLSO|Of?hU(l?;h(jA3uH!Z{EBKuV23ouU@^Y6#%v+QG;>e*E}%?wlu-NT4DG zs)z)7WbLr)vGAu(ohrKc^em@OpO&f~6_>E61n_e0_V3@{U3^O;j{`^mNCJUj_>;7v zsMs6Hu3g7+@v+lSo;=yTYFqq}jZmQ-BK8K{C4kqi_i*jBaQE(Au0607V-zKeT;EPg zX(`vrn=L+e74+-Tqeok@_`tDa$G9I|$nTU5H*2V8@y()n*zqM?J1G!-1aX;CfDC9B zTnJ#j_%*n8Qb1)re*Bno7g0RG{Eb;IK14irJYJp$5Z6ac9~b_P?+5t~95~SRG$g?1 znFJ7p$xV&GZ18m~79TGRdfsc-BcX$9yXTR*n)mPD@1~O(_?cT$ZvFPucRmGlq&se0 zKrcUf^k}4hM*biEJOWKzz!qQe;CB_ZtSOO9Owg#lZAc=s65^rb{fZe(TYu_rk!wKkEf}RIt=#Om( zR8mN`DM<^xj~59euMMspBolVN zAPTr8sSDI104orIAdmL$uOXn*6hga1G+0WD0E?UtabxC#VC~vf3|10|phW;yQ3CY8 z2CM=)ErF;xq-YJ5G|um}>*1#E+O_Mu|Nr#qQ&G1P-NMq@f?@*XUcSbV?tX=)ilM-Q zBZP|!Bpv0V;#ojKcpc7$=eqO;#Uy~#?^kNI{vSZfLx&DEt~LTmaKWXcx=joubklI<*Aw z>LtMaQ7DR<1I2LkWvwyu#Rwn~;ezT}_g(@5l3h?W%-a86Y-t#O1PubP+z<%?V5D(U zy57A6{h+{?kOZp7&WKZR+=sznMJ}+Dnpo=C_0%R_x_t~J5T?E_{+))l5v1%52>)d-`iiZyx|5!%M2Fb2dU zW3~MwwpEH9Rhue+k$UIOoo($Ds!NbOyMR36fRHu;*15(YcA7siIZk#%JWz>P!qX1?IUojG&nKR>^gArBt2 zit(ETyZ=@V&7mv_Fi4bABcnwP+jzQuHcfU&BrAV91u-rFvEi7y-KnWsvHH=d2 zgAk(GKm_S8RcTJ>2N3~&Hbwp{Z3NF_Xeh}g4Eke)V&dY{W(3&b1j9t4yK_aYJisZZ{1rcU5- z;eD>K;ndPq&B-8yA_S0F!4ThA&{1{x)H<#?k9a#6Pc6L?V^s0``ynL&D;p(!Nmx`Y zFkHex{4p!Ggm^@DlehW}iHHVi}~u=$&N? z(NEBLQ#UxxAkdW>X9LnqUr#t4Lu0=9L8&o>JsqTtT5|%gb3QA~hr0pED71+iFFr)dZ=Q=E6ng{NE{Z~0)C?deO#?Aj zSDQ$z#TeC2T^|=}6GBo-&$;E{HL3!q3Z-szuf)O=G#zDjin4SSP%o%6+2IT#sLjQa ziyxFFz~LMjWY+_a5H!U6%a<=b7QVP^ z*90a62;bVq{?@)P6^DWd^Yilq4|YTV2Nw!Yu;a1lPI-sxR)rf@Fe5DhDP7FH zZZ%4S*1C30P;|O+jB!1;m|rXT90Sm5*RBbQN`PKu+hDD*S^yE(CdtSfg=z>u$cIj> zTa9!M8f;$9vcXtoLEx~PZOV9*|V2|&=|9{`R z=iKvZ_sn$lluz~aboK7*%Igk*5aeZJ2>{5+0RhN>{|m3D04ynYGdphp3;_PETLl1k z-GOtoc5`zQU}bf1Wic^#G__zcbA+&ZnK-esv#_xOghaiZOw8;o+$c;ftZW>FseX6& zQ&HHM3sY%xE3qj#Nm^Lj$ojZgX!s~=n)%q7@taeLicko733x%AAQo;W6kZT}2Uh_v zVXA)#7kF#`)6Ggn@h=iLJ7FsEf3#BQD5+9NI=Wa;aIE>^7U z{QUg?$l%~$exqP^^>%PG@nUvxrT&iuDGOIK7aJ!x8%GCssF?L7Q6qyqJIeA ztPxOgv3a{GCiYT}X6_IR2RAt>VXC()Eao=m0#dxvZ2W8z>=OLEY#<4Cc0OJZpExHQ zr!*(O1P2=*&wph6ue?&6AYOKHab6BCE_Qa1gajvun@>udSAv(5Q;I`E;y=7{4z6w{ z4rUhr(QEUM-v8p||Nrs|NV-^Uemq!d3N4;L@L zBrhjBJJr8=&HtB}iAzho1&4=|myJ*SAHT(U*u|yZ+H8_i;(Q$9yi}}j#<2dA9RE+U z{HN$pm9L*BAM$W3Kjt7jSB%57UeAraBo^+uwdZ;l%Fn)rVp)FE>aT$G7hzx3iWC*S%D)x2%Dpw3 zsPh%6r#)57*nDD=<~FqtmQ@=+Mx`S zZYM8B#q0Hm>N|=Z=c1P<8*As$hFun~0M@6jpKjW2>H~@$Pra_)Mzad&Jb~qPp4Dp% zDzn|J&=)e_F1s~GScm>jB?XyFPU2uG!DwKLdtBN#;K7nP#ST#{FfzK9*kl+y;6qpL z_ww@r-dP0-vc4ln3VJ+IYyXq1faI*2Z@tSub3XbQWEeWC$>ZiC-|wKnllGlcxs|B? z+DOBEAJxUl44aCQ9^1l&COT#j$Gg^vd+Lr}E#kSqtu|)JI&(U(mD%D(*}d#KUE8Xt zzR7ikzc~vpu>ma4(3L?z8eM%yV$eBw zI;d9pFm3t~#HnGfsXBcpXFioS7)^a%^jyIbnMTk=b@5@!kOk@;J}Fqt14!gcW{Cee zEWk%X(Mf?bZoAdpRaX?lH2QK0wuSA2>TqM&_NH>?+-e>rWipsivQVg!yx1(yIcc?B z%6&GPA2pr88V%VS%CHni4A>NY7FoYLPT1mB3*a(->HVvHT=<^D+t_l}z5BzH4|GZ6 zmI1Iw!t7_t*UF3*$2#bmg&7l%T2To6NjAUSV5AU8<6I*y_k(hBPwJG1eUjpQLSQnhJYNv6R>00$6vl#Ay>Aj+fe*(jN|30sU%iGKrR;`2#%AA8&bV zqFQ-bdCub)wq}G`^z`c?TEi)k1frPEC$4<*d16PPWm?mwG^8|e9C~q*d%T0&0cM@y zd=ZwKHkwyJFfG5Pav$XORRVIayu@#~_8QF^`iXrwk{aFpC#z@d@;`x{M7CZ5o&nwK zb+^+_jmC#jL3{TuDueZ&Am28-3;eXt9+kIuDm1%goDIn?FKj)#1zh{Fm%PNVUfLmv zQ4G!>De*=FQy$(^QF+P}2(94!jpsqi{i7P*x3lAi)2_(sKFyxMe(Gfo6bCuepn|Bs+Tg zWupqvs=@86d8U<7Qln{#KlTbZVUm>HE@VfUmrlCFjAD~uyiIU>8lTI!bBK!>IU0%g zgZZsET;b_>3AZGWal&5n!IpSB0P-1`HW1-w?~QY_(EhqsV&7Dq%q$MdjPJ&6MGK3U zd5aO$I@wmCOsKzBt8f0htPrIDz0natrHkgb@+Y6HeiM zkDo9qy8RC-cIzQB?7k6w_r#h&FsIw>T`K!k!2#|1 zdvo>{5>0kNOzARRh(EK&E1=JqZ2@{O_$Z*n9Nulwye5{d=s^)fzRB#|gKa74LR}Za z0o_%K=&Gm-Fd?O4)p8Un(T{7KYo{=v6DYUZErp&-w|vdUw1=pEcm?qCXfxhUZ%J5= zFt%#hi?ziNeZ!T*)&<#bm@guDBlCq+#R7@F{;s5 z-j|=lB~dqPrzj+-i1{FL@`u{D9AflwSavYEIbr-qU&B*zKQ(CFp- zqzJ3jEsdt&FEJZ1=Ba<-_p)#7o>syK%88H~Q6C&qJcL+iMRh!+szpBEXsk58^D!K? z!>bcrO#XR8o_o@1Q|gDib|ds2=)SeV(<7wt-EB6|4R^3Y3X)XWahqn|s>`KWmc|6-KsV7NVSH-*?l-yObqX>~xZ>D{6!SJrzdA&@%TnjFbIPS^dgs2vj|Jg_{OSP+CRzoTmYo5_0)l)oQCHP6&m zjbpPlTu5(MKFs}YN^-%S8BZG#dZUUFrlAWov!8Bt$nskzG=&j(&rb%k%jTo;L;4Q= zOKecQiJpkfwTe+_YV%-0YuL^-3$ZMV_;ax!wzw3*x6Isbb5wZ)w4ICXFLLzt%;w;Q zqrI!N4)hwvGb)w4=`tmlVt34jvY3RuY3-(Z^=vOfVma~KT9ikwfX_79IxGbD81C+% z=f($MG04={p_kFVIeJxlxe>23zmx+z-{u(V@grC|nS2g2(Lxco<2g7*g)WbMESRh4 z3M4-9#9l@HSw5_mPUE_&z`agoY!RXN9vW~lT-^d);4WzP9!MVR8jqMXnZYJ{ zx37_n@I|rc054!4bbNRIISI#=oPBQg(h?Qn(dF7V| zZ4KI|uC!D6wmDbnuTzO95+%&ioJhTF@YS6OwCRIK4P_`%S@1B{D5XuE0q% z))4`*+#AHvjUUWMjjP!Cu@6IubM}XvLg_&F{`ZDFv0j(HIWSH%o7CIlMC?4X{gX$@ zfm_N!xfnT!f76oFLAt-I9ZWhG^9e)PwaA3GkUjqB!?{vPz9pILEw_!tJfY&JT^zPm8BL&?lXM}W!+Ix0gomZJ zbML=$!thh*6zYG?ZYN;m^AHBpPyH?Hv<Zh)I*c}N0PCJdnD(P3k_%EB%daGS zoP=02|KiccF|bR)PZy&tsc!-NXEW4O!}Vfa&tJx00VC}-pQmo@#OHmK_uD*s zXV%G9@gWJ7<7Ah8s)kZvaMnNr8^-Cmk2whj8|ChV{mFL}!V{OQ%kgyqj6?l=WLwl~h&(m9oIcy0)odp9|eDnDsF)CN)bkRLqQtc4>1G}|4#%YHCBimvO zccZ>@_?~=qtaF~{I<=H0SeZIPmVJK3&vKKMbW~YqmD+Ca$PnRc{Ji+UcZa&t?kL5I z_tYIY8DrW4C&Pm`KpXL}v;l}XZr0WBt(O>&9WGQQnfEa)d@Xxp5<&F4z6I8mNqD%d zoiayxY4_8`?W}fs3dR(|Mcb0T8Of`X2mCL*&i_mfJvOTG}g#jtpaLTpHE0tn|@&zgNMs_d4td8WltL%8tEQ%g(z z(}s4Um96)EA-;L@!^HX$q?iD>^TVT?)X)(Xj&$xRs1!+^9DwG_qGd~^ldFO~6DgT1 zSZS{~U?4FlY)nNP|Gxj$wQe&M^O7t9mYHEHkYFGrW+Syv9&^jc74SKz6g zM2jvlbaDLSIu6}c3$?Fue9V&S-y2X4grl7OSHcOsnQwP;3O(M z$}RKxR)uU++r_UqOlPT&?8r=4RJ}h?c3{s!fE`tde9+#wm^(N`f$O>QDtr zbV1{E%U##gvFeC$=LH$y0Vn<0{OoJ_T%^ftp13NZ>s;Gp1q*aCb`Jdf*vTgpedh%u z)Z-9fI?I*^8hz~3=4`h2qz+dr4D3VvCz8Ez@0dmLgZ+Z(Es9oAs!B`o}vaB6{lS&7+<|Y`9wc;6o%F_3ZHhhpD?oEKr&OA;jqiuBGO{tz4!lgqj;b6^R$*kN3j%1Yjxz`7*6qKyu4DLK zAs#Is_vU-6@o0Ziz@{ay%TGeRXoUNs*z4V)fv>o{Ws9B;JK#)fkpmmzHS(guB;}r+kfV7-t`lQ&&eVs#!Cl2WJ=I$A}pyzF}eWfo+rH| zO)eBJY<`!CryYKu=lw%gPvM%Q3y?=GiKImfW|6Io-HxEIoJ$~LIOkPW4szxbcm=Sl z^xP#m>=KCLWezB(Vpw+|lo~9X_Sj~LG2q#%QBNjM0bT*U{%uMldz8rloHE#=m6XpE z(K;Zol=5+|t@2J`7yeJ+h_z~ks?}78m=O)EMiAHWoqbWL6TUz%s6~5~UQwwzm7j56 zSHhIbIUQS3egS}&d}Z#yXTC!Wbd?ZFKJrW)7F?l?t7mc+Ky&+A5$gz%`xNttrZ8&| z9b8;uM#I6qAA+P+SpOIo?QY_4U>#NNJ{>rAS@+ajttZ?6dA~oYV(DvbT`&w8K5;BF z+ouAC)9jK%A_SSFZKofT=9`^}s0~O;&)j3;N}XVqT*b&zDhISx8w%T?ah>t} z)XvN_EBlj25?=W(LF(6Ng35g^B@jlE4l>&B=2gc7S#(&1^yf5Lc+d*p9|<}~=xQ(WK{!Y0qr}I}U^IS${x$Af z>)0hjeO-{-V(n1 zTx5$XQTnTwdHvM439!sxw=Krr!H3S%9QM4S-G-v&X=-jUF&8bTP73Fs!Bk_blwQX* zUHoYI(0R?>b^G<+P^#75h!Xi~Cayfo9OlMNE(C{$#rvrTCruH0=3#zTye>VrGC3I4 z{m#M%;2^zM(e>-MoqBQerAxJi*`UF`uR&FqI0k=3yFlA3z)d7z{i%~UU$LpcYE%>4 znpB(2z_qHgGMH@4f})VI2gy!avzV18#wC66#GULiD}G_bm{UI!pTkJpC(aro)=`k> zYoS=Q1J8Ls(1pd~*v536C-3UlDwnr9EqMKPstCkCyA+Z`jIpF=FlG$=vNy|Q&zPAw z+0vR~2J)xIZEz!1aS^PlV)$a*DtLFiD#ZTW7}yJFNQtQb`(8JXO5DNRf zn`q2M)7hXx&gD;Pjr9_=a{Suh?}a^=Sh9C)*2E+g>z~S%n&?@uAW^vkmj^sQfCU#N%S4 zK^FfA?d|37MM#XN+E4SMT_-U-*I_6)U-bT`wtHHY^2?T=Xr(4Ex!{5?m$&wh<;h4^ z33HSOR4w$jV*(`bECTguU(AEggTo({_0)OxX(}@2#$%6~+H=?^n+iXg`1t{Z6SJ@i zxbGiYvM*cKg<4VF7`Qy|nz!m5XjbZDz-QHpp$Qp+D>*_%w1Tvv#a=OYwiYi5PYzk;86`0Z=XwPUIuwNI^T)Q1 zR+I3IC$HjOw27&1xZj2E>aE$-ZhQ+X*45=YT5mU|-b&TK()Ak{6;5y#U5KAQM$N$^ zhTss=7};#z`u0Y6y3ytuXNn9@l$c(;0y-DW5wco;mbT3Vcd(>(1(^9%GEpv^ku=Xf z1cx|IL`i4K$Mc zctKNmd}pNt7^jX!4*6`$_L#LO(T|{#$`wF6Tq#u^yf1&S>TY*@ZzSPvno(OltvljE zg2+?Hc2bjI4z~W1JrS7Eyoi0D&T)ZRYfUGg277TPx-PPo;K7f=e%-D1X>!GJ{;Gc@ zaaq!K`JH_W(boE$t@|T`Hg_QUQLy~fj=)1d2j{>URkaFi^|ZN~!8-!V(+_?Px$@tn zlMj@{b{Dt3v}tCkQ1lIFi9;JTRiK>(r}@|2#!m%TRXP+~?O+ z*@xIAhXRz9a?%Kwp*T3MtGg|1b@g-aBeAcBTArp@!Fl8<#L*nlIOgEe*iYzng>NSV z+vINjeHglb@&%u%b7)*pZMN!rKo+LuE7Fh0{5qYgv!|V*b3$9dvM1o)&`L|znvDje znkL8V2-rYMgicC<%})Kp$rZ8FfG`I(u7qJv+Ge}0 z>!h)T}PgSfBhPl7-q+ zL>6cAOoahl2Z_$3dyN69gZg6tS4F44$4d@IW8>bCPP!j|)wM{O+lFdp%Qp>1+P=(l zUmS)snji5G3y0dWXE9dU7SXSZ{v?M!HTI?|NY9WMm4-TARs>34cZ zb{sVhLrR?wY$>jUJz6bLTkn}`@+r;}79qh8o@(Tu`5wzL9qeM9p17ejln zqn?O6nV0a2NQ9N;|LgTJNPN&|r_codU zBP7MKY0G+>tl|FhkNfWg3~o2kBqc0rtd6{!NE(663O6*6QxQkpd$HlJ z5|fiU^oV@Fhu1_Q?q(k1RsX_GJG4snQe5ijoA4J(&Xv|pT>CY4H!^LAyE2xLdhGbM$d!+a_!wWJFWcwvH%6*l?ptwD*O)q`Aw zr7c+jHuy@En4C7eF`lLodE~eRb#|*)J{$D|?F{70RlNnoeeHXx9qiCM8p-HMHX@r& z^djGq`OQajP!fJBm@k6q(s%#K#?8_bF}(A)BV1)2&$z?~y}-jKhupz3Cx<9Gf;;R< zT4QDIEXz$n6;s}>+MG`OTU8PC>NfBc?<>GrgaQ8kET*609T==?_%*qFoeDMAVn0rT zPv=tvrS9QZ*_l6F>z{>=hKlRz+VksX^q0?YNodB|LUsiuzTo}(ChpgQTxUmsxv>J(@(>{fy#m|=D5#W^ z&d|Uk^zl`EYtF_!jbX}VOFPstK}3NnU0o&dI~YjHAC%op4ws@4i}#eMMzVTpY`Jxs z)W>N2I$341t+O1k;2(<2->6xPI>{HTm@lT|qMdVsj5~3Hox#ef zjywl-b{XgCTmpm9i%@S}_64#}3QmT`LO}FcVfEbo?&aEQ59V+(;kLkKrpv?+tQVHCIr!iJ3iS1cG6#Hw`-Mk6@zD`536PGOhU>_ zB~rf(H>0T~u|u%7GBg4tt6BFwMFY2fh`Q#X<+E`LhqL{rHQgh)J2-Bce;UlT z4P-2YI%T3U)N4!Z7F@!y%JK_=+u?`SwHA?mie2|~JK=dGaWbgwG8V8z#IPmHV|2<@ zK{BcwUK{(IZk5D&Zmmqq=xU)U^4EtU;j~`iMR((O?%Y~(w0Y4MiE=&&+@ZGXwqCV< zDW;^s92n`wX%N&1XMG_bY8KB)tc?f zBw2JUdVc&;t}>%$6)bcDk1`+w93JZGXGRdk%y9Jz_H9aN=$Ypy` zj`{cW3eb%}c+o>_2n9b&o56fPGW3Y+Ot7H?mQP8H4LL-Oc5<%mF5X@ZUI)cII2HKx z6aLoIPK6X6v1N9wKH0jv%Kb^eAK_z8Nz@Ow9SU>qG>En{JNvZAc}I(&P*Vf7>~?+h z4ewmjeg#mc5!@SPo=XOkcw_Q?5d+QV*Gewg(zOg`g3SzV^m{k?X+dz#Rclc){8=Gs z9uh}g1x0%SYjD=f6bEDP(MAi}vKcG_ZDBFeI!DzQOM{(vrP0JEJD%GgVG!cPT?0x! zc$F{ztxvo@gUv&1Wn*c5PovG=tS4SfTSmfR!c`Ze1!1&QGm1|jMs@k%dOqSDUn-iw zx{e&Qu)QJqk=PxZO&@&KZ%r$ZgKIOgOto#ajT2R|MgMDS?QXC_P~1+fZDx6SwCBzW zl!`C4yazv!f+wYao9$eQUf)(_pe^d@M@I*hA77sd3kqU43N$o?PmxwG=L&JrYr64= z^A9~(B{rRQG%YdoHC;Zk=r>KWrDg{v9lQd>nBK_?Lb^(mD6sDMu{~(O7Q1Hg!b3Zl z;X>Ha@^sK!^{DolHn;+e!veAk_wyj!zrREf@IdF!upj-=)}{?lt40iBj2`c-Cq!y^ zGbpKJ>iMdZF{!}X1R>ZM0#!tDJMY(tPHwL|ULF>J27*Zaq8J*`o7D zc&%IoZy4CH0h>z2;^cifJTd2D30zl(VLUZ|pW)v;sxK?&q?-k|!7nVv-}?Obsce{i zp-I$nDPhgM60^hW_2#dDJ=^3^2hqyh9Iv<`Q}ZL76li!-@i>5bvM27fU~p1_{I&gqmB8nXW~^LNSRb>HCncGcL1C?`L8CS9w*`w~V~#=DYS$x9 zWm=QuY>5=%Sr(7%ar)o9?W*Vyr@x2cqw99YB&S+~N%Eb+O=*3+EAJ2k%9m=5*8{?A z>hlVXEeGvYV)h`0hivk;LzdE#mBW%$#h<^v@Sj-hx8;ts1O(}L*;;j<6pC(g2@eHr zBO9DXWUYnYo;eg+3%NF&sq~kr8F@|aEh>egOqyj{=!>{{=q0XX2h0dkf3c*Li2@MDI4KVlT#s&>!ZcRQlPJqPi< z8w_^P*il=pqI+&2iD6| zTyV&~l_Aq*=Pt~TY$)FL45AnHy>EAAIvPTjf3ff}bT}>tAO`QM>P&_Sj5lyNR8gq7 zJ))L)TJRE)pUZtYwB|eSeegl82lE$DtvZo9KQZ(qqbpf@K8o(P)}PmpFD?dlo*dy} z8Z}yJCx9zYxzgdoz%IB2&`?5DO1NpsL*``OJlRjxlL+xG&qun{mbTo}+U(PJ=z4Wt z-4&HPsbswu@#|fx7goK)bzoP?cmRc18fa?H_Z5&_u()cAb56oz`_pT1WP6^tp#_@8 zsx@tCm-KPMI$@UtjdZ+dyKMg3GUcdL`xK&x8k*j&aRmWd%brO_r|l;_B^Ce9YtS#_7sWjD-TI7&xP6 z9Zd?+MTiQ~lpa7`YC-F~o9?6n9i)czbgaJsrx^|>QhLbKDNBrHIz@UO`p)qaYoeN# z)#*#kQ)|J4g7TWx*9dg(<(>Jd*aiCelbpsx^^zJ(eQOSA*%)KEw>UeD%JgCvv^AWc z3SoGTv2kvjSZpCsRb6b_zyJZnAO_l zaB0Ls36SdUC*P&?iI!5UPk#4v)JLKPWqAVw7C)zsU!&YJ(#sv5Bp;lryK;=X=oV9;!pcta!8n>gSLgF@pIN!2z>Qf_Ag;;cMf>o*}E>g3Zu$lIiCFOH|3q%o4% zxVXq7NAFNX7L_v?fH1Gdo%4b(Vl6ikoNcQU6WL(uj6zX{#z5VbZmxDnd-^4P&uL=5Rb$XQ_am zw*BF*vujDgX(j1a$c-o~D`+E5s|r|dGZ*f)U)mrHFgI`rNbE-t;)55XlcRZ?0`#Qp zgil%A==gS$!Lcy8gYG_AMm+D>GyaB31sBR!(4YFtmFWi?|88!1n?0-9%cs`Ty7ffQ z#=?vy@!52vGEnde$XQxA;Qg2W&?=-o3-FFKaeq!KsRRRS-~k8xI$y?Iif%FSZB4|8 zD^0>>a_j8W1I{f&TYVs#jbJ{AR=NV2&m3CS!^{fe*ApNM-%fR1&(TiWLMJvKusl8* ziuozsj&W3LXDx)zIo?j~D;gJ<`pBJP{*+awPYx2K~)P6uOs3) z2@#K{Akx|M%B4|Fi%mfc(t(k35*rFXgRC}MREIJZeI?%<9r-i-5+hk#5}JjUwE8nj z;ZqK=p>wiUzy~7g?8;$s`FIn=vcD;}8Y-ms-)Z-L1~RLi;5&a*FRSnQ;c?trK-g6D z$5x(MpSd1i%}5phai>8-YGSXDGWP6_L-_2D#@g8?rMx~G;UhbPrc6uX(AbSzCyY>I zKS}UJ)rO;NSl8T$X>dBV{aRgrvpp0ZDhGeX(ulXT-%3Tu=#3LUyFL5O*lC#oTH41t z+T!r2g8H^RMQIMOycr3hb(K|B1_9c)CR#<$M@JzlSGjfF94<2_U4h|Bw~iko_X;hi zg~S|F0OQE{yhiwo`j0SRa3HHv+vDz8bBsjqp_pFZ=1H^u3b&&x=)ub*-w}<>N_zXm zRP`8LC>~GifqlZezxh4R5~?ktuNVq!|3IcFLW-nZl`pBt^C z+7vtLwY`#zvj>Gxz+gP%kyf8qDZXnIDeC(d$*4)xtJ{vHY9*xc$MmF=mDY>1k=E9^ zPJE$})f5&@9aTCS+3%>?aaYPhU$FBtv~6%E`cmQ!#Te$>$fRW2g8^Q5XYsM- z-@|px6Ia-e(*Je_-odyQ>|1V3c{*?B+Fm!DbHV-jsuu#Cqu{NZB)MrUSTkCz_UP3& zmjC$y?Rc1k?qHgMN;Z~f$YXp~9q;GRFc!h`dzOoEY0S5(c>cM@T|vcohc2<+dJvG6CShpF@roquLh|qATTmAS9lXXb0>{Bp3v0kK(Dtt z?-${&bkU5Voh_xIef?#naKFjL(lAS(QN9Kp=$`Aw-Gd#Vo4f#}SEN?2nH^D7`BMD2 zi0qP=%VPG^=0t*{ca-K47+0_^jb@JS^idl;&X=7~&BRzW9b>x6NH1i8oqGOH6vZV9Z4%F0j@MuT?8l#4lrGeqL$k2_H)Unn(0>BX!~N^e3Ym6{zlXyn3ZJ}s$0x?WF z-|1N{>Yb9jv9g}1$DtB5daK3PA3adQ?5E#d6i zNC!{x)a~K`QL@~XUC54DTq})oMm}rPM==(J0wLePl_0nLxeX?vnb==Q-b5wlSzIeZULcopZl?M#R6rqBxL>^)HXZq^_ywuE~Onds^#{bL*DN#9NQg4qfxV{qd`#l0$T zY}~E0GwljK zKPEPc$aW$knI#GN6|-;MXo_a_BlTiOOY3f*tW4ARUCj+K=OVHErOonZ z&+&Hd{uC^^R7hk6e2)ILx^w^L*&eK_yC?Ce4Pkg=Z)0Ll+|3|qnBtbG>y~wQMwWLq zrzKo;*{m;}Nvr7_E`1iFV+vz;9sf@Ne~!WkP56r>Z$Gk{g~ z()LolE6=@Kt(?#T{l3)NWfWAIDVJ^U10`O4Ge+*Sv0OM|OE+ z7gfd8#TF1k_R_c!sA8+1h_oG&iq^FsU@yOwklp6!3v}uowX=TKfTh7Ng@58>cu3Tk zuiD=bkmiAvoiPY(i3q;=Jks%lu=@dTO*-w#J|Y4$^|r!IUu3Vz@Bz`r+S&1l6(lNN zMSqbze*de{w2`QB8>%d{Mu+>g=viaAPV9l_!0cF6PdhXO=S0i#2}e;8E98!S;M+q> zg^__5YEsRmQb4wqWaII|%#OWYUyDHIM5Emn3U=64B5xlwN0knS{*NXYYdg1lugZL- zPYZG4G89Ad`ma&UhvBtnz1$MM2pt6Dh4L#Cw~0`L_43Yk?zZkv7{=_(_C(HJi9El% z)Nxfgzv>@K^=*AogPU5%VF@ZMUqwHnXEyd-aKFqjZlTB1Mw z`6F8$>_U`DSe^6bs6ot`)JqDhm6WQ!OhCKgN?(qcqy`Bd84?)BvJyynafSZw3oKLk z$P(eA2CuPqlh&50qBaN&B2(OsXumG=_i-tR_MZdAxl6iwS8Paj73MUs(3gxhg)$f7 zcyNu?q1B4eoAx^q7Sd`Q&0Ky%mXvVth)oKsL#0pN8(Yd2BtbYFMl5n4PB|52zb&94 zu$s(eFbdF2jTig8o2G=UhLeP^(GRk33t|1hXSR+vtFOLoAP<*LEc+ap;EZXWYl#;U!3}wv4BuVo}2)0Ok+-AQ*A#+0*(uyClf7{0Xn-oqRD|@-tN7 z5b}olT}NYEa8ylFz3aHJkV?`{=8fNYywQZtlVGtp@xKCwS+;(Ye`X(56GJ*s7c&m2 zm4qJqnsF%7YN^bb9Vi}ej3*PnxJV|8Rm8+k6z8~0L;Xoske!_OMNz|{>V-@}ao;Yke9Dd=<9m*hy2elw;Y?2YE5H^T z)w?937&ZizI+`lHw(d>4z-%3 zHmb9AQZWt_!)rN*f0xbF(mBb#(<0WX{I+RMu-qQ7rTlC(x6Kf$w=W@g!>C;84xM~J zmp1=6;h+~2XhTtPX#gxjwQxS!Le5p|T2Et3J}HGc;N8eDII|XG@H>%zISq7JR(oo6 z_N^Ep66nq5b`78ZIV7Ev2)=;&MW$|ld#p`Prt){aIZ~b<|0=q4w{DJmFwxvcJqFo9 zBr+=Sb@rgZ2{}|LRl~OZxCnZtJllm+LymkwfF$93+A+bMhZ^y-2#*V^;fN|{vCjxk zgn38LN_#YkYTMUi&)?0Q1{EM_Z}n*FV{9G?T$RZ8b>N-mUmS(H1uGGiQ{HKE4VPNr zK)sI~s_L9(oiuM0tE%V%%e63p7Rs6-Q!!`A#S$xbA4#bm!(#tFv-Ns|-0Ah2{vO6I zoP6v@&sQAvf|3FQ0F_@}Y~q9bute8q0&x5M<2NPh&E$4N%8DO=8<+MUfhx|iCI%oW zO_f5khrc&FIAY?qF`wcJiEQt0Q7au8=Z4H+Jl*+|Sps23{QWr>bB73L5yfT~Y>(?N zmP(A9H~J?T2^CE29150?&9Sg6T9Qg+{mW(pD`p1{;_q>faQno+XK)9rtwE+fG&O2? z%Zzuke4?Kt1m{;^K+^Z@0|KNv7pUS)LM?O~B8Qys;ECicC!cyz-RjeK{us?KYogDU)LOV(Bf% z0yL~EJvsMmUK*@Uk`4dw(ndRlL}m+L(t(wWQwd>2xDXgZSeMf5(j4k(rHUu^ajZeg z-RRtTnwphyW#bcUw!;K>5UY6K=Q{jAut z1MW|m8Cj-=x>UPC&V$DTPKm$;@y|tX3pMSBn>|bi{EE)P(6TMdbL3^mN}6+ z?i>u6E%xTI3_R6LXiVIfqVsB0uD@{ z|BvNrDK1rL9#=Q+yOJ>9;4w%Gh(k+`$l%#2vZ|tgTHwy1WM!@Oaw)_&zIdD_^h^p@ zlN1BY2GseT06vxwK`e*be9wx36?2839T0O(;n)qA6SnxlkiNeOq#=&A*Jtp>v;v-y1Y||10qlo zM8cTQqs0C#v-;^M^jNjN@YL^GenMSscTuc&TuKi~>$)jQN3IDjicjfHW&7Zz4~91$ESuo1GrQ@0LMHlJ6zZ3RC1^rW$vJ!m zbwNwuP$D3>m@dXlG?F=X7WKza*|;N$$CPVn$>Aec%3iVIuTxXwh|K(3jo4ePLcoL*`<9B(=zTbRH2JCRqF60(5!dHN3>9v%$7WJN{h@1xY;v3Dn19dN*?b?$aaDcmcr$iDd{hJiw` zv3sACF8Nrd6!`4q=&6g`5ZcdZ&F`sBGBSMAYNXopWAFKga^X@>KE#YTVb~7%5#3Ek z>bf%3Zgm!zUZ$IMXjrCear!FazQ_mgFMecC2Xz7yZ>U+AKg~xTR8f=`*vO0$= z#U(+tjQ|cbYvqpPavIR1FC`W0rOLhg<^ydRtp{#QdOY6>^=~%E%z8Ep6f9Dl{fd&9 zFew$yQA7JD=gN~-T3(0~PuRf0d2#rJi$R117R`6e{}b>55B^iW2k`z2*L&4qm?zy; zd~a)mSpNWHEBW#6@y~4I>-b}&&C#0D*uAY!u8g97kMZ066PLT~kH63T?0q?BzePpc z{FGCY)T|%UyL036a=z!io%*vafp6$iBzTXWz%q$NvBhamzjb05{u=ejnlAs5?*Q zs@>bvHDgj!zD`}o$@cO7r?KhFwsFVq$5T3Jj+>=M7rDf^^7nq9Czd(!{;c=TdW%xL zDlv@lbK?I1yOR94#~vxmhd$r&>z2x@AKQg{E1%iVpDsho-p{6fzfAreNY`D3HfQ2{ zZGKF0?e1qe&-H)R`1K~DbFU3F?oY?}+u`o<;x z0NngIt~g`9TxcX!v~?!}8kX>e(QmXH5= z&w1~6*E;L|k~OpC@p<;-nb~>z_OuP4Q1S&k003%g>;O!_|H0Ew0HGq>*2NEi1VDWr z)&T&Xwo%-iyu94Sd3d0n+}3t(Hul`MZV(<{Yj++#ZeAXMq>Qh-wXKW27rl+WBN!^h zc-GOwNDsD?Vl)=g;?;6juy+Eh`g_>x`)eE6`n%YQ*)hsU(@Xk_`$F6y_FmTXz7SWa zr?{^aDY!iSpkCI#Tu@J@|42}@_q6o@yL*A%p!EMpw6<}Bdr2`qTlzmP zK-{&o{#WpSjTQv*k6-_y_VfbT{~t5{E48PApSwK|$llWp?qO^HOwRNl=I7Y`zZLyM z_-u{1jtBVpqFB2sy4k`Z_E0Z1MJdMT8E!kUow%ZiGOrk~JfFOn2(OYnAD^g*lBk>j zuYj_Em^?qPsPKPe{5M`PA$~btB|$k6enCM#J|%fEWkmsHWjSSDApt%i5q_cn@Tx&Q zy{w_O_W#ife%AYMUa|ituegGTy|tH{hk=`$>whvp*U8Px&C|)vonAp-n4ZlT47GFf z@dW;JdH%;+MSBmhx4oURhZ}_cU-1 zrXV7~$H(|@Uc3JiGdX4X=imqni13Qa{o}WsFrS>_bDLK|QBIU!PK1%?*%+RGlH>oE zEdLpL&cJ_~|C{>Ho&Q}t_R!}QgpW54*nf%Hs|hK7cXj*g9ogN1`ffcFdnf`1YH z`}E>}djB`y|Ms4G0fd+UFF+~^5+MMY5DA44>FFz=4FEt!LHY;(xrd-*prT=-AR_^= zkp4aOpBVru8Zrtx1`+_10Dy$@>;oza8Y(6##y>tjyG4iwU?4*0BPPL+(_iccOgeVCAB>@>70}TW9*??yWgvclWR0cjGG&wzM z7$ZM1dPrhkU7tMYeAb2pWBbA*G>M5czkW`jpLs{YQ}AgO@Zy;bnGl5#AOjdJRY?_m zzdQ*rh?q^~fK{x`gLFS%=v9PkS|b;bw9aZ`I`>8N<&~_2SUD9t>VH#W)As7E*V8*R zb|)d$K?%R&1HWgDs!Ed0-3})nRvEhIY0}073iX?A7wjg*ar(F?eZK0K$buIWj*n%o zsozu28|q1mPHe6f3o2xl!k6NdFSROcS4)NiD?ZK7nL+jpniLJ#Q|2wj@JNP6ey6Xw z){1XTCQchgGB%$m1pZbRHGEla2r#!o4`^MXaj*U9cy^&+ZugPoum_|*-P5Q~-6O@3%)PbKyaXVW0 zClKPpxAQc99R;CAF7WjgH{RGPOR2L~uZz6>Gp*q|i$Ef34Q*$CUWJ1^9%j~RW|SYf zMI5QV<}Ko9;5OekNZV${1b7s2sFxN5^RF++vVy_j0px;IQLlhwt!{~MkIpd<`+oVt z?z|FEDM0mma!A5Uq%ca^-Dxso6vP7q-QXpTO+mz%^!#LF%H9Z=d4_po> z=diW8{MVPq5-L8Zq<~t?;aAen)D*{d#vBfCh8}K;s>Qc(U||jusd$w0!Vq!q?>9br zxMdT+Y$EkEg=_|a7ovnaAMH(441xP0bgS$lEan3V`tsT+sY3bb_uY~1xg`B7To?JK zEJWsRW`eP%F`Sw6;{0Ms=^ZZa!9>_)>b|>Te)bdkqQ(8`2`!z4W;U`O>YLI1IFrpy zNy)(7G9~)+YQrH7w>tM0!m_z#DJ1sn{O-p5EgA>VIRK^v%zVMoe;19X^e*qB@5}C_ z$wEyPw6OFb@6HATT47+6fw1q#J+qZdag$u$=5N(uneAIJH1lBMv3iXXSGQlgyu#Z; z&g;Z68$Z;>lV0%FXBvNWSXW!+4rJS%Nns&S|YekdPl2AnwcbQU=l$2CnqFOpl zftZJ8wGBMhY!=}u7}OM~E$&W_eWrk5l^jI4oqH@5SpLpOeA3*{A4>C#IJNLs9| zxmksST#CyPf@J5pg;(PS*l%xu(u#ivBKjF}=Pv&)GGtL~P#to?eO&Py5MODHo4zd+ zUyAMD?WE~(3Gub-25AEsKag^LS=)|&smQw+hK&+oLW;;Y`;oqSNk@@4SuwC+Fl1GP z3)9FjZo1(s3n!tfQ^+%Gs$cvpk(z|-&e?nuz>*(ew5?B)Uv{@`ajT&`2n#2!@Tz+8 zm8#T`GT-T~94M%Pva7?*WFtZ+=pj}xbDQ=E;~Pi657kon$=^=i$7lnkMH7Xd%JQP1 z<>;3VVun?1B{B{Vtq0Ta!^6oCv(krtR`u#+TWL5Khib0SU*zfLaaVA}mX?ZuF|6P*PLd9$^Cp+)z2{)K&9v8# zs2vb2q{O1El7or<&{TTsJz zIA0QF!}!lZ4YBxT(_kEFQ2Zz@TDgc2H7Ndp zi82regj>xSvYV^i^J#<=%;`O9OnW7^7d|TJ^g|dWXpb9K*=%X!%)O<{t}cgh(ppKy#VepRUli;6e`` z{pL9CNq8WM%^oTUoR#y~HgHi2edj%Y(=fbof`xBk*IC{Y1lC>AMN;7#pwsenp;Q@} z3HlHi?%T&SY+qQyV5C#`uAwnXM3e|ow>jEUI1DdddYjZ#h;m0Gj|HiwF(--fqoMk) zQ%Y4ic5oPOzH)~}hI1)brofwBlbWHb^0$*~om1wHOJ~RTW@z^b5c?W;+4>L44jbfQ zEuQ$ttFxgb3Eow-JLb&y*E`*>PWv>Q^ERZ6JMSC%5(gE!oj+JS_PRTUujIY8T6{If z`!jP4`*f53M|v5qO^Y5b$XUat)A#pI2~{U{>P!hu-}xYGjZ1AAWFfG%G`g(>J1G=~ z%)ZnS4qwy>5sk}Cgu|n#%LAK9Sp^w?Ghk;hyeLwH6&L6a_gZW3cbl#tJHYfV8_6XW zq=A~1!Y&=t_htnd^!TQ~^iDSs?=`}JEQik>w5&5DaGtkk9&cJo4p81T&}5i`6>PWbhj4V_AldC!J(3GMzDyU zKb9%qp8)W>C&2F}of{eB2kA8wvCKc?-QlfU8o=L z+*kA!E>RNDOCS9xE#m|Z(LuMr-b+WTDEs_;HDB9SKlY&L6>i5n#MDPw@ zNQz~G?%FqMg^N}NYRvf?L9tVP*;~m3tylZU9ERD|n;l=AzP)cgXmYo?e4h`g*6{xZ zV=azW69j4ro)3L-yX-VCT3f~0;R|<-xliL!9p=;9s>yF^j5Cfj9L5a{ zMq;JA@%#p1(b(gCv_)%HN0~<*k}#-k{91YB?om21Vme>{<9I@Q?cW-bBah4vf95J( z@~+UTtH_aNIzA1(T;RPaV*BLOs-?#qdoX`Kz0kCO>WRZS0)cJnkccORc*p(svcXG9LV7^;2EbwZb_~X6$sf5prlme_~|hCc4!S@um^GR&RB9}ve?RO!eAz&dd+ob32Fc;KvPHx#v{Zw zM-MGWAL809OS_7ypqhB1P3Wd^(x1!%x}ul+UGx=DLK8oJsu9=u$(7x7_7MK6Da9REwM8g5=?@})OT%N#T!FKs>Kqg(| z2{1-LA8RlnyDKA(hb27PYl+e3$tXtMU1~~ zeOU{PZj{<_KYZPuvgQW%k!kz;+oOs5u$w|_M`5~)g~-G?3B{iOvxlyxVz_StLP=og z3EN_tUz!7MyWYH;tK_89~k{GC&c}>*oK8vN==l{TUP0OGr%6dRc>Wg?4-*Rx0Aw zELwcyahR^KbY6nAE+BfnBP;=ZDUd6rSdk?sE3@eRl?7z3K-K_&rAs=3$873mzawvT zQS=!JA$aw(O*aS&qW{hmdT<1~qam(8Gk5=+3wCUiAZ$hG6mK;g)^(=)5f!&kF6eEO z775P@HJ;}i6tTTOVlAYV#3f%vyol3hhA_k-z0l_3a%WMqjV3VgHvCQ1e7-(P;WBO^ zH*A6?N9pX;M=U+%Rk1ECF&TFzzTw%ZULWAu#jlxa3Fb*=5zm(OC<3yJp=|3&3SXY? zbN=+?Hmq+NL0G;y=?nwCj7T<4wKFpkzT<{sv_!pD%nqt~Pgv63o#*Go#&WF75(mZdTgHVp$ z-0Jk8`>d9zN>fqV((J!!-vishuTl@VJ`bnnMVgH7nwfhjHA@a8IOyGSCw_@B!{R2V zhNHd>EewkjiSdUrP8Lec;X>12)QLsL1yN0yLzi23ZRxZjDLmwB#q0|R*O17qfSfld2 z3GAg4nL1M}N9q_{HFgr-7(g}4M;&X&E^6M)a04+SMhM;_lisZ3a^ zob~36WW0PIC$;zI$xk2$VG3<# z=$zazj$}%&THjVZAVjxyO75qEnI#LhW0H`Njz`ikZ_o;+MNkC0zmdm8YxRi}vmJ_R zYKh*Q@l7ZBx~Eq8_wO!3BKtVj!+CW;sx{{RTfnQ2_(09FM9u=M+!?P(!R38AQ|n~m zQ%J}9KBoth!L6Bqw|~N2V~y7lq_XOx3Xf~&g%DfW{ z#9ci3K0D`L{Gk2qVWpE*EcY*CPW8KJ`>l6h4p$%}1{@#SEN4Lv8cq$g@6;g9%tfzB zXI^d$ORfbOnkJ5APwhknDyIdggr+99{SOWxJMJ44WRtUv~vhUOsT9EITV*6FU=B5sZf z^D?f1XiyhR?kw{U?R>QxFv+m%>gmuiSgLR?va51#XRb<=!_In#fB47q6X$jWdGmH+ zs?gNWuuZH@ygftx^CD@Hi0i0(`;|M6EMOK|eyLVveWbxEhZzeJi<4~m$(Ij1%3=qz zw%q%88SB+xKr%|bc<@+LLjM{#0Jrb=j;fV!xrgAVE=v|GO)!j0y`w5ifoQWuICr+y z{65kseb7$7)HUgZ{lb{9CuP2*S`G(?64ULC;44{5gPchmCQl20qnJ0AuJ|bM!;D)4 zuX!dhEF74>E~P$AXt%l!FD;u2cR5_{)nY1Mrb#{+Hi)TB!+XtwE3x_QQ4^pr{{>O8 z1aUu2m`I;r&u(+QvtO@KV-`&w^+KOT>JmgtpDg0!%|+HuK~WOT_LK07+xAOk-kuW& zqHpGF@dHqXFwRb<$^yd3;1O${t#wcvd6D-ScotUe5%VakqaYe^|8EU@9_+%yOB8vb z-9iE9B(?!Y>>>*fjDlIMeOC`fMpUp9isX966MzR>?hNnJ%=?AU&suI2j}BPG$r8?I z$60r8y!YsfL|(DhE$bf>t!IjWUz0t%ob=2&vga>#^PK}~oo%CltCDN!lI|8RFIm6s z(nIqKfl{y0s&H4ddfZklTUH;y<1vO-o37k%L1*kXr^E|(n(A4;!Uu({RnEGjKrJnF zN`#&qwd?{38dKpx;H!Dl@ySgo%jORCG7nmD(+#T7#&Q7iMS<9HGM2MAi6L{G?Xh~O z1ywo0icBzv%%<2E0Peaeb60|d;MCH&`WfjdPA~iMpOUCwx(maE?JZO$9J;F#NC!)| zNx4zWsl8myM83tmEd8S7MqhqAl4v+Dp;zNN-e-@O2Hcm$HeD6Ou=1-&;>y{fL! zeauMQQy0(jFySp=5h{Rih{S@wmdw8<>cnauWWEyji97SslM24AO`*Lb9^`+m)1I2W zb7~oBZ$`Q{V$Ax+Ef9gN@dMjLAs-o2A+|Z!19o4=Mp~w7Dal^!Gw8;|@MdvGqWLuF z(HP&-xJ~o-PU83D7tW1d+Xzj6-s8&ST>Z$B$c_C-TGDADTXn@3=$6Wi`=A}APr!u+ z(h}y*%1}!A)Ph^ou#m&HIMyGDeYr4ZBt(8*bCL@B(A@3}R)ryCV-%~`vUwuzM2Q3Y zg@i$3x-LjAj{;e0bIAHzN*u-ozQ^qJYK=Afubepv!Z(^ zBderc1e8a#os>K|MHm5M^I|U_2%Pt6*n;%AXh12Du#G`E3oe5a2q|Xzq5yd3QvEM& zgz`SqTjWSJ)~S?f37ZbbuXWc4;5}0~yRRY=G69!^Nd^D&@1ROv`#x@3A6T|3^Yb z=8QyUENwB$QI^{bNVEKA9ujH3z|0p(@4%dyW3NfDQ+g!eEF~A|Zwc}fK((}929G&O zHpH_}it<`dYlw7pzZucoVV`sM!h^9t(IboYBd6mhg3mLEm0wWw8zMORBsgKH-4C%w zVeLVJ6Ukn!)6XC|>4oU5h0{Vt$hzjy4_#Wf zcoHD|YAtHQ4v+`SB4d`Ozj|p!rAbb3b+JUf#K9b^CY#9AW7Gl|bIofNr9iItlSqR< zl!4LK!#~;M15LcArnq{VT$et+570I6ITJZRJALb&d#_QE2sbEdHdj}!O-kSgDW?F$ zPq@sfl_Nrx?RK(d0(HNC>p8{NmO^v3!>x_oZ8`Pm_~_{AZQ-W7X77HAn@|y0wm@zY zLIM#I_g0dvkbE*?rbE;Cj$Dg{wakBE9Zh(ju{X zSnCtpQ}<^%eRD6&on~t5)I4;>cbzF$*PL6dR7fn?3;PK`N{M~%T$lKZ|DBmvfQL&Q zyO{0pmc`EBA5ueeYCo~;VnmOPQd?oDtfh80d>c4gINhruQ1$Sr5(I&5WoPTHsRtx( z2vm+e0JBiAgYATJd^IM@TVa@_4^W4+g zTdcX%`|oTU!W>mXDCyVD*doPzI+x#RrKMe8g7tbrlpyOfdaxWf zEt^jNM~Bn1$!?$pV*&x5zsJwda9ljvb;6Q**wl8}TK2d_6s}oSn)h}QmaF-p6rQXu zi~7=fv86hk%7J#oy^2qCPPH+nwV2fPq4QQGUo1N&_*m~7Fkt~7Z6rn~zbA{lVO{I^ z21EL|!^EF%H^dWv(#A}~lGEfXU|dazrm>}nD!fFmf}Y@)HxJfkWp>De zb3}RH{4FmI$3FKp6mB1s55L0JVTw;hGIK_=H1$#5tquLiGNo09Exz#Kv*aVZHSi6NZx4oa-gKyJ`uaX(}_gwk0e>wj)Ad zxw>@FHN0nAi^8&f+^bKmHP$=&%^ek0d4IYh+q3n~W38=NuGNZ1%Y@djp3^>`6Nqm} zPar?8QSequ>;1(90UxU$k9XWFVG4Ng9SM&MCKDP}uvH|tp|D?=OUPh*l!b@YEnAQ6 zRJ+np&=Hv0|21PmDI#|?eIAKhaxNOZh^xf{ z8_ixxt2MebnRByzbe z>QSBMnh4A5FY1+Q39W-f$ZbBT(&3Ramjr9&PXK-kvqhcMMlH5X$2EpHW68!0+QRSY zj8|fS&`<3cL;#!+t9sAsDN7&mKhbM~sQJWG7B-_0`@s!F$dtYS9Sa+)0#!eAC`TDM zVBZV%?AG_CSi~Cwk9*iKV$o2CDbJ5!>ARlaP7(>#etu&Rtr@kAy*s;^WqhwcSo!?i0_pTUU7fzG`RZ{eg!}|C zL}G98Q>$zQzbcVoX{mXm3@5=-@70d`(k#Lgj-F3MOygdya_G=MKJFx~_IeeNUt(+t zkbZSXhMJw%W24>$8PAiSDW(P{x}~mE2;>3jo%{;YO9%}<$DyE`C)s9Xe@a9W%t6&% z8(MaB=!3txRdSz@V+Q;FF8D-a@)*xK#2Dip_pm|su^_PF)S!;M)!SR4Bfwo1T{3VH zs(M{X?p0ET2@qcqVm8W*jxy(o8Q4|@8TnZDD?b57U?dfG?e(9fcL>YJY(6QrPZsWG zy!@j*ne?KzIHiiCRRz|h;Jvy#dLY^-KQ{}*Fc#*26hM-X$c<@Te!-bzHAgcyKOTBT zs*-O1*qqTRC+Rw1LfzsMS_R$DR&s7G z0lO{ShI#Wd7g+_5bPSV^%pnQvLKwXVq6sRke7`c8WzSO9X~d|qt0qpH9tX=uF=f_2 z&}zpHe3Wi3@i~}}0EX&ZL-(jZUPrY^i%@zd(VaZ|rqKnEB2= z0X|3eT{PihR?Oa=Yc9Vyk!Ie*i0UQz+x{xf_p(dVrC#m(TNshEO-)W1Vb>S8wz(Ec zV~H@TaxDrQL3y^!8AI*Q#}+_q^Si$kD+tfOKkN?4R+>6DcYomKrM5H(uT-Y9;HRar z(`rB^NeD&`%7CsVGsq+Ci(lR8t%d)1A5&R>@X=5cWyL@bw=k9z=g`_8XJhisJRU72 zpd#0O)TZ#(2F9!F(d`*%Q2HydXq(FuGje={6-B0d?wMIYl(5x1Nr12ED{HMbIw>o| zCt_7>FrDv06cs-F5c5<=e*)N_*E|8Zh*JuYY4(sX4K3nLra6zi=i3u*s$J%+r`x@% zg|AvvIe{bYD}L-qQMl+~AB2$9U{*<=f}8)W`e-L5=7xqyI2RDeX#w7RsL=9>Oc)o6!5OV2FkTR)JYi zvKGtHPp&4Sa{l<&BPr}*Sux#LjaxeIXpP)nS`*)qeEUeh`bZrlSd5*deWKP*P2xq} z9bQb)+iaN{`Bq!Crr@E{T{St$Ir9G6mvD8-6bk}L9!U;=^(%N$HZWaHCe4Sfh}`dmP|LGKO=GgrkFN^D4* zdfb9>(vF2fG3~vZO6{wdbb-ZVkxdejzsM3^PmPJ&1QS2i*2%Zt1|7 zWw<)g0+GK5_9`L|L5Vaj?}p%)#ofGq17#6_M_DViuS59?Osl+q-LI?7fVTI!)REW? z(Q9I1SdWvfoh=H%#_moluDgE%{%ECLkgfJaZ6ddHgC#uFz^4&;FFYPI)9ia0T0hK*T5=%h=5o zITMod3eN?ZscDW4(6AOf{?^2D5kNvg3Pth;*?jDO%=Fdo#XXVhlK>cmuTuO{h!KcH z&z{wy*F@I=_BoqZy34HA-f_}L3)EoF=AC2^o3<==%(-RP$35#rStquVY)m&>a^&Yy zuCa~xG=`+g!s5Y^admQ*5E`=q4S?Xwh)d{YgKH;jP&!*I>8rq{4B`T$6Z(Xi%Q_#z zH3NTMQkDqJnq~LcrXHYhVD`0tN?+ZA@c94FQG1xOXNp1tN3Xw?5nd2l}Ws)=~q9G+E8)TB~7xb3 zjAxizTp`?|IxV&Em@c;*)=zBrts2E7yhuY$48w7prmyhfrX`#s-4F@f>y!1#uRQSj z!f?~h_lkktcD9flM{g;d&FjMU7_WUR7>EXxy@08nV^9T9ANqQ6QF4$ek~|kWXrO6bR+f zcxC;8NgV@qocI=ef)S1;VM1lLIqrLjtyld77~DXmBkA0X8;I%@R&*J60c9t8N3USv zaE&s=S=9#N70x84@5W>=f8b1Tz)7aFOu3F8fg%9C%(@EMCs<#U09p+Q-D}m@mk*t1I>bg8Qk+G4Ku@#vka%w|6_97uSECMG4)#&Zo2g4AAuV_m&9ep%@ z7hHd%6C%~IUcf{tg(Jq-uOH0*E z8rvGQPHe^z^9hi?=R-|j;f6dz3w5K*fBenUXe#1pkL*#qu{4h;}c*! z*1BVECwlpX$6$%zpjfe>e$RaEO4oc#jZR|AZ>KpoOfZo`+sSBX;qkT(4fWe!=W`#2 z)l2T{iaOpC*2bch;HT*Sk$q|ZB9dR!a3{QIlTI+nzNxjb`5U+BHm16MW^}R>;6a-n ziv=AX5SL)#jzYX>7T=U*Plougda6fqQ~%=5+@E8#06&?3bu;<5t}ZT%nkhDoQznfY z*UI+lhiT+MF^(?hlp&GqKO$aH-$jR($x%KUP9X~yyK!+Doey=Lc6D03yK5Dmu%CLX zssTy}#vvM*;%_XgVqj3?Dl$6~E&XLJS?L|w7GhO^UqN_IakG3p%_Mg5O_2`fNlvG- ze~qna>Af&cyR*|m#r4r_H4+OwDlag%IYnLz+XQ6b`8)Zu&4xWo0gH=V-^gYOz<355 zJ|91Z^v(`b0i71@>qBJYJY6p$b<(qCEaA~6(oCs;8@TeKT!LVIU%0j~WhQkl&RS9y z8%5y5?@*Dh2nsAbCw!x13jmkiETRhS&+c0-`U>+eW=KB=){LhGklzj;Z0?)qO-Hvb zlkH{9n#o2-l8?m^PN<@>d2!yuok1bhiD7SBn#Jiy4q)7U`%@mb-6^jUwcBBh>xy4J zKd2B6e;D6ADIA9Vt*C{Lbr~Xo;rP zedPx3-ww{SqbCCmZ^$;^i8&2IH6}Y#@?1zY3iRI!sJ%|_TMKUplMM#aqday>-&?kA zDqmW=;oYf$a%%i4?{09N(wgtyEj1Q;Y(&o;n7y$+lGTBrF?Zf#0rohZ@YYmt&Z$&z@_uOBHxAMsdmTeb9>cF{GH|3a6@)WjS%a zxiLHx8KgVu{Px{TC|}V2!BHu0Inq>3C2ivhS=*_UFiF)Y7KsYC#d382ObsYwzbr2e zn}g*oA5;4}$sjvqjoxV#{0XPovN~ywbqxUlaxW`HC9>(pt0$?55-7h3OaBf#J9HFl z?<7#>Cy{Fm2&_F#I~2a=uyt18$~Rneg72sQOj0o9fXQ)-mLJi{mPWrY75bS&wLS8N zy|3^MdxPukmA(0Ci`B-N2~p05u=+$8+~#dDv0tNfJw?X2MkdM!ndD0l8wooa2`_4c zCP;NX_(1Gsv!QnCXF9UnX$1V!dLkmryEu9V|EnB@u+-Fc zLAR457i4^HrG@qCdNba2Vo-A!XL5HNm4@kiX8RmxAf4#PyOS<6 zIEOyfEm!?Y9KH)c^4Pk~l{`D%Hwdzoqj_AL+$6%+c%)f6ZZ^&x@?D*c1OpB21*B3$ z00#IJ|5C|DBtTff-E1bdkG*4^P@A!}V~|7rQ5^lJP^!_Njp~o@S;N0TYgyF{!rAzD zrxpn_tyB(lIW9=#2F^H#UbQaM{}dp8e9iXjo`d#2s*~s^CeZl)%!y*;%-BAN zl-%bv?3EMb!+E;1Ado0C3z~eNr-&zdRRo0jHKS3*YMT*%Xf{{Zvk5F^` z-h>1uizHTZopFER=ws5Sn=Koxe1o0-8BSt&01jW#I(FHlmOf^EYob$Zfa(3kBZsMSL75w|Nj>IdqcXAtquK2e81O zf=Bu~8Wtv?X>~>SiaRcoHQ)nN%Zo(hkOZ7%%K(M-Yv^y`m#+R?x64Kd5#f#IA*U`z z4mI`E9g@wwY2}p9S1bnGkq_|ov$oi3MQ>YFz32T$w^T}5TzP&LK0PhgytQICGMl0g zXyM%Kg*r4TniQYURjS8@T@3?}CR-giP=q?|doJ+9L_KL-F!L}Lo=x!=8 zv91`OEb^q@_W_3C11SrCC#V&ooAHrhu$9Nj#5zB4=z!?r7*V&H z0$kp3FNjOV&U7e9BaRW8KM34*p)p(Eh%-%cks;~lRr`weHMnib{uJNcjdpRP`popS zea~TEuH{?4hAF7PoboL?m0nqXsv4|chAL%S)9y~=3I_WnOAp7dp96o{;Vg|-Ci#&q z>}8i1&YR5T!Xtg(?XmnTrHG@PO-2Wbr5Kn5TQ3Q@_9rN{a= z;qAk^`^%eqxu3TyEK*6c(1Ni+5APF*5X#9xammI-;z{t%SjBe=JndnbOl9U7Q#r47 zP7#B*f7*maEIxUrF)W^9*vAS;jo3A+(#WYh5s8AgqpJ%&v*Q%l&qcHinL5^N_FJnG zswLE8eJ~(Zzng`U2-5V%3)AD-BQLkKh$KJnSM=@>vb^p&kRFPv=`YFH3^lZ+jjj)&hGJ#~wGD{oDLJIZ8g&40V$ZeHz<*6}&f_ z!(K6)iZecMQE{Vlxyd2vMkpcfb)=Kwi8z}6dNe<)-c$C{|D?(i+GBg0)|K-aezkkk zrCnnzVwElQNKy^&rE|V$8m_#u{m+#`A0PPF+tPVG%6DGQ>S?x^GYA!GBJ>l<6R;O^3iWR7t}^=lEsx4`oOM2L*&M&KrGP#gHP zw>{eaqAI>oYFz)`PfDaic6s)A`Lg`;G+kE7?D+C8-}{@LKQ}_SrYFwe{X4ra-PxoU zc!dk$?_SpT_+Vr`0W|NbbqvQ-CJv8J{`92#=QzatmYmXIZ}YrtsBXK>P|s}%j@Oy`TLWYTE!|p!_vC@ zoW!Zj&*c?`2S%B|<0=_kmy$bhRI=FzgMyE*8XruK9*2#mOJu$j8fWWJfs(I}i@#{` zohy}3l{X-2nEng~T{ro4iT=?Ue*$QXomHaX0Nl9l6(~{t=DO@mq7Qwq=%v;UB YBxuk1RkKsG5f;?l`0{VP@zcux2eK0S7ytkO literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_interphase.jpg b/public/img/portfolio/thumb_interphase.jpg new file mode 100755 index 0000000000000000000000000000000000000000..336103cca6c2b5c4632eeb345ac8103e63e8c223 GIT binary patch literal 16715 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 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_nike_beacon.jpg b/public/img/portfolio/thumb_nike_beacon.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ac81e4154b10202d2464cc338b4cdc631b8e241d GIT binary patch literal 15312 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 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_nike_bigair.jpg b/public/img/portfolio/thumb_nike_bigair.jpg new file mode 100755 index 0000000000000000000000000000000000000000..09585070d79e5e76fe2d7bb38a7da45db2ece0ec GIT binary patch literal 11836 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�id3zK&)@BAqoc?42( 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 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_nike_treadmill.jpg b/public/img/portfolio/thumb_nike_treadmill.jpg new file mode 100755 index 0000000000000000000000000000000000000000..22b52efab80c9bbb83739d5a500295ae5dc6b1a1 GIT binary patch literal 12193 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

t}%kQ{@378jt5`rXQHhMnRyZ=70pvRVeR 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 b(WC3LUj3RBL_HE+pyoS61MGis`{n-uXn}}C literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_omnia.jpg b/public/img/portfolio/thumb_omnia.jpg new file mode 100755 index 0000000000000000000000000000000000000000..85d6ba1512eadaae85e6a1ef6b164df30ae6ce2e GIT binary patch literal 12511 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 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_pixelmixer.jpg b/public/img/portfolio/thumb_pixelmixer.jpg new file mode 100755 index 0000000000000000000000000000000000000000..139e02f5e2da78873aeeb7b87347f8375e919423 GIT binary patch literal 17797 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 XCk;K+m2u?!#9DOztzD^t@ml}cRae;y literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_raindance.jpg b/public/img/portfolio/thumb_raindance.jpg new file mode 100755 index 0000000000000000000000000000000000000000..08f2393735de23accb2b7d56f47a3d7e39037794 GIT binary patch literal 20195 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 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_rapt.jpg b/public/img/portfolio/thumb_rapt.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c99d32e2335fa77b8709b16547be0d0e158126c1 GIT binary patch literal 8222 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 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_tipper.jpg b/public/img/portfolio/thumb_tipper.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5c5644048a68c558f715c64cfb04df724d61ab81 GIT binary patch literal 15427 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 p=|;`F`u*ODsv9)|nja&;2+P4%%<4{|Af@Js|)9 literal 0 HcmV?d00001 diff --git a/public/img/portfolio/thumb_toyota.jpg b/public/img/portfolio/thumb_toyota.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d998a3a03cda58dd75b14b22be99a9f816329a07 GIT binary patch literal 10725 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

r# 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..d1511da --- /dev/null +++ b/public/index.html @@ -0,0 +1,18 @@ + + + + + + + Hepp Maccoy | Developer Showcase: WebGL Shader + + + + + + + + + + + diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..ecdc627 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,75 @@ +import svelte from 'rollup-plugin-svelte'; +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import livereload from 'rollup-plugin-livereload'; +import { terser } from 'rollup-plugin-terser'; + +const production = !process.env.ROLLUP_WATCH; + +function serve() { + let server; + + function toExit() { + if (server) server.kill(0); + } + + return { + writeBundle() { + if (server) return; + server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { + stdio: ['ignore', 'inherit', 'inherit'], + shell: true + }); + + process.on('SIGTERM', toExit); + process.on('exit', toExit); + } + }; +} + +export default { + input: 'src/main.js', + output: { + sourcemap: true, + format: 'iife', + name: 'app', + file: 'public/build/bundle.js' + }, + plugins: [ + svelte({ + // enable run-time checks when not in production + dev: !production, + // we'll extract any component CSS out into + // a separate file - better for performance + css: css => { + css.write('bundle.css'); + } + }), + + // If you have external dependencies installed from + // npm, you'll most likely need these plugins. In + // some cases you'll need additional configuration - + // consult the documentation for details: + // https://github.com/rollup/plugins/tree/master/packages/commonjs + resolve({ + browser: true, + dedupe: ['svelte'] + }), + commonjs(), + + // In dev mode, call `npm run start` once + // the bundle has been generated + !production && serve(), + + // Watch the `public` directory and refresh the + // browser on changes when not in production + !production && livereload('public'), + + // If we're building for production (npm run build + // instead of npm run dev), minify + production && terser() + ], + watch: { + clearScreen: false + } +}; diff --git a/src/App.svelte b/src/App.svelte new file mode 100644 index 0000000..c05b865 --- /dev/null +++ b/src/App.svelte @@ -0,0 +1,141 @@ + + + + + + + + + + +

+ + + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+ + +</div> + diff --git a/src/components/ButtonLink.svelte b/src/components/ButtonLink.svelte new file mode 100644 index 0000000..cdbe81a --- /dev/null +++ b/src/components/ButtonLink.svelte @@ -0,0 +1,23 @@ +<script> + import { fade, fly } from 'svelte/transition'; + export let shown, text, link; + +</script> + +<style> + a { + position: relative; + left: 50px; + top: 50px; + font-size: large; + padding: 1.4em; + color: rgb(84, 178, 255); + background-color: rgb(141, 0, 71); + } +</style> + +{#if shown} +<a href={link} in:fly="{{ duration: 300, delay: 1700 }}" out:fade="{{ duration: 300 }}"> + {text} +</a> +{/if} \ No newline at end of file diff --git a/src/components/Content.svelte b/src/components/Content.svelte new file mode 100644 index 0000000..9f851c7 --- /dev/null +++ b/src/components/Content.svelte @@ -0,0 +1,13 @@ +<!-- Empty layer that we can scroll through --> +<style> + div { + top: 13%; + width: 100%; + position: absolute; + max-width: 1600px; + height: 420%; + } +</style> + +<div > +</div> \ No newline at end of file diff --git a/src/components/ImageGrid.svelte b/src/components/ImageGrid.svelte new file mode 100644 index 0000000..01cc319 --- /dev/null +++ b/src/components/ImageGrid.svelte @@ -0,0 +1,37 @@ +<!-- Simple Image Grid animates in cascade style --> + +<script> + import { fade, fly } from 'svelte/transition'; + + export let shown; + export let imgData; + + export let imgDuration = 200; + export let imgDelay = 105; + export let imgOffset = -16; +</script> + +<style> + div { + position: relative; + opacity: .8; + max-width: 1100px; + } + img { + width: 150px; + height: 116px; + margin: 8px; + background-color: #ffffff; + } +</style> + +{#if shown} + <div in:fly="{{ duration: 200 }}"> + {#each imgData as o, i} + <img + in:fly="{{ y: imgOffset, duration: imgDuration, delay: imgDelay * (i+2) }}" + out:fade="{{ duration: 200, delay: (imgDelay * .5) * i }}" + src={o.src} alt={o.alt} title={o.alt}> + {/each} + </div> +{/if} \ No newline at end of file diff --git a/src/components/RotatingItemGrid.svelte b/src/components/RotatingItemGrid.svelte new file mode 100644 index 0000000..9841dfe --- /dev/null +++ b/src/components/RotatingItemGrid.svelte @@ -0,0 +1,154 @@ +<!-- Rotating List of Text Items --> + +<script> + + import { fade, fly } from 'svelte/transition'; + + export let shown; + export let list; + export let innerWidth; + + const defaultCount = 18; + const newSelected = () => Math.floor(Math.random() * defaultCount); + const delayTime = 90; + let newDelay = 200; + let selected = newSelected(); + let stage = 0; + let count = 0; + let reveal = 0; + let columns; + let prevWidth; + let tNew; + let width; + + let items = []; + let displayed = []; + for (let i = 0; i < defaultCount; i++) { + items.push({"name": list[i], "x": 0, "y": 0, "size": 23, "visible": false}); + displayed.push(true); + } + for (let i = defaultCount; i < list.length; i++) { + displayed.push(false); + } + + (function loop() { + requestAnimationFrame(loop); + + // Simple grid layout + + width = Math.min(innerWidth, 1200); + + let xStart = 100; + if(width < 900){ + columns = 2; + xStart = 0; + }else{ + columns = 3; + } + if(prevWidth != width){ + let xStack = (width - xStart) / columns; + let xS = xStart; + let yStart = 0; + let yS = yStart; + let cS = 0; + + for (let i = 0; i < defaultCount; i++) { + items[i].x = xS; + items[i].y = yS; + yS += 42; + + cS++; + if(cS >= defaultCount / columns){ + xS += xStack; + yS = yStart; + cS = 0; + } + } + } + prevWidth = width; + + if(shown){ + count++; + + if(reveal < items.length){ + + // Intro + if(count % 5 == 1){ + items[Math.floor(reveal)].visible = true; + reveal++; + } + }else{ + + // Things rotate randomly + if(stage == 0){ + + if(count >= newDelay){ + stage = 1; + count = 0; + items[selected].visible = false; + newDelay = Math.floor(Math.random() * delayTime) + 25; + } + + }else if(stage == 1){ + + if(count >= 26){ + stage = 2; + count = 0; + + tNew = Math.floor(Math.random() * list.length); + while(displayed[tNew]){ + tNew = Math.floor(Math.random() * list.length); + } + displayed[list.indexOf(items[selected].name)] = false; + items[selected].visible = true; + items[selected].name = list[tNew]; + displayed[tNew] = true; + } + + }else if(stage == 2){ + + if(count >= 22){ + stage = 0; + count = 0; + let newS = 0; + + while(newS == 0 || newS == selected){ + newS = newSelected(); + } + selected = newS; + } + } + } + }else{ + stage = 0; + count = 0; + reveal = Math.max(reveal - .5, 0); + items[Math.floor(reveal)].visible = false; + } + })(); +</script> + +<style> + div { + opacity: .8; + pointer-events: none; + } + + h2 { + position: absolute; + width: 230px; + background-color: #131516; + color: rgb(200, 195, 188); + padding: 0 .85em 0 .5em; + font-size: .15em; + } +</style> + +<div> + {#each items as o, i} + {#if o.visible} + <h2 in:fly="{{ x: -24, y: -1, duration: 230 }}" out:fade="{{ duration: 350 }}" + style="font-size: {o.size}px; transform: translate({o.x}px,{o.y}px);">{o.name}</h2> + {/if} + {/each} +</div> \ No newline at end of file diff --git a/src/components/ScatterformControl.svelte b/src/components/ScatterformControl.svelte new file mode 100644 index 0000000..5557e20 --- /dev/null +++ b/src/components/ScatterformControl.svelte @@ -0,0 +1,97 @@ +<!-- Harness for 'ScatterFormLite' --> + +<script> + import { spring } from 'svelte/motion'; + + import { getColorMod3, getColorMod4, + getCamZoom, getPiMod, getLayer2Amp, getLayer4Amp, + getMod1A, getMod1B, getMod1C, getMod1D, + getGlowStrength, getLightZ, + getGlowColor, getColor2, getColor3, getColor4 + } from "../utils/ScrollLogic.svelte"; + + import ScatterformLite from "./ScatterformLite.svelte"; + + export let yscrollPerc = 0; + export let scale = 1; + export let fallbackUrl; + export let camRotate = { x: 0, y: 0 }; + export let mouse = { x: 0, y: 0 }; + + const camFovDefault = -.41; + let camFov; + let count = 0; + + let xmod = spring(.5, { + stiffness: 0.01, + damping: 0.08 + }); + + let mod1D = 0; + + (function loop() { + requestAnimationFrame(loop); + count++; + + // Uniform control (in addition to ScrollLogic methods used below) + + + // Shader Mod1D + const limitMod1 = .15; + if(yscrollPerc < limitMod1 + .02){ + xmod.set( mouse.x.map(0, 1, 3, 5) * yscrollPerc.map(0, limitMod1, 3, 0) ); + }else{ + if(yscrollPerc > .6){ + xmod.set( mouse.x.map(0, 1, 5, 12) * yscrollPerc.map(.5, .8, 3, 0) ); + }else{ + xmod.set(0); + } + } + mod1D = ($xmod + (-16)); + + // Easter Egg at end twists FOV + if(yscrollPerc > .9){ + camFov = yscrollPerc.map(.9, 1, camFovDefault, .45); + }else{ + // Default + camFov = camFovDefault; + } + })(); + +</script> + +<style> + .container { + width: 100%; + height: 100%; + position: fixed; + left: 0; + top: 0; + } +</style> + +<div class="container" > + <ScatterformLite + {scale} + {mod1D} + {camRotate} + {camFov} + {fallbackUrl} + + piMod = {getPiMod(yscrollPerc)} + camZoom = {getCamZoom(yscrollPerc)} + color2 = {getColor2(yscrollPerc)} + color3 = {getColor3(yscrollPerc)} + color4 = {getColor4(yscrollPerc)} + lightZ = {getLightZ(yscrollPerc)} + colorGlow = {getGlowColor(yscrollPerc)} + glowStrength = {getGlowStrength(yscrollPerc)} + layer2Amp = {getLayer2Amp(yscrollPerc)} + layer4Amp = {getLayer4Amp(yscrollPerc)} + mod1A = {getMod1A(yscrollPerc)} + mod1B = {getMod1B(mouse.x, yscrollPerc)} + mod1C = {getMod1C(yscrollPerc)} + colorMod3 = {getColorMod3(yscrollPerc)} + colorMod4 = {getColorMod4(yscrollPerc)} + /> +</div> \ No newline at end of file diff --git a/src/components/ScatterformLite.svelte b/src/components/ScatterformLite.svelte new file mode 100644 index 0000000..11265a2 --- /dev/null +++ b/src/components/ScatterformLite.svelte @@ -0,0 +1,146 @@ +<!-- WebGL Harness for 'Lite' version of 'Scatterform' pixelshader by Hepp Maccoy --> + +<script> + import { onMount } from "svelte"; + + import { + createProgramFromSources, + bindQuadBuffer, + vertexShader, + } from "../utils/ShaderUtils.svelte"; + + import { fragShader } from "../scatterform/ScatterformLiteFrag.svelte"; + + export let scale = 1; + export let camZoom = 30; + export let camFov = -0.41; + export let piMod = 3.14; + export let colorMod3 = .5; + export let colorMod4 = .5; + export let layer2Amp = 1; + export let layer4Amp = 0; + export let mod1A = 0; + export let mod1B = 0; + export let mod1C = 0; + export let mod1D = 0; + export let time = 0; + export let camRotate = { x: 0, y: 0 }; + export let color2 = {r: 1, g: 0, b: 0}; + export let color3 = {r: 0, g: 1, b: 0}; + export let color4 = {r: 1, g: 0, b: 1}; + export let colorGlow = {r: .5, g: .5, b: 0}; + export let glowStrength = 0; + export let lightZ = 0; + + export let fallbackUrl = "https://get.webgl.org/"; // Default URL + + export let canvasWidth = 2600; // initial dimensions before resized + export let canvasHeight = 1500; + + let canvas; + let gl; + let program; + let resolution_Loc; + let time_Loc; + let camRotateX_Loc, camRotateY_Loc; + let camZoom_Loc, camFov_Loc; + let piMod_Loc; + let mod1A_Loc, mod1B_Loc, mod1C_Loc, mod1D_Loc; + let layer2_Loc, layer4_Loc; + let glowColor_Loc, glowStrength_Loc; + let color2_Loc, color3_Loc, color4_Loc; + let colorMod3_Loc, colorMod4_Loc; + let light1Z_Loc; + let frame; + + onMount(() => { + gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); + if (!gl) {window.location.replace(fallbackUrl); return; } + + program = createProgramFromSources(gl, [vertexShader, fragShader]); + gl.useProgram(program); + bindQuadBuffer(gl, gl.getAttribLocation(program, "a_position")); + + setupUniforms(); + + (function loop() { + frame = requestAnimationFrame(loop); + + gl.uniform2f(resolution_Loc, gl.canvas.width, gl.canvas.height); + updateUniforms(); + + gl.drawArrays(gl.TRIANGLES, 0, 6); + })(); + + return () => cancelAnimationFrame(frame); + }); + + function setupUniforms() { + resolution_Loc = gl.getUniformLocation(program, "resolution"); + time_Loc = gl.getUniformLocation(program, "time"); + camRotateX_Loc = gl.getUniformLocation(program, "u_cam_rotateX"); + camRotateY_Loc = gl.getUniformLocation(program, "u_cam_rotateY"); + camZoom_Loc = gl.getUniformLocation(program, "u_cam_zoom"); + camFov_Loc = gl.getUniformLocation(program, "u_cam_fov"); + piMod_Loc = gl.getUniformLocation(program, "u_pimod"); + mod1A_Loc = gl.getUniformLocation(program, "u_mod1A"); + mod1B_Loc = gl.getUniformLocation(program, "u_mod1B"); + mod1C_Loc = gl.getUniformLocation(program, "u_mod1C"); + mod1D_Loc = gl.getUniformLocation(program, "u_mod1D"); + layer2_Loc = gl.getUniformLocation(program, "u_layer2Amp"); + layer4_Loc = gl.getUniformLocation(program, "u_layer4Amp"); + glowColor_Loc = gl.getUniformLocation(program, "u_glowColor"); + glowStrength_Loc = gl.getUniformLocation(program, "u_glowStrength"); + color2_Loc = gl.getUniformLocation(program, "u_color2"); + color3_Loc = gl.getUniformLocation(program, "u_color3"); + color4_Loc = gl.getUniformLocation(program, "u_color4"); + colorMod3_Loc = gl.getUniformLocation(program, "u_colorMod3"); + colorMod4_Loc = gl.getUniformLocation(program, "u_colorMod4"); + light1Z_Loc = gl.getUniformLocation(program, "u_light1Z"); + } + + function updateUniforms() { + gl.uniform1f(time_Loc, time); + gl.uniform1f(camFov_Loc, camFov); + gl.uniform1f(camZoom_Loc, camZoom); + gl.uniform1f(camRotateX_Loc, camRotate.x); + gl.uniform1f(camRotateY_Loc, camRotate.y); + gl.uniform1f(piMod_Loc, piMod); + gl.uniform1f(colorMod3_Loc, colorMod3); + gl.uniform1f(colorMod4_Loc, colorMod4); + gl.uniform1f(layer2_Loc, layer2Amp); + gl.uniform1f(layer4_Loc, layer4Amp); + gl.uniform1f(mod1A_Loc, mod1A); + gl.uniform1f(mod1B_Loc, mod1B); + gl.uniform1f(mod1C_Loc, mod1C); + gl.uniform1f(mod1D_Loc, mod1D); + gl.uniform1f(light1Z_Loc, lightZ); + gl.uniform1f(glowStrength_Loc, glowStrength); + gl.uniform3f(glowColor_Loc, colorGlow.r, colorGlow.g, colorGlow.b); + gl.uniform3f(color2_Loc, color2.r, color2.g, color2.b); + gl.uniform3f(color3_Loc, color3.r, color3.g, color3.b); + gl.uniform3f(color4_Loc, color4.r, color4.g, color4.b); + } +</script> + +<style> + div { + width: 100%; + height: 100%; + } + canvas { + width: 100%; + height: 100%; + background-color: #333; + position: fixed; + } +</style> + +<div + bind:clientWidth={canvasWidth} + bind:clientHeight={canvasHeight}> + <canvas + bind:this={canvas} + width={canvasWidth * scale} + height={canvasHeight * scale} /> +</div> diff --git a/src/components/Section.svelte b/src/components/Section.svelte new file mode 100644 index 0000000..4ac39ad --- /dev/null +++ b/src/components/Section.svelte @@ -0,0 +1,51 @@ +<!-- Reusable logic for a section within the viewable scroll area --> + +<script> + export let yscrollPerc; + export let yperc; + + let showing = false; + let shownSec = 0; + let targetY; + + (function loop() { + requestAnimationFrame(loop); + + let dist = Math.abs(yscrollPerc - yperc); + + if(showing){ + if(dist > .05) hideSection(); + shownSec = 0; + }else{ + if(dist < .04){ + shownSec++; + if(shownSec > 20) showSection(); + } + } + + targetY = ((document.body.scrollHeight - document.body.clientHeight) * yperc) + (document.body.clientHeight * .5); + + }()); + + function showSection(){ + showing = true; + } + + function hideSection(){ + showing = false; + } +</script> + +<style> + div { + position: absolute; + pointer-events: none; + } + .showing { + background-color: burlywood; + } +</style> + +<div class:showing style="transform: translateY({targetY}px)"> + <slot /> +</div> \ No newline at end of file diff --git a/src/components/Shader.svelte b/src/components/Shader.svelte new file mode 100644 index 0000000..78981eb --- /dev/null +++ b/src/components/Shader.svelte @@ -0,0 +1,42 @@ +<!-- Basic Test Shader --> + +<script> + export let yscrollPerc = 0; + export let xscrollPerc = 0; + + import ShaderCanvas from "./ShaderCanvas.svelte"; + + let scale = 1; + + const fragShader = ` + precision highp float; + + uniform vec2 u_resolution; + uniform vec2 u_mouse; + uniform float u_time; + uniform float u_xscrollPerc; + uniform float u_yscrollPerc; + + void main() { + + float scale = ` + (scale * 100) + `.; + + float p1 = (u_yscrollPerc * ((scale * .01) * 400.)) - gl_FragCoord.y; + if(p1 > -1.5 && p1 < scale){ + gl_FragColor = vec4(0, 1, 1, 1); + }else if(p1 > scale && p1 < (scale*2.)){ + gl_FragColor = vec4(0, 0, 1, 1); + }else if(p1 > (scale*2.) && p1 < (scale*3.)){ + gl_FragColor = vec4(1, 0, 1, 1); + } + else{ + gl_FragColor = vec4(fract((gl_FragCoord.xy - u_mouse) / u_resolution), fract(u_time), 1); + + } + } + `; + +</script> + +<ShaderCanvas {xscrollPerc} {yscrollPerc} {fragShader} {scale} /> + diff --git a/src/components/ShaderCanvas.svelte b/src/components/ShaderCanvas.svelte new file mode 100644 index 0000000..94bf6d9 --- /dev/null +++ b/src/components/ShaderCanvas.svelte @@ -0,0 +1,123 @@ +<!-- Basic Test Canvas --> + +<svelte:window bind:innerWidth={innerWidth} bind:innerHeight={innerHeight}/> + +<script> + + import { onMount } from 'svelte'; + import { createProgramFromSources } from '../utils/ShaderUtils.svelte'; + + export let scale = 1; + export let xscrollPerc = 0; + export let yscrollPerc = 0; + + let m = { x: 0, y: 0 }; + let time = 0; + + let canvas; + let canvasWidth, canvasHeight; + let clientWidth, clientHeight; + let innerWidth, innerHeight; + + // Default fragment shader + export let fragShader = ` + precision highp float; + + uniform vec2 u_resolution; + uniform vec2 u_mouse; + uniform float u_time; + uniform float u_xscrollPerc; + uniform float u_yscrollPerc; + + void main() { + gl_FragColor = vec4(fract((gl_FragCoord.xy - u_mouse) / u_resolution), fract(u_time), 1); + } + `; + + function handleMousemove(event) { + + let s = (scale * 100); + + canvasWidth = s + "%"; + canvasHeight = s + "%"; + + m.x = (event.clientX / clientWidth) * s; + m.y = (event.clientY / clientHeight) * s; + } + + onMount(() => { + const gl = canvas.getContext('webgl'); + let frame; + + if (!gl) { + return; // Fallback options for no webgl support + } + + const vs = ` + attribute vec4 a_position; + void main() { gl_Position = a_position; } + `; + + const program = createProgramFromSources(gl, [vs, fragShader]); + const positionAttributeLocation = gl.getAttribLocation(program, "a_position"); + + const resolutionLocation = gl.getUniformLocation(program, "u_resolution"); + const mouseLocation = gl.getUniformLocation(program, "u_mouse"); + const timeLocation = gl.getUniformLocation(program, "u_time"); + const xscrollLocation = gl.getUniformLocation(program, "u_xscrollPerc"); + const yscrollLocation = gl.getUniformLocation(program, "u_yscrollPerc"); + + const positionBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]), gl.STATIC_DRAW); + + (function loop() { + frame = requestAnimationFrame(loop); + time += .01; + + gl.viewport(.95, 0, gl.canvas.width, gl.canvas.height); + gl.useProgram(program); + gl.enableVertexAttribArray(positionAttributeLocation); + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); + + gl.uniform2f(resolutionLocation, gl.canvas.width, gl.canvas.height); + gl.uniform2f(mouseLocation, m.x, -m.y); + gl.uniform1f(timeLocation, time); + gl.uniform1f(yscrollLocation, yscrollPerc); + gl.uniform1f(xscrollLocation, xscrollPerc); + + gl.drawArrays(gl.TRIANGLES, 0, 6); + }()); + + return () => { + cancelAnimationFrame(frame); + }; + }); +</script> + +<style> + div { + width: 100%; + height: 100%; + position: fixed; + left: 0; + top: 0; + } + canvas { + width: 100%; + height: 87%; + background-color: #333; + position: fixed; + left: 0; + top: 13%; + } +</style> + +<div on:mousemove={handleMousemove} bind:clientWidth={clientWidth} bind:clientHeight={clientHeight}> + <canvas + bind:this={canvas} + width={canvasWidth} + height={canvasHeight} + ></canvas> +</div> \ No newline at end of file diff --git a/src/components/Title.svelte b/src/components/Title.svelte new file mode 100644 index 0000000..141d325 --- /dev/null +++ b/src/components/Title.svelte @@ -0,0 +1,44 @@ +<!-- Simple hardcoded one-off component ATM --> + +<script> + +export let camRotate = { x: 0, y: 0 }; + +</script> + +<style> + div { + position: relative; + top: 50px; + left: 70px; + width: 80%; + max-width: 2400px; + pointer-events: none; + background-color: rgb(27, 27, 27); + opacity: .75; + padding: .75em; + padding-left: 1.5em; + } + + h1 { + font-size: 4em; + -webkit-text-fill-color:white; + margin: 0; + padding-left: 20px; + } + + h2 { + -webkit-text-fill-color:rgb(119,162,179); + } + + h3 { + padding-left: 25px; + -webkit-text-fill-color:lightgrey; + } +</style> + +<div style="transform: translateX({(((1-camRotate.x)+1) * 150) - 30}px);"> + <h2>Hi my name is:</h2> + <h1>Hepp Maccoy</h1> + <h3><i>I'm a Full-stack Developer that enjoys working on next-level projects</i></h3> +</div> \ No newline at end of file diff --git a/src/components/TitleListAnimate.svelte b/src/components/TitleListAnimate.svelte new file mode 100644 index 0000000..ed58687 --- /dev/null +++ b/src/components/TitleListAnimate.svelte @@ -0,0 +1,123 @@ +<!-- Basic component to display several messages animated into a single line --> + +<script> + + export let shown; + export let list; + + const ranSymbols = ["%","@","#","/"]; + + let count = -30; + let level = 0; + let tick = 0; + let outtro = 0; + + // Header Title + const newHeader = () => Math.floor(Math.random() * list.length); + let chars = 0; + let selected = newHeader(); + let text = ""; + let cursor = ""; + + (function loop() { + requestAnimationFrame(loop); + + // Quick and simple blinking cursor effect + if(tick % 66 == 0 || text.length < 2){ + cursor = " "; + }else if(tick % 66 == 22){ + cursor = " :"; + } + tick++; + + // Header title changes + count++; + if(count > 0){ + + if(level == 0){ + + // Animate in + if(shown && count % 2 == 1 && chars < list[selected].length){ + text += list[selected].charAt(chars); + chars++; + } + // Hide + if(!shown || (count > 200 && list.length > 1)){ + level = 1; + count = 0; + chars = 0; + } + + } else if(level == 1){ + + // Outro + if(text.length > 0){ + + // Quick and simple text scrable effect + + if(outtro > 8){ + // Remove lines + text = text.substring(0, text.length - 1); + } + + if(tick % 2 == 1){ + // Add random chars effect + let rSel = Math.floor(Math.random() * text.length); + if(rSel > 2){ + let textS = text.substring(0, rSel-1); + textS += ranSymbols[Math.floor(Math.random() * ranSymbols.length)]; + textS += text.substring(rSel, text.length); + text = textS; + } + } + + if(text.length < 1 || outtro > 60) { + // Exit outtro + text = ""; + } + + outtro++; + + // Select new + }else{ + + // Reset state + outtro = 0; + tick = 0; + level = 0; + count = -Math.floor(Math.random() * 30); + + let hNew = 0; + while(hNew == 0 || hNew == selected){ + hNew = newHeader(); + } + selected = hNew; + } + } + } + })(); +</script> + +<style> + h2 { + position: relative; + left: 20px; + padding: 0 1.15em 0 1.15em; + color:rgb(200, 195, 188); + background-color: rgb(53, 104, 126); + -webkit-transition: background-color 250ms linear; + -ms-transition: background-color 250ms linear; + transition: background-color 250ms linear; + pointer-events: none; + } + .selected { + background-color: #004daa; + -webkit-transition: background-color 700ms linear; + -ms-transition: background-color 700ms linear; + transition: background-color 700ms linear; + } +</style> + +<div> + <h2 class="{shown ? 'selected' : ''}">{"> " + text + cursor}</h2> +</div> \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..1719c77 --- /dev/null +++ b/src/main.js @@ -0,0 +1,9 @@ +import App from './App.svelte'; + +const app = new App({ + target: document.body, + props: { + } +}); + +export default app; \ No newline at end of file diff --git a/src/scatterform/ScatterformLiteFrag.svelte b/src/scatterform/ScatterformLiteFrag.svelte new file mode 100644 index 0000000..abb5228 --- /dev/null +++ b/src/scatterform/ScatterformLiteFrag.svelte @@ -0,0 +1,184 @@ +<script context="module"> + + // Original Scatterform Shader by AudioPixel/Hepp Maccoy + // Raymarching Math Functions by IQ/Iquilezles + export const fragShader = + `#ifdef GL_ES + precision mediump float; + #endif + + uniform float time; + uniform vec2 resolution; + + //--- + + // Scatterform API (Lite version) + + uniform float u_cam_zoom; + uniform float u_cam_fov; + + uniform float u_cam_rotateX; + uniform float u_cam_rotateY; + + uniform float u_pimod; + + uniform float u_mod1A; + uniform float u_mod1B; + uniform float u_mod1C; + uniform float u_mod1D; + + uniform float u_layer2Amp; + uniform float u_layer4Amp; + + uniform vec3 u_glowColor; + uniform float u_glowStrength; + + uniform vec3 u_color2; + uniform vec3 u_color3; + uniform vec3 u_color4; + + uniform float u_colorMod3; + uniform float u_colorMod4; + + uniform float u_light1Z; + + //--- + + vec3 glow; + vec3 q; + vec3 col1; + vec3 col2; + vec3 col3; + vec3 col4; + #define PI 3.14159265358979323846 + + float sinc( float x, float k ) { + float a = PI * (float(k)*x-1.0); + return sin(a)/a; + } + float soc(vec3 p) { + vec3 n = normalize(sign(p+1e6)); + return min(min(dot(p.xy, n.xy), dot(p.yz, n.yz)), dot(p.xz, n.xz)); + } + mat2 r2d(float a) { + float sa=sin(a); + float ca=cos(a); + return mat2(ca,sa,-sa,ca); + } + vec2 amod(vec2 p, float m) { + float a=mod(atan(p.x,p.y), m)-m*.5; + return vec2(cos(a), sin(a))*length(p); + } + vec2 mo(inout vec2 p, vec2 d) { + vec2 q = p; + q.x = abs(q.x) - d.x; + q.y = abs(q.y) - d.y; + if (q.y > q.x) q = q.yx; + return q; + } + + float map(vec3 p) { + float d = 1.; + float a = abs(p.y); + + p.yz *= r2d(sign(a) * u_cam_rotateY); + p.xz *= r2d(sign(a) * u_cam_rotateX); + + // Mod1 + p.xz = mo(p.xz, vec2(u_mod1A, u_mod1B)); + p.zx = mo(p.xz, vec2(u_mod1C, u_mod1D)); + + // Repeat using PI + p.xz = amod(p.xz, (PI * u_pimod) / 3.0); + + // Repeat + float spreadZ = 9.1829; + p.z = mod(p.z, spreadZ)-(spreadZ *.5); + + float spreadX = 1.3426; + p.x = mod(p.x, spreadX)-(spreadX *.5); + p.y = mod(p.y + 3., 10.1057) - 5.; + + d = min(d, soc(max(abs(p) - 0.2283, 0.0028))); + + glow += u_glowColor * 0.0401 / (0.0067 + d*d); // color + + return length(p * -0.0211) * 1.0 - (d * -1.0); + } + + vec3 calcNormal(in vec3 p) { + vec2 e = vec2(0, -1.0) * 0.005; + return normalize( e.xyy * map(p + e.xyy) + e.yyx * map(p + e.yyx) + e.yxy * map(p + e.yxy) + e.xxx * map(p + e.xxx) ); + } + + void main() { + + int section = 1; + + // Position + vec2 st = (gl_FragCoord.xy / resolution.xy) * 2.01 - 1.; + st.x *= resolution.x / resolution.y; + + // Ray origin + vec3 ro = vec3(st, u_cam_zoom); + + // Ray distance + vec3 rd = normalize(vec3(st + vec2(0.), u_cam_fov)); + + // Map point + vec3 mp; + mp = ro; + + // Map distance + float md; + + // Ray march + for (int i=0; i<17; i++) { + md = map(mp); + + if (md < 0.04535) break; + mp += rd * md; + } + + // Define our 2 deck levels (0-1) + float b = length(ro - mp); + float deckA = 1.1755 - (b * 0.0379) * 0.9951; + float deckB = 1.1755 - (b * 0.03) * 0.7696; + vec3 l; + + // Use sin curve to modify base levels + deckA = sinc(deckA, 1.0); + deckB = sinc(deckB, 1.0); + + // Light1 + vec3 light = vec3(8., 0., u_light1Z); + vec3 p = ro + rd * (mp); + vec3 normal = calcNormal(p); + + if (md < 0.0972) { + float dif = clamp(dot(normal, normalize(light - p)), 0., 1.); + dif *= 5.0 / dot(light - p, light - p); + l = vec3(pow(dif, 0.3398)); + } else { + l = vec3(-0.2918); + } + + // AudioPixel color blending + vec3 c1 = vec3(deckA * -1.); + vec3 c2 = vec3(deckB * u_layer2Amp); + col1 = c1 + c2 - 2.0 * c1 * c2; + col2 = mix(vec3(0.), u_color2, l.x); + col3 = mix(vec3(0.), u_color3, (p.x * .06) * u_layer4Amp); + vec3 c = (col1 + col2) - col3; + + c = c * (3. - 2. * c); // contrast + c = mix(c, vec3(c.x + c.y + c.z) * .33, u_colorMod3 ); // desat + c *= 1. + u_colorMod4 * vec3(u_color4); // tint + + vec3 gt = c + (glow * u_glowStrength); + c *= gt; + + gl_FragColor = vec4(c, 1.); + }`; + +</script> \ No newline at end of file diff --git a/src/scatterform/ScatterformLitePresets.svelte b/src/scatterform/ScatterformLitePresets.svelte new file mode 100644 index 0000000..b6599ec --- /dev/null +++ b/src/scatterform/ScatterformLitePresets.svelte @@ -0,0 +1,74 @@ +<!-- Different Presets can be loaded into the Scatterform Shader --> +<!-- Note: Some of these properties are overwritten with code (ScrollLogic) --> + +<script context="module"> + export const dba12 = { + "cam_spinX": 0.9752000000000001, + "cam_rotateY": -0.1748, + "cam_fov": -0.41356000000000001, + "cam_zoom": 13.79283800000000002, + "yscroll": 3, + "yoffset": -0.2879, + "pimod": 0.56943, + "mod1A": -.6765, + "mod1B": -6.6418, + "mod1C": -1.0715953000000000002, + "mod1D": 12.8323, + "layer4Amp": 1, + "layer2Amp": .93, // 1 + "color4": 4063444, + "color3": 42239, + "color2": 16711680, + "glowColor": 11486620, + "glowStrength": 0.0068000000000000005, + "colorMod4": 0, + "colorMod3": 0.7783, + "light1Z": -2 + }; + + export const dba41 = { + "cam_spinX": 0.8866, + "cam_rotateY": -1.3284, + "cam_fov": -0.4, + "cam_zoom": 25.8, + "yscroll": 3, + "pimod": 2.1033, + "mod1A": -6.8095, + "mod1B": -15.9736, + "mod1C": -1.873, + "mod1D": -10.9771, + "layer4Amp": 1, + "layer2Amp": 0.9468000000000001, + "color4": 4063444, + "color3": 42239, + "color2": 16711680, + "glowColor": 11486620, + "glowStrength": 0.0068000000000000005, + "colorMod4": 1, + "colorMod3": 0.5616, + "light1Z": -70 + } + + export const dba41_section2 = { + "cam_spinX": 0.8866, + "cam_rotateY": -1.3284, + "cam_fov": -0.4, + "cam_zoom": 25.8, + "yscroll": 3, + "pimod": 2.71033, + "mod1A": -9.8095, + "mod1B": 7.2, + "mod1C": -2.4, + "mod1D": -10.9771, + "layer4Amp": 1, + "layer2Amp": 0.9468000000000001, + "color4": 4063444, + "color3": 42239, + "color2": 16711680, + "glowColor": 11486620, + "glowStrength": 0.0068000000000000005, + "colorMod4": 1, + "colorMod3": 0.5616, + "light1Z": -70 + } +</script> \ No newline at end of file diff --git a/src/utils/Data.svelte b/src/utils/Data.svelte new file mode 100644 index 0000000..ef5bc5a --- /dev/null +++ b/src/utils/Data.svelte @@ -0,0 +1,134 @@ +<!-- Quick static store, for a static style webpage --> + +<script context="module"> + + export const fallbackUrl = "https://heppmaccoy.com"; + + export const codeItems = [ + "Svelte", + "JS Programming", + "Agile Practices", + "Node.js", + "React Hooks", + "Server-side JS", + "Open Source", + "Immersive Tech", + "Three.js", + "Test Driven Dev", + "ES6+", + "Deno", + "ExpressJS", + "System Architecture", + "Docker", + "AWS", + "Heroku", + "Typescript", + "Clean Code", + "HTML5+CSS3", + "Addressable Tech", + "Material Design", + "Interactive Video", + "OpenGL/Vulkan", + "Blockchain ", + "Async/Threads", + "Game Development", + "Physics/Animation", + "WebGL/WebGPU", + "Less > More Code", + "Particle Systems", + "Generative GFX", + ]; + + export const thingsList = [ + "Some of my favorite things", + "I enjoy building things with", + "I like building projects with", + "Cool things I am proficient with", + "Rad things to use everywhere", + "If I had to pick some favorites", + "Let's fill the world with more of these", + "I know some things about"]; + + export const brandsList = [ + "These are some brands I've worked with", + "Some amazing brands I've had the pleasure to work with", + "Several of the brands I've built cool projects for", + "Sample of some of the brands I've worked with", + "I've had the chance to build cool projects for"]; + + export const portfolioList = [ + "Checkout my online portfoio of recent work", + "View more details on past projects", + "To see more of my work visit the portfolio"]; + + export const wwwList = [ + "Check out the GitHub codes for this project", + "Webpage is compiled and uses no 3rd party libraries", + "Open source software spurs innovation", + "I like sharing and talking about technology", + "Built from scratch using", + "Details about this webpage"]; + + export const wwwItems = [ + "Compiled w Svelte", + "Open Source", + "Reusable Code", + "No loaded Libs", + "No loaded APIs", + "Minimal Code", + "Custom Shaders", + "Optimized GLSL", + "Components", + "Raymarching", + "WebGL Canvas", + "Generative GFX", + "Reused Modules", + "OOP/MVC ideals", + "Spring Animation", + "Experimental", + "Handwritten", + "Data <-> Logic", + "Scalable", + "V Studio Code", + "No diff tree", + "Creative Math", + "No redundancy", + "No dependencies", + "Color Algorithms", + "Less Code > More", + "Compiled = Fast" + ]; + + export const imgDataLogos = [ + {src: "img/logos/logo_swoosh.jpg", alt: "Nike Logo"}, + {src: "img/logos/logo_toyota.jpg", alt: "Toyota Logo"}, + {src: "img/logos/logo_y.jpg", alt: "Yahoo! Logo"}, + {src: "img/logos/logo_flickr.jpg", alt: "Flickr Logo"}, + {src: "img/logos/logo_arrow.jpg", alt: "Arrow Logo"}, + {src: "img/logos/logo_cobra.jpg", alt: "Cobra Logo"}, + {src: "img/logos/logo_dbg.jpg", alt: "Denver Botanic Gardens Logo"}, + {src: "img/logos/logo_goldenvoice.jpg", alt: "Golden Voice Logo"}, + {src: "img/logos/logo_lyft.jpg", alt: "Lyft Logo"}, + {src: "img/logos/logo_meowwolf.jpg", alt: "Meow Wolf Logo"}, + {src: "img/logos/logo_universal.jpg", alt: "Universal Logo"}, + {src: "img/logos/logo_wb.jpg", alt: "WB Logo"} + ]; + + export const imgDataPortfolio = [ + {src: "img/portfolio/thumb_dbg.jpg", alt: "Lumenscape @ Denver Botanic Gardens"}, + {src: "img/portfolio/thumb_nike_bigair.jpg", alt: "Nike NYC Fan Wall Installation"}, + {src: "img/portfolio/thumb_nike_beacon.jpg", alt: "Nike NYC Beacon Installation"}, + {src: "img/portfolio/thumb_dragomi.jpg", alt: "Dragomi Art Car"}, + {src: "img/portfolio/thumb_interphase.jpg", alt: "Interphase @ Wave & Light Festival"}, + {src: "img/portfolio/thumb_meow-wolf.jpg", alt: "Meow Wolf Installation"}, + {src: "img/portfolio/thumb_nike_treadmill.jpg", alt: "Nike NYC Treadmill Installation"}, + {src: "img/portfolio/thumb_omnia.jpg", alt: "Omnia Galaxy Website"}, + {src: "img/portfolio/thumb_pixelmixer.jpg", alt: "PixelMixer API"}, + {src: "img/portfolio/thumb_rapt.jpg", alt: "Rapt Interactive Videos"}, + {src: "img/portfolio/thumb_tipper.jpg", alt: "Tipper Music Tour"}, + {src: "img/portfolio/thumb_toyota.jpg", alt: "Toyota Interactive Videos"} + ]; +</script> + + + diff --git a/src/utils/NumberMap.svelte b/src/utils/NumberMap.svelte new file mode 100644 index 0000000..7aa065d --- /dev/null +++ b/src/utils/NumberMap.svelte @@ -0,0 +1,6 @@ +<script context="module"> + Number.prototype.map = function (in_min, in_max, out_min, out_max) { + return (this - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; + } + +</script> \ No newline at end of file diff --git a/src/utils/ScrollLogic.svelte b/src/utils/ScrollLogic.svelte new file mode 100644 index 0000000..e9191df --- /dev/null +++ b/src/utils/ScrollLogic.svelte @@ -0,0 +1,75 @@ +<!-- Uniforms settings controlled by the Scrolling of the page --> +<!-- Scroll Logic seperated, makes it easier to update later if needed --> + +<script context="module"> + import { dba41 as data } from "../scatterform/ScatterformLitePresets.svelte"; + + export function getCoords(mouse) { + let coords = { x: 0, y: 0 }; + coords.x = mouse.x.map(0, 1, 1.8, 1.3); + coords.y = mouse.y.map(0, 1, 0.78, 0.6); + + return coords; + } + + export function getScrollY(yscroll) { + let v = yscroll; + if(yscroll > .94){ + v = yscroll.map(.94, 1, v, 1.2); + } + return (v * 4) + 2.3875292; + } + + export const getColorMod3 = yscroll => .7; + export const getColorMod4 = yscroll => .01147; + + export function getCamZoom(yscroll){ + return 23.4; + } + + export function getPiMod(yscroll){ + return data.pimod; + } + export function getLayer2Amp(yscroll){ + return data.layer2Amp; + } + export function getMod1A(yscroll){ + return data.mod1A * ((1-yscroll)); + } + export function getMod1B(x, yscroll){ + if(yscroll < .82) return data.mod1B; + return (data.mod1B * (3-x)) - 200; + } + export function getMod1C(yscroll){ + return data.mod1C; + } + export function getMod1D(yscroll){ + return data.mod1D * ((2-yscroll)); + } + + export function getCamFov(yscroll){ + return data.cam_fov; + } + export function getLayer4Amp(yscroll){ + return data.layer4Amp; + } + export function getLightZ(yscroll){ + return data.light1Z; + } + export function getGlowStrength(yscroll){ + return data.glowStrength * ((1-yscroll)); + } + + export function getGlowColor(yscroll){ + return {r: 0.549, g: 0.21568, b: yscroll}; + } + export function getColor2(yscroll){ + return {r: 0.8, g: 0, b: 0}; + } + export function getColor3(yscroll){ + return {r: 0, g: 0.513, b: 0.8}; + } + export function getColor4(yscroll){ + return {r: 0.196, g: yscroll, b: 0.67}; + } +</script> \ No newline at end of file diff --git a/src/utils/ShaderUtils.svelte b/src/utils/ShaderUtils.svelte new file mode 100644 index 0000000..6812a8d --- /dev/null +++ b/src/utils/ShaderUtils.svelte @@ -0,0 +1,131 @@ +<script context="module"> + +/* + WebGL utility methods from Gregg Tavares : + https://webglfundamentals.org/webgl/resources/webgl-utils.js + + 10/2020 - Imported to Svelte by Hepp Maccoy hepp@audiopixel.com +* +* Copyright 2012, Gregg Tavares. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are +* met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following disclaimer +* in the documentation and/or other materials provided with the +* distribution. +* * Neither the name of Gregg Tavares. nor the names of his +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + const defaultShaderType = [ + 'VERTEX_SHADER', + 'FRAGMENT_SHADER', + ]; + + export const vertexShader = ` + attribute vec4 a_position; + void main() { gl_Position = a_position; } + `; + + export function createProgramFromSources( + gl, shaderSources, opt_attribs, opt_locations, opt_errorCallback) { + const shaders = []; + for (let ii = 0; ii < shaderSources.length; ++ii) { + shaders.push(loadShader( gl, shaderSources[ii], gl[defaultShaderType[ii]], opt_errorCallback)); + } + return createProgram(gl, shaders, opt_attribs, opt_locations, opt_errorCallback); + } + + function loadShader(gl, shaderSource, shaderType, opt_errorCallback) { + const errFn = opt_errorCallback || error; + // Create the shader object + const shader = gl.createShader(shaderType); + + // Load the shader source + gl.shaderSource(shader, shaderSource); + + // Compile the shader + gl.compileShader(shader); + + // Check the compile status + const compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!compiled) { + // Something went wrong during compilation; get the error + const lastError = gl.getShaderInfoLog(shader); + errFn('*** Error compiling shader \'' + shader + '\':' + lastError); + gl.deleteShader(shader); + return null; + } + + return shader; + } + + export function bindQuadBuffer(gl, positionAttributeLocation){ + const positionBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]), gl.STATIC_DRAW); + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); + gl.enableVertexAttribArray(positionAttributeLocation); + gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); + gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); + } + + function createProgram( + gl, shaders, opt_attribs, opt_locations, opt_errorCallback) { + const errFn = opt_errorCallback || error; + const program = gl.createProgram(); + shaders.forEach(function(shader) { + gl.attachShader(program, shader); + }); + if (opt_attribs) { + opt_attribs.forEach(function(attrib, ndx) { + gl.bindAttribLocation( + program, + opt_locations ? opt_locations[ndx] : ndx, + attrib); + }); + } + gl.linkProgram(program); + + // Check the link status + const linked = gl.getProgramParameter(program, gl.LINK_STATUS); + if (!linked) { + // something went wrong with the link + const lastError = gl.getProgramInfoLog(program); + errFn('Error in program linking:' + lastError); + + gl.deleteProgram(program); + return null; + } + return program; + } + + function error(msg) { + if (console) { + if (console.error) { + console.error(msg); + } else if (console.log) { + console.log(msg); + } + } + } +</script> \ No newline at end of file diff --git a/src/utils/Utils.svelte b/src/utils/Utils.svelte new file mode 100644 index 0000000..f726e08 --- /dev/null +++ b/src/utils/Utils.svelte @@ -0,0 +1,13 @@ + +<script context="module"> + export const easeTo = (from, to, damp) => ((from - to) * damp) + to; + export const checkNum = n => typeof n === 'number' ? n : null; + + // http://detectmobilebrowsers.com/ + export const mobileAndTabletCheck = function() { + let check = false; + (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); + return check; + } +</script> + \ No newline at end of file